github.com/unicornultrafoundation/go-u2u@v1.0.0-rc1.0.20240205080301-e74a83d3fadc/gossip/contract/sfclib100/contract.go (about)

     1  // Code generated - DO NOT EDIT.
     2  // This file is a generated binding and any manual changes will be lost.
     3  
     4  package sfclib100
     5  
     6  import (
     7  	"errors"
     8  	"math/big"
     9  	"strings"
    10  
    11  	u2u "github.com/unicornultrafoundation/go-u2u"
    12  	"github.com/unicornultrafoundation/go-u2u/accounts/abi"
    13  	"github.com/unicornultrafoundation/go-u2u/accounts/abi/bind"
    14  	"github.com/unicornultrafoundation/go-u2u/common"
    15  	"github.com/unicornultrafoundation/go-u2u/core/types"
    16  	"github.com/unicornultrafoundation/go-u2u/event"
    17  )
    18  
    19  // Reference imports to suppress errors if they are not otherwise used.
    20  var (
    21  	_ = errors.New
    22  	_ = big.NewInt
    23  	_ = strings.NewReader
    24  	_ = u2u.NotFound
    25  	_ = bind.Bind
    26  	_ = common.Big1
    27  	_ = types.BloomLookup
    28  	_ = event.NewSubscription
    29  )
    30  
    31  // ContractMetaData contains all meta data concerning the Contract contract.
    32  var ContractMetaData = &bind.MetaData{
    33  	ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BurntFTM\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"status\",\"type\":\"uint256\"}],\"name\":\"ChangedValidatorStatus\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"toValidatorID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lockupExtraReward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lockupBaseReward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"unlockedReward\",\"type\":\"uint256\"}],\"name\":\"ClaimedRewards\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"auth\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"createdEpoch\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"createdTime\",\"type\":\"uint256\"}],\"name\":\"CreatedValidator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"deactivatedEpoch\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"deactivatedTime\",\"type\":\"uint256\"}],\"name\":\"DeactivatedValidator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"toValidatorID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Delegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"justification\",\"type\":\"string\"}],\"name\":\"InflatedFTM\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LockedUpStake\",\"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\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RefundedSlashedLegacyDelegation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"toValidatorID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lockupExtraReward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lockupBaseReward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"unlockedReward\",\"type\":\"uint256\"}],\"name\":\"RestakedRewards\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"toValidatorID\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"wrID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Undelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"penalty\",\"type\":\"uint256\"}],\"name\":\"UnlockedStake\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"refundRatio\",\"type\":\"uint256\"}],\"name\":\"UpdatedSlashingRefundRatio\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"toValidatorID\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"wrID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"syncPubkey\",\"type\":\"bool\"}],\"name\":\"_syncValidator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentSealedEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getEpochSnapshot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"epochFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalBaseRewardWeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalTxRewardWeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRewardPerSecond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"toValidatorID\",\"type\":\"uint256\"}],\"name\":\"getLockedStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getLockupInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lockedStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fromEpoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getStashedLockupRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lockupExtraReward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lockupBaseReward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unlockedReward\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getValidator\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"status\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deactivatedTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deactivatedEpoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"receivedStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdEpoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdTime\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"auth\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getValidatorID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getValidatorPubkey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getWithdrawalRequest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"toValidatorID\",\"type\":\"uint256\"}],\"name\":\"isLockedUp\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lastValidatorID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"minGasPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"slashingRefundRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"stakeTokenizerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"stashedRewardsUntilEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalActiveStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSlashedStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"treasuryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"voteBookAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"getEpochValidatorIDs\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"}],\"name\":\"getEpochReceivedStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"}],\"name\":\"getEpochAccumulatedRewardPerToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"}],\"name\":\"getEpochAccumulatedUptime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"}],\"name\":\"getEpochAccumulatedOriginatedTxsFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"}],\"name\":\"getEpochOfflineTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"}],\"name\":\"getEpochOfflineBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"}],\"name\":\"rewardsStash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"auth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"pubkey\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"status\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdEpoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deactivatedEpoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deactivatedTime\",\"type\":\"uint256\"}],\"name\":\"setGenesisValidator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"toValidatorID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lockedStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lockupFromEpoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lockupEndTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lockupDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"earlyUnlockPenalty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"}],\"name\":\"setGenesisDelegation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"pubkey\",\"type\":\"bytes\"}],\"name\":\"createValidator\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"}],\"name\":\"getSelfStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"toValidatorID\",\"type\":\"uint256\"}],\"name\":\"delegate\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"validatorAuth\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"strict\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"}],\"name\":\"recountVotes\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"toValidatorID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wrID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"undelegate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"}],\"name\":\"isSlashed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"toValidatorID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wrID\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"status\",\"type\":\"uint256\"}],\"name\":\"deactivateValidator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"toValidatorID\",\"type\":\"uint256\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"toValidatorID\",\"type\":\"uint256\"}],\"name\":\"stashRewards\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"toValidatorID\",\"type\":\"uint256\"}],\"name\":\"claimRewards\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"toValidatorID\",\"type\":\"uint256\"}],\"name\":\"restakeRewards\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"justification\",\"type\":\"string\"}],\"name\":\"mintFTM\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFTM\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"toValidatorID\",\"type\":\"uint256\"}],\"name\":\"getUnlockedStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"toValidatorID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lockupDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"lockStake\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"toValidatorID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lockupDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"relockStake\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"toValidatorID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"unlockStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"refundRatio\",\"type\":\"uint256\"}],\"name\":\"updateSlashingRefundRatio\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]",
    34  	Bin: "0x608060405234801561001057600080fd5b50614f20806100206000396000f3fe6080604052600436106103765760003560e01c8063893675c6116101d1578063bd14d90711610102578063cfdbb7cd116100a0578063df00c9221161006f578063df00c92214610ef3578063e261641a14610f23578063e2f8c33614610f53578063f2fde38b14610fe557610376565b8063cfdbb7cd14610e3f578063d96ed50514610e78578063dc31e1af14610e8d578063de67f21514610ebd57610376565b8063c65ee0e1116100dc578063c65ee0e114610d95578063c7be95de14610dbf578063cc8343aa14610dd4578063cfd4766314610e0657610376565b8063bd14d90714610d20578063c3de580e14610d56578063c5f956af14610d8057610376565b80639fa6dd351161016f578063a86a056f11610149578063a86a056f14610bc9578063b5d8962714610c02578063b810e41114610c6d578063b88a37e214610ca657610376565b80639fa6dd3514610b0c578063a198d22914610b29578063a5a470ad14610b5957610376565b80638da5cb5b116101ab5780638da5cb5b14610a455780638f32d59b14610a5a57806390a6c47514610a8357806396c7ee4614610aad57610376565b8063893675c6146109e25780638b0e9f3f146109f75780638cddb01514610a0c57610376565b80634f7c4efb116102ab57806361e53fcc11610249578063715018a611610223578063715018a61461090457806376671808146109195780637cacb1d61461092e578063854873e11461094357610376565b806361e53fcc14610862578063670322f8146108925780636f498663146108cb57610376565b80635601fe01116102855780635601fe01146107ba57806358f95b80146107e45780635fab23a8146108145780636099ecb21461082957610376565b80634f7c4efb146106a95780634f864df4146106d95780634feb92f31461070f57610376565b80631d3ac42c1161031857806320c0849d116102f257806320c0849d146105b757806328f731481461060257806339b80c0014610617578063441a3e701461067957610376565b80631d3ac42c146104fa5780631e702f831461052a5780631f2701521461055a57610376565b80630e559d82116103545780630e559d821461041657806312622d0e1461044757806318160ddd1461048057806318f628d41461049557610376565b80630135b1db1461037b57806308c36874146103c05780630962ef79146103ec575b600080fd5b34801561038757600080fd5b506103ae6004803603602081101561039e57600080fd5b50356001600160a01b0316611018565b60408051918252519081900360200190f35b3480156103cc57600080fd5b506103ea600480360360208110156103e357600080fd5b503561102a565b005b3480156103f857600080fd5b506103ea6004803603602081101561040f57600080fd5b50356110f6565b34801561042257600080fd5b5061042b611241565b604080516001600160a01b039092168252519081900360200190f35b34801561045357600080fd5b506103ae6004803603604081101561046a57600080fd5b506001600160a01b038135169060200135611250565b34801561048c57600080fd5b506103ae6112d9565b3480156104a157600080fd5b506103ea60048036036101208110156104b957600080fd5b506001600160a01b038135169060208101359060408101359060608101359060808101359060a08101359060c08101359060e08101359061010001356112df565b34801561050657600080fd5b506103ae6004803603604081101561051d57600080fd5b5080359060200135611441565b34801561053657600080fd5b506103ea6004803603604081101561054d57600080fd5b508035906020013561166b565b34801561056657600080fd5b506105996004803603606081101561057d57600080fd5b506001600160a01b038135169060208101359060400135611744565b60408051938452602084019290925282820152519081900360600190f35b3480156105c357600080fd5b506103ea600480360360808110156105da57600080fd5b506001600160a01b038135811691602081013590911690604081013515159060600135611776565b34801561060e57600080fd5b506103ae611913565b34801561062357600080fd5b506106416004803603602081101561063a57600080fd5b5035611919565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b34801561068557600080fd5b506103ea6004803603604081101561069c57600080fd5b508035906020013561195b565b3480156106b557600080fd5b506103ea600480360360408110156106cc57600080fd5b5080359060200135611e6b565b3480156106e557600080fd5b506103ea600480360360608110156106fc57600080fd5b5080359060208101359060400135611faf565b34801561071b57600080fd5b506103ea600480360361010081101561073357600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561076357600080fd5b82018360208201111561077557600080fd5b8035906020019184600183028401116401000000008311171561079757600080fd5b91935091508035906020810135906040810135906060810135906080013561224a565b3480156107c657600080fd5b506103ae600480360360208110156107dd57600080fd5b50356122f0565b3480156107f057600080fd5b506103ae6004803603604081101561080757600080fd5b5080359060200135612326565b34801561082057600080fd5b506103ae612343565b34801561083557600080fd5b506103ae6004803603604081101561084c57600080fd5b506001600160a01b038135169060200135612349565b34801561086e57600080fd5b506103ae6004803603604081101561088557600080fd5b5080359060200135612387565b34801561089e57600080fd5b506103ae600480360360408110156108b557600080fd5b506001600160a01b0381351690602001356123a8565b3480156108d757600080fd5b506103ae600480360360408110156108ee57600080fd5b506001600160a01b0381351690602001356123e9565b34801561091057600080fd5b506103ea612453565b34801561092557600080fd5b506103ae61250e565b34801561093a57600080fd5b506103ae612518565b34801561094f57600080fd5b5061096d6004803603602081101561096657600080fd5b503561251e565b6040805160208082528351818301528351919283929083019185019080838360005b838110156109a757818101518382015260200161098f565b50505050905090810190601f1680156109d45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109ee57600080fd5b5061042b6125d7565b348015610a0357600080fd5b506103ae6125e6565b348015610a1857600080fd5b506103ea60048036036040811015610a2f57600080fd5b506001600160a01b0381351690602001356125ec565b348015610a5157600080fd5b5061042b61264b565b348015610a6657600080fd5b50610a6f61265a565b604080519115158252519081900360200190f35b348015610a8f57600080fd5b506103ea60048036036020811015610aa657600080fd5b503561266b565b348015610ab957600080fd5b50610ae660048036036040811015610ad057600080fd5b506001600160a01b0381351690602001356126d0565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6103ea60048036036020811015610b2257600080fd5b5035612702565b348015610b3557600080fd5b506103ae60048036036040811015610b4c57600080fd5b508035906020013561270d565b6103ea60048036036020811015610b6f57600080fd5b810190602081018135640100000000811115610b8a57600080fd5b820183602082011115610b9c57600080fd5b80359060200191846001830284011164010000000083111715610bbe57600080fd5b50909250905061272e565b348015610bd557600080fd5b506103ae60048036036040811015610bec57600080fd5b506001600160a01b03813516906020013561289b565b348015610c0e57600080fd5b50610c2c60048036036020811015610c2557600080fd5b50356128b8565b604080519788526020880196909652868601949094526060860192909252608085015260a08401526001600160a01b031660c0830152519081900360e00190f35b348015610c7957600080fd5b5061059960048036036040811015610c9057600080fd5b506001600160a01b0381351690602001356128fe565b348015610cb257600080fd5b50610cd060048036036020811015610cc957600080fd5b503561292a565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610d0c578181015183820152602001610cf4565b505050509050019250505060405180910390f35b348015610d2c57600080fd5b506103ea60048036036060811015610d4357600080fd5b508035906020810135906040013561298f565b348015610d6257600080fd5b50610a6f60048036036020811015610d7957600080fd5b50356129a2565b348015610d8c57600080fd5b5061042b6129b9565b348015610da157600080fd5b506103ae60048036036020811015610db857600080fd5b50356129c8565b348015610dcb57600080fd5b506103ae6129da565b348015610de057600080fd5b506103ea60048036036040811015610df757600080fd5b508035906020013515156129e0565b348015610e1257600080fd5b506103ae60048036036040811015610e2957600080fd5b506001600160a01b038135169060200135612c18565b348015610e4b57600080fd5b50610a6f60048036036040811015610e6257600080fd5b506001600160a01b038135169060200135612c35565b348015610e8457600080fd5b506103ae612ccb565b348015610e9957600080fd5b506103ae60048036036040811015610eb057600080fd5b5080359060200135612cd1565b348015610ec957600080fd5b506103ea60048036036060811015610ee057600080fd5b5080359060208101359060400135612cf2565b348015610eff57600080fd5b506103ae60048036036040811015610f1657600080fd5b5080359060200135612dad565b348015610f2f57600080fd5b506103ae60048036036040811015610f4657600080fd5b5080359060200135612dce565b348015610f5f57600080fd5b506103ea60048036036060811015610f7657600080fd5b6001600160a01b0382351691602081013591810190606081016040820135640100000000811115610fa657600080fd5b820183602082011115610fb857600080fd5b80359060200191846001830284011164010000000083111715610fda57600080fd5b509092509050612def565b348015610ff157600080fd5b506103ea6004803603602081101561100857600080fd5b50356001600160a01b0316612f1e565b60696020526000908152604090205481565b33611033614d24565b61103d8284612f80565b602081015181519192506000916110599163ffffffff6130e016565b905061107c83856110778560400151856130e090919063ffffffff16565b61313a565b6001600160a01b0383166000818152607360209081526040808320888452825291829020805485019055845185820151868401518451928352928201528083019190915290518692917f4119153d17a36f9597d40e3ab4148d03261a439dddbec4e91799ab7159608e26919081900360600190a350505050565b336110ff614d24565b6111098284612f80565b90506000826001600160a01b0316611146836040015161113a856020015186600001516130e090919063ffffffff16565b9063ffffffff6130e016565b604051600081818185875af1925050503d8060008114611182576040519150601f19603f3d011682016040523d82523d6000602084013e611187565b606091505b50509050806111dd576040805162461bcd60e51b815260206004820152601260248201527f4661696c656420746f2073656e642046544d0000000000000000000000000000604482015290519081900360640190fd5b83836001600160a01b03167fc1d8eb6e444b89fb8ff0991c19311c070df704ccb009e210d1462d5b2410bf4584600001518560200151866040015160405180848152602001838152602001828152602001935050505060405180910390a350505050565b607b546001600160a01b031681565b600061125c8383612c35565b61128a57506001600160a01b03821660009081526072602090815260408083208484529091529020546112d3565b6001600160a01b0383166000818152607360209081526040808320868452825280832054938352607282528083208684529091529020546112d09163ffffffff61324616565b90505b92915050565b60765481565b6112e833613288565b6113235760405162461bcd60e51b8152600401808060200182810382526029815260200180614e046029913960400191505060405180910390fd5b611330898989600061329c565b6001600160a01b0389166000908152606f602090815260408083208b8452909152902060020181905561136287613434565b851561143657868611156113a75760405162461bcd60e51b815260040180806020018281038252602c815260200180614ec0602c913960400191505060405180910390fd5b6001600160a01b03891660008181526073602090815260408083208c845282528083208a8155600181018a90556002810189905560038101889055848452607483528184208d855283529281902086905580518781529182018a9052805192938c9390927f138940e95abffcd789b497bf6188bba3afa5fbd22fb5c42c2f6018d1bf0f4e7892908290030190a3505b505050505050505050565b3360008181526073602090815260408083208684529091528120909190836114b0576040805162461bcd60e51b815260206004820152600b60248201527f7a65726f20616d6f756e74000000000000000000000000000000000000000000604482015290519081900360640190fd5b6114ba8286612c35565b61150b576040805162461bcd60e51b815260206004820152600d60248201527f6e6f74206c6f636b656420757000000000000000000000000000000000000000604482015290519081900360640190fd5b8054841115611561576040805162461bcd60e51b815260206004820152601760248201527f6e6f7420656e6f756768206c6f636b6564207374616b65000000000000000000604482015290519081900360640190fd5b61156b82866134d2565b6115bc576040805162461bcd60e51b815260206004820152601860248201527f6f75747374616e64696e67207346544d2062616c616e63650000000000000000604482015290519081900360640190fd5b6115c6828661358d565b5060006115d98387878560000154613758565b905081600301546363401ec501826002015410156115f5575060005b8154859003825580156116185761160f8387836001613889565b61161881613a8f565b85836001600160a01b03167fef6c0c14fe9aa51af36acd791464dec3badbde668b63189b47bfa4e25be9b2b98784604051808381526020018281526020019250505060405180910390a395945050505050565b61167433613288565b6116af5760405162461bcd60e51b8152600401808060200182810382526029815260200180614e046029913960400191505060405180910390fd5b80611701576040805162461bcd60e51b815260206004820152600c60248201527f77726f6e67207374617475730000000000000000000000000000000000000000604482015290519081900360640190fd5b61170b8282613af9565b6117168260006129e0565b6000828152606860205260408120600601546001600160a01b03169061173f9082908190613c23565b505050565b607160209081526000938452604080852082529284528284209052825290208054600182015460029092015490919083565b608254604080516001600160a01b03878116602483015286811660448084019190915283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4a7702bb000000000000000000000000000000000000000000000000000000001781529251825160009592909216938693928291908083835b6020831061184557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611808565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d80600081146118a8576040519150601f19603f3d011682016040523d82523d6000602084013e6118ad565b606091505b5050905080806118bb575082155b61190c576040805162461bcd60e51b815260206004820152601b60248201527f676f7620766f746573207265636f756e74696e67206661696c65640000000000604482015290519081900360640190fd5b5050505050565b606d5481565b607760205280600052604060002060009150905080600701549080600801549080600901549080600a01549080600b01549080600c01549080600d0154905087565b33611964614d24565b506001600160a01b038116600090815260716020908152604080832086845282528083208584528252918290208251606081018452815480825260018301549382019390935260029091015492810192909252611a08576040805162461bcd60e51b815260206004820152601560248201527f7265717565737420646f65736e27742065786973740000000000000000000000604482015290519081900360640190fd5b611a1282856134d2565b611a63576040805162461bcd60e51b815260206004820152601860248201527f6f75747374616e64696e67207346544d2062616c616e63650000000000000000604482015290519081900360640190fd5b60208082015182516000878152606890935260409092206001015490919015801590611a9f575060008681526068602052604090206001015482115b15611ac0575050600084815260686020526040902060018101546002909101545b608160009054906101000a90046001600160a01b03166001600160a01b031663b82b84276040518163ffffffff1660e01b815260040160206040518083038186803b158015611b0e57600080fd5b505afa158015611b22573d6000803e3d6000fd5b505050506040513d6020811015611b3857600080fd5b50518201611b44613dcd565b1015611b97576040805162461bcd60e51b815260206004820152601660248201527f6e6f7420656e6f7567682074696d652070617373656400000000000000000000604482015290519081900360640190fd5b608160009054906101000a90046001600160a01b03166001600160a01b031663650acd666040518163ffffffff1660e01b815260040160206040518083038186803b158015611be557600080fd5b505afa158015611bf9573d6000803e3d6000fd5b505050506040513d6020811015611c0f57600080fd5b50518101611c1b61250e565b1015611c6e576040805162461bcd60e51b815260206004820152601860248201527f6e6f7420656e6f7567682065706f636873207061737365640000000000000000604482015290519081900360640190fd5b6001600160a01b0384166000908152607160209081526040808320898452825280832088845290915281206002015490611ca7886129a2565b90506000611cc98383607a60008d815260200190815260200160002054613dd1565b6001600160a01b03881660009081526071602090815260408083208d845282528083208c845290915281208181556001810182905560020155606e8054820190559050808311611d60576040805162461bcd60e51b815260206004820152601660248201527f7374616b652069732066756c6c7920736c617368656400000000000000000000604482015290519081900360640190fd5b60006001600160a01b038816611d7c858463ffffffff61324616565b604051600081818185875af1925050503d8060008114611db8576040519150601f19603f3d011682016040523d82523d6000602084013e611dbd565b606091505b5050905080611e13576040805162461bcd60e51b815260206004820152601260248201527f4661696c656420746f2073656e642046544d0000000000000000000000000000604482015290519081900360640190fd5b611e1c82613a8f565b888a896001600160a01b03167f75e161b3e824b114fc1a33274bd7091918dd4e639cede50b78b15a4eea956a21876040518082815260200191505060405180910390a450505050505050505050565b611e7361265a565b611ec4576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b611ecd826129a2565b611f1e576040805162461bcd60e51b815260206004820152601760248201527f76616c696461746f722069736e277420736c6173686564000000000000000000604482015290519081900360640190fd5b611f26613e33565b811115611f645760405162461bcd60e51b8152600401808060200182810382526021815260200180614e4e6021913960400191505060405180910390fd5b6000828152607a60209081526040918290208390558151838152915184927f047575f43f09a7a093d94ec483064acfc61b7e25c0de28017da442abf99cb91792908290030190a25050565b33611fba818561358d565b5060008211612010576040805162461bcd60e51b815260206004820152600b60248201527f7a65726f20616d6f756e74000000000000000000000000000000000000000000604482015290519081900360640190fd5b61201a8185611250565b82111561206e576040805162461bcd60e51b815260206004820152601960248201527f6e6f7420656e6f75676820756e6c6f636b6564207374616b6500000000000000604482015290519081900360640190fd5b61207881856134d2565b6120c9576040805162461bcd60e51b815260206004820152601860248201527f6f75747374616e64696e67207346544d2062616c616e63650000000000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260716020908152604080832087845282528083208684529091529020600201541561214a576040805162461bcd60e51b815260206004820152601360248201527f7772494420616c72656164792065786973747300000000000000000000000000604482015290519081900360640190fd5b6121578185846001613889565b6001600160a01b03811660009081526071602090815260408083208784528252808320868452909152902060020182905561219061250e565b6001600160a01b038216600090815260716020908152604080832088845282528083208784529091529020556121c4613dcd565b6001600160a01b038216600090815260716020908152604080832088845282528083208784529091528120600101919091556122019085906129e0565b8284826001600160a01b03167fd3bb4e423fbea695d16b982f9f682dc5f35152e5411646a8a5a79a6b02ba8d57856040518082815260200191505060405180910390a450505050565b61225333613288565b61228e5760405162461bcd60e51b8152600401808060200182810382526029815260200180614e046029913960400191505060405180910390fd5b6122d6898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b92508a91508990508888613e3f565b606b5488111561143657606b889055505050505050505050565b6000818152606860209081526040808320600601546001600160a01b03168352607282528083208484529091529020545b919050565b600091825260776020908152604080842092845291905290205490565b606e5481565b6000612353614d24565b61235d8484614006565b80516020820151604083015192935061237f9261113a9163ffffffff6130e016565b949350505050565b60009182526077602090815260408084209284526001909201905290205490565b60006123b48383612c35565b6123c0575060006112d3565b506001600160a01b03919091166000908152607360209081526040808320938352929052205490565b60006123f3614d24565b506001600160a01b0383166000908152606f602090815260408083208584528252918290208251606081018452815480825260018301549382018490526002909201549381018490529261237f92909161113a919063ffffffff6130e016565b61245b61265a565b6124ac576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6067546001015b90565b60675481565b606a6020908152600091825260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600186161502019093169290920491820184900484028101840190945280845290918301828280156125cf5780601f106125a4576101008083540402835291602001916125cf565b820191906000526020600020905b8154815290600101906020018083116125b257829003601f168201915b505050505081565b6082546001600160a01b031681565b606c5481565b6125f6828261358d565b612647576040805162461bcd60e51b815260206004820152601060248201527f6e6f7468696e6720746f20737461736800000000000000000000000000000000604482015290519081900360640190fd5b5050565b6033546001600160a01b031690565b6033546001600160a01b0316331490565b61267361265a565b6126c4576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6126cd81613a8f565b50565b607360209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b6126cd33823461313a565b60009182526077602090815260408084209284526005909201905290205490565b608160009054906101000a90046001600160a01b03166001600160a01b031663c5f530af6040518163ffffffff1660e01b815260040160206040518083038186803b15801561277c57600080fd5b505afa158015612790573d6000803e3d6000fd5b505050506040513d60208110156127a657600080fd5b50513410156127fc576040805162461bcd60e51b815260206004820152601760248201527f696e73756666696369656e742073656c662d7374616b65000000000000000000604482015290519081900360640190fd5b8061284e576040805162461bcd60e51b815260206004820152600c60248201527f656d707479207075626b65790000000000000000000000000000000000000000604482015290519081900360640190fd5b61288e3383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061407492505050565b61264733606b543461313a565b607060209081526000928352604080842090915290825290205481565b606860205260009081526040902080546001820154600283015460038401546004850154600586015460069096015494959394929391929091906001600160a01b031687565b607460209081526000928352604080842090915290825290208054600182015460029092015490919083565b60008181526077602090815260409182902060060180548351818402810184019094528084526060939283018282801561298357602002820191906000526020600020905b81548152602001906001019080831161296f575b50505050509050919050565b3361299c8185858561409f565b50505050565b600090815260686020526040902054608016151590565b607f546001600160a01b031681565b607a6020526000908152604090205481565b606b5481565b6129e982614454565b612a3a576040805162461bcd60e51b815260206004820152601760248201527f76616c696461746f7220646f65736e2774206578697374000000000000000000604482015290519081900360640190fd5b60008281526068602052604090206003810154905415612a58575060005b606654604080517fa4066fbe000000000000000000000000000000000000000000000000000000008152600481018690526024810184905290516001600160a01b039092169163a4066fbe9160448082019260009290919082900301818387803b158015612ac557600080fd5b505af1158015612ad9573d6000803e3d6000fd5b50505050818015612ae957508015155b1561173f576066546000848152606a60205260409081902081517f242a6e3f0000000000000000000000000000000000000000000000000000000081526004810187815260248201938452825460027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001831615610100020190911604604483018190526001600160a01b039095169463242a6e3f94899493909160649091019084908015612bda5780601f10612baf57610100808354040283529160200191612bda565b820191906000526020600020905b815481529060010190602001808311612bbd57829003601f168201915b50509350505050600060405180830381600087803b158015612bfb57600080fd5b505af1158015612c0f573d6000803e3d6000fd5b50505050505050565b607260209081526000928352604080842090915290825290205481565b6001600160a01b038216600090815260736020908152604080832084845290915281206002015415801590612c8c57506001600160a01b038316600090815260736020908152604080832085845290915290205415155b80156112d057506001600160a01b0383166000908152607360209081526040808320858452909152902060020154612cc2613dcd565b11159392505050565b607e5481565b60009182526077602090815260408084209284526003909201905290205490565b3381612d45576040805162461bcd60e51b815260206004820152600b60248201527f7a65726f20616d6f756e74000000000000000000000000000000000000000000604482015290519081900360640190fd5b612d4f8185612c35565b15612da1576040805162461bcd60e51b815260206004820152601160248201527f616c7265616479206c6f636b6564207570000000000000000000000000000000604482015290519081900360640190fd5b61299c8185858561409f565b60009182526077602090815260408084209284526002909201905290205490565b60009182526077602090815260408084209284526004909201905290205490565b612df761265a565b612e48576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b612e5183613434565b6040516001600160a01b0385169084156108fc029085906000818181858888f19350505050158015612e87573d6000803e3d6000fd5b50836001600160a01b03167f9eec469b348bcf64bbfb60e46ce7b160e2e09bf5421496a2cdbc43714c28b8ad84848460405180848152602001806020018281038252848482818152602001925080828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909201829003965090945050505050a250505050565b612f2661265a565b612f77576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6126cd8161446b565b612f88614d24565b612f9283836134d2565b612fe3576040805162461bcd60e51b815260206004820152601860248201527f6f75747374616e64696e67207346544d2062616c616e63650000000000000000604482015290519081900360640190fd5b612fed838361358d565b50506001600160a01b0382166000908152606f602090815260408083208484528252808320815160608101835281548082526001830154948201859052600290920154928101839052939261304b9261113a9163ffffffff6130e016565b90508061309f576040805162461bcd60e51b815260206004820152600c60248201527f7a65726f20726577617264730000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0384166000908152606f60209081526040808320868452909152812081815560018101829055600201556130d981613434565b5092915050565b6000828201838110156112d0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b61314382614454565b613194576040805162461bcd60e51b815260206004820152601760248201527f76616c696461746f7220646f65736e2774206578697374000000000000000000604482015290519081900360640190fd5b600082815260686020526040902054156131f5576040805162461bcd60e51b815260206004820152601660248201527f76616c696461746f722069736e27742061637469766500000000000000000000604482015290519081900360640190fd5b613202838383600161329c565b61320b82614524565b61173f5760405162461bcd60e51b8152600401808060200182810382526029815260200180614e976029913960400191505060405180910390fd5b60006112d083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506145ec565b6066546001600160a01b0390811691161490565b600082116132f1576040805162461bcd60e51b815260206004820152600b60248201527f7a65726f20616d6f756e74000000000000000000000000000000000000000000604482015290519081900360640190fd5b6132fb848461358d565b506001600160a01b0384166000908152607260209081526040808320868452909152902054613330908363ffffffff6130e016565b6001600160a01b0385166000908152607260209081526040808320878452825280832093909355606890522060030154613370818463ffffffff6130e016565b600085815260686020526040902060030155606c54613395908463ffffffff6130e016565b606c556000848152606860205260409020546133c257606d546133be908463ffffffff6130e016565b606d555b6133cd8482156129e0565b60408051848152905185916001600160a01b038816917f9a8f44850296624dadfd9c246d17e47171d35727a181bd090aa14bbbe00238bb9181900360200190a360008481526068602052604090206006015461190c9086906001600160a01b031684613c23565b606654604080517f66e7ea0f0000000000000000000000000000000000000000000000000000000081523060048201526024810184905290516001600160a01b03909216916366e7ea0f9160448082019260009290919082900301818387803b1580156134a057600080fd5b505af11580156134b4573d6000803e3d6000fd5b50506076546134cc925090508263ffffffff6130e016565b60765550565b607b546000906001600160a01b03166134ed575060016112d3565b607b54604080517f21d585c30000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015260248201869052915191909216916321d585c3916044808301926020929190829003018186803b15801561355a57600080fd5b505afa15801561356e573d6000803e3d6000fd5b505050506040513d602081101561358457600080fd5b50519392505050565b6000613597614d24565b6135a18484614683565b90506135ac836147bb565b6001600160a01b0385166000818152607060209081526040808320888452825280832094909455918152606f8252828120868252825282902082516060810184528154815260018201549281019290925260020154918101919091526136129082614816565b6001600160a01b0385166000818152606f602090815260408083208884528252808320855181558583015160018083019190915595820151600291820155938352607482528083208884528252918290208251606081018452815481529481015491850191909152909101549082015261368c9082614816565b6001600160a01b0385166000908152607460209081526040808320878452825291829020835181559083015160018201559101516002909101556136d08484612c35565b613733576001600160a01b0384166000818152607360209081526040808320878452825280832083815560018082018590556002808301869055600390920185905594845260748352818420888552909252822082815592830182905591909101555b60208101511515806137455750805115155b8061237f57506040015115159392505050565b6001600160a01b038416600090815260746020908152604080832086845290915281205481906137a0908490613794908763ffffffff61488816565b9063ffffffff6148e116565b6001600160a01b0387166000908152607460209081526040808320898452909152812060010154919250906137e1908590613794908863ffffffff61488816565b6001600160a01b03881660009081526074602090815260408083208a8452909152902054909150600282048301906138199084613246565b6001600160a01b03891660009081526074602090815260408083208b845290915290209081556001015461384d9083613246565b6001600160a01b03891660009081526074602090815260408083208b845290915290206001015585811061387e5750845b979650505050505050565b6001600160a01b038416600090815260726020908152604080832086845282528083208054869003905560689091529020600301546138ce908363ffffffff61324616565b600084815260686020526040902060030155606c546138f3908363ffffffff61324616565b606c5560008381526068602052604090205461392057606d5461391c908363ffffffff61324616565b606d555b600061392b846122f0565b90508015613a5d57600084815260686020526040902054613a5857608160009054906101000a90046001600160a01b03166001600160a01b031663c5f530af6040518163ffffffff1660e01b815260040160206040518083038186803b15801561399457600080fd5b505afa1580156139a8573d6000803e3d6000fd5b505050506040513d60208110156139be57600080fd5b5051811015613a14576040805162461bcd60e51b815260206004820152601760248201527f696e73756666696369656e742073656c662d7374616b65000000000000000000604482015290519081900360640190fd5b613a1d84614524565b613a585760405162461bcd60e51b8152600401808060200182810382526029815260200180614e976029913960400191505060405180910390fd5b613a68565b613a68846001613af9565b60008481526068602052604090206006015461190c9086906001600160a01b031684613c23565b80156126cd5760405160009082156108fc0290839083818181858288f19350505050158015613ac2573d6000803e3d6000fd5b506040805182815290517f8918bd6046d08b314e457977f29562c5d76a7030d79b1edba66e8a5da0b77ae89181900360200190a150565b600082815260686020526040902054158015613b1457508015155b15613b4157600082815260686020526040902060030154606d54613b3d9163ffffffff61324616565b606d555b60008281526068602052604090205481111561264757600082815260686020526040902081815560020154613be957613b7861250e565b600083815260686020526040902060020155613b92613dcd565b6000838152606860209081526040918290206001810184905560020154825190815290810192909252805184927fac4801c32a6067ff757446524ee4e7a373797278ac3c883eac5c693b4ad72e4792908290030190a25b60408051828152905183917fcd35267e7654194727477d6c78b541a553483cff7f92a055d17868d3da6e953e919081900360200190a25050565b6082546001600160a01b03161561173f57608254604080516001600160a01b03868116602483015285811660448084019190915283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4a7702bb00000000000000000000000000000000000000000000000000000000178152925182516000959290921693627a120093928291908083835b60208310613d0657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613cc9565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d8060008114613d69576040519150601f19603f3d011682016040523d82523d6000602084013e613d6e565b606091505b505090508080613d7c575081155b61299c576040805162461bcd60e51b815260206004820152601b60248201527f676f7620766f746573207265636f756e74696e67206661696c65640000000000604482015290519081900360640190fd5b4290565b6000821580613de75750613de3613e33565b8210155b15613df457506000613e2c565b613e1f600161113a613e04613e33565b61379486613e10613e33565b8a91900363ffffffff61488816565b905083811115613e2c5750825b9392505050565b670de0b6b3a764000090565b6001600160a01b03881660009081526069602052604090205415613eaa576040805162461bcd60e51b815260206004820152601860248201527f76616c696461746f7220616c7265616479206578697374730000000000000000604482015290519081900360640190fd5b6001600160a01b03881660008181526069602090815260408083208b90558a8352606882528083208981556004810189905560058101889055600181018690556002810187905560060180547fffffffffffffffffffffffff000000000000000000000000000000000000000016909417909355606a81529190208751613f3392890190614d45565b50876001600160a01b0316877f49bca1ed2666922f9f1690c26a569e1299c2a715fe57647d77e81adfabbf25bf8686604051808381526020018281526020019250505060405180910390a38115613fbf576040805183815260208101839052815189927fac4801c32a6067ff757446524ee4e7a373797278ac3c883eac5c693b4ad72e47928290030190a25b8415613ffc5760408051868152905188917fcd35267e7654194727477d6c78b541a553483cff7f92a055d17868d3da6e953e919081900360200190a25b5050505050505050565b61400e614d24565b614016614d24565b6140208484614683565b6001600160a01b0385166000908152606f60209081526040808320878452825291829020825160608101845281548152600182015492810192909252600201549181019190915290915061237f9082614816565b606b80546001019081905561173f838284600061408f61250e565b614097613dcd565b600080613e3f565b6140a98484611250565b8111156140fd576040805162461bcd60e51b815260206004820152601060248201527f6e6f7420656e6f756768207374616b6500000000000000000000000000000000604482015290519081900360640190fd5b6000838152606860205260409020541561415e576040805162461bcd60e51b815260206004820152601660248201527f76616c696461746f722069736e27742061637469766500000000000000000000604482015290519081900360640190fd5b608160009054906101000a90046001600160a01b03166001600160a01b0316630d7b26096040518163ffffffff1660e01b815260040160206040518083038186803b1580156141ac57600080fd5b505afa1580156141c0573d6000803e3d6000fd5b505050506040513d60208110156141d657600080fd5b505182108015906142605750608160009054906101000a90046001600160a01b03166001600160a01b0316630d4955e36040518163ffffffff1660e01b815260040160206040518083038186803b15801561423057600080fd5b505afa158015614244573d6000803e3d6000fd5b505050506040513d602081101561425a57600080fd5b50518211155b6142b1576040805162461bcd60e51b815260206004820152601260248201527f696e636f7272656374206475726174696f6e0000000000000000000000000000604482015290519081900360640190fd5b60006142bf8361113a613dcd565b6000858152606860205260409020600601549091506001600160a01b03908116908616811461434d576001600160a01b038116600090815260736020908152604080832088845290915290206002015482111561434d5760405162461bcd60e51b8152600401808060200182810382526028815260200180614e6f6028913960400191505060405180910390fd5b614357868661358d565b506001600160a01b0386166000908152607360209081526040808320888452909152902060038101548510156143d4576040805162461bcd60e51b815260206004820152601f60248201527f6c6f636b7570206475726174696f6e2063616e6e6f7420646563726561736500604482015290519081900360640190fd5b80546143e6908563ffffffff6130e016565b81556143f061250e565b600182015560028101839055600381018590556040805186815260208101869052815188926001600160a01b038b16927f138940e95abffcd789b497bf6188bba3afa5fbd22fb5c42c2f6018d1bf0f4e78929081900390910190a350505050505050565b600090815260686020526040902060050154151590565b6001600160a01b0381166144b05760405162461bcd60e51b8152600401808060200182810382526026815260200180614dde6026913960400191505060405180910390fd5b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60006145d1614531613e33565b608154604080517f2265f2840000000000000000000000000000000000000000000000000000000081529051613794926001600160a01b031691632265f284916004808301926020929190829003018186803b15801561459057600080fd5b505afa1580156145a4573d6000803e3d6000fd5b505050506040513d60208110156145ba57600080fd5b50516145c5866122f0565b9063ffffffff61488816565b60008381526068602052604090206003015411159050919050565b6000818484111561467b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614640578181015183820152602001614628565b50505050905090810190601f16801561466d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b61468b614d24565b6001600160a01b0383166000908152607060209081526040808320858452909152812054906146b9846147bb565b905060006146c78686614923565b9050818111156146d45750805b828110156146df5750815b6001600160a01b0386166000818152607360209081526040808320898452825280832093835260728252808320898452909152812054825490919061472b90839063ffffffff61324616565b9050600061473f84600001548a8988614a00565b9050614749614d24565b614757828660030154614a63565b9050614765838b8a89614a00565b915061476f614d24565b61477a836000614a63565b9050614788858c898b614a00565b9250614792614d24565b61479d846000614a63565b90506147aa838383614c24565b9d9c50505050505050505050505050565b6000818152606860205260408120600201541561480e5760008281526068602052604090206002015460675410156147f65750606754612321565b50600081815260686020526040902060020154612321565b505060675490565b61481e614d24565b604080516060810190915282518451829161483f919063ffffffff6130e016565b815260200161485f846020015186602001516130e090919063ffffffff16565b815260200161487f846040015186604001516130e090919063ffffffff16565b90529392505050565b600082614897575060006112d3565b828202828482816148a457fe5b04146112d05760405162461bcd60e51b8152600401808060200182810382526021815260200180614e2d6021913960400191505060405180910390fd5b60006112d083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614c3f565b6001600160a01b0382166000908152607360209081526040808320848452909152812060010154606754614958858583614ca4565b156149665791506112d39050565b614971858584614ca4565b614980576000925050506112d3565b80821115614993576000925050506112d3565b808210156149c6576002818301046149ac868683614ca4565b156149bc578060010192506149c0565b8091505b50614993565b806149d6576000925050506112d3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01949350505050565b6000818310614a115750600061237f565b60008381526077602081815260408084208885526001908101835281852054878652938352818520898652019091529091205461387e614a4f613e33565b613794896145c5858763ffffffff61324616565b614a6b614d24565b60405180606001604052806000815260200160008152602001600081525090506000608160009054906101000a90046001600160a01b03166001600160a01b0316635e2308d26040518163ffffffff1660e01b815260040160206040518083038186803b158015614adb57600080fd5b505afa158015614aef573d6000803e3d6000fd5b505050506040513d6020811015614b0557600080fd5b505190508215614bfd57600081614b1a613e33565b0390506000614bac608160009054906101000a90046001600160a01b03166001600160a01b0316630d4955e36040518163ffffffff1660e01b815260040160206040518083038186803b158015614b7057600080fd5b505afa158015614b84573d6000803e3d6000fd5b505050506040513d6020811015614b9a57600080fd5b5051613794848863ffffffff61488816565b90506000614bcd614bbb613e33565b6137948987860163ffffffff61488816565b9050614bea614bda613e33565b613794898763ffffffff61488816565b6020860181905290038452506130d99050565b614c18614c08613e33565b613794868463ffffffff61488816565b60408301525092915050565b614c2c614d24565b61237f614c398585614816565b83614816565b60008183614c8e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614640578181015183820152602001614628565b506000838581614c9a57fe5b0495945050505050565b6001600160a01b0383166000908152607360209081526040808320858452909152812060010154821080159061237f57506001600160a01b0384166000908152607360209081526040808320868452909152902060020154614d0583614d0f565b1115949350505050565b60009081526077602052604090206007015490565b60405180606001604052806000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614d8657805160ff1916838001178555614db3565b82800160010185558215614db3579182015b82811115614db3578251825591602001919060010190614d98565b50614dbf929150614dc3565b5090565b61251591905b80821115614dbf5760008155600101614dc956fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737363616c6c6572206973206e6f7420746865204e6f64654472697665724175746820636f6e7472616374536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776d757374206265206c657373207468616e206f7220657175616c20746f20312e3076616c696461746f72206c6f636b757020706572696f642077696c6c20656e64206561726c69657276616c696461746f7227732064656c65676174696f6e73206c696d69742069732065786365656465646c6f636b6564207374616b652069732067726561746572207468616e207468652077686f6c65207374616b65a265627a7a7231582087037332c1e7e6c6d22bd22a9138be994cc25958ae26e11634b7757630a9b59464736f6c63430005110032",
    35  }
    36  
    37  // ContractABI is the input ABI used to generate the binding from.
    38  // Deprecated: Use ContractMetaData.ABI instead.
    39  var ContractABI = ContractMetaData.ABI
    40  
    41  // ContractBin is the compiled bytecode used for deploying new contracts.
    42  // Deprecated: Use ContractMetaData.Bin instead.
    43  var ContractBin = ContractMetaData.Bin
    44  
    45  // DeployContract deploys a new Ethereum contract, binding an instance of Contract to it.
    46  func DeployContract(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Contract, error) {
    47  	parsed, err := ContractMetaData.GetAbi()
    48  	if err != nil {
    49  		return common.Address{}, nil, nil, err
    50  	}
    51  	if parsed == nil {
    52  		return common.Address{}, nil, nil, errors.New("GetABI returned nil")
    53  	}
    54  
    55  	address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractBin), backend)
    56  	if err != nil {
    57  		return common.Address{}, nil, nil, err
    58  	}
    59  	return address, tx, &Contract{ContractCaller: ContractCaller{contract: contract}, ContractTransactor: ContractTransactor{contract: contract}, ContractFilterer: ContractFilterer{contract: contract}}, nil
    60  }
    61  
    62  // Contract is an auto generated Go binding around an Ethereum contract.
    63  type Contract struct {
    64  	ContractCaller     // Read-only binding to the contract
    65  	ContractTransactor // Write-only binding to the contract
    66  	ContractFilterer   // Log filterer for contract events
    67  }
    68  
    69  // ContractCaller is an auto generated read-only Go binding around an Ethereum contract.
    70  type ContractCaller struct {
    71  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    72  }
    73  
    74  // ContractTransactor is an auto generated write-only Go binding around an Ethereum contract.
    75  type ContractTransactor struct {
    76  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    77  }
    78  
    79  // ContractFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
    80  type ContractFilterer struct {
    81  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    82  }
    83  
    84  // ContractSession is an auto generated Go binding around an Ethereum contract,
    85  // with pre-set call and transact options.
    86  type ContractSession struct {
    87  	Contract     *Contract         // Generic contract binding to set the session for
    88  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    89  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    90  }
    91  
    92  // ContractCallerSession is an auto generated read-only Go binding around an Ethereum contract,
    93  // with pre-set call options.
    94  type ContractCallerSession struct {
    95  	Contract *ContractCaller // Generic contract caller binding to set the session for
    96  	CallOpts bind.CallOpts   // Call options to use throughout this session
    97  }
    98  
    99  // ContractTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   100  // with pre-set transact options.
   101  type ContractTransactorSession struct {
   102  	Contract     *ContractTransactor // Generic contract transactor binding to set the session for
   103  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
   104  }
   105  
   106  // ContractRaw is an auto generated low-level Go binding around an Ethereum contract.
   107  type ContractRaw struct {
   108  	Contract *Contract // Generic contract binding to access the raw methods on
   109  }
   110  
   111  // ContractCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   112  type ContractCallerRaw struct {
   113  	Contract *ContractCaller // Generic read-only contract binding to access the raw methods on
   114  }
   115  
   116  // ContractTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   117  type ContractTransactorRaw struct {
   118  	Contract *ContractTransactor // Generic write-only contract binding to access the raw methods on
   119  }
   120  
   121  // NewContract creates a new instance of Contract, bound to a specific deployed contract.
   122  func NewContract(address common.Address, backend bind.ContractBackend) (*Contract, error) {
   123  	contract, err := bindContract(address, backend, backend, backend)
   124  	if err != nil {
   125  		return nil, err
   126  	}
   127  	return &Contract{ContractCaller: ContractCaller{contract: contract}, ContractTransactor: ContractTransactor{contract: contract}, ContractFilterer: ContractFilterer{contract: contract}}, nil
   128  }
   129  
   130  // NewContractCaller creates a new read-only instance of Contract, bound to a specific deployed contract.
   131  func NewContractCaller(address common.Address, caller bind.ContractCaller) (*ContractCaller, error) {
   132  	contract, err := bindContract(address, caller, nil, nil)
   133  	if err != nil {
   134  		return nil, err
   135  	}
   136  	return &ContractCaller{contract: contract}, nil
   137  }
   138  
   139  // NewContractTransactor creates a new write-only instance of Contract, bound to a specific deployed contract.
   140  func NewContractTransactor(address common.Address, transactor bind.ContractTransactor) (*ContractTransactor, error) {
   141  	contract, err := bindContract(address, nil, transactor, nil)
   142  	if err != nil {
   143  		return nil, err
   144  	}
   145  	return &ContractTransactor{contract: contract}, nil
   146  }
   147  
   148  // NewContractFilterer creates a new log filterer instance of Contract, bound to a specific deployed contract.
   149  func NewContractFilterer(address common.Address, filterer bind.ContractFilterer) (*ContractFilterer, error) {
   150  	contract, err := bindContract(address, nil, nil, filterer)
   151  	if err != nil {
   152  		return nil, err
   153  	}
   154  	return &ContractFilterer{contract: contract}, nil
   155  }
   156  
   157  // bindContract binds a generic wrapper to an already deployed contract.
   158  func bindContract(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   159  	parsed, err := abi.JSON(strings.NewReader(ContractABI))
   160  	if err != nil {
   161  		return nil, err
   162  	}
   163  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   164  }
   165  
   166  // Call invokes the (constant) contract method with params as input values and
   167  // sets the output to result. The result type might be a single field for simple
   168  // returns, a slice of interfaces for anonymous returns and a struct for named
   169  // returns.
   170  func (_Contract *ContractRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   171  	return _Contract.Contract.ContractCaller.contract.Call(opts, result, method, params...)
   172  }
   173  
   174  // Transfer initiates a plain transaction to move funds to the contract, calling
   175  // its default method if one is available.
   176  func (_Contract *ContractRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   177  	return _Contract.Contract.ContractTransactor.contract.Transfer(opts)
   178  }
   179  
   180  // Transact invokes the (paid) contract method with params as input values.
   181  func (_Contract *ContractRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   182  	return _Contract.Contract.ContractTransactor.contract.Transact(opts, method, params...)
   183  }
   184  
   185  // Call invokes the (constant) contract method with params as input values and
   186  // sets the output to result. The result type might be a single field for simple
   187  // returns, a slice of interfaces for anonymous returns and a struct for named
   188  // returns.
   189  func (_Contract *ContractCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   190  	return _Contract.Contract.contract.Call(opts, result, method, params...)
   191  }
   192  
   193  // Transfer initiates a plain transaction to move funds to the contract, calling
   194  // its default method if one is available.
   195  func (_Contract *ContractTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   196  	return _Contract.Contract.contract.Transfer(opts)
   197  }
   198  
   199  // Transact invokes the (paid) contract method with params as input values.
   200  func (_Contract *ContractTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   201  	return _Contract.Contract.contract.Transact(opts, method, params...)
   202  }
   203  
   204  // CurrentEpoch is a free data retrieval call binding the contract method 0x76671808.
   205  //
   206  // Solidity: function currentEpoch() view returns(uint256)
   207  func (_Contract *ContractCaller) CurrentEpoch(opts *bind.CallOpts) (*big.Int, error) {
   208  	var out []interface{}
   209  	err := _Contract.contract.Call(opts, &out, "currentEpoch")
   210  
   211  	if err != nil {
   212  		return *new(*big.Int), err
   213  	}
   214  
   215  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   216  
   217  	return out0, err
   218  
   219  }
   220  
   221  // CurrentEpoch is a free data retrieval call binding the contract method 0x76671808.
   222  //
   223  // Solidity: function currentEpoch() view returns(uint256)
   224  func (_Contract *ContractSession) CurrentEpoch() (*big.Int, error) {
   225  	return _Contract.Contract.CurrentEpoch(&_Contract.CallOpts)
   226  }
   227  
   228  // CurrentEpoch is a free data retrieval call binding the contract method 0x76671808.
   229  //
   230  // Solidity: function currentEpoch() view returns(uint256)
   231  func (_Contract *ContractCallerSession) CurrentEpoch() (*big.Int, error) {
   232  	return _Contract.Contract.CurrentEpoch(&_Contract.CallOpts)
   233  }
   234  
   235  // CurrentSealedEpoch is a free data retrieval call binding the contract method 0x7cacb1d6.
   236  //
   237  // Solidity: function currentSealedEpoch() view returns(uint256)
   238  func (_Contract *ContractCaller) CurrentSealedEpoch(opts *bind.CallOpts) (*big.Int, error) {
   239  	var out []interface{}
   240  	err := _Contract.contract.Call(opts, &out, "currentSealedEpoch")
   241  
   242  	if err != nil {
   243  		return *new(*big.Int), err
   244  	}
   245  
   246  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   247  
   248  	return out0, err
   249  
   250  }
   251  
   252  // CurrentSealedEpoch is a free data retrieval call binding the contract method 0x7cacb1d6.
   253  //
   254  // Solidity: function currentSealedEpoch() view returns(uint256)
   255  func (_Contract *ContractSession) CurrentSealedEpoch() (*big.Int, error) {
   256  	return _Contract.Contract.CurrentSealedEpoch(&_Contract.CallOpts)
   257  }
   258  
   259  // CurrentSealedEpoch is a free data retrieval call binding the contract method 0x7cacb1d6.
   260  //
   261  // Solidity: function currentSealedEpoch() view returns(uint256)
   262  func (_Contract *ContractCallerSession) CurrentSealedEpoch() (*big.Int, error) {
   263  	return _Contract.Contract.CurrentSealedEpoch(&_Contract.CallOpts)
   264  }
   265  
   266  // GetEpochAccumulatedOriginatedTxsFee is a free data retrieval call binding the contract method 0xdc31e1af.
   267  //
   268  // Solidity: function getEpochAccumulatedOriginatedTxsFee(uint256 epoch, uint256 validatorID) view returns(uint256)
   269  func (_Contract *ContractCaller) GetEpochAccumulatedOriginatedTxsFee(opts *bind.CallOpts, epoch *big.Int, validatorID *big.Int) (*big.Int, error) {
   270  	var out []interface{}
   271  	err := _Contract.contract.Call(opts, &out, "getEpochAccumulatedOriginatedTxsFee", epoch, validatorID)
   272  
   273  	if err != nil {
   274  		return *new(*big.Int), err
   275  	}
   276  
   277  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   278  
   279  	return out0, err
   280  
   281  }
   282  
   283  // GetEpochAccumulatedOriginatedTxsFee is a free data retrieval call binding the contract method 0xdc31e1af.
   284  //
   285  // Solidity: function getEpochAccumulatedOriginatedTxsFee(uint256 epoch, uint256 validatorID) view returns(uint256)
   286  func (_Contract *ContractSession) GetEpochAccumulatedOriginatedTxsFee(epoch *big.Int, validatorID *big.Int) (*big.Int, error) {
   287  	return _Contract.Contract.GetEpochAccumulatedOriginatedTxsFee(&_Contract.CallOpts, epoch, validatorID)
   288  }
   289  
   290  // GetEpochAccumulatedOriginatedTxsFee is a free data retrieval call binding the contract method 0xdc31e1af.
   291  //
   292  // Solidity: function getEpochAccumulatedOriginatedTxsFee(uint256 epoch, uint256 validatorID) view returns(uint256)
   293  func (_Contract *ContractCallerSession) GetEpochAccumulatedOriginatedTxsFee(epoch *big.Int, validatorID *big.Int) (*big.Int, error) {
   294  	return _Contract.Contract.GetEpochAccumulatedOriginatedTxsFee(&_Contract.CallOpts, epoch, validatorID)
   295  }
   296  
   297  // GetEpochAccumulatedRewardPerToken is a free data retrieval call binding the contract method 0x61e53fcc.
   298  //
   299  // Solidity: function getEpochAccumulatedRewardPerToken(uint256 epoch, uint256 validatorID) view returns(uint256)
   300  func (_Contract *ContractCaller) GetEpochAccumulatedRewardPerToken(opts *bind.CallOpts, epoch *big.Int, validatorID *big.Int) (*big.Int, error) {
   301  	var out []interface{}
   302  	err := _Contract.contract.Call(opts, &out, "getEpochAccumulatedRewardPerToken", epoch, validatorID)
   303  
   304  	if err != nil {
   305  		return *new(*big.Int), err
   306  	}
   307  
   308  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   309  
   310  	return out0, err
   311  
   312  }
   313  
   314  // GetEpochAccumulatedRewardPerToken is a free data retrieval call binding the contract method 0x61e53fcc.
   315  //
   316  // Solidity: function getEpochAccumulatedRewardPerToken(uint256 epoch, uint256 validatorID) view returns(uint256)
   317  func (_Contract *ContractSession) GetEpochAccumulatedRewardPerToken(epoch *big.Int, validatorID *big.Int) (*big.Int, error) {
   318  	return _Contract.Contract.GetEpochAccumulatedRewardPerToken(&_Contract.CallOpts, epoch, validatorID)
   319  }
   320  
   321  // GetEpochAccumulatedRewardPerToken is a free data retrieval call binding the contract method 0x61e53fcc.
   322  //
   323  // Solidity: function getEpochAccumulatedRewardPerToken(uint256 epoch, uint256 validatorID) view returns(uint256)
   324  func (_Contract *ContractCallerSession) GetEpochAccumulatedRewardPerToken(epoch *big.Int, validatorID *big.Int) (*big.Int, error) {
   325  	return _Contract.Contract.GetEpochAccumulatedRewardPerToken(&_Contract.CallOpts, epoch, validatorID)
   326  }
   327  
   328  // GetEpochAccumulatedUptime is a free data retrieval call binding the contract method 0xdf00c922.
   329  //
   330  // Solidity: function getEpochAccumulatedUptime(uint256 epoch, uint256 validatorID) view returns(uint256)
   331  func (_Contract *ContractCaller) GetEpochAccumulatedUptime(opts *bind.CallOpts, epoch *big.Int, validatorID *big.Int) (*big.Int, error) {
   332  	var out []interface{}
   333  	err := _Contract.contract.Call(opts, &out, "getEpochAccumulatedUptime", epoch, validatorID)
   334  
   335  	if err != nil {
   336  		return *new(*big.Int), err
   337  	}
   338  
   339  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   340  
   341  	return out0, err
   342  
   343  }
   344  
   345  // GetEpochAccumulatedUptime is a free data retrieval call binding the contract method 0xdf00c922.
   346  //
   347  // Solidity: function getEpochAccumulatedUptime(uint256 epoch, uint256 validatorID) view returns(uint256)
   348  func (_Contract *ContractSession) GetEpochAccumulatedUptime(epoch *big.Int, validatorID *big.Int) (*big.Int, error) {
   349  	return _Contract.Contract.GetEpochAccumulatedUptime(&_Contract.CallOpts, epoch, validatorID)
   350  }
   351  
   352  // GetEpochAccumulatedUptime is a free data retrieval call binding the contract method 0xdf00c922.
   353  //
   354  // Solidity: function getEpochAccumulatedUptime(uint256 epoch, uint256 validatorID) view returns(uint256)
   355  func (_Contract *ContractCallerSession) GetEpochAccumulatedUptime(epoch *big.Int, validatorID *big.Int) (*big.Int, error) {
   356  	return _Contract.Contract.GetEpochAccumulatedUptime(&_Contract.CallOpts, epoch, validatorID)
   357  }
   358  
   359  // GetEpochOfflineBlocks is a free data retrieval call binding the contract method 0xa198d229.
   360  //
   361  // Solidity: function getEpochOfflineBlocks(uint256 epoch, uint256 validatorID) view returns(uint256)
   362  func (_Contract *ContractCaller) GetEpochOfflineBlocks(opts *bind.CallOpts, epoch *big.Int, validatorID *big.Int) (*big.Int, error) {
   363  	var out []interface{}
   364  	err := _Contract.contract.Call(opts, &out, "getEpochOfflineBlocks", epoch, validatorID)
   365  
   366  	if err != nil {
   367  		return *new(*big.Int), err
   368  	}
   369  
   370  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   371  
   372  	return out0, err
   373  
   374  }
   375  
   376  // GetEpochOfflineBlocks is a free data retrieval call binding the contract method 0xa198d229.
   377  //
   378  // Solidity: function getEpochOfflineBlocks(uint256 epoch, uint256 validatorID) view returns(uint256)
   379  func (_Contract *ContractSession) GetEpochOfflineBlocks(epoch *big.Int, validatorID *big.Int) (*big.Int, error) {
   380  	return _Contract.Contract.GetEpochOfflineBlocks(&_Contract.CallOpts, epoch, validatorID)
   381  }
   382  
   383  // GetEpochOfflineBlocks is a free data retrieval call binding the contract method 0xa198d229.
   384  //
   385  // Solidity: function getEpochOfflineBlocks(uint256 epoch, uint256 validatorID) view returns(uint256)
   386  func (_Contract *ContractCallerSession) GetEpochOfflineBlocks(epoch *big.Int, validatorID *big.Int) (*big.Int, error) {
   387  	return _Contract.Contract.GetEpochOfflineBlocks(&_Contract.CallOpts, epoch, validatorID)
   388  }
   389  
   390  // GetEpochOfflineTime is a free data retrieval call binding the contract method 0xe261641a.
   391  //
   392  // Solidity: function getEpochOfflineTime(uint256 epoch, uint256 validatorID) view returns(uint256)
   393  func (_Contract *ContractCaller) GetEpochOfflineTime(opts *bind.CallOpts, epoch *big.Int, validatorID *big.Int) (*big.Int, error) {
   394  	var out []interface{}
   395  	err := _Contract.contract.Call(opts, &out, "getEpochOfflineTime", epoch, validatorID)
   396  
   397  	if err != nil {
   398  		return *new(*big.Int), err
   399  	}
   400  
   401  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   402  
   403  	return out0, err
   404  
   405  }
   406  
   407  // GetEpochOfflineTime is a free data retrieval call binding the contract method 0xe261641a.
   408  //
   409  // Solidity: function getEpochOfflineTime(uint256 epoch, uint256 validatorID) view returns(uint256)
   410  func (_Contract *ContractSession) GetEpochOfflineTime(epoch *big.Int, validatorID *big.Int) (*big.Int, error) {
   411  	return _Contract.Contract.GetEpochOfflineTime(&_Contract.CallOpts, epoch, validatorID)
   412  }
   413  
   414  // GetEpochOfflineTime is a free data retrieval call binding the contract method 0xe261641a.
   415  //
   416  // Solidity: function getEpochOfflineTime(uint256 epoch, uint256 validatorID) view returns(uint256)
   417  func (_Contract *ContractCallerSession) GetEpochOfflineTime(epoch *big.Int, validatorID *big.Int) (*big.Int, error) {
   418  	return _Contract.Contract.GetEpochOfflineTime(&_Contract.CallOpts, epoch, validatorID)
   419  }
   420  
   421  // GetEpochReceivedStake is a free data retrieval call binding the contract method 0x58f95b80.
   422  //
   423  // Solidity: function getEpochReceivedStake(uint256 epoch, uint256 validatorID) view returns(uint256)
   424  func (_Contract *ContractCaller) GetEpochReceivedStake(opts *bind.CallOpts, epoch *big.Int, validatorID *big.Int) (*big.Int, error) {
   425  	var out []interface{}
   426  	err := _Contract.contract.Call(opts, &out, "getEpochReceivedStake", epoch, validatorID)
   427  
   428  	if err != nil {
   429  		return *new(*big.Int), err
   430  	}
   431  
   432  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   433  
   434  	return out0, err
   435  
   436  }
   437  
   438  // GetEpochReceivedStake is a free data retrieval call binding the contract method 0x58f95b80.
   439  //
   440  // Solidity: function getEpochReceivedStake(uint256 epoch, uint256 validatorID) view returns(uint256)
   441  func (_Contract *ContractSession) GetEpochReceivedStake(epoch *big.Int, validatorID *big.Int) (*big.Int, error) {
   442  	return _Contract.Contract.GetEpochReceivedStake(&_Contract.CallOpts, epoch, validatorID)
   443  }
   444  
   445  // GetEpochReceivedStake is a free data retrieval call binding the contract method 0x58f95b80.
   446  //
   447  // Solidity: function getEpochReceivedStake(uint256 epoch, uint256 validatorID) view returns(uint256)
   448  func (_Contract *ContractCallerSession) GetEpochReceivedStake(epoch *big.Int, validatorID *big.Int) (*big.Int, error) {
   449  	return _Contract.Contract.GetEpochReceivedStake(&_Contract.CallOpts, epoch, validatorID)
   450  }
   451  
   452  // GetEpochSnapshot is a free data retrieval call binding the contract method 0x39b80c00.
   453  //
   454  // Solidity: function getEpochSnapshot(uint256 ) view returns(uint256 endTime, uint256 epochFee, uint256 totalBaseRewardWeight, uint256 totalTxRewardWeight, uint256 baseRewardPerSecond, uint256 totalStake, uint256 totalSupply)
   455  func (_Contract *ContractCaller) GetEpochSnapshot(opts *bind.CallOpts, arg0 *big.Int) (struct {
   456  	EndTime               *big.Int
   457  	EpochFee              *big.Int
   458  	TotalBaseRewardWeight *big.Int
   459  	TotalTxRewardWeight   *big.Int
   460  	BaseRewardPerSecond   *big.Int
   461  	TotalStake            *big.Int
   462  	TotalSupply           *big.Int
   463  }, error) {
   464  	var out []interface{}
   465  	err := _Contract.contract.Call(opts, &out, "getEpochSnapshot", arg0)
   466  
   467  	outstruct := new(struct {
   468  		EndTime               *big.Int
   469  		EpochFee              *big.Int
   470  		TotalBaseRewardWeight *big.Int
   471  		TotalTxRewardWeight   *big.Int
   472  		BaseRewardPerSecond   *big.Int
   473  		TotalStake            *big.Int
   474  		TotalSupply           *big.Int
   475  	})
   476  	if err != nil {
   477  		return *outstruct, err
   478  	}
   479  
   480  	outstruct.EndTime = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   481  	outstruct.EpochFee = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   482  	outstruct.TotalBaseRewardWeight = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int)
   483  	outstruct.TotalTxRewardWeight = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int)
   484  	outstruct.BaseRewardPerSecond = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int)
   485  	outstruct.TotalStake = *abi.ConvertType(out[5], new(*big.Int)).(**big.Int)
   486  	outstruct.TotalSupply = *abi.ConvertType(out[6], new(*big.Int)).(**big.Int)
   487  
   488  	return *outstruct, err
   489  
   490  }
   491  
   492  // GetEpochSnapshot is a free data retrieval call binding the contract method 0x39b80c00.
   493  //
   494  // Solidity: function getEpochSnapshot(uint256 ) view returns(uint256 endTime, uint256 epochFee, uint256 totalBaseRewardWeight, uint256 totalTxRewardWeight, uint256 baseRewardPerSecond, uint256 totalStake, uint256 totalSupply)
   495  func (_Contract *ContractSession) GetEpochSnapshot(arg0 *big.Int) (struct {
   496  	EndTime               *big.Int
   497  	EpochFee              *big.Int
   498  	TotalBaseRewardWeight *big.Int
   499  	TotalTxRewardWeight   *big.Int
   500  	BaseRewardPerSecond   *big.Int
   501  	TotalStake            *big.Int
   502  	TotalSupply           *big.Int
   503  }, error) {
   504  	return _Contract.Contract.GetEpochSnapshot(&_Contract.CallOpts, arg0)
   505  }
   506  
   507  // GetEpochSnapshot is a free data retrieval call binding the contract method 0x39b80c00.
   508  //
   509  // Solidity: function getEpochSnapshot(uint256 ) view returns(uint256 endTime, uint256 epochFee, uint256 totalBaseRewardWeight, uint256 totalTxRewardWeight, uint256 baseRewardPerSecond, uint256 totalStake, uint256 totalSupply)
   510  func (_Contract *ContractCallerSession) GetEpochSnapshot(arg0 *big.Int) (struct {
   511  	EndTime               *big.Int
   512  	EpochFee              *big.Int
   513  	TotalBaseRewardWeight *big.Int
   514  	TotalTxRewardWeight   *big.Int
   515  	BaseRewardPerSecond   *big.Int
   516  	TotalStake            *big.Int
   517  	TotalSupply           *big.Int
   518  }, error) {
   519  	return _Contract.Contract.GetEpochSnapshot(&_Contract.CallOpts, arg0)
   520  }
   521  
   522  // GetEpochValidatorIDs is a free data retrieval call binding the contract method 0xb88a37e2.
   523  //
   524  // Solidity: function getEpochValidatorIDs(uint256 epoch) view returns(uint256[])
   525  func (_Contract *ContractCaller) GetEpochValidatorIDs(opts *bind.CallOpts, epoch *big.Int) ([]*big.Int, error) {
   526  	var out []interface{}
   527  	err := _Contract.contract.Call(opts, &out, "getEpochValidatorIDs", epoch)
   528  
   529  	if err != nil {
   530  		return *new([]*big.Int), err
   531  	}
   532  
   533  	out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int)
   534  
   535  	return out0, err
   536  
   537  }
   538  
   539  // GetEpochValidatorIDs is a free data retrieval call binding the contract method 0xb88a37e2.
   540  //
   541  // Solidity: function getEpochValidatorIDs(uint256 epoch) view returns(uint256[])
   542  func (_Contract *ContractSession) GetEpochValidatorIDs(epoch *big.Int) ([]*big.Int, error) {
   543  	return _Contract.Contract.GetEpochValidatorIDs(&_Contract.CallOpts, epoch)
   544  }
   545  
   546  // GetEpochValidatorIDs is a free data retrieval call binding the contract method 0xb88a37e2.
   547  //
   548  // Solidity: function getEpochValidatorIDs(uint256 epoch) view returns(uint256[])
   549  func (_Contract *ContractCallerSession) GetEpochValidatorIDs(epoch *big.Int) ([]*big.Int, error) {
   550  	return _Contract.Contract.GetEpochValidatorIDs(&_Contract.CallOpts, epoch)
   551  }
   552  
   553  // GetLockedStake is a free data retrieval call binding the contract method 0x670322f8.
   554  //
   555  // Solidity: function getLockedStake(address delegator, uint256 toValidatorID) view returns(uint256)
   556  func (_Contract *ContractCaller) GetLockedStake(opts *bind.CallOpts, delegator common.Address, toValidatorID *big.Int) (*big.Int, error) {
   557  	var out []interface{}
   558  	err := _Contract.contract.Call(opts, &out, "getLockedStake", delegator, toValidatorID)
   559  
   560  	if err != nil {
   561  		return *new(*big.Int), err
   562  	}
   563  
   564  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   565  
   566  	return out0, err
   567  
   568  }
   569  
   570  // GetLockedStake is a free data retrieval call binding the contract method 0x670322f8.
   571  //
   572  // Solidity: function getLockedStake(address delegator, uint256 toValidatorID) view returns(uint256)
   573  func (_Contract *ContractSession) GetLockedStake(delegator common.Address, toValidatorID *big.Int) (*big.Int, error) {
   574  	return _Contract.Contract.GetLockedStake(&_Contract.CallOpts, delegator, toValidatorID)
   575  }
   576  
   577  // GetLockedStake is a free data retrieval call binding the contract method 0x670322f8.
   578  //
   579  // Solidity: function getLockedStake(address delegator, uint256 toValidatorID) view returns(uint256)
   580  func (_Contract *ContractCallerSession) GetLockedStake(delegator common.Address, toValidatorID *big.Int) (*big.Int, error) {
   581  	return _Contract.Contract.GetLockedStake(&_Contract.CallOpts, delegator, toValidatorID)
   582  }
   583  
   584  // GetLockupInfo is a free data retrieval call binding the contract method 0x96c7ee46.
   585  //
   586  // Solidity: function getLockupInfo(address , uint256 ) view returns(uint256 lockedStake, uint256 fromEpoch, uint256 endTime, uint256 duration)
   587  func (_Contract *ContractCaller) GetLockupInfo(opts *bind.CallOpts, arg0 common.Address, arg1 *big.Int) (struct {
   588  	LockedStake *big.Int
   589  	FromEpoch   *big.Int
   590  	EndTime     *big.Int
   591  	Duration    *big.Int
   592  }, error) {
   593  	var out []interface{}
   594  	err := _Contract.contract.Call(opts, &out, "getLockupInfo", arg0, arg1)
   595  
   596  	outstruct := new(struct {
   597  		LockedStake *big.Int
   598  		FromEpoch   *big.Int
   599  		EndTime     *big.Int
   600  		Duration    *big.Int
   601  	})
   602  	if err != nil {
   603  		return *outstruct, err
   604  	}
   605  
   606  	outstruct.LockedStake = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   607  	outstruct.FromEpoch = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   608  	outstruct.EndTime = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int)
   609  	outstruct.Duration = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int)
   610  
   611  	return *outstruct, err
   612  
   613  }
   614  
   615  // GetLockupInfo is a free data retrieval call binding the contract method 0x96c7ee46.
   616  //
   617  // Solidity: function getLockupInfo(address , uint256 ) view returns(uint256 lockedStake, uint256 fromEpoch, uint256 endTime, uint256 duration)
   618  func (_Contract *ContractSession) GetLockupInfo(arg0 common.Address, arg1 *big.Int) (struct {
   619  	LockedStake *big.Int
   620  	FromEpoch   *big.Int
   621  	EndTime     *big.Int
   622  	Duration    *big.Int
   623  }, error) {
   624  	return _Contract.Contract.GetLockupInfo(&_Contract.CallOpts, arg0, arg1)
   625  }
   626  
   627  // GetLockupInfo is a free data retrieval call binding the contract method 0x96c7ee46.
   628  //
   629  // Solidity: function getLockupInfo(address , uint256 ) view returns(uint256 lockedStake, uint256 fromEpoch, uint256 endTime, uint256 duration)
   630  func (_Contract *ContractCallerSession) GetLockupInfo(arg0 common.Address, arg1 *big.Int) (struct {
   631  	LockedStake *big.Int
   632  	FromEpoch   *big.Int
   633  	EndTime     *big.Int
   634  	Duration    *big.Int
   635  }, error) {
   636  	return _Contract.Contract.GetLockupInfo(&_Contract.CallOpts, arg0, arg1)
   637  }
   638  
   639  // GetSelfStake is a free data retrieval call binding the contract method 0x5601fe01.
   640  //
   641  // Solidity: function getSelfStake(uint256 validatorID) view returns(uint256)
   642  func (_Contract *ContractCaller) GetSelfStake(opts *bind.CallOpts, validatorID *big.Int) (*big.Int, error) {
   643  	var out []interface{}
   644  	err := _Contract.contract.Call(opts, &out, "getSelfStake", validatorID)
   645  
   646  	if err != nil {
   647  		return *new(*big.Int), err
   648  	}
   649  
   650  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   651  
   652  	return out0, err
   653  
   654  }
   655  
   656  // GetSelfStake is a free data retrieval call binding the contract method 0x5601fe01.
   657  //
   658  // Solidity: function getSelfStake(uint256 validatorID) view returns(uint256)
   659  func (_Contract *ContractSession) GetSelfStake(validatorID *big.Int) (*big.Int, error) {
   660  	return _Contract.Contract.GetSelfStake(&_Contract.CallOpts, validatorID)
   661  }
   662  
   663  // GetSelfStake is a free data retrieval call binding the contract method 0x5601fe01.
   664  //
   665  // Solidity: function getSelfStake(uint256 validatorID) view returns(uint256)
   666  func (_Contract *ContractCallerSession) GetSelfStake(validatorID *big.Int) (*big.Int, error) {
   667  	return _Contract.Contract.GetSelfStake(&_Contract.CallOpts, validatorID)
   668  }
   669  
   670  // GetStake is a free data retrieval call binding the contract method 0xcfd47663.
   671  //
   672  // Solidity: function getStake(address , uint256 ) view returns(uint256)
   673  func (_Contract *ContractCaller) GetStake(opts *bind.CallOpts, arg0 common.Address, arg1 *big.Int) (*big.Int, error) {
   674  	var out []interface{}
   675  	err := _Contract.contract.Call(opts, &out, "getStake", arg0, arg1)
   676  
   677  	if err != nil {
   678  		return *new(*big.Int), err
   679  	}
   680  
   681  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   682  
   683  	return out0, err
   684  
   685  }
   686  
   687  // GetStake is a free data retrieval call binding the contract method 0xcfd47663.
   688  //
   689  // Solidity: function getStake(address , uint256 ) view returns(uint256)
   690  func (_Contract *ContractSession) GetStake(arg0 common.Address, arg1 *big.Int) (*big.Int, error) {
   691  	return _Contract.Contract.GetStake(&_Contract.CallOpts, arg0, arg1)
   692  }
   693  
   694  // GetStake is a free data retrieval call binding the contract method 0xcfd47663.
   695  //
   696  // Solidity: function getStake(address , uint256 ) view returns(uint256)
   697  func (_Contract *ContractCallerSession) GetStake(arg0 common.Address, arg1 *big.Int) (*big.Int, error) {
   698  	return _Contract.Contract.GetStake(&_Contract.CallOpts, arg0, arg1)
   699  }
   700  
   701  // GetStashedLockupRewards is a free data retrieval call binding the contract method 0xb810e411.
   702  //
   703  // Solidity: function getStashedLockupRewards(address , uint256 ) view returns(uint256 lockupExtraReward, uint256 lockupBaseReward, uint256 unlockedReward)
   704  func (_Contract *ContractCaller) GetStashedLockupRewards(opts *bind.CallOpts, arg0 common.Address, arg1 *big.Int) (struct {
   705  	LockupExtraReward *big.Int
   706  	LockupBaseReward  *big.Int
   707  	UnlockedReward    *big.Int
   708  }, error) {
   709  	var out []interface{}
   710  	err := _Contract.contract.Call(opts, &out, "getStashedLockupRewards", arg0, arg1)
   711  
   712  	outstruct := new(struct {
   713  		LockupExtraReward *big.Int
   714  		LockupBaseReward  *big.Int
   715  		UnlockedReward    *big.Int
   716  	})
   717  	if err != nil {
   718  		return *outstruct, err
   719  	}
   720  
   721  	outstruct.LockupExtraReward = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   722  	outstruct.LockupBaseReward = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   723  	outstruct.UnlockedReward = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int)
   724  
   725  	return *outstruct, err
   726  
   727  }
   728  
   729  // GetStashedLockupRewards is a free data retrieval call binding the contract method 0xb810e411.
   730  //
   731  // Solidity: function getStashedLockupRewards(address , uint256 ) view returns(uint256 lockupExtraReward, uint256 lockupBaseReward, uint256 unlockedReward)
   732  func (_Contract *ContractSession) GetStashedLockupRewards(arg0 common.Address, arg1 *big.Int) (struct {
   733  	LockupExtraReward *big.Int
   734  	LockupBaseReward  *big.Int
   735  	UnlockedReward    *big.Int
   736  }, error) {
   737  	return _Contract.Contract.GetStashedLockupRewards(&_Contract.CallOpts, arg0, arg1)
   738  }
   739  
   740  // GetStashedLockupRewards is a free data retrieval call binding the contract method 0xb810e411.
   741  //
   742  // Solidity: function getStashedLockupRewards(address , uint256 ) view returns(uint256 lockupExtraReward, uint256 lockupBaseReward, uint256 unlockedReward)
   743  func (_Contract *ContractCallerSession) GetStashedLockupRewards(arg0 common.Address, arg1 *big.Int) (struct {
   744  	LockupExtraReward *big.Int
   745  	LockupBaseReward  *big.Int
   746  	UnlockedReward    *big.Int
   747  }, error) {
   748  	return _Contract.Contract.GetStashedLockupRewards(&_Contract.CallOpts, arg0, arg1)
   749  }
   750  
   751  // GetUnlockedStake is a free data retrieval call binding the contract method 0x12622d0e.
   752  //
   753  // Solidity: function getUnlockedStake(address delegator, uint256 toValidatorID) view returns(uint256)
   754  func (_Contract *ContractCaller) GetUnlockedStake(opts *bind.CallOpts, delegator common.Address, toValidatorID *big.Int) (*big.Int, error) {
   755  	var out []interface{}
   756  	err := _Contract.contract.Call(opts, &out, "getUnlockedStake", delegator, toValidatorID)
   757  
   758  	if err != nil {
   759  		return *new(*big.Int), err
   760  	}
   761  
   762  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   763  
   764  	return out0, err
   765  
   766  }
   767  
   768  // GetUnlockedStake is a free data retrieval call binding the contract method 0x12622d0e.
   769  //
   770  // Solidity: function getUnlockedStake(address delegator, uint256 toValidatorID) view returns(uint256)
   771  func (_Contract *ContractSession) GetUnlockedStake(delegator common.Address, toValidatorID *big.Int) (*big.Int, error) {
   772  	return _Contract.Contract.GetUnlockedStake(&_Contract.CallOpts, delegator, toValidatorID)
   773  }
   774  
   775  // GetUnlockedStake is a free data retrieval call binding the contract method 0x12622d0e.
   776  //
   777  // Solidity: function getUnlockedStake(address delegator, uint256 toValidatorID) view returns(uint256)
   778  func (_Contract *ContractCallerSession) GetUnlockedStake(delegator common.Address, toValidatorID *big.Int) (*big.Int, error) {
   779  	return _Contract.Contract.GetUnlockedStake(&_Contract.CallOpts, delegator, toValidatorID)
   780  }
   781  
   782  // GetValidator is a free data retrieval call binding the contract method 0xb5d89627.
   783  //
   784  // Solidity: function getValidator(uint256 ) view returns(uint256 status, uint256 deactivatedTime, uint256 deactivatedEpoch, uint256 receivedStake, uint256 createdEpoch, uint256 createdTime, address auth)
   785  func (_Contract *ContractCaller) GetValidator(opts *bind.CallOpts, arg0 *big.Int) (struct {
   786  	Status           *big.Int
   787  	DeactivatedTime  *big.Int
   788  	DeactivatedEpoch *big.Int
   789  	ReceivedStake    *big.Int
   790  	CreatedEpoch     *big.Int
   791  	CreatedTime      *big.Int
   792  	Auth             common.Address
   793  }, error) {
   794  	var out []interface{}
   795  	err := _Contract.contract.Call(opts, &out, "getValidator", arg0)
   796  
   797  	outstruct := new(struct {
   798  		Status           *big.Int
   799  		DeactivatedTime  *big.Int
   800  		DeactivatedEpoch *big.Int
   801  		ReceivedStake    *big.Int
   802  		CreatedEpoch     *big.Int
   803  		CreatedTime      *big.Int
   804  		Auth             common.Address
   805  	})
   806  	if err != nil {
   807  		return *outstruct, err
   808  	}
   809  
   810  	outstruct.Status = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   811  	outstruct.DeactivatedTime = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   812  	outstruct.DeactivatedEpoch = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int)
   813  	outstruct.ReceivedStake = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int)
   814  	outstruct.CreatedEpoch = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int)
   815  	outstruct.CreatedTime = *abi.ConvertType(out[5], new(*big.Int)).(**big.Int)
   816  	outstruct.Auth = *abi.ConvertType(out[6], new(common.Address)).(*common.Address)
   817  
   818  	return *outstruct, err
   819  
   820  }
   821  
   822  // GetValidator is a free data retrieval call binding the contract method 0xb5d89627.
   823  //
   824  // Solidity: function getValidator(uint256 ) view returns(uint256 status, uint256 deactivatedTime, uint256 deactivatedEpoch, uint256 receivedStake, uint256 createdEpoch, uint256 createdTime, address auth)
   825  func (_Contract *ContractSession) GetValidator(arg0 *big.Int) (struct {
   826  	Status           *big.Int
   827  	DeactivatedTime  *big.Int
   828  	DeactivatedEpoch *big.Int
   829  	ReceivedStake    *big.Int
   830  	CreatedEpoch     *big.Int
   831  	CreatedTime      *big.Int
   832  	Auth             common.Address
   833  }, error) {
   834  	return _Contract.Contract.GetValidator(&_Contract.CallOpts, arg0)
   835  }
   836  
   837  // GetValidator is a free data retrieval call binding the contract method 0xb5d89627.
   838  //
   839  // Solidity: function getValidator(uint256 ) view returns(uint256 status, uint256 deactivatedTime, uint256 deactivatedEpoch, uint256 receivedStake, uint256 createdEpoch, uint256 createdTime, address auth)
   840  func (_Contract *ContractCallerSession) GetValidator(arg0 *big.Int) (struct {
   841  	Status           *big.Int
   842  	DeactivatedTime  *big.Int
   843  	DeactivatedEpoch *big.Int
   844  	ReceivedStake    *big.Int
   845  	CreatedEpoch     *big.Int
   846  	CreatedTime      *big.Int
   847  	Auth             common.Address
   848  }, error) {
   849  	return _Contract.Contract.GetValidator(&_Contract.CallOpts, arg0)
   850  }
   851  
   852  // GetValidatorID is a free data retrieval call binding the contract method 0x0135b1db.
   853  //
   854  // Solidity: function getValidatorID(address ) view returns(uint256)
   855  func (_Contract *ContractCaller) GetValidatorID(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
   856  	var out []interface{}
   857  	err := _Contract.contract.Call(opts, &out, "getValidatorID", arg0)
   858  
   859  	if err != nil {
   860  		return *new(*big.Int), err
   861  	}
   862  
   863  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   864  
   865  	return out0, err
   866  
   867  }
   868  
   869  // GetValidatorID is a free data retrieval call binding the contract method 0x0135b1db.
   870  //
   871  // Solidity: function getValidatorID(address ) view returns(uint256)
   872  func (_Contract *ContractSession) GetValidatorID(arg0 common.Address) (*big.Int, error) {
   873  	return _Contract.Contract.GetValidatorID(&_Contract.CallOpts, arg0)
   874  }
   875  
   876  // GetValidatorID is a free data retrieval call binding the contract method 0x0135b1db.
   877  //
   878  // Solidity: function getValidatorID(address ) view returns(uint256)
   879  func (_Contract *ContractCallerSession) GetValidatorID(arg0 common.Address) (*big.Int, error) {
   880  	return _Contract.Contract.GetValidatorID(&_Contract.CallOpts, arg0)
   881  }
   882  
   883  // GetValidatorPubkey is a free data retrieval call binding the contract method 0x854873e1.
   884  //
   885  // Solidity: function getValidatorPubkey(uint256 ) view returns(bytes)
   886  func (_Contract *ContractCaller) GetValidatorPubkey(opts *bind.CallOpts, arg0 *big.Int) ([]byte, error) {
   887  	var out []interface{}
   888  	err := _Contract.contract.Call(opts, &out, "getValidatorPubkey", arg0)
   889  
   890  	if err != nil {
   891  		return *new([]byte), err
   892  	}
   893  
   894  	out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte)
   895  
   896  	return out0, err
   897  
   898  }
   899  
   900  // GetValidatorPubkey is a free data retrieval call binding the contract method 0x854873e1.
   901  //
   902  // Solidity: function getValidatorPubkey(uint256 ) view returns(bytes)
   903  func (_Contract *ContractSession) GetValidatorPubkey(arg0 *big.Int) ([]byte, error) {
   904  	return _Contract.Contract.GetValidatorPubkey(&_Contract.CallOpts, arg0)
   905  }
   906  
   907  // GetValidatorPubkey is a free data retrieval call binding the contract method 0x854873e1.
   908  //
   909  // Solidity: function getValidatorPubkey(uint256 ) view returns(bytes)
   910  func (_Contract *ContractCallerSession) GetValidatorPubkey(arg0 *big.Int) ([]byte, error) {
   911  	return _Contract.Contract.GetValidatorPubkey(&_Contract.CallOpts, arg0)
   912  }
   913  
   914  // GetWithdrawalRequest is a free data retrieval call binding the contract method 0x1f270152.
   915  //
   916  // Solidity: function getWithdrawalRequest(address , uint256 , uint256 ) view returns(uint256 epoch, uint256 time, uint256 amount)
   917  func (_Contract *ContractCaller) GetWithdrawalRequest(opts *bind.CallOpts, arg0 common.Address, arg1 *big.Int, arg2 *big.Int) (struct {
   918  	Epoch  *big.Int
   919  	Time   *big.Int
   920  	Amount *big.Int
   921  }, error) {
   922  	var out []interface{}
   923  	err := _Contract.contract.Call(opts, &out, "getWithdrawalRequest", arg0, arg1, arg2)
   924  
   925  	outstruct := new(struct {
   926  		Epoch  *big.Int
   927  		Time   *big.Int
   928  		Amount *big.Int
   929  	})
   930  	if err != nil {
   931  		return *outstruct, err
   932  	}
   933  
   934  	outstruct.Epoch = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   935  	outstruct.Time = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   936  	outstruct.Amount = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int)
   937  
   938  	return *outstruct, err
   939  
   940  }
   941  
   942  // GetWithdrawalRequest is a free data retrieval call binding the contract method 0x1f270152.
   943  //
   944  // Solidity: function getWithdrawalRequest(address , uint256 , uint256 ) view returns(uint256 epoch, uint256 time, uint256 amount)
   945  func (_Contract *ContractSession) GetWithdrawalRequest(arg0 common.Address, arg1 *big.Int, arg2 *big.Int) (struct {
   946  	Epoch  *big.Int
   947  	Time   *big.Int
   948  	Amount *big.Int
   949  }, error) {
   950  	return _Contract.Contract.GetWithdrawalRequest(&_Contract.CallOpts, arg0, arg1, arg2)
   951  }
   952  
   953  // GetWithdrawalRequest is a free data retrieval call binding the contract method 0x1f270152.
   954  //
   955  // Solidity: function getWithdrawalRequest(address , uint256 , uint256 ) view returns(uint256 epoch, uint256 time, uint256 amount)
   956  func (_Contract *ContractCallerSession) GetWithdrawalRequest(arg0 common.Address, arg1 *big.Int, arg2 *big.Int) (struct {
   957  	Epoch  *big.Int
   958  	Time   *big.Int
   959  	Amount *big.Int
   960  }, error) {
   961  	return _Contract.Contract.GetWithdrawalRequest(&_Contract.CallOpts, arg0, arg1, arg2)
   962  }
   963  
   964  // IsLockedUp is a free data retrieval call binding the contract method 0xcfdbb7cd.
   965  //
   966  // Solidity: function isLockedUp(address delegator, uint256 toValidatorID) view returns(bool)
   967  func (_Contract *ContractCaller) IsLockedUp(opts *bind.CallOpts, delegator common.Address, toValidatorID *big.Int) (bool, error) {
   968  	var out []interface{}
   969  	err := _Contract.contract.Call(opts, &out, "isLockedUp", delegator, toValidatorID)
   970  
   971  	if err != nil {
   972  		return *new(bool), err
   973  	}
   974  
   975  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   976  
   977  	return out0, err
   978  
   979  }
   980  
   981  // IsLockedUp is a free data retrieval call binding the contract method 0xcfdbb7cd.
   982  //
   983  // Solidity: function isLockedUp(address delegator, uint256 toValidatorID) view returns(bool)
   984  func (_Contract *ContractSession) IsLockedUp(delegator common.Address, toValidatorID *big.Int) (bool, error) {
   985  	return _Contract.Contract.IsLockedUp(&_Contract.CallOpts, delegator, toValidatorID)
   986  }
   987  
   988  // IsLockedUp is a free data retrieval call binding the contract method 0xcfdbb7cd.
   989  //
   990  // Solidity: function isLockedUp(address delegator, uint256 toValidatorID) view returns(bool)
   991  func (_Contract *ContractCallerSession) IsLockedUp(delegator common.Address, toValidatorID *big.Int) (bool, error) {
   992  	return _Contract.Contract.IsLockedUp(&_Contract.CallOpts, delegator, toValidatorID)
   993  }
   994  
   995  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
   996  //
   997  // Solidity: function isOwner() view returns(bool)
   998  func (_Contract *ContractCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
   999  	var out []interface{}
  1000  	err := _Contract.contract.Call(opts, &out, "isOwner")
  1001  
  1002  	if err != nil {
  1003  		return *new(bool), err
  1004  	}
  1005  
  1006  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  1007  
  1008  	return out0, err
  1009  
  1010  }
  1011  
  1012  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  1013  //
  1014  // Solidity: function isOwner() view returns(bool)
  1015  func (_Contract *ContractSession) IsOwner() (bool, error) {
  1016  	return _Contract.Contract.IsOwner(&_Contract.CallOpts)
  1017  }
  1018  
  1019  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  1020  //
  1021  // Solidity: function isOwner() view returns(bool)
  1022  func (_Contract *ContractCallerSession) IsOwner() (bool, error) {
  1023  	return _Contract.Contract.IsOwner(&_Contract.CallOpts)
  1024  }
  1025  
  1026  // IsSlashed is a free data retrieval call binding the contract method 0xc3de580e.
  1027  //
  1028  // Solidity: function isSlashed(uint256 validatorID) view returns(bool)
  1029  func (_Contract *ContractCaller) IsSlashed(opts *bind.CallOpts, validatorID *big.Int) (bool, error) {
  1030  	var out []interface{}
  1031  	err := _Contract.contract.Call(opts, &out, "isSlashed", validatorID)
  1032  
  1033  	if err != nil {
  1034  		return *new(bool), err
  1035  	}
  1036  
  1037  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  1038  
  1039  	return out0, err
  1040  
  1041  }
  1042  
  1043  // IsSlashed is a free data retrieval call binding the contract method 0xc3de580e.
  1044  //
  1045  // Solidity: function isSlashed(uint256 validatorID) view returns(bool)
  1046  func (_Contract *ContractSession) IsSlashed(validatorID *big.Int) (bool, error) {
  1047  	return _Contract.Contract.IsSlashed(&_Contract.CallOpts, validatorID)
  1048  }
  1049  
  1050  // IsSlashed is a free data retrieval call binding the contract method 0xc3de580e.
  1051  //
  1052  // Solidity: function isSlashed(uint256 validatorID) view returns(bool)
  1053  func (_Contract *ContractCallerSession) IsSlashed(validatorID *big.Int) (bool, error) {
  1054  	return _Contract.Contract.IsSlashed(&_Contract.CallOpts, validatorID)
  1055  }
  1056  
  1057  // LastValidatorID is a free data retrieval call binding the contract method 0xc7be95de.
  1058  //
  1059  // Solidity: function lastValidatorID() view returns(uint256)
  1060  func (_Contract *ContractCaller) LastValidatorID(opts *bind.CallOpts) (*big.Int, error) {
  1061  	var out []interface{}
  1062  	err := _Contract.contract.Call(opts, &out, "lastValidatorID")
  1063  
  1064  	if err != nil {
  1065  		return *new(*big.Int), err
  1066  	}
  1067  
  1068  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1069  
  1070  	return out0, err
  1071  
  1072  }
  1073  
  1074  // LastValidatorID is a free data retrieval call binding the contract method 0xc7be95de.
  1075  //
  1076  // Solidity: function lastValidatorID() view returns(uint256)
  1077  func (_Contract *ContractSession) LastValidatorID() (*big.Int, error) {
  1078  	return _Contract.Contract.LastValidatorID(&_Contract.CallOpts)
  1079  }
  1080  
  1081  // LastValidatorID is a free data retrieval call binding the contract method 0xc7be95de.
  1082  //
  1083  // Solidity: function lastValidatorID() view returns(uint256)
  1084  func (_Contract *ContractCallerSession) LastValidatorID() (*big.Int, error) {
  1085  	return _Contract.Contract.LastValidatorID(&_Contract.CallOpts)
  1086  }
  1087  
  1088  // MinGasPrice is a free data retrieval call binding the contract method 0xd96ed505.
  1089  //
  1090  // Solidity: function minGasPrice() view returns(uint256)
  1091  func (_Contract *ContractCaller) MinGasPrice(opts *bind.CallOpts) (*big.Int, error) {
  1092  	var out []interface{}
  1093  	err := _Contract.contract.Call(opts, &out, "minGasPrice")
  1094  
  1095  	if err != nil {
  1096  		return *new(*big.Int), err
  1097  	}
  1098  
  1099  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1100  
  1101  	return out0, err
  1102  
  1103  }
  1104  
  1105  // MinGasPrice is a free data retrieval call binding the contract method 0xd96ed505.
  1106  //
  1107  // Solidity: function minGasPrice() view returns(uint256)
  1108  func (_Contract *ContractSession) MinGasPrice() (*big.Int, error) {
  1109  	return _Contract.Contract.MinGasPrice(&_Contract.CallOpts)
  1110  }
  1111  
  1112  // MinGasPrice is a free data retrieval call binding the contract method 0xd96ed505.
  1113  //
  1114  // Solidity: function minGasPrice() view returns(uint256)
  1115  func (_Contract *ContractCallerSession) MinGasPrice() (*big.Int, error) {
  1116  	return _Contract.Contract.MinGasPrice(&_Contract.CallOpts)
  1117  }
  1118  
  1119  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  1120  //
  1121  // Solidity: function owner() view returns(address)
  1122  func (_Contract *ContractCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  1123  	var out []interface{}
  1124  	err := _Contract.contract.Call(opts, &out, "owner")
  1125  
  1126  	if err != nil {
  1127  		return *new(common.Address), err
  1128  	}
  1129  
  1130  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1131  
  1132  	return out0, err
  1133  
  1134  }
  1135  
  1136  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  1137  //
  1138  // Solidity: function owner() view returns(address)
  1139  func (_Contract *ContractSession) Owner() (common.Address, error) {
  1140  	return _Contract.Contract.Owner(&_Contract.CallOpts)
  1141  }
  1142  
  1143  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  1144  //
  1145  // Solidity: function owner() view returns(address)
  1146  func (_Contract *ContractCallerSession) Owner() (common.Address, error) {
  1147  	return _Contract.Contract.Owner(&_Contract.CallOpts)
  1148  }
  1149  
  1150  // PendingRewards is a free data retrieval call binding the contract method 0x6099ecb2.
  1151  //
  1152  // Solidity: function pendingRewards(address delegator, uint256 toValidatorID) view returns(uint256)
  1153  func (_Contract *ContractCaller) PendingRewards(opts *bind.CallOpts, delegator common.Address, toValidatorID *big.Int) (*big.Int, error) {
  1154  	var out []interface{}
  1155  	err := _Contract.contract.Call(opts, &out, "pendingRewards", delegator, toValidatorID)
  1156  
  1157  	if err != nil {
  1158  		return *new(*big.Int), err
  1159  	}
  1160  
  1161  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1162  
  1163  	return out0, err
  1164  
  1165  }
  1166  
  1167  // PendingRewards is a free data retrieval call binding the contract method 0x6099ecb2.
  1168  //
  1169  // Solidity: function pendingRewards(address delegator, uint256 toValidatorID) view returns(uint256)
  1170  func (_Contract *ContractSession) PendingRewards(delegator common.Address, toValidatorID *big.Int) (*big.Int, error) {
  1171  	return _Contract.Contract.PendingRewards(&_Contract.CallOpts, delegator, toValidatorID)
  1172  }
  1173  
  1174  // PendingRewards is a free data retrieval call binding the contract method 0x6099ecb2.
  1175  //
  1176  // Solidity: function pendingRewards(address delegator, uint256 toValidatorID) view returns(uint256)
  1177  func (_Contract *ContractCallerSession) PendingRewards(delegator common.Address, toValidatorID *big.Int) (*big.Int, error) {
  1178  	return _Contract.Contract.PendingRewards(&_Contract.CallOpts, delegator, toValidatorID)
  1179  }
  1180  
  1181  // RewardsStash is a free data retrieval call binding the contract method 0x6f498663.
  1182  //
  1183  // Solidity: function rewardsStash(address delegator, uint256 validatorID) view returns(uint256)
  1184  func (_Contract *ContractCaller) RewardsStash(opts *bind.CallOpts, delegator common.Address, validatorID *big.Int) (*big.Int, error) {
  1185  	var out []interface{}
  1186  	err := _Contract.contract.Call(opts, &out, "rewardsStash", delegator, validatorID)
  1187  
  1188  	if err != nil {
  1189  		return *new(*big.Int), err
  1190  	}
  1191  
  1192  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1193  
  1194  	return out0, err
  1195  
  1196  }
  1197  
  1198  // RewardsStash is a free data retrieval call binding the contract method 0x6f498663.
  1199  //
  1200  // Solidity: function rewardsStash(address delegator, uint256 validatorID) view returns(uint256)
  1201  func (_Contract *ContractSession) RewardsStash(delegator common.Address, validatorID *big.Int) (*big.Int, error) {
  1202  	return _Contract.Contract.RewardsStash(&_Contract.CallOpts, delegator, validatorID)
  1203  }
  1204  
  1205  // RewardsStash is a free data retrieval call binding the contract method 0x6f498663.
  1206  //
  1207  // Solidity: function rewardsStash(address delegator, uint256 validatorID) view returns(uint256)
  1208  func (_Contract *ContractCallerSession) RewardsStash(delegator common.Address, validatorID *big.Int) (*big.Int, error) {
  1209  	return _Contract.Contract.RewardsStash(&_Contract.CallOpts, delegator, validatorID)
  1210  }
  1211  
  1212  // SlashingRefundRatio is a free data retrieval call binding the contract method 0xc65ee0e1.
  1213  //
  1214  // Solidity: function slashingRefundRatio(uint256 ) view returns(uint256)
  1215  func (_Contract *ContractCaller) SlashingRefundRatio(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
  1216  	var out []interface{}
  1217  	err := _Contract.contract.Call(opts, &out, "slashingRefundRatio", arg0)
  1218  
  1219  	if err != nil {
  1220  		return *new(*big.Int), err
  1221  	}
  1222  
  1223  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1224  
  1225  	return out0, err
  1226  
  1227  }
  1228  
  1229  // SlashingRefundRatio is a free data retrieval call binding the contract method 0xc65ee0e1.
  1230  //
  1231  // Solidity: function slashingRefundRatio(uint256 ) view returns(uint256)
  1232  func (_Contract *ContractSession) SlashingRefundRatio(arg0 *big.Int) (*big.Int, error) {
  1233  	return _Contract.Contract.SlashingRefundRatio(&_Contract.CallOpts, arg0)
  1234  }
  1235  
  1236  // SlashingRefundRatio is a free data retrieval call binding the contract method 0xc65ee0e1.
  1237  //
  1238  // Solidity: function slashingRefundRatio(uint256 ) view returns(uint256)
  1239  func (_Contract *ContractCallerSession) SlashingRefundRatio(arg0 *big.Int) (*big.Int, error) {
  1240  	return _Contract.Contract.SlashingRefundRatio(&_Contract.CallOpts, arg0)
  1241  }
  1242  
  1243  // StakeTokenizerAddress is a free data retrieval call binding the contract method 0x0e559d82.
  1244  //
  1245  // Solidity: function stakeTokenizerAddress() view returns(address)
  1246  func (_Contract *ContractCaller) StakeTokenizerAddress(opts *bind.CallOpts) (common.Address, error) {
  1247  	var out []interface{}
  1248  	err := _Contract.contract.Call(opts, &out, "stakeTokenizerAddress")
  1249  
  1250  	if err != nil {
  1251  		return *new(common.Address), err
  1252  	}
  1253  
  1254  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1255  
  1256  	return out0, err
  1257  
  1258  }
  1259  
  1260  // StakeTokenizerAddress is a free data retrieval call binding the contract method 0x0e559d82.
  1261  //
  1262  // Solidity: function stakeTokenizerAddress() view returns(address)
  1263  func (_Contract *ContractSession) StakeTokenizerAddress() (common.Address, error) {
  1264  	return _Contract.Contract.StakeTokenizerAddress(&_Contract.CallOpts)
  1265  }
  1266  
  1267  // StakeTokenizerAddress is a free data retrieval call binding the contract method 0x0e559d82.
  1268  //
  1269  // Solidity: function stakeTokenizerAddress() view returns(address)
  1270  func (_Contract *ContractCallerSession) StakeTokenizerAddress() (common.Address, error) {
  1271  	return _Contract.Contract.StakeTokenizerAddress(&_Contract.CallOpts)
  1272  }
  1273  
  1274  // StashedRewardsUntilEpoch is a free data retrieval call binding the contract method 0xa86a056f.
  1275  //
  1276  // Solidity: function stashedRewardsUntilEpoch(address , uint256 ) view returns(uint256)
  1277  func (_Contract *ContractCaller) StashedRewardsUntilEpoch(opts *bind.CallOpts, arg0 common.Address, arg1 *big.Int) (*big.Int, error) {
  1278  	var out []interface{}
  1279  	err := _Contract.contract.Call(opts, &out, "stashedRewardsUntilEpoch", arg0, arg1)
  1280  
  1281  	if err != nil {
  1282  		return *new(*big.Int), err
  1283  	}
  1284  
  1285  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1286  
  1287  	return out0, err
  1288  
  1289  }
  1290  
  1291  // StashedRewardsUntilEpoch is a free data retrieval call binding the contract method 0xa86a056f.
  1292  //
  1293  // Solidity: function stashedRewardsUntilEpoch(address , uint256 ) view returns(uint256)
  1294  func (_Contract *ContractSession) StashedRewardsUntilEpoch(arg0 common.Address, arg1 *big.Int) (*big.Int, error) {
  1295  	return _Contract.Contract.StashedRewardsUntilEpoch(&_Contract.CallOpts, arg0, arg1)
  1296  }
  1297  
  1298  // StashedRewardsUntilEpoch is a free data retrieval call binding the contract method 0xa86a056f.
  1299  //
  1300  // Solidity: function stashedRewardsUntilEpoch(address , uint256 ) view returns(uint256)
  1301  func (_Contract *ContractCallerSession) StashedRewardsUntilEpoch(arg0 common.Address, arg1 *big.Int) (*big.Int, error) {
  1302  	return _Contract.Contract.StashedRewardsUntilEpoch(&_Contract.CallOpts, arg0, arg1)
  1303  }
  1304  
  1305  // TotalActiveStake is a free data retrieval call binding the contract method 0x28f73148.
  1306  //
  1307  // Solidity: function totalActiveStake() view returns(uint256)
  1308  func (_Contract *ContractCaller) TotalActiveStake(opts *bind.CallOpts) (*big.Int, error) {
  1309  	var out []interface{}
  1310  	err := _Contract.contract.Call(opts, &out, "totalActiveStake")
  1311  
  1312  	if err != nil {
  1313  		return *new(*big.Int), err
  1314  	}
  1315  
  1316  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1317  
  1318  	return out0, err
  1319  
  1320  }
  1321  
  1322  // TotalActiveStake is a free data retrieval call binding the contract method 0x28f73148.
  1323  //
  1324  // Solidity: function totalActiveStake() view returns(uint256)
  1325  func (_Contract *ContractSession) TotalActiveStake() (*big.Int, error) {
  1326  	return _Contract.Contract.TotalActiveStake(&_Contract.CallOpts)
  1327  }
  1328  
  1329  // TotalActiveStake is a free data retrieval call binding the contract method 0x28f73148.
  1330  //
  1331  // Solidity: function totalActiveStake() view returns(uint256)
  1332  func (_Contract *ContractCallerSession) TotalActiveStake() (*big.Int, error) {
  1333  	return _Contract.Contract.TotalActiveStake(&_Contract.CallOpts)
  1334  }
  1335  
  1336  // TotalSlashedStake is a free data retrieval call binding the contract method 0x5fab23a8.
  1337  //
  1338  // Solidity: function totalSlashedStake() view returns(uint256)
  1339  func (_Contract *ContractCaller) TotalSlashedStake(opts *bind.CallOpts) (*big.Int, error) {
  1340  	var out []interface{}
  1341  	err := _Contract.contract.Call(opts, &out, "totalSlashedStake")
  1342  
  1343  	if err != nil {
  1344  		return *new(*big.Int), err
  1345  	}
  1346  
  1347  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1348  
  1349  	return out0, err
  1350  
  1351  }
  1352  
  1353  // TotalSlashedStake is a free data retrieval call binding the contract method 0x5fab23a8.
  1354  //
  1355  // Solidity: function totalSlashedStake() view returns(uint256)
  1356  func (_Contract *ContractSession) TotalSlashedStake() (*big.Int, error) {
  1357  	return _Contract.Contract.TotalSlashedStake(&_Contract.CallOpts)
  1358  }
  1359  
  1360  // TotalSlashedStake is a free data retrieval call binding the contract method 0x5fab23a8.
  1361  //
  1362  // Solidity: function totalSlashedStake() view returns(uint256)
  1363  func (_Contract *ContractCallerSession) TotalSlashedStake() (*big.Int, error) {
  1364  	return _Contract.Contract.TotalSlashedStake(&_Contract.CallOpts)
  1365  }
  1366  
  1367  // TotalStake is a free data retrieval call binding the contract method 0x8b0e9f3f.
  1368  //
  1369  // Solidity: function totalStake() view returns(uint256)
  1370  func (_Contract *ContractCaller) TotalStake(opts *bind.CallOpts) (*big.Int, error) {
  1371  	var out []interface{}
  1372  	err := _Contract.contract.Call(opts, &out, "totalStake")
  1373  
  1374  	if err != nil {
  1375  		return *new(*big.Int), err
  1376  	}
  1377  
  1378  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1379  
  1380  	return out0, err
  1381  
  1382  }
  1383  
  1384  // TotalStake is a free data retrieval call binding the contract method 0x8b0e9f3f.
  1385  //
  1386  // Solidity: function totalStake() view returns(uint256)
  1387  func (_Contract *ContractSession) TotalStake() (*big.Int, error) {
  1388  	return _Contract.Contract.TotalStake(&_Contract.CallOpts)
  1389  }
  1390  
  1391  // TotalStake is a free data retrieval call binding the contract method 0x8b0e9f3f.
  1392  //
  1393  // Solidity: function totalStake() view returns(uint256)
  1394  func (_Contract *ContractCallerSession) TotalStake() (*big.Int, error) {
  1395  	return _Contract.Contract.TotalStake(&_Contract.CallOpts)
  1396  }
  1397  
  1398  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  1399  //
  1400  // Solidity: function totalSupply() view returns(uint256)
  1401  func (_Contract *ContractCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  1402  	var out []interface{}
  1403  	err := _Contract.contract.Call(opts, &out, "totalSupply")
  1404  
  1405  	if err != nil {
  1406  		return *new(*big.Int), err
  1407  	}
  1408  
  1409  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1410  
  1411  	return out0, err
  1412  
  1413  }
  1414  
  1415  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  1416  //
  1417  // Solidity: function totalSupply() view returns(uint256)
  1418  func (_Contract *ContractSession) TotalSupply() (*big.Int, error) {
  1419  	return _Contract.Contract.TotalSupply(&_Contract.CallOpts)
  1420  }
  1421  
  1422  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  1423  //
  1424  // Solidity: function totalSupply() view returns(uint256)
  1425  func (_Contract *ContractCallerSession) TotalSupply() (*big.Int, error) {
  1426  	return _Contract.Contract.TotalSupply(&_Contract.CallOpts)
  1427  }
  1428  
  1429  // TreasuryAddress is a free data retrieval call binding the contract method 0xc5f956af.
  1430  //
  1431  // Solidity: function treasuryAddress() view returns(address)
  1432  func (_Contract *ContractCaller) TreasuryAddress(opts *bind.CallOpts) (common.Address, error) {
  1433  	var out []interface{}
  1434  	err := _Contract.contract.Call(opts, &out, "treasuryAddress")
  1435  
  1436  	if err != nil {
  1437  		return *new(common.Address), err
  1438  	}
  1439  
  1440  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1441  
  1442  	return out0, err
  1443  
  1444  }
  1445  
  1446  // TreasuryAddress is a free data retrieval call binding the contract method 0xc5f956af.
  1447  //
  1448  // Solidity: function treasuryAddress() view returns(address)
  1449  func (_Contract *ContractSession) TreasuryAddress() (common.Address, error) {
  1450  	return _Contract.Contract.TreasuryAddress(&_Contract.CallOpts)
  1451  }
  1452  
  1453  // TreasuryAddress is a free data retrieval call binding the contract method 0xc5f956af.
  1454  //
  1455  // Solidity: function treasuryAddress() view returns(address)
  1456  func (_Contract *ContractCallerSession) TreasuryAddress() (common.Address, error) {
  1457  	return _Contract.Contract.TreasuryAddress(&_Contract.CallOpts)
  1458  }
  1459  
  1460  // VoteBookAddress is a free data retrieval call binding the contract method 0x893675c6.
  1461  //
  1462  // Solidity: function voteBookAddress() view returns(address)
  1463  func (_Contract *ContractCaller) VoteBookAddress(opts *bind.CallOpts) (common.Address, error) {
  1464  	var out []interface{}
  1465  	err := _Contract.contract.Call(opts, &out, "voteBookAddress")
  1466  
  1467  	if err != nil {
  1468  		return *new(common.Address), err
  1469  	}
  1470  
  1471  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1472  
  1473  	return out0, err
  1474  
  1475  }
  1476  
  1477  // VoteBookAddress is a free data retrieval call binding the contract method 0x893675c6.
  1478  //
  1479  // Solidity: function voteBookAddress() view returns(address)
  1480  func (_Contract *ContractSession) VoteBookAddress() (common.Address, error) {
  1481  	return _Contract.Contract.VoteBookAddress(&_Contract.CallOpts)
  1482  }
  1483  
  1484  // VoteBookAddress is a free data retrieval call binding the contract method 0x893675c6.
  1485  //
  1486  // Solidity: function voteBookAddress() view returns(address)
  1487  func (_Contract *ContractCallerSession) VoteBookAddress() (common.Address, error) {
  1488  	return _Contract.Contract.VoteBookAddress(&_Contract.CallOpts)
  1489  }
  1490  
  1491  // SyncValidator is a paid mutator transaction binding the contract method 0xcc8343aa.
  1492  //
  1493  // Solidity: function _syncValidator(uint256 validatorID, bool syncPubkey) returns()
  1494  func (_Contract *ContractTransactor) SyncValidator(opts *bind.TransactOpts, validatorID *big.Int, syncPubkey bool) (*types.Transaction, error) {
  1495  	return _Contract.contract.Transact(opts, "_syncValidator", validatorID, syncPubkey)
  1496  }
  1497  
  1498  // SyncValidator is a paid mutator transaction binding the contract method 0xcc8343aa.
  1499  //
  1500  // Solidity: function _syncValidator(uint256 validatorID, bool syncPubkey) returns()
  1501  func (_Contract *ContractSession) SyncValidator(validatorID *big.Int, syncPubkey bool) (*types.Transaction, error) {
  1502  	return _Contract.Contract.SyncValidator(&_Contract.TransactOpts, validatorID, syncPubkey)
  1503  }
  1504  
  1505  // SyncValidator is a paid mutator transaction binding the contract method 0xcc8343aa.
  1506  //
  1507  // Solidity: function _syncValidator(uint256 validatorID, bool syncPubkey) returns()
  1508  func (_Contract *ContractTransactorSession) SyncValidator(validatorID *big.Int, syncPubkey bool) (*types.Transaction, error) {
  1509  	return _Contract.Contract.SyncValidator(&_Contract.TransactOpts, validatorID, syncPubkey)
  1510  }
  1511  
  1512  // BurnFTM is a paid mutator transaction binding the contract method 0x90a6c475.
  1513  //
  1514  // Solidity: function burnFTM(uint256 amount) returns()
  1515  func (_Contract *ContractTransactor) BurnFTM(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) {
  1516  	return _Contract.contract.Transact(opts, "burnFTM", amount)
  1517  }
  1518  
  1519  // BurnFTM is a paid mutator transaction binding the contract method 0x90a6c475.
  1520  //
  1521  // Solidity: function burnFTM(uint256 amount) returns()
  1522  func (_Contract *ContractSession) BurnFTM(amount *big.Int) (*types.Transaction, error) {
  1523  	return _Contract.Contract.BurnFTM(&_Contract.TransactOpts, amount)
  1524  }
  1525  
  1526  // BurnFTM is a paid mutator transaction binding the contract method 0x90a6c475.
  1527  //
  1528  // Solidity: function burnFTM(uint256 amount) returns()
  1529  func (_Contract *ContractTransactorSession) BurnFTM(amount *big.Int) (*types.Transaction, error) {
  1530  	return _Contract.Contract.BurnFTM(&_Contract.TransactOpts, amount)
  1531  }
  1532  
  1533  // ClaimRewards is a paid mutator transaction binding the contract method 0x0962ef79.
  1534  //
  1535  // Solidity: function claimRewards(uint256 toValidatorID) returns()
  1536  func (_Contract *ContractTransactor) ClaimRewards(opts *bind.TransactOpts, toValidatorID *big.Int) (*types.Transaction, error) {
  1537  	return _Contract.contract.Transact(opts, "claimRewards", toValidatorID)
  1538  }
  1539  
  1540  // ClaimRewards is a paid mutator transaction binding the contract method 0x0962ef79.
  1541  //
  1542  // Solidity: function claimRewards(uint256 toValidatorID) returns()
  1543  func (_Contract *ContractSession) ClaimRewards(toValidatorID *big.Int) (*types.Transaction, error) {
  1544  	return _Contract.Contract.ClaimRewards(&_Contract.TransactOpts, toValidatorID)
  1545  }
  1546  
  1547  // ClaimRewards is a paid mutator transaction binding the contract method 0x0962ef79.
  1548  //
  1549  // Solidity: function claimRewards(uint256 toValidatorID) returns()
  1550  func (_Contract *ContractTransactorSession) ClaimRewards(toValidatorID *big.Int) (*types.Transaction, error) {
  1551  	return _Contract.Contract.ClaimRewards(&_Contract.TransactOpts, toValidatorID)
  1552  }
  1553  
  1554  // CreateValidator is a paid mutator transaction binding the contract method 0xa5a470ad.
  1555  //
  1556  // Solidity: function createValidator(bytes pubkey) payable returns()
  1557  func (_Contract *ContractTransactor) CreateValidator(opts *bind.TransactOpts, pubkey []byte) (*types.Transaction, error) {
  1558  	return _Contract.contract.Transact(opts, "createValidator", pubkey)
  1559  }
  1560  
  1561  // CreateValidator is a paid mutator transaction binding the contract method 0xa5a470ad.
  1562  //
  1563  // Solidity: function createValidator(bytes pubkey) payable returns()
  1564  func (_Contract *ContractSession) CreateValidator(pubkey []byte) (*types.Transaction, error) {
  1565  	return _Contract.Contract.CreateValidator(&_Contract.TransactOpts, pubkey)
  1566  }
  1567  
  1568  // CreateValidator is a paid mutator transaction binding the contract method 0xa5a470ad.
  1569  //
  1570  // Solidity: function createValidator(bytes pubkey) payable returns()
  1571  func (_Contract *ContractTransactorSession) CreateValidator(pubkey []byte) (*types.Transaction, error) {
  1572  	return _Contract.Contract.CreateValidator(&_Contract.TransactOpts, pubkey)
  1573  }
  1574  
  1575  // DeactivateValidator is a paid mutator transaction binding the contract method 0x1e702f83.
  1576  //
  1577  // Solidity: function deactivateValidator(uint256 validatorID, uint256 status) returns()
  1578  func (_Contract *ContractTransactor) DeactivateValidator(opts *bind.TransactOpts, validatorID *big.Int, status *big.Int) (*types.Transaction, error) {
  1579  	return _Contract.contract.Transact(opts, "deactivateValidator", validatorID, status)
  1580  }
  1581  
  1582  // DeactivateValidator is a paid mutator transaction binding the contract method 0x1e702f83.
  1583  //
  1584  // Solidity: function deactivateValidator(uint256 validatorID, uint256 status) returns()
  1585  func (_Contract *ContractSession) DeactivateValidator(validatorID *big.Int, status *big.Int) (*types.Transaction, error) {
  1586  	return _Contract.Contract.DeactivateValidator(&_Contract.TransactOpts, validatorID, status)
  1587  }
  1588  
  1589  // DeactivateValidator is a paid mutator transaction binding the contract method 0x1e702f83.
  1590  //
  1591  // Solidity: function deactivateValidator(uint256 validatorID, uint256 status) returns()
  1592  func (_Contract *ContractTransactorSession) DeactivateValidator(validatorID *big.Int, status *big.Int) (*types.Transaction, error) {
  1593  	return _Contract.Contract.DeactivateValidator(&_Contract.TransactOpts, validatorID, status)
  1594  }
  1595  
  1596  // Delegate is a paid mutator transaction binding the contract method 0x9fa6dd35.
  1597  //
  1598  // Solidity: function delegate(uint256 toValidatorID) payable returns()
  1599  func (_Contract *ContractTransactor) Delegate(opts *bind.TransactOpts, toValidatorID *big.Int) (*types.Transaction, error) {
  1600  	return _Contract.contract.Transact(opts, "delegate", toValidatorID)
  1601  }
  1602  
  1603  // Delegate is a paid mutator transaction binding the contract method 0x9fa6dd35.
  1604  //
  1605  // Solidity: function delegate(uint256 toValidatorID) payable returns()
  1606  func (_Contract *ContractSession) Delegate(toValidatorID *big.Int) (*types.Transaction, error) {
  1607  	return _Contract.Contract.Delegate(&_Contract.TransactOpts, toValidatorID)
  1608  }
  1609  
  1610  // Delegate is a paid mutator transaction binding the contract method 0x9fa6dd35.
  1611  //
  1612  // Solidity: function delegate(uint256 toValidatorID) payable returns()
  1613  func (_Contract *ContractTransactorSession) Delegate(toValidatorID *big.Int) (*types.Transaction, error) {
  1614  	return _Contract.Contract.Delegate(&_Contract.TransactOpts, toValidatorID)
  1615  }
  1616  
  1617  // LockStake is a paid mutator transaction binding the contract method 0xde67f215.
  1618  //
  1619  // Solidity: function lockStake(uint256 toValidatorID, uint256 lockupDuration, uint256 amount) returns()
  1620  func (_Contract *ContractTransactor) LockStake(opts *bind.TransactOpts, toValidatorID *big.Int, lockupDuration *big.Int, amount *big.Int) (*types.Transaction, error) {
  1621  	return _Contract.contract.Transact(opts, "lockStake", toValidatorID, lockupDuration, amount)
  1622  }
  1623  
  1624  // LockStake is a paid mutator transaction binding the contract method 0xde67f215.
  1625  //
  1626  // Solidity: function lockStake(uint256 toValidatorID, uint256 lockupDuration, uint256 amount) returns()
  1627  func (_Contract *ContractSession) LockStake(toValidatorID *big.Int, lockupDuration *big.Int, amount *big.Int) (*types.Transaction, error) {
  1628  	return _Contract.Contract.LockStake(&_Contract.TransactOpts, toValidatorID, lockupDuration, amount)
  1629  }
  1630  
  1631  // LockStake is a paid mutator transaction binding the contract method 0xde67f215.
  1632  //
  1633  // Solidity: function lockStake(uint256 toValidatorID, uint256 lockupDuration, uint256 amount) returns()
  1634  func (_Contract *ContractTransactorSession) LockStake(toValidatorID *big.Int, lockupDuration *big.Int, amount *big.Int) (*types.Transaction, error) {
  1635  	return _Contract.Contract.LockStake(&_Contract.TransactOpts, toValidatorID, lockupDuration, amount)
  1636  }
  1637  
  1638  // MintFTM is a paid mutator transaction binding the contract method 0xe2f8c336.
  1639  //
  1640  // Solidity: function mintFTM(address receiver, uint256 amount, string justification) returns()
  1641  func (_Contract *ContractTransactor) MintFTM(opts *bind.TransactOpts, receiver common.Address, amount *big.Int, justification string) (*types.Transaction, error) {
  1642  	return _Contract.contract.Transact(opts, "mintFTM", receiver, amount, justification)
  1643  }
  1644  
  1645  // MintFTM is a paid mutator transaction binding the contract method 0xe2f8c336.
  1646  //
  1647  // Solidity: function mintFTM(address receiver, uint256 amount, string justification) returns()
  1648  func (_Contract *ContractSession) MintFTM(receiver common.Address, amount *big.Int, justification string) (*types.Transaction, error) {
  1649  	return _Contract.Contract.MintFTM(&_Contract.TransactOpts, receiver, amount, justification)
  1650  }
  1651  
  1652  // MintFTM is a paid mutator transaction binding the contract method 0xe2f8c336.
  1653  //
  1654  // Solidity: function mintFTM(address receiver, uint256 amount, string justification) returns()
  1655  func (_Contract *ContractTransactorSession) MintFTM(receiver common.Address, amount *big.Int, justification string) (*types.Transaction, error) {
  1656  	return _Contract.Contract.MintFTM(&_Contract.TransactOpts, receiver, amount, justification)
  1657  }
  1658  
  1659  // RecountVotes is a paid mutator transaction binding the contract method 0x20c0849d.
  1660  //
  1661  // Solidity: function recountVotes(address delegator, address validatorAuth, bool strict, uint256 gas) returns()
  1662  func (_Contract *ContractTransactor) RecountVotes(opts *bind.TransactOpts, delegator common.Address, validatorAuth common.Address, strict bool, gas *big.Int) (*types.Transaction, error) {
  1663  	return _Contract.contract.Transact(opts, "recountVotes", delegator, validatorAuth, strict, gas)
  1664  }
  1665  
  1666  // RecountVotes is a paid mutator transaction binding the contract method 0x20c0849d.
  1667  //
  1668  // Solidity: function recountVotes(address delegator, address validatorAuth, bool strict, uint256 gas) returns()
  1669  func (_Contract *ContractSession) RecountVotes(delegator common.Address, validatorAuth common.Address, strict bool, gas *big.Int) (*types.Transaction, error) {
  1670  	return _Contract.Contract.RecountVotes(&_Contract.TransactOpts, delegator, validatorAuth, strict, gas)
  1671  }
  1672  
  1673  // RecountVotes is a paid mutator transaction binding the contract method 0x20c0849d.
  1674  //
  1675  // Solidity: function recountVotes(address delegator, address validatorAuth, bool strict, uint256 gas) returns()
  1676  func (_Contract *ContractTransactorSession) RecountVotes(delegator common.Address, validatorAuth common.Address, strict bool, gas *big.Int) (*types.Transaction, error) {
  1677  	return _Contract.Contract.RecountVotes(&_Contract.TransactOpts, delegator, validatorAuth, strict, gas)
  1678  }
  1679  
  1680  // RelockStake is a paid mutator transaction binding the contract method 0xbd14d907.
  1681  //
  1682  // Solidity: function relockStake(uint256 toValidatorID, uint256 lockupDuration, uint256 amount) returns()
  1683  func (_Contract *ContractTransactor) RelockStake(opts *bind.TransactOpts, toValidatorID *big.Int, lockupDuration *big.Int, amount *big.Int) (*types.Transaction, error) {
  1684  	return _Contract.contract.Transact(opts, "relockStake", toValidatorID, lockupDuration, amount)
  1685  }
  1686  
  1687  // RelockStake is a paid mutator transaction binding the contract method 0xbd14d907.
  1688  //
  1689  // Solidity: function relockStake(uint256 toValidatorID, uint256 lockupDuration, uint256 amount) returns()
  1690  func (_Contract *ContractSession) RelockStake(toValidatorID *big.Int, lockupDuration *big.Int, amount *big.Int) (*types.Transaction, error) {
  1691  	return _Contract.Contract.RelockStake(&_Contract.TransactOpts, toValidatorID, lockupDuration, amount)
  1692  }
  1693  
  1694  // RelockStake is a paid mutator transaction binding the contract method 0xbd14d907.
  1695  //
  1696  // Solidity: function relockStake(uint256 toValidatorID, uint256 lockupDuration, uint256 amount) returns()
  1697  func (_Contract *ContractTransactorSession) RelockStake(toValidatorID *big.Int, lockupDuration *big.Int, amount *big.Int) (*types.Transaction, error) {
  1698  	return _Contract.Contract.RelockStake(&_Contract.TransactOpts, toValidatorID, lockupDuration, amount)
  1699  }
  1700  
  1701  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  1702  //
  1703  // Solidity: function renounceOwnership() returns()
  1704  func (_Contract *ContractTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  1705  	return _Contract.contract.Transact(opts, "renounceOwnership")
  1706  }
  1707  
  1708  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  1709  //
  1710  // Solidity: function renounceOwnership() returns()
  1711  func (_Contract *ContractSession) RenounceOwnership() (*types.Transaction, error) {
  1712  	return _Contract.Contract.RenounceOwnership(&_Contract.TransactOpts)
  1713  }
  1714  
  1715  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  1716  //
  1717  // Solidity: function renounceOwnership() returns()
  1718  func (_Contract *ContractTransactorSession) RenounceOwnership() (*types.Transaction, error) {
  1719  	return _Contract.Contract.RenounceOwnership(&_Contract.TransactOpts)
  1720  }
  1721  
  1722  // RestakeRewards is a paid mutator transaction binding the contract method 0x08c36874.
  1723  //
  1724  // Solidity: function restakeRewards(uint256 toValidatorID) returns()
  1725  func (_Contract *ContractTransactor) RestakeRewards(opts *bind.TransactOpts, toValidatorID *big.Int) (*types.Transaction, error) {
  1726  	return _Contract.contract.Transact(opts, "restakeRewards", toValidatorID)
  1727  }
  1728  
  1729  // RestakeRewards is a paid mutator transaction binding the contract method 0x08c36874.
  1730  //
  1731  // Solidity: function restakeRewards(uint256 toValidatorID) returns()
  1732  func (_Contract *ContractSession) RestakeRewards(toValidatorID *big.Int) (*types.Transaction, error) {
  1733  	return _Contract.Contract.RestakeRewards(&_Contract.TransactOpts, toValidatorID)
  1734  }
  1735  
  1736  // RestakeRewards is a paid mutator transaction binding the contract method 0x08c36874.
  1737  //
  1738  // Solidity: function restakeRewards(uint256 toValidatorID) returns()
  1739  func (_Contract *ContractTransactorSession) RestakeRewards(toValidatorID *big.Int) (*types.Transaction, error) {
  1740  	return _Contract.Contract.RestakeRewards(&_Contract.TransactOpts, toValidatorID)
  1741  }
  1742  
  1743  // SetGenesisDelegation is a paid mutator transaction binding the contract method 0x18f628d4.
  1744  //
  1745  // Solidity: function setGenesisDelegation(address delegator, uint256 toValidatorID, uint256 stake, uint256 lockedStake, uint256 lockupFromEpoch, uint256 lockupEndTime, uint256 lockupDuration, uint256 earlyUnlockPenalty, uint256 rewards) returns()
  1746  func (_Contract *ContractTransactor) SetGenesisDelegation(opts *bind.TransactOpts, delegator common.Address, toValidatorID *big.Int, stake *big.Int, lockedStake *big.Int, lockupFromEpoch *big.Int, lockupEndTime *big.Int, lockupDuration *big.Int, earlyUnlockPenalty *big.Int, rewards *big.Int) (*types.Transaction, error) {
  1747  	return _Contract.contract.Transact(opts, "setGenesisDelegation", delegator, toValidatorID, stake, lockedStake, lockupFromEpoch, lockupEndTime, lockupDuration, earlyUnlockPenalty, rewards)
  1748  }
  1749  
  1750  // SetGenesisDelegation is a paid mutator transaction binding the contract method 0x18f628d4.
  1751  //
  1752  // Solidity: function setGenesisDelegation(address delegator, uint256 toValidatorID, uint256 stake, uint256 lockedStake, uint256 lockupFromEpoch, uint256 lockupEndTime, uint256 lockupDuration, uint256 earlyUnlockPenalty, uint256 rewards) returns()
  1753  func (_Contract *ContractSession) SetGenesisDelegation(delegator common.Address, toValidatorID *big.Int, stake *big.Int, lockedStake *big.Int, lockupFromEpoch *big.Int, lockupEndTime *big.Int, lockupDuration *big.Int, earlyUnlockPenalty *big.Int, rewards *big.Int) (*types.Transaction, error) {
  1754  	return _Contract.Contract.SetGenesisDelegation(&_Contract.TransactOpts, delegator, toValidatorID, stake, lockedStake, lockupFromEpoch, lockupEndTime, lockupDuration, earlyUnlockPenalty, rewards)
  1755  }
  1756  
  1757  // SetGenesisDelegation is a paid mutator transaction binding the contract method 0x18f628d4.
  1758  //
  1759  // Solidity: function setGenesisDelegation(address delegator, uint256 toValidatorID, uint256 stake, uint256 lockedStake, uint256 lockupFromEpoch, uint256 lockupEndTime, uint256 lockupDuration, uint256 earlyUnlockPenalty, uint256 rewards) returns()
  1760  func (_Contract *ContractTransactorSession) SetGenesisDelegation(delegator common.Address, toValidatorID *big.Int, stake *big.Int, lockedStake *big.Int, lockupFromEpoch *big.Int, lockupEndTime *big.Int, lockupDuration *big.Int, earlyUnlockPenalty *big.Int, rewards *big.Int) (*types.Transaction, error) {
  1761  	return _Contract.Contract.SetGenesisDelegation(&_Contract.TransactOpts, delegator, toValidatorID, stake, lockedStake, lockupFromEpoch, lockupEndTime, lockupDuration, earlyUnlockPenalty, rewards)
  1762  }
  1763  
  1764  // SetGenesisValidator is a paid mutator transaction binding the contract method 0x4feb92f3.
  1765  //
  1766  // Solidity: function setGenesisValidator(address auth, uint256 validatorID, bytes pubkey, uint256 status, uint256 createdEpoch, uint256 createdTime, uint256 deactivatedEpoch, uint256 deactivatedTime) returns()
  1767  func (_Contract *ContractTransactor) SetGenesisValidator(opts *bind.TransactOpts, auth common.Address, validatorID *big.Int, pubkey []byte, status *big.Int, createdEpoch *big.Int, createdTime *big.Int, deactivatedEpoch *big.Int, deactivatedTime *big.Int) (*types.Transaction, error) {
  1768  	return _Contract.contract.Transact(opts, "setGenesisValidator", auth, validatorID, pubkey, status, createdEpoch, createdTime, deactivatedEpoch, deactivatedTime)
  1769  }
  1770  
  1771  // SetGenesisValidator is a paid mutator transaction binding the contract method 0x4feb92f3.
  1772  //
  1773  // Solidity: function setGenesisValidator(address auth, uint256 validatorID, bytes pubkey, uint256 status, uint256 createdEpoch, uint256 createdTime, uint256 deactivatedEpoch, uint256 deactivatedTime) returns()
  1774  func (_Contract *ContractSession) SetGenesisValidator(auth common.Address, validatorID *big.Int, pubkey []byte, status *big.Int, createdEpoch *big.Int, createdTime *big.Int, deactivatedEpoch *big.Int, deactivatedTime *big.Int) (*types.Transaction, error) {
  1775  	return _Contract.Contract.SetGenesisValidator(&_Contract.TransactOpts, auth, validatorID, pubkey, status, createdEpoch, createdTime, deactivatedEpoch, deactivatedTime)
  1776  }
  1777  
  1778  // SetGenesisValidator is a paid mutator transaction binding the contract method 0x4feb92f3.
  1779  //
  1780  // Solidity: function setGenesisValidator(address auth, uint256 validatorID, bytes pubkey, uint256 status, uint256 createdEpoch, uint256 createdTime, uint256 deactivatedEpoch, uint256 deactivatedTime) returns()
  1781  func (_Contract *ContractTransactorSession) SetGenesisValidator(auth common.Address, validatorID *big.Int, pubkey []byte, status *big.Int, createdEpoch *big.Int, createdTime *big.Int, deactivatedEpoch *big.Int, deactivatedTime *big.Int) (*types.Transaction, error) {
  1782  	return _Contract.Contract.SetGenesisValidator(&_Contract.TransactOpts, auth, validatorID, pubkey, status, createdEpoch, createdTime, deactivatedEpoch, deactivatedTime)
  1783  }
  1784  
  1785  // StashRewards is a paid mutator transaction binding the contract method 0x8cddb015.
  1786  //
  1787  // Solidity: function stashRewards(address delegator, uint256 toValidatorID) returns()
  1788  func (_Contract *ContractTransactor) StashRewards(opts *bind.TransactOpts, delegator common.Address, toValidatorID *big.Int) (*types.Transaction, error) {
  1789  	return _Contract.contract.Transact(opts, "stashRewards", delegator, toValidatorID)
  1790  }
  1791  
  1792  // StashRewards is a paid mutator transaction binding the contract method 0x8cddb015.
  1793  //
  1794  // Solidity: function stashRewards(address delegator, uint256 toValidatorID) returns()
  1795  func (_Contract *ContractSession) StashRewards(delegator common.Address, toValidatorID *big.Int) (*types.Transaction, error) {
  1796  	return _Contract.Contract.StashRewards(&_Contract.TransactOpts, delegator, toValidatorID)
  1797  }
  1798  
  1799  // StashRewards is a paid mutator transaction binding the contract method 0x8cddb015.
  1800  //
  1801  // Solidity: function stashRewards(address delegator, uint256 toValidatorID) returns()
  1802  func (_Contract *ContractTransactorSession) StashRewards(delegator common.Address, toValidatorID *big.Int) (*types.Transaction, error) {
  1803  	return _Contract.Contract.StashRewards(&_Contract.TransactOpts, delegator, toValidatorID)
  1804  }
  1805  
  1806  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  1807  //
  1808  // Solidity: function transferOwnership(address newOwner) returns()
  1809  func (_Contract *ContractTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  1810  	return _Contract.contract.Transact(opts, "transferOwnership", newOwner)
  1811  }
  1812  
  1813  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  1814  //
  1815  // Solidity: function transferOwnership(address newOwner) returns()
  1816  func (_Contract *ContractSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  1817  	return _Contract.Contract.TransferOwnership(&_Contract.TransactOpts, newOwner)
  1818  }
  1819  
  1820  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  1821  //
  1822  // Solidity: function transferOwnership(address newOwner) returns()
  1823  func (_Contract *ContractTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  1824  	return _Contract.Contract.TransferOwnership(&_Contract.TransactOpts, newOwner)
  1825  }
  1826  
  1827  // Undelegate is a paid mutator transaction binding the contract method 0x4f864df4.
  1828  //
  1829  // Solidity: function undelegate(uint256 toValidatorID, uint256 wrID, uint256 amount) returns()
  1830  func (_Contract *ContractTransactor) Undelegate(opts *bind.TransactOpts, toValidatorID *big.Int, wrID *big.Int, amount *big.Int) (*types.Transaction, error) {
  1831  	return _Contract.contract.Transact(opts, "undelegate", toValidatorID, wrID, amount)
  1832  }
  1833  
  1834  // Undelegate is a paid mutator transaction binding the contract method 0x4f864df4.
  1835  //
  1836  // Solidity: function undelegate(uint256 toValidatorID, uint256 wrID, uint256 amount) returns()
  1837  func (_Contract *ContractSession) Undelegate(toValidatorID *big.Int, wrID *big.Int, amount *big.Int) (*types.Transaction, error) {
  1838  	return _Contract.Contract.Undelegate(&_Contract.TransactOpts, toValidatorID, wrID, amount)
  1839  }
  1840  
  1841  // Undelegate is a paid mutator transaction binding the contract method 0x4f864df4.
  1842  //
  1843  // Solidity: function undelegate(uint256 toValidatorID, uint256 wrID, uint256 amount) returns()
  1844  func (_Contract *ContractTransactorSession) Undelegate(toValidatorID *big.Int, wrID *big.Int, amount *big.Int) (*types.Transaction, error) {
  1845  	return _Contract.Contract.Undelegate(&_Contract.TransactOpts, toValidatorID, wrID, amount)
  1846  }
  1847  
  1848  // UnlockStake is a paid mutator transaction binding the contract method 0x1d3ac42c.
  1849  //
  1850  // Solidity: function unlockStake(uint256 toValidatorID, uint256 amount) returns(uint256)
  1851  func (_Contract *ContractTransactor) UnlockStake(opts *bind.TransactOpts, toValidatorID *big.Int, amount *big.Int) (*types.Transaction, error) {
  1852  	return _Contract.contract.Transact(opts, "unlockStake", toValidatorID, amount)
  1853  }
  1854  
  1855  // UnlockStake is a paid mutator transaction binding the contract method 0x1d3ac42c.
  1856  //
  1857  // Solidity: function unlockStake(uint256 toValidatorID, uint256 amount) returns(uint256)
  1858  func (_Contract *ContractSession) UnlockStake(toValidatorID *big.Int, amount *big.Int) (*types.Transaction, error) {
  1859  	return _Contract.Contract.UnlockStake(&_Contract.TransactOpts, toValidatorID, amount)
  1860  }
  1861  
  1862  // UnlockStake is a paid mutator transaction binding the contract method 0x1d3ac42c.
  1863  //
  1864  // Solidity: function unlockStake(uint256 toValidatorID, uint256 amount) returns(uint256)
  1865  func (_Contract *ContractTransactorSession) UnlockStake(toValidatorID *big.Int, amount *big.Int) (*types.Transaction, error) {
  1866  	return _Contract.Contract.UnlockStake(&_Contract.TransactOpts, toValidatorID, amount)
  1867  }
  1868  
  1869  // UpdateSlashingRefundRatio is a paid mutator transaction binding the contract method 0x4f7c4efb.
  1870  //
  1871  // Solidity: function updateSlashingRefundRatio(uint256 validatorID, uint256 refundRatio) returns()
  1872  func (_Contract *ContractTransactor) UpdateSlashingRefundRatio(opts *bind.TransactOpts, validatorID *big.Int, refundRatio *big.Int) (*types.Transaction, error) {
  1873  	return _Contract.contract.Transact(opts, "updateSlashingRefundRatio", validatorID, refundRatio)
  1874  }
  1875  
  1876  // UpdateSlashingRefundRatio is a paid mutator transaction binding the contract method 0x4f7c4efb.
  1877  //
  1878  // Solidity: function updateSlashingRefundRatio(uint256 validatorID, uint256 refundRatio) returns()
  1879  func (_Contract *ContractSession) UpdateSlashingRefundRatio(validatorID *big.Int, refundRatio *big.Int) (*types.Transaction, error) {
  1880  	return _Contract.Contract.UpdateSlashingRefundRatio(&_Contract.TransactOpts, validatorID, refundRatio)
  1881  }
  1882  
  1883  // UpdateSlashingRefundRatio is a paid mutator transaction binding the contract method 0x4f7c4efb.
  1884  //
  1885  // Solidity: function updateSlashingRefundRatio(uint256 validatorID, uint256 refundRatio) returns()
  1886  func (_Contract *ContractTransactorSession) UpdateSlashingRefundRatio(validatorID *big.Int, refundRatio *big.Int) (*types.Transaction, error) {
  1887  	return _Contract.Contract.UpdateSlashingRefundRatio(&_Contract.TransactOpts, validatorID, refundRatio)
  1888  }
  1889  
  1890  // Withdraw is a paid mutator transaction binding the contract method 0x441a3e70.
  1891  //
  1892  // Solidity: function withdraw(uint256 toValidatorID, uint256 wrID) returns()
  1893  func (_Contract *ContractTransactor) Withdraw(opts *bind.TransactOpts, toValidatorID *big.Int, wrID *big.Int) (*types.Transaction, error) {
  1894  	return _Contract.contract.Transact(opts, "withdraw", toValidatorID, wrID)
  1895  }
  1896  
  1897  // Withdraw is a paid mutator transaction binding the contract method 0x441a3e70.
  1898  //
  1899  // Solidity: function withdraw(uint256 toValidatorID, uint256 wrID) returns()
  1900  func (_Contract *ContractSession) Withdraw(toValidatorID *big.Int, wrID *big.Int) (*types.Transaction, error) {
  1901  	return _Contract.Contract.Withdraw(&_Contract.TransactOpts, toValidatorID, wrID)
  1902  }
  1903  
  1904  // Withdraw is a paid mutator transaction binding the contract method 0x441a3e70.
  1905  //
  1906  // Solidity: function withdraw(uint256 toValidatorID, uint256 wrID) returns()
  1907  func (_Contract *ContractTransactorSession) Withdraw(toValidatorID *big.Int, wrID *big.Int) (*types.Transaction, error) {
  1908  	return _Contract.Contract.Withdraw(&_Contract.TransactOpts, toValidatorID, wrID)
  1909  }
  1910  
  1911  // ContractBurntFTMIterator is returned from FilterBurntFTM and is used to iterate over the raw logs and unpacked data for BurntFTM events raised by the Contract contract.
  1912  type ContractBurntFTMIterator struct {
  1913  	Event *ContractBurntFTM // Event containing the contract specifics and raw log
  1914  
  1915  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1916  	event    string              // Event name to use for unpacking event data
  1917  
  1918  	logs chan types.Log        // Log channel receiving the found contract events
  1919  	sub  u2u.Subscription // Subscription for errors, completion and termination
  1920  	done bool                  // Whether the subscription completed delivering logs
  1921  	fail error                 // Occurred error to stop iteration
  1922  }
  1923  
  1924  // Next advances the iterator to the subsequent event, returning whether there
  1925  // are any more events found. In case of a retrieval or parsing error, false is
  1926  // returned and Error() can be queried for the exact failure.
  1927  func (it *ContractBurntFTMIterator) Next() bool {
  1928  	// If the iterator failed, stop iterating
  1929  	if it.fail != nil {
  1930  		return false
  1931  	}
  1932  	// If the iterator completed, deliver directly whatever's available
  1933  	if it.done {
  1934  		select {
  1935  		case log := <-it.logs:
  1936  			it.Event = new(ContractBurntFTM)
  1937  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1938  				it.fail = err
  1939  				return false
  1940  			}
  1941  			it.Event.Raw = log
  1942  			return true
  1943  
  1944  		default:
  1945  			return false
  1946  		}
  1947  	}
  1948  	// Iterator still in progress, wait for either a data or an error event
  1949  	select {
  1950  	case log := <-it.logs:
  1951  		it.Event = new(ContractBurntFTM)
  1952  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1953  			it.fail = err
  1954  			return false
  1955  		}
  1956  		it.Event.Raw = log
  1957  		return true
  1958  
  1959  	case err := <-it.sub.Err():
  1960  		it.done = true
  1961  		it.fail = err
  1962  		return it.Next()
  1963  	}
  1964  }
  1965  
  1966  // Error returns any retrieval or parsing error occurred during filtering.
  1967  func (it *ContractBurntFTMIterator) Error() error {
  1968  	return it.fail
  1969  }
  1970  
  1971  // Close terminates the iteration process, releasing any pending underlying
  1972  // resources.
  1973  func (it *ContractBurntFTMIterator) Close() error {
  1974  	it.sub.Unsubscribe()
  1975  	return nil
  1976  }
  1977  
  1978  // ContractBurntFTM represents a BurntFTM event raised by the Contract contract.
  1979  type ContractBurntFTM struct {
  1980  	Amount *big.Int
  1981  	Raw    types.Log // Blockchain specific contextual infos
  1982  }
  1983  
  1984  // FilterBurntFTM is a free log retrieval operation binding the contract event 0x8918bd6046d08b314e457977f29562c5d76a7030d79b1edba66e8a5da0b77ae8.
  1985  //
  1986  // Solidity: event BurntFTM(uint256 amount)
  1987  func (_Contract *ContractFilterer) FilterBurntFTM(opts *bind.FilterOpts) (*ContractBurntFTMIterator, error) {
  1988  
  1989  	logs, sub, err := _Contract.contract.FilterLogs(opts, "BurntFTM")
  1990  	if err != nil {
  1991  		return nil, err
  1992  	}
  1993  	return &ContractBurntFTMIterator{contract: _Contract.contract, event: "BurntFTM", logs: logs, sub: sub}, nil
  1994  }
  1995  
  1996  // WatchBurntFTM is a free log subscription operation binding the contract event 0x8918bd6046d08b314e457977f29562c5d76a7030d79b1edba66e8a5da0b77ae8.
  1997  //
  1998  // Solidity: event BurntFTM(uint256 amount)
  1999  func (_Contract *ContractFilterer) WatchBurntFTM(opts *bind.WatchOpts, sink chan<- *ContractBurntFTM) (event.Subscription, error) {
  2000  
  2001  	logs, sub, err := _Contract.contract.WatchLogs(opts, "BurntFTM")
  2002  	if err != nil {
  2003  		return nil, err
  2004  	}
  2005  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2006  		defer sub.Unsubscribe()
  2007  		for {
  2008  			select {
  2009  			case log := <-logs:
  2010  				// New log arrived, parse the event and forward to the user
  2011  				event := new(ContractBurntFTM)
  2012  				if err := _Contract.contract.UnpackLog(event, "BurntFTM", log); err != nil {
  2013  					return err
  2014  				}
  2015  				event.Raw = log
  2016  
  2017  				select {
  2018  				case sink <- event:
  2019  				case err := <-sub.Err():
  2020  					return err
  2021  				case <-quit:
  2022  					return nil
  2023  				}
  2024  			case err := <-sub.Err():
  2025  				return err
  2026  			case <-quit:
  2027  				return nil
  2028  			}
  2029  		}
  2030  	}), nil
  2031  }
  2032  
  2033  // ParseBurntFTM is a log parse operation binding the contract event 0x8918bd6046d08b314e457977f29562c5d76a7030d79b1edba66e8a5da0b77ae8.
  2034  //
  2035  // Solidity: event BurntFTM(uint256 amount)
  2036  func (_Contract *ContractFilterer) ParseBurntFTM(log types.Log) (*ContractBurntFTM, error) {
  2037  	event := new(ContractBurntFTM)
  2038  	if err := _Contract.contract.UnpackLog(event, "BurntFTM", log); err != nil {
  2039  		return nil, err
  2040  	}
  2041  	event.Raw = log
  2042  	return event, nil
  2043  }
  2044  
  2045  // ContractChangedValidatorStatusIterator is returned from FilterChangedValidatorStatus and is used to iterate over the raw logs and unpacked data for ChangedValidatorStatus events raised by the Contract contract.
  2046  type ContractChangedValidatorStatusIterator struct {
  2047  	Event *ContractChangedValidatorStatus // Event containing the contract specifics and raw log
  2048  
  2049  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2050  	event    string              // Event name to use for unpacking event data
  2051  
  2052  	logs chan types.Log        // Log channel receiving the found contract events
  2053  	sub  u2u.Subscription // Subscription for errors, completion and termination
  2054  	done bool                  // Whether the subscription completed delivering logs
  2055  	fail error                 // Occurred error to stop iteration
  2056  }
  2057  
  2058  // Next advances the iterator to the subsequent event, returning whether there
  2059  // are any more events found. In case of a retrieval or parsing error, false is
  2060  // returned and Error() can be queried for the exact failure.
  2061  func (it *ContractChangedValidatorStatusIterator) Next() bool {
  2062  	// If the iterator failed, stop iterating
  2063  	if it.fail != nil {
  2064  		return false
  2065  	}
  2066  	// If the iterator completed, deliver directly whatever's available
  2067  	if it.done {
  2068  		select {
  2069  		case log := <-it.logs:
  2070  			it.Event = new(ContractChangedValidatorStatus)
  2071  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2072  				it.fail = err
  2073  				return false
  2074  			}
  2075  			it.Event.Raw = log
  2076  			return true
  2077  
  2078  		default:
  2079  			return false
  2080  		}
  2081  	}
  2082  	// Iterator still in progress, wait for either a data or an error event
  2083  	select {
  2084  	case log := <-it.logs:
  2085  		it.Event = new(ContractChangedValidatorStatus)
  2086  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2087  			it.fail = err
  2088  			return false
  2089  		}
  2090  		it.Event.Raw = log
  2091  		return true
  2092  
  2093  	case err := <-it.sub.Err():
  2094  		it.done = true
  2095  		it.fail = err
  2096  		return it.Next()
  2097  	}
  2098  }
  2099  
  2100  // Error returns any retrieval or parsing error occurred during filtering.
  2101  func (it *ContractChangedValidatorStatusIterator) Error() error {
  2102  	return it.fail
  2103  }
  2104  
  2105  // Close terminates the iteration process, releasing any pending underlying
  2106  // resources.
  2107  func (it *ContractChangedValidatorStatusIterator) Close() error {
  2108  	it.sub.Unsubscribe()
  2109  	return nil
  2110  }
  2111  
  2112  // ContractChangedValidatorStatus represents a ChangedValidatorStatus event raised by the Contract contract.
  2113  type ContractChangedValidatorStatus struct {
  2114  	ValidatorID *big.Int
  2115  	Status      *big.Int
  2116  	Raw         types.Log // Blockchain specific contextual infos
  2117  }
  2118  
  2119  // FilterChangedValidatorStatus is a free log retrieval operation binding the contract event 0xcd35267e7654194727477d6c78b541a553483cff7f92a055d17868d3da6e953e.
  2120  //
  2121  // Solidity: event ChangedValidatorStatus(uint256 indexed validatorID, uint256 status)
  2122  func (_Contract *ContractFilterer) FilterChangedValidatorStatus(opts *bind.FilterOpts, validatorID []*big.Int) (*ContractChangedValidatorStatusIterator, error) {
  2123  
  2124  	var validatorIDRule []interface{}
  2125  	for _, validatorIDItem := range validatorID {
  2126  		validatorIDRule = append(validatorIDRule, validatorIDItem)
  2127  	}
  2128  
  2129  	logs, sub, err := _Contract.contract.FilterLogs(opts, "ChangedValidatorStatus", validatorIDRule)
  2130  	if err != nil {
  2131  		return nil, err
  2132  	}
  2133  	return &ContractChangedValidatorStatusIterator{contract: _Contract.contract, event: "ChangedValidatorStatus", logs: logs, sub: sub}, nil
  2134  }
  2135  
  2136  // WatchChangedValidatorStatus is a free log subscription operation binding the contract event 0xcd35267e7654194727477d6c78b541a553483cff7f92a055d17868d3da6e953e.
  2137  //
  2138  // Solidity: event ChangedValidatorStatus(uint256 indexed validatorID, uint256 status)
  2139  func (_Contract *ContractFilterer) WatchChangedValidatorStatus(opts *bind.WatchOpts, sink chan<- *ContractChangedValidatorStatus, validatorID []*big.Int) (event.Subscription, error) {
  2140  
  2141  	var validatorIDRule []interface{}
  2142  	for _, validatorIDItem := range validatorID {
  2143  		validatorIDRule = append(validatorIDRule, validatorIDItem)
  2144  	}
  2145  
  2146  	logs, sub, err := _Contract.contract.WatchLogs(opts, "ChangedValidatorStatus", validatorIDRule)
  2147  	if err != nil {
  2148  		return nil, err
  2149  	}
  2150  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2151  		defer sub.Unsubscribe()
  2152  		for {
  2153  			select {
  2154  			case log := <-logs:
  2155  				// New log arrived, parse the event and forward to the user
  2156  				event := new(ContractChangedValidatorStatus)
  2157  				if err := _Contract.contract.UnpackLog(event, "ChangedValidatorStatus", log); err != nil {
  2158  					return err
  2159  				}
  2160  				event.Raw = log
  2161  
  2162  				select {
  2163  				case sink <- event:
  2164  				case err := <-sub.Err():
  2165  					return err
  2166  				case <-quit:
  2167  					return nil
  2168  				}
  2169  			case err := <-sub.Err():
  2170  				return err
  2171  			case <-quit:
  2172  				return nil
  2173  			}
  2174  		}
  2175  	}), nil
  2176  }
  2177  
  2178  // ParseChangedValidatorStatus is a log parse operation binding the contract event 0xcd35267e7654194727477d6c78b541a553483cff7f92a055d17868d3da6e953e.
  2179  //
  2180  // Solidity: event ChangedValidatorStatus(uint256 indexed validatorID, uint256 status)
  2181  func (_Contract *ContractFilterer) ParseChangedValidatorStatus(log types.Log) (*ContractChangedValidatorStatus, error) {
  2182  	event := new(ContractChangedValidatorStatus)
  2183  	if err := _Contract.contract.UnpackLog(event, "ChangedValidatorStatus", log); err != nil {
  2184  		return nil, err
  2185  	}
  2186  	event.Raw = log
  2187  	return event, nil
  2188  }
  2189  
  2190  // ContractClaimedRewardsIterator is returned from FilterClaimedRewards and is used to iterate over the raw logs and unpacked data for ClaimedRewards events raised by the Contract contract.
  2191  type ContractClaimedRewardsIterator struct {
  2192  	Event *ContractClaimedRewards // Event containing the contract specifics and raw log
  2193  
  2194  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2195  	event    string              // Event name to use for unpacking event data
  2196  
  2197  	logs chan types.Log        // Log channel receiving the found contract events
  2198  	sub  u2u.Subscription // Subscription for errors, completion and termination
  2199  	done bool                  // Whether the subscription completed delivering logs
  2200  	fail error                 // Occurred error to stop iteration
  2201  }
  2202  
  2203  // Next advances the iterator to the subsequent event, returning whether there
  2204  // are any more events found. In case of a retrieval or parsing error, false is
  2205  // returned and Error() can be queried for the exact failure.
  2206  func (it *ContractClaimedRewardsIterator) Next() bool {
  2207  	// If the iterator failed, stop iterating
  2208  	if it.fail != nil {
  2209  		return false
  2210  	}
  2211  	// If the iterator completed, deliver directly whatever's available
  2212  	if it.done {
  2213  		select {
  2214  		case log := <-it.logs:
  2215  			it.Event = new(ContractClaimedRewards)
  2216  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2217  				it.fail = err
  2218  				return false
  2219  			}
  2220  			it.Event.Raw = log
  2221  			return true
  2222  
  2223  		default:
  2224  			return false
  2225  		}
  2226  	}
  2227  	// Iterator still in progress, wait for either a data or an error event
  2228  	select {
  2229  	case log := <-it.logs:
  2230  		it.Event = new(ContractClaimedRewards)
  2231  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2232  			it.fail = err
  2233  			return false
  2234  		}
  2235  		it.Event.Raw = log
  2236  		return true
  2237  
  2238  	case err := <-it.sub.Err():
  2239  		it.done = true
  2240  		it.fail = err
  2241  		return it.Next()
  2242  	}
  2243  }
  2244  
  2245  // Error returns any retrieval or parsing error occurred during filtering.
  2246  func (it *ContractClaimedRewardsIterator) Error() error {
  2247  	return it.fail
  2248  }
  2249  
  2250  // Close terminates the iteration process, releasing any pending underlying
  2251  // resources.
  2252  func (it *ContractClaimedRewardsIterator) Close() error {
  2253  	it.sub.Unsubscribe()
  2254  	return nil
  2255  }
  2256  
  2257  // ContractClaimedRewards represents a ClaimedRewards event raised by the Contract contract.
  2258  type ContractClaimedRewards struct {
  2259  	Delegator         common.Address
  2260  	ToValidatorID     *big.Int
  2261  	LockupExtraReward *big.Int
  2262  	LockupBaseReward  *big.Int
  2263  	UnlockedReward    *big.Int
  2264  	Raw               types.Log // Blockchain specific contextual infos
  2265  }
  2266  
  2267  // FilterClaimedRewards is a free log retrieval operation binding the contract event 0xc1d8eb6e444b89fb8ff0991c19311c070df704ccb009e210d1462d5b2410bf45.
  2268  //
  2269  // Solidity: event ClaimedRewards(address indexed delegator, uint256 indexed toValidatorID, uint256 lockupExtraReward, uint256 lockupBaseReward, uint256 unlockedReward)
  2270  func (_Contract *ContractFilterer) FilterClaimedRewards(opts *bind.FilterOpts, delegator []common.Address, toValidatorID []*big.Int) (*ContractClaimedRewardsIterator, error) {
  2271  
  2272  	var delegatorRule []interface{}
  2273  	for _, delegatorItem := range delegator {
  2274  		delegatorRule = append(delegatorRule, delegatorItem)
  2275  	}
  2276  	var toValidatorIDRule []interface{}
  2277  	for _, toValidatorIDItem := range toValidatorID {
  2278  		toValidatorIDRule = append(toValidatorIDRule, toValidatorIDItem)
  2279  	}
  2280  
  2281  	logs, sub, err := _Contract.contract.FilterLogs(opts, "ClaimedRewards", delegatorRule, toValidatorIDRule)
  2282  	if err != nil {
  2283  		return nil, err
  2284  	}
  2285  	return &ContractClaimedRewardsIterator{contract: _Contract.contract, event: "ClaimedRewards", logs: logs, sub: sub}, nil
  2286  }
  2287  
  2288  // WatchClaimedRewards is a free log subscription operation binding the contract event 0xc1d8eb6e444b89fb8ff0991c19311c070df704ccb009e210d1462d5b2410bf45.
  2289  //
  2290  // Solidity: event ClaimedRewards(address indexed delegator, uint256 indexed toValidatorID, uint256 lockupExtraReward, uint256 lockupBaseReward, uint256 unlockedReward)
  2291  func (_Contract *ContractFilterer) WatchClaimedRewards(opts *bind.WatchOpts, sink chan<- *ContractClaimedRewards, delegator []common.Address, toValidatorID []*big.Int) (event.Subscription, error) {
  2292  
  2293  	var delegatorRule []interface{}
  2294  	for _, delegatorItem := range delegator {
  2295  		delegatorRule = append(delegatorRule, delegatorItem)
  2296  	}
  2297  	var toValidatorIDRule []interface{}
  2298  	for _, toValidatorIDItem := range toValidatorID {
  2299  		toValidatorIDRule = append(toValidatorIDRule, toValidatorIDItem)
  2300  	}
  2301  
  2302  	logs, sub, err := _Contract.contract.WatchLogs(opts, "ClaimedRewards", delegatorRule, toValidatorIDRule)
  2303  	if err != nil {
  2304  		return nil, err
  2305  	}
  2306  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2307  		defer sub.Unsubscribe()
  2308  		for {
  2309  			select {
  2310  			case log := <-logs:
  2311  				// New log arrived, parse the event and forward to the user
  2312  				event := new(ContractClaimedRewards)
  2313  				if err := _Contract.contract.UnpackLog(event, "ClaimedRewards", log); err != nil {
  2314  					return err
  2315  				}
  2316  				event.Raw = log
  2317  
  2318  				select {
  2319  				case sink <- event:
  2320  				case err := <-sub.Err():
  2321  					return err
  2322  				case <-quit:
  2323  					return nil
  2324  				}
  2325  			case err := <-sub.Err():
  2326  				return err
  2327  			case <-quit:
  2328  				return nil
  2329  			}
  2330  		}
  2331  	}), nil
  2332  }
  2333  
  2334  // ParseClaimedRewards is a log parse operation binding the contract event 0xc1d8eb6e444b89fb8ff0991c19311c070df704ccb009e210d1462d5b2410bf45.
  2335  //
  2336  // Solidity: event ClaimedRewards(address indexed delegator, uint256 indexed toValidatorID, uint256 lockupExtraReward, uint256 lockupBaseReward, uint256 unlockedReward)
  2337  func (_Contract *ContractFilterer) ParseClaimedRewards(log types.Log) (*ContractClaimedRewards, error) {
  2338  	event := new(ContractClaimedRewards)
  2339  	if err := _Contract.contract.UnpackLog(event, "ClaimedRewards", log); err != nil {
  2340  		return nil, err
  2341  	}
  2342  	event.Raw = log
  2343  	return event, nil
  2344  }
  2345  
  2346  // ContractCreatedValidatorIterator is returned from FilterCreatedValidator and is used to iterate over the raw logs and unpacked data for CreatedValidator events raised by the Contract contract.
  2347  type ContractCreatedValidatorIterator struct {
  2348  	Event *ContractCreatedValidator // Event containing the contract specifics and raw log
  2349  
  2350  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2351  	event    string              // Event name to use for unpacking event data
  2352  
  2353  	logs chan types.Log        // Log channel receiving the found contract events
  2354  	sub  u2u.Subscription // Subscription for errors, completion and termination
  2355  	done bool                  // Whether the subscription completed delivering logs
  2356  	fail error                 // Occurred error to stop iteration
  2357  }
  2358  
  2359  // Next advances the iterator to the subsequent event, returning whether there
  2360  // are any more events found. In case of a retrieval or parsing error, false is
  2361  // returned and Error() can be queried for the exact failure.
  2362  func (it *ContractCreatedValidatorIterator) Next() bool {
  2363  	// If the iterator failed, stop iterating
  2364  	if it.fail != nil {
  2365  		return false
  2366  	}
  2367  	// If the iterator completed, deliver directly whatever's available
  2368  	if it.done {
  2369  		select {
  2370  		case log := <-it.logs:
  2371  			it.Event = new(ContractCreatedValidator)
  2372  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2373  				it.fail = err
  2374  				return false
  2375  			}
  2376  			it.Event.Raw = log
  2377  			return true
  2378  
  2379  		default:
  2380  			return false
  2381  		}
  2382  	}
  2383  	// Iterator still in progress, wait for either a data or an error event
  2384  	select {
  2385  	case log := <-it.logs:
  2386  		it.Event = new(ContractCreatedValidator)
  2387  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2388  			it.fail = err
  2389  			return false
  2390  		}
  2391  		it.Event.Raw = log
  2392  		return true
  2393  
  2394  	case err := <-it.sub.Err():
  2395  		it.done = true
  2396  		it.fail = err
  2397  		return it.Next()
  2398  	}
  2399  }
  2400  
  2401  // Error returns any retrieval or parsing error occurred during filtering.
  2402  func (it *ContractCreatedValidatorIterator) Error() error {
  2403  	return it.fail
  2404  }
  2405  
  2406  // Close terminates the iteration process, releasing any pending underlying
  2407  // resources.
  2408  func (it *ContractCreatedValidatorIterator) Close() error {
  2409  	it.sub.Unsubscribe()
  2410  	return nil
  2411  }
  2412  
  2413  // ContractCreatedValidator represents a CreatedValidator event raised by the Contract contract.
  2414  type ContractCreatedValidator struct {
  2415  	ValidatorID  *big.Int
  2416  	Auth         common.Address
  2417  	CreatedEpoch *big.Int
  2418  	CreatedTime  *big.Int
  2419  	Raw          types.Log // Blockchain specific contextual infos
  2420  }
  2421  
  2422  // FilterCreatedValidator is a free log retrieval operation binding the contract event 0x49bca1ed2666922f9f1690c26a569e1299c2a715fe57647d77e81adfabbf25bf.
  2423  //
  2424  // Solidity: event CreatedValidator(uint256 indexed validatorID, address indexed auth, uint256 createdEpoch, uint256 createdTime)
  2425  func (_Contract *ContractFilterer) FilterCreatedValidator(opts *bind.FilterOpts, validatorID []*big.Int, auth []common.Address) (*ContractCreatedValidatorIterator, error) {
  2426  
  2427  	var validatorIDRule []interface{}
  2428  	for _, validatorIDItem := range validatorID {
  2429  		validatorIDRule = append(validatorIDRule, validatorIDItem)
  2430  	}
  2431  	var authRule []interface{}
  2432  	for _, authItem := range auth {
  2433  		authRule = append(authRule, authItem)
  2434  	}
  2435  
  2436  	logs, sub, err := _Contract.contract.FilterLogs(opts, "CreatedValidator", validatorIDRule, authRule)
  2437  	if err != nil {
  2438  		return nil, err
  2439  	}
  2440  	return &ContractCreatedValidatorIterator{contract: _Contract.contract, event: "CreatedValidator", logs: logs, sub: sub}, nil
  2441  }
  2442  
  2443  // WatchCreatedValidator is a free log subscription operation binding the contract event 0x49bca1ed2666922f9f1690c26a569e1299c2a715fe57647d77e81adfabbf25bf.
  2444  //
  2445  // Solidity: event CreatedValidator(uint256 indexed validatorID, address indexed auth, uint256 createdEpoch, uint256 createdTime)
  2446  func (_Contract *ContractFilterer) WatchCreatedValidator(opts *bind.WatchOpts, sink chan<- *ContractCreatedValidator, validatorID []*big.Int, auth []common.Address) (event.Subscription, error) {
  2447  
  2448  	var validatorIDRule []interface{}
  2449  	for _, validatorIDItem := range validatorID {
  2450  		validatorIDRule = append(validatorIDRule, validatorIDItem)
  2451  	}
  2452  	var authRule []interface{}
  2453  	for _, authItem := range auth {
  2454  		authRule = append(authRule, authItem)
  2455  	}
  2456  
  2457  	logs, sub, err := _Contract.contract.WatchLogs(opts, "CreatedValidator", validatorIDRule, authRule)
  2458  	if err != nil {
  2459  		return nil, err
  2460  	}
  2461  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2462  		defer sub.Unsubscribe()
  2463  		for {
  2464  			select {
  2465  			case log := <-logs:
  2466  				// New log arrived, parse the event and forward to the user
  2467  				event := new(ContractCreatedValidator)
  2468  				if err := _Contract.contract.UnpackLog(event, "CreatedValidator", log); err != nil {
  2469  					return err
  2470  				}
  2471  				event.Raw = log
  2472  
  2473  				select {
  2474  				case sink <- event:
  2475  				case err := <-sub.Err():
  2476  					return err
  2477  				case <-quit:
  2478  					return nil
  2479  				}
  2480  			case err := <-sub.Err():
  2481  				return err
  2482  			case <-quit:
  2483  				return nil
  2484  			}
  2485  		}
  2486  	}), nil
  2487  }
  2488  
  2489  // ParseCreatedValidator is a log parse operation binding the contract event 0x49bca1ed2666922f9f1690c26a569e1299c2a715fe57647d77e81adfabbf25bf.
  2490  //
  2491  // Solidity: event CreatedValidator(uint256 indexed validatorID, address indexed auth, uint256 createdEpoch, uint256 createdTime)
  2492  func (_Contract *ContractFilterer) ParseCreatedValidator(log types.Log) (*ContractCreatedValidator, error) {
  2493  	event := new(ContractCreatedValidator)
  2494  	if err := _Contract.contract.UnpackLog(event, "CreatedValidator", log); err != nil {
  2495  		return nil, err
  2496  	}
  2497  	event.Raw = log
  2498  	return event, nil
  2499  }
  2500  
  2501  // ContractDeactivatedValidatorIterator is returned from FilterDeactivatedValidator and is used to iterate over the raw logs and unpacked data for DeactivatedValidator events raised by the Contract contract.
  2502  type ContractDeactivatedValidatorIterator struct {
  2503  	Event *ContractDeactivatedValidator // Event containing the contract specifics and raw log
  2504  
  2505  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2506  	event    string              // Event name to use for unpacking event data
  2507  
  2508  	logs chan types.Log        // Log channel receiving the found contract events
  2509  	sub  u2u.Subscription // Subscription for errors, completion and termination
  2510  	done bool                  // Whether the subscription completed delivering logs
  2511  	fail error                 // Occurred error to stop iteration
  2512  }
  2513  
  2514  // Next advances the iterator to the subsequent event, returning whether there
  2515  // are any more events found. In case of a retrieval or parsing error, false is
  2516  // returned and Error() can be queried for the exact failure.
  2517  func (it *ContractDeactivatedValidatorIterator) Next() bool {
  2518  	// If the iterator failed, stop iterating
  2519  	if it.fail != nil {
  2520  		return false
  2521  	}
  2522  	// If the iterator completed, deliver directly whatever's available
  2523  	if it.done {
  2524  		select {
  2525  		case log := <-it.logs:
  2526  			it.Event = new(ContractDeactivatedValidator)
  2527  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2528  				it.fail = err
  2529  				return false
  2530  			}
  2531  			it.Event.Raw = log
  2532  			return true
  2533  
  2534  		default:
  2535  			return false
  2536  		}
  2537  	}
  2538  	// Iterator still in progress, wait for either a data or an error event
  2539  	select {
  2540  	case log := <-it.logs:
  2541  		it.Event = new(ContractDeactivatedValidator)
  2542  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2543  			it.fail = err
  2544  			return false
  2545  		}
  2546  		it.Event.Raw = log
  2547  		return true
  2548  
  2549  	case err := <-it.sub.Err():
  2550  		it.done = true
  2551  		it.fail = err
  2552  		return it.Next()
  2553  	}
  2554  }
  2555  
  2556  // Error returns any retrieval or parsing error occurred during filtering.
  2557  func (it *ContractDeactivatedValidatorIterator) Error() error {
  2558  	return it.fail
  2559  }
  2560  
  2561  // Close terminates the iteration process, releasing any pending underlying
  2562  // resources.
  2563  func (it *ContractDeactivatedValidatorIterator) Close() error {
  2564  	it.sub.Unsubscribe()
  2565  	return nil
  2566  }
  2567  
  2568  // ContractDeactivatedValidator represents a DeactivatedValidator event raised by the Contract contract.
  2569  type ContractDeactivatedValidator struct {
  2570  	ValidatorID      *big.Int
  2571  	DeactivatedEpoch *big.Int
  2572  	DeactivatedTime  *big.Int
  2573  	Raw              types.Log // Blockchain specific contextual infos
  2574  }
  2575  
  2576  // FilterDeactivatedValidator is a free log retrieval operation binding the contract event 0xac4801c32a6067ff757446524ee4e7a373797278ac3c883eac5c693b4ad72e47.
  2577  //
  2578  // Solidity: event DeactivatedValidator(uint256 indexed validatorID, uint256 deactivatedEpoch, uint256 deactivatedTime)
  2579  func (_Contract *ContractFilterer) FilterDeactivatedValidator(opts *bind.FilterOpts, validatorID []*big.Int) (*ContractDeactivatedValidatorIterator, error) {
  2580  
  2581  	var validatorIDRule []interface{}
  2582  	for _, validatorIDItem := range validatorID {
  2583  		validatorIDRule = append(validatorIDRule, validatorIDItem)
  2584  	}
  2585  
  2586  	logs, sub, err := _Contract.contract.FilterLogs(opts, "DeactivatedValidator", validatorIDRule)
  2587  	if err != nil {
  2588  		return nil, err
  2589  	}
  2590  	return &ContractDeactivatedValidatorIterator{contract: _Contract.contract, event: "DeactivatedValidator", logs: logs, sub: sub}, nil
  2591  }
  2592  
  2593  // WatchDeactivatedValidator is a free log subscription operation binding the contract event 0xac4801c32a6067ff757446524ee4e7a373797278ac3c883eac5c693b4ad72e47.
  2594  //
  2595  // Solidity: event DeactivatedValidator(uint256 indexed validatorID, uint256 deactivatedEpoch, uint256 deactivatedTime)
  2596  func (_Contract *ContractFilterer) WatchDeactivatedValidator(opts *bind.WatchOpts, sink chan<- *ContractDeactivatedValidator, validatorID []*big.Int) (event.Subscription, error) {
  2597  
  2598  	var validatorIDRule []interface{}
  2599  	for _, validatorIDItem := range validatorID {
  2600  		validatorIDRule = append(validatorIDRule, validatorIDItem)
  2601  	}
  2602  
  2603  	logs, sub, err := _Contract.contract.WatchLogs(opts, "DeactivatedValidator", validatorIDRule)
  2604  	if err != nil {
  2605  		return nil, err
  2606  	}
  2607  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2608  		defer sub.Unsubscribe()
  2609  		for {
  2610  			select {
  2611  			case log := <-logs:
  2612  				// New log arrived, parse the event and forward to the user
  2613  				event := new(ContractDeactivatedValidator)
  2614  				if err := _Contract.contract.UnpackLog(event, "DeactivatedValidator", log); err != nil {
  2615  					return err
  2616  				}
  2617  				event.Raw = log
  2618  
  2619  				select {
  2620  				case sink <- event:
  2621  				case err := <-sub.Err():
  2622  					return err
  2623  				case <-quit:
  2624  					return nil
  2625  				}
  2626  			case err := <-sub.Err():
  2627  				return err
  2628  			case <-quit:
  2629  				return nil
  2630  			}
  2631  		}
  2632  	}), nil
  2633  }
  2634  
  2635  // ParseDeactivatedValidator is a log parse operation binding the contract event 0xac4801c32a6067ff757446524ee4e7a373797278ac3c883eac5c693b4ad72e47.
  2636  //
  2637  // Solidity: event DeactivatedValidator(uint256 indexed validatorID, uint256 deactivatedEpoch, uint256 deactivatedTime)
  2638  func (_Contract *ContractFilterer) ParseDeactivatedValidator(log types.Log) (*ContractDeactivatedValidator, error) {
  2639  	event := new(ContractDeactivatedValidator)
  2640  	if err := _Contract.contract.UnpackLog(event, "DeactivatedValidator", log); err != nil {
  2641  		return nil, err
  2642  	}
  2643  	event.Raw = log
  2644  	return event, nil
  2645  }
  2646  
  2647  // ContractDelegatedIterator is returned from FilterDelegated and is used to iterate over the raw logs and unpacked data for Delegated events raised by the Contract contract.
  2648  type ContractDelegatedIterator struct {
  2649  	Event *ContractDelegated // Event containing the contract specifics and raw log
  2650  
  2651  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2652  	event    string              // Event name to use for unpacking event data
  2653  
  2654  	logs chan types.Log        // Log channel receiving the found contract events
  2655  	sub  u2u.Subscription // Subscription for errors, completion and termination
  2656  	done bool                  // Whether the subscription completed delivering logs
  2657  	fail error                 // Occurred error to stop iteration
  2658  }
  2659  
  2660  // Next advances the iterator to the subsequent event, returning whether there
  2661  // are any more events found. In case of a retrieval or parsing error, false is
  2662  // returned and Error() can be queried for the exact failure.
  2663  func (it *ContractDelegatedIterator) Next() bool {
  2664  	// If the iterator failed, stop iterating
  2665  	if it.fail != nil {
  2666  		return false
  2667  	}
  2668  	// If the iterator completed, deliver directly whatever's available
  2669  	if it.done {
  2670  		select {
  2671  		case log := <-it.logs:
  2672  			it.Event = new(ContractDelegated)
  2673  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2674  				it.fail = err
  2675  				return false
  2676  			}
  2677  			it.Event.Raw = log
  2678  			return true
  2679  
  2680  		default:
  2681  			return false
  2682  		}
  2683  	}
  2684  	// Iterator still in progress, wait for either a data or an error event
  2685  	select {
  2686  	case log := <-it.logs:
  2687  		it.Event = new(ContractDelegated)
  2688  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2689  			it.fail = err
  2690  			return false
  2691  		}
  2692  		it.Event.Raw = log
  2693  		return true
  2694  
  2695  	case err := <-it.sub.Err():
  2696  		it.done = true
  2697  		it.fail = err
  2698  		return it.Next()
  2699  	}
  2700  }
  2701  
  2702  // Error returns any retrieval or parsing error occurred during filtering.
  2703  func (it *ContractDelegatedIterator) Error() error {
  2704  	return it.fail
  2705  }
  2706  
  2707  // Close terminates the iteration process, releasing any pending underlying
  2708  // resources.
  2709  func (it *ContractDelegatedIterator) Close() error {
  2710  	it.sub.Unsubscribe()
  2711  	return nil
  2712  }
  2713  
  2714  // ContractDelegated represents a Delegated event raised by the Contract contract.
  2715  type ContractDelegated struct {
  2716  	Delegator     common.Address
  2717  	ToValidatorID *big.Int
  2718  	Amount        *big.Int
  2719  	Raw           types.Log // Blockchain specific contextual infos
  2720  }
  2721  
  2722  // FilterDelegated is a free log retrieval operation binding the contract event 0x9a8f44850296624dadfd9c246d17e47171d35727a181bd090aa14bbbe00238bb.
  2723  //
  2724  // Solidity: event Delegated(address indexed delegator, uint256 indexed toValidatorID, uint256 amount)
  2725  func (_Contract *ContractFilterer) FilterDelegated(opts *bind.FilterOpts, delegator []common.Address, toValidatorID []*big.Int) (*ContractDelegatedIterator, error) {
  2726  
  2727  	var delegatorRule []interface{}
  2728  	for _, delegatorItem := range delegator {
  2729  		delegatorRule = append(delegatorRule, delegatorItem)
  2730  	}
  2731  	var toValidatorIDRule []interface{}
  2732  	for _, toValidatorIDItem := range toValidatorID {
  2733  		toValidatorIDRule = append(toValidatorIDRule, toValidatorIDItem)
  2734  	}
  2735  
  2736  	logs, sub, err := _Contract.contract.FilterLogs(opts, "Delegated", delegatorRule, toValidatorIDRule)
  2737  	if err != nil {
  2738  		return nil, err
  2739  	}
  2740  	return &ContractDelegatedIterator{contract: _Contract.contract, event: "Delegated", logs: logs, sub: sub}, nil
  2741  }
  2742  
  2743  // WatchDelegated is a free log subscription operation binding the contract event 0x9a8f44850296624dadfd9c246d17e47171d35727a181bd090aa14bbbe00238bb.
  2744  //
  2745  // Solidity: event Delegated(address indexed delegator, uint256 indexed toValidatorID, uint256 amount)
  2746  func (_Contract *ContractFilterer) WatchDelegated(opts *bind.WatchOpts, sink chan<- *ContractDelegated, delegator []common.Address, toValidatorID []*big.Int) (event.Subscription, error) {
  2747  
  2748  	var delegatorRule []interface{}
  2749  	for _, delegatorItem := range delegator {
  2750  		delegatorRule = append(delegatorRule, delegatorItem)
  2751  	}
  2752  	var toValidatorIDRule []interface{}
  2753  	for _, toValidatorIDItem := range toValidatorID {
  2754  		toValidatorIDRule = append(toValidatorIDRule, toValidatorIDItem)
  2755  	}
  2756  
  2757  	logs, sub, err := _Contract.contract.WatchLogs(opts, "Delegated", delegatorRule, toValidatorIDRule)
  2758  	if err != nil {
  2759  		return nil, err
  2760  	}
  2761  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2762  		defer sub.Unsubscribe()
  2763  		for {
  2764  			select {
  2765  			case log := <-logs:
  2766  				// New log arrived, parse the event and forward to the user
  2767  				event := new(ContractDelegated)
  2768  				if err := _Contract.contract.UnpackLog(event, "Delegated", log); err != nil {
  2769  					return err
  2770  				}
  2771  				event.Raw = log
  2772  
  2773  				select {
  2774  				case sink <- event:
  2775  				case err := <-sub.Err():
  2776  					return err
  2777  				case <-quit:
  2778  					return nil
  2779  				}
  2780  			case err := <-sub.Err():
  2781  				return err
  2782  			case <-quit:
  2783  				return nil
  2784  			}
  2785  		}
  2786  	}), nil
  2787  }
  2788  
  2789  // ParseDelegated is a log parse operation binding the contract event 0x9a8f44850296624dadfd9c246d17e47171d35727a181bd090aa14bbbe00238bb.
  2790  //
  2791  // Solidity: event Delegated(address indexed delegator, uint256 indexed toValidatorID, uint256 amount)
  2792  func (_Contract *ContractFilterer) ParseDelegated(log types.Log) (*ContractDelegated, error) {
  2793  	event := new(ContractDelegated)
  2794  	if err := _Contract.contract.UnpackLog(event, "Delegated", log); err != nil {
  2795  		return nil, err
  2796  	}
  2797  	event.Raw = log
  2798  	return event, nil
  2799  }
  2800  
  2801  // ContractInflatedFTMIterator is returned from FilterInflatedFTM and is used to iterate over the raw logs and unpacked data for InflatedFTM events raised by the Contract contract.
  2802  type ContractInflatedFTMIterator struct {
  2803  	Event *ContractInflatedFTM // Event containing the contract specifics and raw log
  2804  
  2805  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2806  	event    string              // Event name to use for unpacking event data
  2807  
  2808  	logs chan types.Log        // Log channel receiving the found contract events
  2809  	sub  u2u.Subscription // Subscription for errors, completion and termination
  2810  	done bool                  // Whether the subscription completed delivering logs
  2811  	fail error                 // Occurred error to stop iteration
  2812  }
  2813  
  2814  // Next advances the iterator to the subsequent event, returning whether there
  2815  // are any more events found. In case of a retrieval or parsing error, false is
  2816  // returned and Error() can be queried for the exact failure.
  2817  func (it *ContractInflatedFTMIterator) Next() bool {
  2818  	// If the iterator failed, stop iterating
  2819  	if it.fail != nil {
  2820  		return false
  2821  	}
  2822  	// If the iterator completed, deliver directly whatever's available
  2823  	if it.done {
  2824  		select {
  2825  		case log := <-it.logs:
  2826  			it.Event = new(ContractInflatedFTM)
  2827  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2828  				it.fail = err
  2829  				return false
  2830  			}
  2831  			it.Event.Raw = log
  2832  			return true
  2833  
  2834  		default:
  2835  			return false
  2836  		}
  2837  	}
  2838  	// Iterator still in progress, wait for either a data or an error event
  2839  	select {
  2840  	case log := <-it.logs:
  2841  		it.Event = new(ContractInflatedFTM)
  2842  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2843  			it.fail = err
  2844  			return false
  2845  		}
  2846  		it.Event.Raw = log
  2847  		return true
  2848  
  2849  	case err := <-it.sub.Err():
  2850  		it.done = true
  2851  		it.fail = err
  2852  		return it.Next()
  2853  	}
  2854  }
  2855  
  2856  // Error returns any retrieval or parsing error occurred during filtering.
  2857  func (it *ContractInflatedFTMIterator) Error() error {
  2858  	return it.fail
  2859  }
  2860  
  2861  // Close terminates the iteration process, releasing any pending underlying
  2862  // resources.
  2863  func (it *ContractInflatedFTMIterator) Close() error {
  2864  	it.sub.Unsubscribe()
  2865  	return nil
  2866  }
  2867  
  2868  // ContractInflatedFTM represents a InflatedFTM event raised by the Contract contract.
  2869  type ContractInflatedFTM struct {
  2870  	Receiver      common.Address
  2871  	Amount        *big.Int
  2872  	Justification string
  2873  	Raw           types.Log // Blockchain specific contextual infos
  2874  }
  2875  
  2876  // FilterInflatedFTM is a free log retrieval operation binding the contract event 0x9eec469b348bcf64bbfb60e46ce7b160e2e09bf5421496a2cdbc43714c28b8ad.
  2877  //
  2878  // Solidity: event InflatedFTM(address indexed receiver, uint256 amount, string justification)
  2879  func (_Contract *ContractFilterer) FilterInflatedFTM(opts *bind.FilterOpts, receiver []common.Address) (*ContractInflatedFTMIterator, error) {
  2880  
  2881  	var receiverRule []interface{}
  2882  	for _, receiverItem := range receiver {
  2883  		receiverRule = append(receiverRule, receiverItem)
  2884  	}
  2885  
  2886  	logs, sub, err := _Contract.contract.FilterLogs(opts, "InflatedFTM", receiverRule)
  2887  	if err != nil {
  2888  		return nil, err
  2889  	}
  2890  	return &ContractInflatedFTMIterator{contract: _Contract.contract, event: "InflatedFTM", logs: logs, sub: sub}, nil
  2891  }
  2892  
  2893  // WatchInflatedFTM is a free log subscription operation binding the contract event 0x9eec469b348bcf64bbfb60e46ce7b160e2e09bf5421496a2cdbc43714c28b8ad.
  2894  //
  2895  // Solidity: event InflatedFTM(address indexed receiver, uint256 amount, string justification)
  2896  func (_Contract *ContractFilterer) WatchInflatedFTM(opts *bind.WatchOpts, sink chan<- *ContractInflatedFTM, receiver []common.Address) (event.Subscription, error) {
  2897  
  2898  	var receiverRule []interface{}
  2899  	for _, receiverItem := range receiver {
  2900  		receiverRule = append(receiverRule, receiverItem)
  2901  	}
  2902  
  2903  	logs, sub, err := _Contract.contract.WatchLogs(opts, "InflatedFTM", receiverRule)
  2904  	if err != nil {
  2905  		return nil, err
  2906  	}
  2907  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2908  		defer sub.Unsubscribe()
  2909  		for {
  2910  			select {
  2911  			case log := <-logs:
  2912  				// New log arrived, parse the event and forward to the user
  2913  				event := new(ContractInflatedFTM)
  2914  				if err := _Contract.contract.UnpackLog(event, "InflatedFTM", log); err != nil {
  2915  					return err
  2916  				}
  2917  				event.Raw = log
  2918  
  2919  				select {
  2920  				case sink <- event:
  2921  				case err := <-sub.Err():
  2922  					return err
  2923  				case <-quit:
  2924  					return nil
  2925  				}
  2926  			case err := <-sub.Err():
  2927  				return err
  2928  			case <-quit:
  2929  				return nil
  2930  			}
  2931  		}
  2932  	}), nil
  2933  }
  2934  
  2935  // ParseInflatedFTM is a log parse operation binding the contract event 0x9eec469b348bcf64bbfb60e46ce7b160e2e09bf5421496a2cdbc43714c28b8ad.
  2936  //
  2937  // Solidity: event InflatedFTM(address indexed receiver, uint256 amount, string justification)
  2938  func (_Contract *ContractFilterer) ParseInflatedFTM(log types.Log) (*ContractInflatedFTM, error) {
  2939  	event := new(ContractInflatedFTM)
  2940  	if err := _Contract.contract.UnpackLog(event, "InflatedFTM", log); err != nil {
  2941  		return nil, err
  2942  	}
  2943  	event.Raw = log
  2944  	return event, nil
  2945  }
  2946  
  2947  // ContractLockedUpStakeIterator is returned from FilterLockedUpStake and is used to iterate over the raw logs and unpacked data for LockedUpStake events raised by the Contract contract.
  2948  type ContractLockedUpStakeIterator struct {
  2949  	Event *ContractLockedUpStake // Event containing the contract specifics and raw log
  2950  
  2951  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2952  	event    string              // Event name to use for unpacking event data
  2953  
  2954  	logs chan types.Log        // Log channel receiving the found contract events
  2955  	sub  u2u.Subscription // Subscription for errors, completion and termination
  2956  	done bool                  // Whether the subscription completed delivering logs
  2957  	fail error                 // Occurred error to stop iteration
  2958  }
  2959  
  2960  // Next advances the iterator to the subsequent event, returning whether there
  2961  // are any more events found. In case of a retrieval or parsing error, false is
  2962  // returned and Error() can be queried for the exact failure.
  2963  func (it *ContractLockedUpStakeIterator) Next() bool {
  2964  	// If the iterator failed, stop iterating
  2965  	if it.fail != nil {
  2966  		return false
  2967  	}
  2968  	// If the iterator completed, deliver directly whatever's available
  2969  	if it.done {
  2970  		select {
  2971  		case log := <-it.logs:
  2972  			it.Event = new(ContractLockedUpStake)
  2973  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2974  				it.fail = err
  2975  				return false
  2976  			}
  2977  			it.Event.Raw = log
  2978  			return true
  2979  
  2980  		default:
  2981  			return false
  2982  		}
  2983  	}
  2984  	// Iterator still in progress, wait for either a data or an error event
  2985  	select {
  2986  	case log := <-it.logs:
  2987  		it.Event = new(ContractLockedUpStake)
  2988  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2989  			it.fail = err
  2990  			return false
  2991  		}
  2992  		it.Event.Raw = log
  2993  		return true
  2994  
  2995  	case err := <-it.sub.Err():
  2996  		it.done = true
  2997  		it.fail = err
  2998  		return it.Next()
  2999  	}
  3000  }
  3001  
  3002  // Error returns any retrieval or parsing error occurred during filtering.
  3003  func (it *ContractLockedUpStakeIterator) Error() error {
  3004  	return it.fail
  3005  }
  3006  
  3007  // Close terminates the iteration process, releasing any pending underlying
  3008  // resources.
  3009  func (it *ContractLockedUpStakeIterator) Close() error {
  3010  	it.sub.Unsubscribe()
  3011  	return nil
  3012  }
  3013  
  3014  // ContractLockedUpStake represents a LockedUpStake event raised by the Contract contract.
  3015  type ContractLockedUpStake struct {
  3016  	Delegator   common.Address
  3017  	ValidatorID *big.Int
  3018  	Duration    *big.Int
  3019  	Amount      *big.Int
  3020  	Raw         types.Log // Blockchain specific contextual infos
  3021  }
  3022  
  3023  // FilterLockedUpStake is a free log retrieval operation binding the contract event 0x138940e95abffcd789b497bf6188bba3afa5fbd22fb5c42c2f6018d1bf0f4e78.
  3024  //
  3025  // Solidity: event LockedUpStake(address indexed delegator, uint256 indexed validatorID, uint256 duration, uint256 amount)
  3026  func (_Contract *ContractFilterer) FilterLockedUpStake(opts *bind.FilterOpts, delegator []common.Address, validatorID []*big.Int) (*ContractLockedUpStakeIterator, error) {
  3027  
  3028  	var delegatorRule []interface{}
  3029  	for _, delegatorItem := range delegator {
  3030  		delegatorRule = append(delegatorRule, delegatorItem)
  3031  	}
  3032  	var validatorIDRule []interface{}
  3033  	for _, validatorIDItem := range validatorID {
  3034  		validatorIDRule = append(validatorIDRule, validatorIDItem)
  3035  	}
  3036  
  3037  	logs, sub, err := _Contract.contract.FilterLogs(opts, "LockedUpStake", delegatorRule, validatorIDRule)
  3038  	if err != nil {
  3039  		return nil, err
  3040  	}
  3041  	return &ContractLockedUpStakeIterator{contract: _Contract.contract, event: "LockedUpStake", logs: logs, sub: sub}, nil
  3042  }
  3043  
  3044  // WatchLockedUpStake is a free log subscription operation binding the contract event 0x138940e95abffcd789b497bf6188bba3afa5fbd22fb5c42c2f6018d1bf0f4e78.
  3045  //
  3046  // Solidity: event LockedUpStake(address indexed delegator, uint256 indexed validatorID, uint256 duration, uint256 amount)
  3047  func (_Contract *ContractFilterer) WatchLockedUpStake(opts *bind.WatchOpts, sink chan<- *ContractLockedUpStake, delegator []common.Address, validatorID []*big.Int) (event.Subscription, error) {
  3048  
  3049  	var delegatorRule []interface{}
  3050  	for _, delegatorItem := range delegator {
  3051  		delegatorRule = append(delegatorRule, delegatorItem)
  3052  	}
  3053  	var validatorIDRule []interface{}
  3054  	for _, validatorIDItem := range validatorID {
  3055  		validatorIDRule = append(validatorIDRule, validatorIDItem)
  3056  	}
  3057  
  3058  	logs, sub, err := _Contract.contract.WatchLogs(opts, "LockedUpStake", delegatorRule, validatorIDRule)
  3059  	if err != nil {
  3060  		return nil, err
  3061  	}
  3062  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3063  		defer sub.Unsubscribe()
  3064  		for {
  3065  			select {
  3066  			case log := <-logs:
  3067  				// New log arrived, parse the event and forward to the user
  3068  				event := new(ContractLockedUpStake)
  3069  				if err := _Contract.contract.UnpackLog(event, "LockedUpStake", log); err != nil {
  3070  					return err
  3071  				}
  3072  				event.Raw = log
  3073  
  3074  				select {
  3075  				case sink <- event:
  3076  				case err := <-sub.Err():
  3077  					return err
  3078  				case <-quit:
  3079  					return nil
  3080  				}
  3081  			case err := <-sub.Err():
  3082  				return err
  3083  			case <-quit:
  3084  				return nil
  3085  			}
  3086  		}
  3087  	}), nil
  3088  }
  3089  
  3090  // ParseLockedUpStake is a log parse operation binding the contract event 0x138940e95abffcd789b497bf6188bba3afa5fbd22fb5c42c2f6018d1bf0f4e78.
  3091  //
  3092  // Solidity: event LockedUpStake(address indexed delegator, uint256 indexed validatorID, uint256 duration, uint256 amount)
  3093  func (_Contract *ContractFilterer) ParseLockedUpStake(log types.Log) (*ContractLockedUpStake, error) {
  3094  	event := new(ContractLockedUpStake)
  3095  	if err := _Contract.contract.UnpackLog(event, "LockedUpStake", log); err != nil {
  3096  		return nil, err
  3097  	}
  3098  	event.Raw = log
  3099  	return event, nil
  3100  }
  3101  
  3102  // ContractOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Contract contract.
  3103  type ContractOwnershipTransferredIterator struct {
  3104  	Event *ContractOwnershipTransferred // Event containing the contract specifics and raw log
  3105  
  3106  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3107  	event    string              // Event name to use for unpacking event data
  3108  
  3109  	logs chan types.Log        // Log channel receiving the found contract events
  3110  	sub  u2u.Subscription // Subscription for errors, completion and termination
  3111  	done bool                  // Whether the subscription completed delivering logs
  3112  	fail error                 // Occurred error to stop iteration
  3113  }
  3114  
  3115  // Next advances the iterator to the subsequent event, returning whether there
  3116  // are any more events found. In case of a retrieval or parsing error, false is
  3117  // returned and Error() can be queried for the exact failure.
  3118  func (it *ContractOwnershipTransferredIterator) Next() bool {
  3119  	// If the iterator failed, stop iterating
  3120  	if it.fail != nil {
  3121  		return false
  3122  	}
  3123  	// If the iterator completed, deliver directly whatever's available
  3124  	if it.done {
  3125  		select {
  3126  		case log := <-it.logs:
  3127  			it.Event = new(ContractOwnershipTransferred)
  3128  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3129  				it.fail = err
  3130  				return false
  3131  			}
  3132  			it.Event.Raw = log
  3133  			return true
  3134  
  3135  		default:
  3136  			return false
  3137  		}
  3138  	}
  3139  	// Iterator still in progress, wait for either a data or an error event
  3140  	select {
  3141  	case log := <-it.logs:
  3142  		it.Event = new(ContractOwnershipTransferred)
  3143  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3144  			it.fail = err
  3145  			return false
  3146  		}
  3147  		it.Event.Raw = log
  3148  		return true
  3149  
  3150  	case err := <-it.sub.Err():
  3151  		it.done = true
  3152  		it.fail = err
  3153  		return it.Next()
  3154  	}
  3155  }
  3156  
  3157  // Error returns any retrieval or parsing error occurred during filtering.
  3158  func (it *ContractOwnershipTransferredIterator) Error() error {
  3159  	return it.fail
  3160  }
  3161  
  3162  // Close terminates the iteration process, releasing any pending underlying
  3163  // resources.
  3164  func (it *ContractOwnershipTransferredIterator) Close() error {
  3165  	it.sub.Unsubscribe()
  3166  	return nil
  3167  }
  3168  
  3169  // ContractOwnershipTransferred represents a OwnershipTransferred event raised by the Contract contract.
  3170  type ContractOwnershipTransferred struct {
  3171  	PreviousOwner common.Address
  3172  	NewOwner      common.Address
  3173  	Raw           types.Log // Blockchain specific contextual infos
  3174  }
  3175  
  3176  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  3177  //
  3178  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  3179  func (_Contract *ContractFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ContractOwnershipTransferredIterator, error) {
  3180  
  3181  	var previousOwnerRule []interface{}
  3182  	for _, previousOwnerItem := range previousOwner {
  3183  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  3184  	}
  3185  	var newOwnerRule []interface{}
  3186  	for _, newOwnerItem := range newOwner {
  3187  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  3188  	}
  3189  
  3190  	logs, sub, err := _Contract.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  3191  	if err != nil {
  3192  		return nil, err
  3193  	}
  3194  	return &ContractOwnershipTransferredIterator{contract: _Contract.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  3195  }
  3196  
  3197  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  3198  //
  3199  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  3200  func (_Contract *ContractFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ContractOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  3201  
  3202  	var previousOwnerRule []interface{}
  3203  	for _, previousOwnerItem := range previousOwner {
  3204  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  3205  	}
  3206  	var newOwnerRule []interface{}
  3207  	for _, newOwnerItem := range newOwner {
  3208  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  3209  	}
  3210  
  3211  	logs, sub, err := _Contract.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  3212  	if err != nil {
  3213  		return nil, err
  3214  	}
  3215  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3216  		defer sub.Unsubscribe()
  3217  		for {
  3218  			select {
  3219  			case log := <-logs:
  3220  				// New log arrived, parse the event and forward to the user
  3221  				event := new(ContractOwnershipTransferred)
  3222  				if err := _Contract.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  3223  					return err
  3224  				}
  3225  				event.Raw = log
  3226  
  3227  				select {
  3228  				case sink <- event:
  3229  				case err := <-sub.Err():
  3230  					return err
  3231  				case <-quit:
  3232  					return nil
  3233  				}
  3234  			case err := <-sub.Err():
  3235  				return err
  3236  			case <-quit:
  3237  				return nil
  3238  			}
  3239  		}
  3240  	}), nil
  3241  }
  3242  
  3243  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  3244  //
  3245  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  3246  func (_Contract *ContractFilterer) ParseOwnershipTransferred(log types.Log) (*ContractOwnershipTransferred, error) {
  3247  	event := new(ContractOwnershipTransferred)
  3248  	if err := _Contract.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  3249  		return nil, err
  3250  	}
  3251  	event.Raw = log
  3252  	return event, nil
  3253  }
  3254  
  3255  // ContractRefundedSlashedLegacyDelegationIterator is returned from FilterRefundedSlashedLegacyDelegation and is used to iterate over the raw logs and unpacked data for RefundedSlashedLegacyDelegation events raised by the Contract contract.
  3256  type ContractRefundedSlashedLegacyDelegationIterator struct {
  3257  	Event *ContractRefundedSlashedLegacyDelegation // Event containing the contract specifics and raw log
  3258  
  3259  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3260  	event    string              // Event name to use for unpacking event data
  3261  
  3262  	logs chan types.Log        // Log channel receiving the found contract events
  3263  	sub  u2u.Subscription // Subscription for errors, completion and termination
  3264  	done bool                  // Whether the subscription completed delivering logs
  3265  	fail error                 // Occurred error to stop iteration
  3266  }
  3267  
  3268  // Next advances the iterator to the subsequent event, returning whether there
  3269  // are any more events found. In case of a retrieval or parsing error, false is
  3270  // returned and Error() can be queried for the exact failure.
  3271  func (it *ContractRefundedSlashedLegacyDelegationIterator) Next() bool {
  3272  	// If the iterator failed, stop iterating
  3273  	if it.fail != nil {
  3274  		return false
  3275  	}
  3276  	// If the iterator completed, deliver directly whatever's available
  3277  	if it.done {
  3278  		select {
  3279  		case log := <-it.logs:
  3280  			it.Event = new(ContractRefundedSlashedLegacyDelegation)
  3281  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3282  				it.fail = err
  3283  				return false
  3284  			}
  3285  			it.Event.Raw = log
  3286  			return true
  3287  
  3288  		default:
  3289  			return false
  3290  		}
  3291  	}
  3292  	// Iterator still in progress, wait for either a data or an error event
  3293  	select {
  3294  	case log := <-it.logs:
  3295  		it.Event = new(ContractRefundedSlashedLegacyDelegation)
  3296  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3297  			it.fail = err
  3298  			return false
  3299  		}
  3300  		it.Event.Raw = log
  3301  		return true
  3302  
  3303  	case err := <-it.sub.Err():
  3304  		it.done = true
  3305  		it.fail = err
  3306  		return it.Next()
  3307  	}
  3308  }
  3309  
  3310  // Error returns any retrieval or parsing error occurred during filtering.
  3311  func (it *ContractRefundedSlashedLegacyDelegationIterator) Error() error {
  3312  	return it.fail
  3313  }
  3314  
  3315  // Close terminates the iteration process, releasing any pending underlying
  3316  // resources.
  3317  func (it *ContractRefundedSlashedLegacyDelegationIterator) Close() error {
  3318  	it.sub.Unsubscribe()
  3319  	return nil
  3320  }
  3321  
  3322  // ContractRefundedSlashedLegacyDelegation represents a RefundedSlashedLegacyDelegation event raised by the Contract contract.
  3323  type ContractRefundedSlashedLegacyDelegation struct {
  3324  	Delegator   common.Address
  3325  	ValidatorID *big.Int
  3326  	Amount      *big.Int
  3327  	Raw         types.Log // Blockchain specific contextual infos
  3328  }
  3329  
  3330  // FilterRefundedSlashedLegacyDelegation is a free log retrieval operation binding the contract event 0x172fdfaf5222519d28d2794b7617be033f46d954f9b6c3896e7d2611ff444252.
  3331  //
  3332  // Solidity: event RefundedSlashedLegacyDelegation(address indexed delegator, uint256 indexed validatorID, uint256 amount)
  3333  func (_Contract *ContractFilterer) FilterRefundedSlashedLegacyDelegation(opts *bind.FilterOpts, delegator []common.Address, validatorID []*big.Int) (*ContractRefundedSlashedLegacyDelegationIterator, error) {
  3334  
  3335  	var delegatorRule []interface{}
  3336  	for _, delegatorItem := range delegator {
  3337  		delegatorRule = append(delegatorRule, delegatorItem)
  3338  	}
  3339  	var validatorIDRule []interface{}
  3340  	for _, validatorIDItem := range validatorID {
  3341  		validatorIDRule = append(validatorIDRule, validatorIDItem)
  3342  	}
  3343  
  3344  	logs, sub, err := _Contract.contract.FilterLogs(opts, "RefundedSlashedLegacyDelegation", delegatorRule, validatorIDRule)
  3345  	if err != nil {
  3346  		return nil, err
  3347  	}
  3348  	return &ContractRefundedSlashedLegacyDelegationIterator{contract: _Contract.contract, event: "RefundedSlashedLegacyDelegation", logs: logs, sub: sub}, nil
  3349  }
  3350  
  3351  // WatchRefundedSlashedLegacyDelegation is a free log subscription operation binding the contract event 0x172fdfaf5222519d28d2794b7617be033f46d954f9b6c3896e7d2611ff444252.
  3352  //
  3353  // Solidity: event RefundedSlashedLegacyDelegation(address indexed delegator, uint256 indexed validatorID, uint256 amount)
  3354  func (_Contract *ContractFilterer) WatchRefundedSlashedLegacyDelegation(opts *bind.WatchOpts, sink chan<- *ContractRefundedSlashedLegacyDelegation, delegator []common.Address, validatorID []*big.Int) (event.Subscription, error) {
  3355  
  3356  	var delegatorRule []interface{}
  3357  	for _, delegatorItem := range delegator {
  3358  		delegatorRule = append(delegatorRule, delegatorItem)
  3359  	}
  3360  	var validatorIDRule []interface{}
  3361  	for _, validatorIDItem := range validatorID {
  3362  		validatorIDRule = append(validatorIDRule, validatorIDItem)
  3363  	}
  3364  
  3365  	logs, sub, err := _Contract.contract.WatchLogs(opts, "RefundedSlashedLegacyDelegation", delegatorRule, validatorIDRule)
  3366  	if err != nil {
  3367  		return nil, err
  3368  	}
  3369  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3370  		defer sub.Unsubscribe()
  3371  		for {
  3372  			select {
  3373  			case log := <-logs:
  3374  				// New log arrived, parse the event and forward to the user
  3375  				event := new(ContractRefundedSlashedLegacyDelegation)
  3376  				if err := _Contract.contract.UnpackLog(event, "RefundedSlashedLegacyDelegation", log); err != nil {
  3377  					return err
  3378  				}
  3379  				event.Raw = log
  3380  
  3381  				select {
  3382  				case sink <- event:
  3383  				case err := <-sub.Err():
  3384  					return err
  3385  				case <-quit:
  3386  					return nil
  3387  				}
  3388  			case err := <-sub.Err():
  3389  				return err
  3390  			case <-quit:
  3391  				return nil
  3392  			}
  3393  		}
  3394  	}), nil
  3395  }
  3396  
  3397  // ParseRefundedSlashedLegacyDelegation is a log parse operation binding the contract event 0x172fdfaf5222519d28d2794b7617be033f46d954f9b6c3896e7d2611ff444252.
  3398  //
  3399  // Solidity: event RefundedSlashedLegacyDelegation(address indexed delegator, uint256 indexed validatorID, uint256 amount)
  3400  func (_Contract *ContractFilterer) ParseRefundedSlashedLegacyDelegation(log types.Log) (*ContractRefundedSlashedLegacyDelegation, error) {
  3401  	event := new(ContractRefundedSlashedLegacyDelegation)
  3402  	if err := _Contract.contract.UnpackLog(event, "RefundedSlashedLegacyDelegation", log); err != nil {
  3403  		return nil, err
  3404  	}
  3405  	event.Raw = log
  3406  	return event, nil
  3407  }
  3408  
  3409  // ContractRestakedRewardsIterator is returned from FilterRestakedRewards and is used to iterate over the raw logs and unpacked data for RestakedRewards events raised by the Contract contract.
  3410  type ContractRestakedRewardsIterator struct {
  3411  	Event *ContractRestakedRewards // Event containing the contract specifics and raw log
  3412  
  3413  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3414  	event    string              // Event name to use for unpacking event data
  3415  
  3416  	logs chan types.Log        // Log channel receiving the found contract events
  3417  	sub  u2u.Subscription // Subscription for errors, completion and termination
  3418  	done bool                  // Whether the subscription completed delivering logs
  3419  	fail error                 // Occurred error to stop iteration
  3420  }
  3421  
  3422  // Next advances the iterator to the subsequent event, returning whether there
  3423  // are any more events found. In case of a retrieval or parsing error, false is
  3424  // returned and Error() can be queried for the exact failure.
  3425  func (it *ContractRestakedRewardsIterator) Next() bool {
  3426  	// If the iterator failed, stop iterating
  3427  	if it.fail != nil {
  3428  		return false
  3429  	}
  3430  	// If the iterator completed, deliver directly whatever's available
  3431  	if it.done {
  3432  		select {
  3433  		case log := <-it.logs:
  3434  			it.Event = new(ContractRestakedRewards)
  3435  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3436  				it.fail = err
  3437  				return false
  3438  			}
  3439  			it.Event.Raw = log
  3440  			return true
  3441  
  3442  		default:
  3443  			return false
  3444  		}
  3445  	}
  3446  	// Iterator still in progress, wait for either a data or an error event
  3447  	select {
  3448  	case log := <-it.logs:
  3449  		it.Event = new(ContractRestakedRewards)
  3450  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3451  			it.fail = err
  3452  			return false
  3453  		}
  3454  		it.Event.Raw = log
  3455  		return true
  3456  
  3457  	case err := <-it.sub.Err():
  3458  		it.done = true
  3459  		it.fail = err
  3460  		return it.Next()
  3461  	}
  3462  }
  3463  
  3464  // Error returns any retrieval or parsing error occurred during filtering.
  3465  func (it *ContractRestakedRewardsIterator) Error() error {
  3466  	return it.fail
  3467  }
  3468  
  3469  // Close terminates the iteration process, releasing any pending underlying
  3470  // resources.
  3471  func (it *ContractRestakedRewardsIterator) Close() error {
  3472  	it.sub.Unsubscribe()
  3473  	return nil
  3474  }
  3475  
  3476  // ContractRestakedRewards represents a RestakedRewards event raised by the Contract contract.
  3477  type ContractRestakedRewards struct {
  3478  	Delegator         common.Address
  3479  	ToValidatorID     *big.Int
  3480  	LockupExtraReward *big.Int
  3481  	LockupBaseReward  *big.Int
  3482  	UnlockedReward    *big.Int
  3483  	Raw               types.Log // Blockchain specific contextual infos
  3484  }
  3485  
  3486  // FilterRestakedRewards is a free log retrieval operation binding the contract event 0x4119153d17a36f9597d40e3ab4148d03261a439dddbec4e91799ab7159608e26.
  3487  //
  3488  // Solidity: event RestakedRewards(address indexed delegator, uint256 indexed toValidatorID, uint256 lockupExtraReward, uint256 lockupBaseReward, uint256 unlockedReward)
  3489  func (_Contract *ContractFilterer) FilterRestakedRewards(opts *bind.FilterOpts, delegator []common.Address, toValidatorID []*big.Int) (*ContractRestakedRewardsIterator, error) {
  3490  
  3491  	var delegatorRule []interface{}
  3492  	for _, delegatorItem := range delegator {
  3493  		delegatorRule = append(delegatorRule, delegatorItem)
  3494  	}
  3495  	var toValidatorIDRule []interface{}
  3496  	for _, toValidatorIDItem := range toValidatorID {
  3497  		toValidatorIDRule = append(toValidatorIDRule, toValidatorIDItem)
  3498  	}
  3499  
  3500  	logs, sub, err := _Contract.contract.FilterLogs(opts, "RestakedRewards", delegatorRule, toValidatorIDRule)
  3501  	if err != nil {
  3502  		return nil, err
  3503  	}
  3504  	return &ContractRestakedRewardsIterator{contract: _Contract.contract, event: "RestakedRewards", logs: logs, sub: sub}, nil
  3505  }
  3506  
  3507  // WatchRestakedRewards is a free log subscription operation binding the contract event 0x4119153d17a36f9597d40e3ab4148d03261a439dddbec4e91799ab7159608e26.
  3508  //
  3509  // Solidity: event RestakedRewards(address indexed delegator, uint256 indexed toValidatorID, uint256 lockupExtraReward, uint256 lockupBaseReward, uint256 unlockedReward)
  3510  func (_Contract *ContractFilterer) WatchRestakedRewards(opts *bind.WatchOpts, sink chan<- *ContractRestakedRewards, delegator []common.Address, toValidatorID []*big.Int) (event.Subscription, error) {
  3511  
  3512  	var delegatorRule []interface{}
  3513  	for _, delegatorItem := range delegator {
  3514  		delegatorRule = append(delegatorRule, delegatorItem)
  3515  	}
  3516  	var toValidatorIDRule []interface{}
  3517  	for _, toValidatorIDItem := range toValidatorID {
  3518  		toValidatorIDRule = append(toValidatorIDRule, toValidatorIDItem)
  3519  	}
  3520  
  3521  	logs, sub, err := _Contract.contract.WatchLogs(opts, "RestakedRewards", delegatorRule, toValidatorIDRule)
  3522  	if err != nil {
  3523  		return nil, err
  3524  	}
  3525  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3526  		defer sub.Unsubscribe()
  3527  		for {
  3528  			select {
  3529  			case log := <-logs:
  3530  				// New log arrived, parse the event and forward to the user
  3531  				event := new(ContractRestakedRewards)
  3532  				if err := _Contract.contract.UnpackLog(event, "RestakedRewards", log); err != nil {
  3533  					return err
  3534  				}
  3535  				event.Raw = log
  3536  
  3537  				select {
  3538  				case sink <- event:
  3539  				case err := <-sub.Err():
  3540  					return err
  3541  				case <-quit:
  3542  					return nil
  3543  				}
  3544  			case err := <-sub.Err():
  3545  				return err
  3546  			case <-quit:
  3547  				return nil
  3548  			}
  3549  		}
  3550  	}), nil
  3551  }
  3552  
  3553  // ParseRestakedRewards is a log parse operation binding the contract event 0x4119153d17a36f9597d40e3ab4148d03261a439dddbec4e91799ab7159608e26.
  3554  //
  3555  // Solidity: event RestakedRewards(address indexed delegator, uint256 indexed toValidatorID, uint256 lockupExtraReward, uint256 lockupBaseReward, uint256 unlockedReward)
  3556  func (_Contract *ContractFilterer) ParseRestakedRewards(log types.Log) (*ContractRestakedRewards, error) {
  3557  	event := new(ContractRestakedRewards)
  3558  	if err := _Contract.contract.UnpackLog(event, "RestakedRewards", log); err != nil {
  3559  		return nil, err
  3560  	}
  3561  	event.Raw = log
  3562  	return event, nil
  3563  }
  3564  
  3565  // ContractUndelegatedIterator is returned from FilterUndelegated and is used to iterate over the raw logs and unpacked data for Undelegated events raised by the Contract contract.
  3566  type ContractUndelegatedIterator struct {
  3567  	Event *ContractUndelegated // Event containing the contract specifics and raw log
  3568  
  3569  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3570  	event    string              // Event name to use for unpacking event data
  3571  
  3572  	logs chan types.Log        // Log channel receiving the found contract events
  3573  	sub  u2u.Subscription // Subscription for errors, completion and termination
  3574  	done bool                  // Whether the subscription completed delivering logs
  3575  	fail error                 // Occurred error to stop iteration
  3576  }
  3577  
  3578  // Next advances the iterator to the subsequent event, returning whether there
  3579  // are any more events found. In case of a retrieval or parsing error, false is
  3580  // returned and Error() can be queried for the exact failure.
  3581  func (it *ContractUndelegatedIterator) Next() bool {
  3582  	// If the iterator failed, stop iterating
  3583  	if it.fail != nil {
  3584  		return false
  3585  	}
  3586  	// If the iterator completed, deliver directly whatever's available
  3587  	if it.done {
  3588  		select {
  3589  		case log := <-it.logs:
  3590  			it.Event = new(ContractUndelegated)
  3591  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3592  				it.fail = err
  3593  				return false
  3594  			}
  3595  			it.Event.Raw = log
  3596  			return true
  3597  
  3598  		default:
  3599  			return false
  3600  		}
  3601  	}
  3602  	// Iterator still in progress, wait for either a data or an error event
  3603  	select {
  3604  	case log := <-it.logs:
  3605  		it.Event = new(ContractUndelegated)
  3606  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3607  			it.fail = err
  3608  			return false
  3609  		}
  3610  		it.Event.Raw = log
  3611  		return true
  3612  
  3613  	case err := <-it.sub.Err():
  3614  		it.done = true
  3615  		it.fail = err
  3616  		return it.Next()
  3617  	}
  3618  }
  3619  
  3620  // Error returns any retrieval or parsing error occurred during filtering.
  3621  func (it *ContractUndelegatedIterator) Error() error {
  3622  	return it.fail
  3623  }
  3624  
  3625  // Close terminates the iteration process, releasing any pending underlying
  3626  // resources.
  3627  func (it *ContractUndelegatedIterator) Close() error {
  3628  	it.sub.Unsubscribe()
  3629  	return nil
  3630  }
  3631  
  3632  // ContractUndelegated represents a Undelegated event raised by the Contract contract.
  3633  type ContractUndelegated struct {
  3634  	Delegator     common.Address
  3635  	ToValidatorID *big.Int
  3636  	WrID          *big.Int
  3637  	Amount        *big.Int
  3638  	Raw           types.Log // Blockchain specific contextual infos
  3639  }
  3640  
  3641  // FilterUndelegated is a free log retrieval operation binding the contract event 0xd3bb4e423fbea695d16b982f9f682dc5f35152e5411646a8a5a79a6b02ba8d57.
  3642  //
  3643  // Solidity: event Undelegated(address indexed delegator, uint256 indexed toValidatorID, uint256 indexed wrID, uint256 amount)
  3644  func (_Contract *ContractFilterer) FilterUndelegated(opts *bind.FilterOpts, delegator []common.Address, toValidatorID []*big.Int, wrID []*big.Int) (*ContractUndelegatedIterator, error) {
  3645  
  3646  	var delegatorRule []interface{}
  3647  	for _, delegatorItem := range delegator {
  3648  		delegatorRule = append(delegatorRule, delegatorItem)
  3649  	}
  3650  	var toValidatorIDRule []interface{}
  3651  	for _, toValidatorIDItem := range toValidatorID {
  3652  		toValidatorIDRule = append(toValidatorIDRule, toValidatorIDItem)
  3653  	}
  3654  	var wrIDRule []interface{}
  3655  	for _, wrIDItem := range wrID {
  3656  		wrIDRule = append(wrIDRule, wrIDItem)
  3657  	}
  3658  
  3659  	logs, sub, err := _Contract.contract.FilterLogs(opts, "Undelegated", delegatorRule, toValidatorIDRule, wrIDRule)
  3660  	if err != nil {
  3661  		return nil, err
  3662  	}
  3663  	return &ContractUndelegatedIterator{contract: _Contract.contract, event: "Undelegated", logs: logs, sub: sub}, nil
  3664  }
  3665  
  3666  // WatchUndelegated is a free log subscription operation binding the contract event 0xd3bb4e423fbea695d16b982f9f682dc5f35152e5411646a8a5a79a6b02ba8d57.
  3667  //
  3668  // Solidity: event Undelegated(address indexed delegator, uint256 indexed toValidatorID, uint256 indexed wrID, uint256 amount)
  3669  func (_Contract *ContractFilterer) WatchUndelegated(opts *bind.WatchOpts, sink chan<- *ContractUndelegated, delegator []common.Address, toValidatorID []*big.Int, wrID []*big.Int) (event.Subscription, error) {
  3670  
  3671  	var delegatorRule []interface{}
  3672  	for _, delegatorItem := range delegator {
  3673  		delegatorRule = append(delegatorRule, delegatorItem)
  3674  	}
  3675  	var toValidatorIDRule []interface{}
  3676  	for _, toValidatorIDItem := range toValidatorID {
  3677  		toValidatorIDRule = append(toValidatorIDRule, toValidatorIDItem)
  3678  	}
  3679  	var wrIDRule []interface{}
  3680  	for _, wrIDItem := range wrID {
  3681  		wrIDRule = append(wrIDRule, wrIDItem)
  3682  	}
  3683  
  3684  	logs, sub, err := _Contract.contract.WatchLogs(opts, "Undelegated", delegatorRule, toValidatorIDRule, wrIDRule)
  3685  	if err != nil {
  3686  		return nil, err
  3687  	}
  3688  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3689  		defer sub.Unsubscribe()
  3690  		for {
  3691  			select {
  3692  			case log := <-logs:
  3693  				// New log arrived, parse the event and forward to the user
  3694  				event := new(ContractUndelegated)
  3695  				if err := _Contract.contract.UnpackLog(event, "Undelegated", log); err != nil {
  3696  					return err
  3697  				}
  3698  				event.Raw = log
  3699  
  3700  				select {
  3701  				case sink <- event:
  3702  				case err := <-sub.Err():
  3703  					return err
  3704  				case <-quit:
  3705  					return nil
  3706  				}
  3707  			case err := <-sub.Err():
  3708  				return err
  3709  			case <-quit:
  3710  				return nil
  3711  			}
  3712  		}
  3713  	}), nil
  3714  }
  3715  
  3716  // ParseUndelegated is a log parse operation binding the contract event 0xd3bb4e423fbea695d16b982f9f682dc5f35152e5411646a8a5a79a6b02ba8d57.
  3717  //
  3718  // Solidity: event Undelegated(address indexed delegator, uint256 indexed toValidatorID, uint256 indexed wrID, uint256 amount)
  3719  func (_Contract *ContractFilterer) ParseUndelegated(log types.Log) (*ContractUndelegated, error) {
  3720  	event := new(ContractUndelegated)
  3721  	if err := _Contract.contract.UnpackLog(event, "Undelegated", log); err != nil {
  3722  		return nil, err
  3723  	}
  3724  	event.Raw = log
  3725  	return event, nil
  3726  }
  3727  
  3728  // ContractUnlockedStakeIterator is returned from FilterUnlockedStake and is used to iterate over the raw logs and unpacked data for UnlockedStake events raised by the Contract contract.
  3729  type ContractUnlockedStakeIterator struct {
  3730  	Event *ContractUnlockedStake // Event containing the contract specifics and raw log
  3731  
  3732  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3733  	event    string              // Event name to use for unpacking event data
  3734  
  3735  	logs chan types.Log        // Log channel receiving the found contract events
  3736  	sub  u2u.Subscription // Subscription for errors, completion and termination
  3737  	done bool                  // Whether the subscription completed delivering logs
  3738  	fail error                 // Occurred error to stop iteration
  3739  }
  3740  
  3741  // Next advances the iterator to the subsequent event, returning whether there
  3742  // are any more events found. In case of a retrieval or parsing error, false is
  3743  // returned and Error() can be queried for the exact failure.
  3744  func (it *ContractUnlockedStakeIterator) Next() bool {
  3745  	// If the iterator failed, stop iterating
  3746  	if it.fail != nil {
  3747  		return false
  3748  	}
  3749  	// If the iterator completed, deliver directly whatever's available
  3750  	if it.done {
  3751  		select {
  3752  		case log := <-it.logs:
  3753  			it.Event = new(ContractUnlockedStake)
  3754  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3755  				it.fail = err
  3756  				return false
  3757  			}
  3758  			it.Event.Raw = log
  3759  			return true
  3760  
  3761  		default:
  3762  			return false
  3763  		}
  3764  	}
  3765  	// Iterator still in progress, wait for either a data or an error event
  3766  	select {
  3767  	case log := <-it.logs:
  3768  		it.Event = new(ContractUnlockedStake)
  3769  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3770  			it.fail = err
  3771  			return false
  3772  		}
  3773  		it.Event.Raw = log
  3774  		return true
  3775  
  3776  	case err := <-it.sub.Err():
  3777  		it.done = true
  3778  		it.fail = err
  3779  		return it.Next()
  3780  	}
  3781  }
  3782  
  3783  // Error returns any retrieval or parsing error occurred during filtering.
  3784  func (it *ContractUnlockedStakeIterator) Error() error {
  3785  	return it.fail
  3786  }
  3787  
  3788  // Close terminates the iteration process, releasing any pending underlying
  3789  // resources.
  3790  func (it *ContractUnlockedStakeIterator) Close() error {
  3791  	it.sub.Unsubscribe()
  3792  	return nil
  3793  }
  3794  
  3795  // ContractUnlockedStake represents a UnlockedStake event raised by the Contract contract.
  3796  type ContractUnlockedStake struct {
  3797  	Delegator   common.Address
  3798  	ValidatorID *big.Int
  3799  	Amount      *big.Int
  3800  	Penalty     *big.Int
  3801  	Raw         types.Log // Blockchain specific contextual infos
  3802  }
  3803  
  3804  // FilterUnlockedStake is a free log retrieval operation binding the contract event 0xef6c0c14fe9aa51af36acd791464dec3badbde668b63189b47bfa4e25be9b2b9.
  3805  //
  3806  // Solidity: event UnlockedStake(address indexed delegator, uint256 indexed validatorID, uint256 amount, uint256 penalty)
  3807  func (_Contract *ContractFilterer) FilterUnlockedStake(opts *bind.FilterOpts, delegator []common.Address, validatorID []*big.Int) (*ContractUnlockedStakeIterator, error) {
  3808  
  3809  	var delegatorRule []interface{}
  3810  	for _, delegatorItem := range delegator {
  3811  		delegatorRule = append(delegatorRule, delegatorItem)
  3812  	}
  3813  	var validatorIDRule []interface{}
  3814  	for _, validatorIDItem := range validatorID {
  3815  		validatorIDRule = append(validatorIDRule, validatorIDItem)
  3816  	}
  3817  
  3818  	logs, sub, err := _Contract.contract.FilterLogs(opts, "UnlockedStake", delegatorRule, validatorIDRule)
  3819  	if err != nil {
  3820  		return nil, err
  3821  	}
  3822  	return &ContractUnlockedStakeIterator{contract: _Contract.contract, event: "UnlockedStake", logs: logs, sub: sub}, nil
  3823  }
  3824  
  3825  // WatchUnlockedStake is a free log subscription operation binding the contract event 0xef6c0c14fe9aa51af36acd791464dec3badbde668b63189b47bfa4e25be9b2b9.
  3826  //
  3827  // Solidity: event UnlockedStake(address indexed delegator, uint256 indexed validatorID, uint256 amount, uint256 penalty)
  3828  func (_Contract *ContractFilterer) WatchUnlockedStake(opts *bind.WatchOpts, sink chan<- *ContractUnlockedStake, delegator []common.Address, validatorID []*big.Int) (event.Subscription, error) {
  3829  
  3830  	var delegatorRule []interface{}
  3831  	for _, delegatorItem := range delegator {
  3832  		delegatorRule = append(delegatorRule, delegatorItem)
  3833  	}
  3834  	var validatorIDRule []interface{}
  3835  	for _, validatorIDItem := range validatorID {
  3836  		validatorIDRule = append(validatorIDRule, validatorIDItem)
  3837  	}
  3838  
  3839  	logs, sub, err := _Contract.contract.WatchLogs(opts, "UnlockedStake", delegatorRule, validatorIDRule)
  3840  	if err != nil {
  3841  		return nil, err
  3842  	}
  3843  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3844  		defer sub.Unsubscribe()
  3845  		for {
  3846  			select {
  3847  			case log := <-logs:
  3848  				// New log arrived, parse the event and forward to the user
  3849  				event := new(ContractUnlockedStake)
  3850  				if err := _Contract.contract.UnpackLog(event, "UnlockedStake", log); err != nil {
  3851  					return err
  3852  				}
  3853  				event.Raw = log
  3854  
  3855  				select {
  3856  				case sink <- event:
  3857  				case err := <-sub.Err():
  3858  					return err
  3859  				case <-quit:
  3860  					return nil
  3861  				}
  3862  			case err := <-sub.Err():
  3863  				return err
  3864  			case <-quit:
  3865  				return nil
  3866  			}
  3867  		}
  3868  	}), nil
  3869  }
  3870  
  3871  // ParseUnlockedStake is a log parse operation binding the contract event 0xef6c0c14fe9aa51af36acd791464dec3badbde668b63189b47bfa4e25be9b2b9.
  3872  //
  3873  // Solidity: event UnlockedStake(address indexed delegator, uint256 indexed validatorID, uint256 amount, uint256 penalty)
  3874  func (_Contract *ContractFilterer) ParseUnlockedStake(log types.Log) (*ContractUnlockedStake, error) {
  3875  	event := new(ContractUnlockedStake)
  3876  	if err := _Contract.contract.UnpackLog(event, "UnlockedStake", log); err != nil {
  3877  		return nil, err
  3878  	}
  3879  	event.Raw = log
  3880  	return event, nil
  3881  }
  3882  
  3883  // ContractUpdatedSlashingRefundRatioIterator is returned from FilterUpdatedSlashingRefundRatio and is used to iterate over the raw logs and unpacked data for UpdatedSlashingRefundRatio events raised by the Contract contract.
  3884  type ContractUpdatedSlashingRefundRatioIterator struct {
  3885  	Event *ContractUpdatedSlashingRefundRatio // Event containing the contract specifics and raw log
  3886  
  3887  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3888  	event    string              // Event name to use for unpacking event data
  3889  
  3890  	logs chan types.Log        // Log channel receiving the found contract events
  3891  	sub  u2u.Subscription // Subscription for errors, completion and termination
  3892  	done bool                  // Whether the subscription completed delivering logs
  3893  	fail error                 // Occurred error to stop iteration
  3894  }
  3895  
  3896  // Next advances the iterator to the subsequent event, returning whether there
  3897  // are any more events found. In case of a retrieval or parsing error, false is
  3898  // returned and Error() can be queried for the exact failure.
  3899  func (it *ContractUpdatedSlashingRefundRatioIterator) Next() bool {
  3900  	// If the iterator failed, stop iterating
  3901  	if it.fail != nil {
  3902  		return false
  3903  	}
  3904  	// If the iterator completed, deliver directly whatever's available
  3905  	if it.done {
  3906  		select {
  3907  		case log := <-it.logs:
  3908  			it.Event = new(ContractUpdatedSlashingRefundRatio)
  3909  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3910  				it.fail = err
  3911  				return false
  3912  			}
  3913  			it.Event.Raw = log
  3914  			return true
  3915  
  3916  		default:
  3917  			return false
  3918  		}
  3919  	}
  3920  	// Iterator still in progress, wait for either a data or an error event
  3921  	select {
  3922  	case log := <-it.logs:
  3923  		it.Event = new(ContractUpdatedSlashingRefundRatio)
  3924  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3925  			it.fail = err
  3926  			return false
  3927  		}
  3928  		it.Event.Raw = log
  3929  		return true
  3930  
  3931  	case err := <-it.sub.Err():
  3932  		it.done = true
  3933  		it.fail = err
  3934  		return it.Next()
  3935  	}
  3936  }
  3937  
  3938  // Error returns any retrieval or parsing error occurred during filtering.
  3939  func (it *ContractUpdatedSlashingRefundRatioIterator) Error() error {
  3940  	return it.fail
  3941  }
  3942  
  3943  // Close terminates the iteration process, releasing any pending underlying
  3944  // resources.
  3945  func (it *ContractUpdatedSlashingRefundRatioIterator) Close() error {
  3946  	it.sub.Unsubscribe()
  3947  	return nil
  3948  }
  3949  
  3950  // ContractUpdatedSlashingRefundRatio represents a UpdatedSlashingRefundRatio event raised by the Contract contract.
  3951  type ContractUpdatedSlashingRefundRatio struct {
  3952  	ValidatorID *big.Int
  3953  	RefundRatio *big.Int
  3954  	Raw         types.Log // Blockchain specific contextual infos
  3955  }
  3956  
  3957  // FilterUpdatedSlashingRefundRatio is a free log retrieval operation binding the contract event 0x047575f43f09a7a093d94ec483064acfc61b7e25c0de28017da442abf99cb917.
  3958  //
  3959  // Solidity: event UpdatedSlashingRefundRatio(uint256 indexed validatorID, uint256 refundRatio)
  3960  func (_Contract *ContractFilterer) FilterUpdatedSlashingRefundRatio(opts *bind.FilterOpts, validatorID []*big.Int) (*ContractUpdatedSlashingRefundRatioIterator, error) {
  3961  
  3962  	var validatorIDRule []interface{}
  3963  	for _, validatorIDItem := range validatorID {
  3964  		validatorIDRule = append(validatorIDRule, validatorIDItem)
  3965  	}
  3966  
  3967  	logs, sub, err := _Contract.contract.FilterLogs(opts, "UpdatedSlashingRefundRatio", validatorIDRule)
  3968  	if err != nil {
  3969  		return nil, err
  3970  	}
  3971  	return &ContractUpdatedSlashingRefundRatioIterator{contract: _Contract.contract, event: "UpdatedSlashingRefundRatio", logs: logs, sub: sub}, nil
  3972  }
  3973  
  3974  // WatchUpdatedSlashingRefundRatio is a free log subscription operation binding the contract event 0x047575f43f09a7a093d94ec483064acfc61b7e25c0de28017da442abf99cb917.
  3975  //
  3976  // Solidity: event UpdatedSlashingRefundRatio(uint256 indexed validatorID, uint256 refundRatio)
  3977  func (_Contract *ContractFilterer) WatchUpdatedSlashingRefundRatio(opts *bind.WatchOpts, sink chan<- *ContractUpdatedSlashingRefundRatio, validatorID []*big.Int) (event.Subscription, error) {
  3978  
  3979  	var validatorIDRule []interface{}
  3980  	for _, validatorIDItem := range validatorID {
  3981  		validatorIDRule = append(validatorIDRule, validatorIDItem)
  3982  	}
  3983  
  3984  	logs, sub, err := _Contract.contract.WatchLogs(opts, "UpdatedSlashingRefundRatio", validatorIDRule)
  3985  	if err != nil {
  3986  		return nil, err
  3987  	}
  3988  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3989  		defer sub.Unsubscribe()
  3990  		for {
  3991  			select {
  3992  			case log := <-logs:
  3993  				// New log arrived, parse the event and forward to the user
  3994  				event := new(ContractUpdatedSlashingRefundRatio)
  3995  				if err := _Contract.contract.UnpackLog(event, "UpdatedSlashingRefundRatio", log); err != nil {
  3996  					return err
  3997  				}
  3998  				event.Raw = log
  3999  
  4000  				select {
  4001  				case sink <- event:
  4002  				case err := <-sub.Err():
  4003  					return err
  4004  				case <-quit:
  4005  					return nil
  4006  				}
  4007  			case err := <-sub.Err():
  4008  				return err
  4009  			case <-quit:
  4010  				return nil
  4011  			}
  4012  		}
  4013  	}), nil
  4014  }
  4015  
  4016  // ParseUpdatedSlashingRefundRatio is a log parse operation binding the contract event 0x047575f43f09a7a093d94ec483064acfc61b7e25c0de28017da442abf99cb917.
  4017  //
  4018  // Solidity: event UpdatedSlashingRefundRatio(uint256 indexed validatorID, uint256 refundRatio)
  4019  func (_Contract *ContractFilterer) ParseUpdatedSlashingRefundRatio(log types.Log) (*ContractUpdatedSlashingRefundRatio, error) {
  4020  	event := new(ContractUpdatedSlashingRefundRatio)
  4021  	if err := _Contract.contract.UnpackLog(event, "UpdatedSlashingRefundRatio", log); err != nil {
  4022  		return nil, err
  4023  	}
  4024  	event.Raw = log
  4025  	return event, nil
  4026  }
  4027  
  4028  // ContractWithdrawnIterator is returned from FilterWithdrawn and is used to iterate over the raw logs and unpacked data for Withdrawn events raised by the Contract contract.
  4029  type ContractWithdrawnIterator struct {
  4030  	Event *ContractWithdrawn // Event containing the contract specifics and raw log
  4031  
  4032  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4033  	event    string              // Event name to use for unpacking event data
  4034  
  4035  	logs chan types.Log        // Log channel receiving the found contract events
  4036  	sub  u2u.Subscription // Subscription for errors, completion and termination
  4037  	done bool                  // Whether the subscription completed delivering logs
  4038  	fail error                 // Occurred error to stop iteration
  4039  }
  4040  
  4041  // Next advances the iterator to the subsequent event, returning whether there
  4042  // are any more events found. In case of a retrieval or parsing error, false is
  4043  // returned and Error() can be queried for the exact failure.
  4044  func (it *ContractWithdrawnIterator) Next() bool {
  4045  	// If the iterator failed, stop iterating
  4046  	if it.fail != nil {
  4047  		return false
  4048  	}
  4049  	// If the iterator completed, deliver directly whatever's available
  4050  	if it.done {
  4051  		select {
  4052  		case log := <-it.logs:
  4053  			it.Event = new(ContractWithdrawn)
  4054  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4055  				it.fail = err
  4056  				return false
  4057  			}
  4058  			it.Event.Raw = log
  4059  			return true
  4060  
  4061  		default:
  4062  			return false
  4063  		}
  4064  	}
  4065  	// Iterator still in progress, wait for either a data or an error event
  4066  	select {
  4067  	case log := <-it.logs:
  4068  		it.Event = new(ContractWithdrawn)
  4069  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4070  			it.fail = err
  4071  			return false
  4072  		}
  4073  		it.Event.Raw = log
  4074  		return true
  4075  
  4076  	case err := <-it.sub.Err():
  4077  		it.done = true
  4078  		it.fail = err
  4079  		return it.Next()
  4080  	}
  4081  }
  4082  
  4083  // Error returns any retrieval or parsing error occurred during filtering.
  4084  func (it *ContractWithdrawnIterator) Error() error {
  4085  	return it.fail
  4086  }
  4087  
  4088  // Close terminates the iteration process, releasing any pending underlying
  4089  // resources.
  4090  func (it *ContractWithdrawnIterator) Close() error {
  4091  	it.sub.Unsubscribe()
  4092  	return nil
  4093  }
  4094  
  4095  // ContractWithdrawn represents a Withdrawn event raised by the Contract contract.
  4096  type ContractWithdrawn struct {
  4097  	Delegator     common.Address
  4098  	ToValidatorID *big.Int
  4099  	WrID          *big.Int
  4100  	Amount        *big.Int
  4101  	Raw           types.Log // Blockchain specific contextual infos
  4102  }
  4103  
  4104  // FilterWithdrawn is a free log retrieval operation binding the contract event 0x75e161b3e824b114fc1a33274bd7091918dd4e639cede50b78b15a4eea956a21.
  4105  //
  4106  // Solidity: event Withdrawn(address indexed delegator, uint256 indexed toValidatorID, uint256 indexed wrID, uint256 amount)
  4107  func (_Contract *ContractFilterer) FilterWithdrawn(opts *bind.FilterOpts, delegator []common.Address, toValidatorID []*big.Int, wrID []*big.Int) (*ContractWithdrawnIterator, error) {
  4108  
  4109  	var delegatorRule []interface{}
  4110  	for _, delegatorItem := range delegator {
  4111  		delegatorRule = append(delegatorRule, delegatorItem)
  4112  	}
  4113  	var toValidatorIDRule []interface{}
  4114  	for _, toValidatorIDItem := range toValidatorID {
  4115  		toValidatorIDRule = append(toValidatorIDRule, toValidatorIDItem)
  4116  	}
  4117  	var wrIDRule []interface{}
  4118  	for _, wrIDItem := range wrID {
  4119  		wrIDRule = append(wrIDRule, wrIDItem)
  4120  	}
  4121  
  4122  	logs, sub, err := _Contract.contract.FilterLogs(opts, "Withdrawn", delegatorRule, toValidatorIDRule, wrIDRule)
  4123  	if err != nil {
  4124  		return nil, err
  4125  	}
  4126  	return &ContractWithdrawnIterator{contract: _Contract.contract, event: "Withdrawn", logs: logs, sub: sub}, nil
  4127  }
  4128  
  4129  // WatchWithdrawn is a free log subscription operation binding the contract event 0x75e161b3e824b114fc1a33274bd7091918dd4e639cede50b78b15a4eea956a21.
  4130  //
  4131  // Solidity: event Withdrawn(address indexed delegator, uint256 indexed toValidatorID, uint256 indexed wrID, uint256 amount)
  4132  func (_Contract *ContractFilterer) WatchWithdrawn(opts *bind.WatchOpts, sink chan<- *ContractWithdrawn, delegator []common.Address, toValidatorID []*big.Int, wrID []*big.Int) (event.Subscription, error) {
  4133  
  4134  	var delegatorRule []interface{}
  4135  	for _, delegatorItem := range delegator {
  4136  		delegatorRule = append(delegatorRule, delegatorItem)
  4137  	}
  4138  	var toValidatorIDRule []interface{}
  4139  	for _, toValidatorIDItem := range toValidatorID {
  4140  		toValidatorIDRule = append(toValidatorIDRule, toValidatorIDItem)
  4141  	}
  4142  	var wrIDRule []interface{}
  4143  	for _, wrIDItem := range wrID {
  4144  		wrIDRule = append(wrIDRule, wrIDItem)
  4145  	}
  4146  
  4147  	logs, sub, err := _Contract.contract.WatchLogs(opts, "Withdrawn", delegatorRule, toValidatorIDRule, wrIDRule)
  4148  	if err != nil {
  4149  		return nil, err
  4150  	}
  4151  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4152  		defer sub.Unsubscribe()
  4153  		for {
  4154  			select {
  4155  			case log := <-logs:
  4156  				// New log arrived, parse the event and forward to the user
  4157  				event := new(ContractWithdrawn)
  4158  				if err := _Contract.contract.UnpackLog(event, "Withdrawn", log); err != nil {
  4159  					return err
  4160  				}
  4161  				event.Raw = log
  4162  
  4163  				select {
  4164  				case sink <- event:
  4165  				case err := <-sub.Err():
  4166  					return err
  4167  				case <-quit:
  4168  					return nil
  4169  				}
  4170  			case err := <-sub.Err():
  4171  				return err
  4172  			case <-quit:
  4173  				return nil
  4174  			}
  4175  		}
  4176  	}), nil
  4177  }
  4178  
  4179  // ParseWithdrawn is a log parse operation binding the contract event 0x75e161b3e824b114fc1a33274bd7091918dd4e639cede50b78b15a4eea956a21.
  4180  //
  4181  // Solidity: event Withdrawn(address indexed delegator, uint256 indexed toValidatorID, uint256 indexed wrID, uint256 amount)
  4182  func (_Contract *ContractFilterer) ParseWithdrawn(log types.Log) (*ContractWithdrawn, error) {
  4183  	event := new(ContractWithdrawn)
  4184  	if err := _Contract.contract.UnpackLog(event, "Withdrawn", log); err != nil {
  4185  		return nil, err
  4186  	}
  4187  	event.Raw = log
  4188  	return event, nil
  4189  }
  4190  
  4191  var ContractBinRuntime = "0x6080604052600436106103765760003560e01c8063893675c6116101d1578063bd14d90711610102578063cfdbb7cd116100a0578063df00c9221161006f578063df00c92214610ef3578063e261641a14610f23578063e2f8c33614610f53578063f2fde38b14610fe557610376565b8063cfdbb7cd14610e3f578063d96ed50514610e78578063dc31e1af14610e8d578063de67f21514610ebd57610376565b8063c65ee0e1116100dc578063c65ee0e114610d95578063c7be95de14610dbf578063cc8343aa14610dd4578063cfd4766314610e0657610376565b8063bd14d90714610d20578063c3de580e14610d56578063c5f956af14610d8057610376565b80639fa6dd351161016f578063a86a056f11610149578063a86a056f14610bc9578063b5d8962714610c02578063b810e41114610c6d578063b88a37e214610ca657610376565b80639fa6dd3514610b0c578063a198d22914610b29578063a5a470ad14610b5957610376565b80638da5cb5b116101ab5780638da5cb5b14610a455780638f32d59b14610a5a57806390a6c47514610a8357806396c7ee4614610aad57610376565b8063893675c6146109e25780638b0e9f3f146109f75780638cddb01514610a0c57610376565b80634f7c4efb116102ab57806361e53fcc11610249578063715018a611610223578063715018a61461090457806376671808146109195780637cacb1d61461092e578063854873e11461094357610376565b806361e53fcc14610862578063670322f8146108925780636f498663146108cb57610376565b80635601fe01116102855780635601fe01146107ba57806358f95b80146107e45780635fab23a8146108145780636099ecb21461082957610376565b80634f7c4efb146106a95780634f864df4146106d95780634feb92f31461070f57610376565b80631d3ac42c1161031857806320c0849d116102f257806320c0849d146105b757806328f731481461060257806339b80c0014610617578063441a3e701461067957610376565b80631d3ac42c146104fa5780631e702f831461052a5780631f2701521461055a57610376565b80630e559d82116103545780630e559d821461041657806312622d0e1461044757806318160ddd1461048057806318f628d41461049557610376565b80630135b1db1461037b57806308c36874146103c05780630962ef79146103ec575b600080fd5b34801561038757600080fd5b506103ae6004803603602081101561039e57600080fd5b50356001600160a01b0316611018565b60408051918252519081900360200190f35b3480156103cc57600080fd5b506103ea600480360360208110156103e357600080fd5b503561102a565b005b3480156103f857600080fd5b506103ea6004803603602081101561040f57600080fd5b50356110f6565b34801561042257600080fd5b5061042b611241565b604080516001600160a01b039092168252519081900360200190f35b34801561045357600080fd5b506103ae6004803603604081101561046a57600080fd5b506001600160a01b038135169060200135611250565b34801561048c57600080fd5b506103ae6112d9565b3480156104a157600080fd5b506103ea60048036036101208110156104b957600080fd5b506001600160a01b038135169060208101359060408101359060608101359060808101359060a08101359060c08101359060e08101359061010001356112df565b34801561050657600080fd5b506103ae6004803603604081101561051d57600080fd5b5080359060200135611441565b34801561053657600080fd5b506103ea6004803603604081101561054d57600080fd5b508035906020013561166b565b34801561056657600080fd5b506105996004803603606081101561057d57600080fd5b506001600160a01b038135169060208101359060400135611744565b60408051938452602084019290925282820152519081900360600190f35b3480156105c357600080fd5b506103ea600480360360808110156105da57600080fd5b506001600160a01b038135811691602081013590911690604081013515159060600135611776565b34801561060e57600080fd5b506103ae611913565b34801561062357600080fd5b506106416004803603602081101561063a57600080fd5b5035611919565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b34801561068557600080fd5b506103ea6004803603604081101561069c57600080fd5b508035906020013561195b565b3480156106b557600080fd5b506103ea600480360360408110156106cc57600080fd5b5080359060200135611e6b565b3480156106e557600080fd5b506103ea600480360360608110156106fc57600080fd5b5080359060208101359060400135611faf565b34801561071b57600080fd5b506103ea600480360361010081101561073357600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561076357600080fd5b82018360208201111561077557600080fd5b8035906020019184600183028401116401000000008311171561079757600080fd5b91935091508035906020810135906040810135906060810135906080013561224a565b3480156107c657600080fd5b506103ae600480360360208110156107dd57600080fd5b50356122f0565b3480156107f057600080fd5b506103ae6004803603604081101561080757600080fd5b5080359060200135612326565b34801561082057600080fd5b506103ae612343565b34801561083557600080fd5b506103ae6004803603604081101561084c57600080fd5b506001600160a01b038135169060200135612349565b34801561086e57600080fd5b506103ae6004803603604081101561088557600080fd5b5080359060200135612387565b34801561089e57600080fd5b506103ae600480360360408110156108b557600080fd5b506001600160a01b0381351690602001356123a8565b3480156108d757600080fd5b506103ae600480360360408110156108ee57600080fd5b506001600160a01b0381351690602001356123e9565b34801561091057600080fd5b506103ea612453565b34801561092557600080fd5b506103ae61250e565b34801561093a57600080fd5b506103ae612518565b34801561094f57600080fd5b5061096d6004803603602081101561096657600080fd5b503561251e565b6040805160208082528351818301528351919283929083019185019080838360005b838110156109a757818101518382015260200161098f565b50505050905090810190601f1680156109d45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109ee57600080fd5b5061042b6125d7565b348015610a0357600080fd5b506103ae6125e6565b348015610a1857600080fd5b506103ea60048036036040811015610a2f57600080fd5b506001600160a01b0381351690602001356125ec565b348015610a5157600080fd5b5061042b61264b565b348015610a6657600080fd5b50610a6f61265a565b604080519115158252519081900360200190f35b348015610a8f57600080fd5b506103ea60048036036020811015610aa657600080fd5b503561266b565b348015610ab957600080fd5b50610ae660048036036040811015610ad057600080fd5b506001600160a01b0381351690602001356126d0565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6103ea60048036036020811015610b2257600080fd5b5035612702565b348015610b3557600080fd5b506103ae60048036036040811015610b4c57600080fd5b508035906020013561270d565b6103ea60048036036020811015610b6f57600080fd5b810190602081018135640100000000811115610b8a57600080fd5b820183602082011115610b9c57600080fd5b80359060200191846001830284011164010000000083111715610bbe57600080fd5b50909250905061272e565b348015610bd557600080fd5b506103ae60048036036040811015610bec57600080fd5b506001600160a01b03813516906020013561289b565b348015610c0e57600080fd5b50610c2c60048036036020811015610c2557600080fd5b50356128b8565b604080519788526020880196909652868601949094526060860192909252608085015260a08401526001600160a01b031660c0830152519081900360e00190f35b348015610c7957600080fd5b5061059960048036036040811015610c9057600080fd5b506001600160a01b0381351690602001356128fe565b348015610cb257600080fd5b50610cd060048036036020811015610cc957600080fd5b503561292a565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610d0c578181015183820152602001610cf4565b505050509050019250505060405180910390f35b348015610d2c57600080fd5b506103ea60048036036060811015610d4357600080fd5b508035906020810135906040013561298f565b348015610d6257600080fd5b50610a6f60048036036020811015610d7957600080fd5b50356129a2565b348015610d8c57600080fd5b5061042b6129b9565b348015610da157600080fd5b506103ae60048036036020811015610db857600080fd5b50356129c8565b348015610dcb57600080fd5b506103ae6129da565b348015610de057600080fd5b506103ea60048036036040811015610df757600080fd5b508035906020013515156129e0565b348015610e1257600080fd5b506103ae60048036036040811015610e2957600080fd5b506001600160a01b038135169060200135612c18565b348015610e4b57600080fd5b50610a6f60048036036040811015610e6257600080fd5b506001600160a01b038135169060200135612c35565b348015610e8457600080fd5b506103ae612ccb565b348015610e9957600080fd5b506103ae60048036036040811015610eb057600080fd5b5080359060200135612cd1565b348015610ec957600080fd5b506103ea60048036036060811015610ee057600080fd5b5080359060208101359060400135612cf2565b348015610eff57600080fd5b506103ae60048036036040811015610f1657600080fd5b5080359060200135612dad565b348015610f2f57600080fd5b506103ae60048036036040811015610f4657600080fd5b5080359060200135612dce565b348015610f5f57600080fd5b506103ea60048036036060811015610f7657600080fd5b6001600160a01b0382351691602081013591810190606081016040820135640100000000811115610fa657600080fd5b820183602082011115610fb857600080fd5b80359060200191846001830284011164010000000083111715610fda57600080fd5b509092509050612def565b348015610ff157600080fd5b506103ea6004803603602081101561100857600080fd5b50356001600160a01b0316612f1e565b60696020526000908152604090205481565b33611033614d24565b61103d8284612f80565b602081015181519192506000916110599163ffffffff6130e016565b905061107c83856110778560400151856130e090919063ffffffff16565b61313a565b6001600160a01b0383166000818152607360209081526040808320888452825291829020805485019055845185820151868401518451928352928201528083019190915290518692917f4119153d17a36f9597d40e3ab4148d03261a439dddbec4e91799ab7159608e26919081900360600190a350505050565b336110ff614d24565b6111098284612f80565b90506000826001600160a01b0316611146836040015161113a856020015186600001516130e090919063ffffffff16565b9063ffffffff6130e016565b604051600081818185875af1925050503d8060008114611182576040519150601f19603f3d011682016040523d82523d6000602084013e611187565b606091505b50509050806111dd576040805162461bcd60e51b815260206004820152601260248201527f4661696c656420746f2073656e642046544d0000000000000000000000000000604482015290519081900360640190fd5b83836001600160a01b03167fc1d8eb6e444b89fb8ff0991c19311c070df704ccb009e210d1462d5b2410bf4584600001518560200151866040015160405180848152602001838152602001828152602001935050505060405180910390a350505050565b607b546001600160a01b031681565b600061125c8383612c35565b61128a57506001600160a01b03821660009081526072602090815260408083208484529091529020546112d3565b6001600160a01b0383166000818152607360209081526040808320868452825280832054938352607282528083208684529091529020546112d09163ffffffff61324616565b90505b92915050565b60765481565b6112e833613288565b6113235760405162461bcd60e51b8152600401808060200182810382526029815260200180614e046029913960400191505060405180910390fd5b611330898989600061329c565b6001600160a01b0389166000908152606f602090815260408083208b8452909152902060020181905561136287613434565b851561143657868611156113a75760405162461bcd60e51b815260040180806020018281038252602c815260200180614ec0602c913960400191505060405180910390fd5b6001600160a01b03891660008181526073602090815260408083208c845282528083208a8155600181018a90556002810189905560038101889055848452607483528184208d855283529281902086905580518781529182018a9052805192938c9390927f138940e95abffcd789b497bf6188bba3afa5fbd22fb5c42c2f6018d1bf0f4e7892908290030190a3505b505050505050505050565b3360008181526073602090815260408083208684529091528120909190836114b0576040805162461bcd60e51b815260206004820152600b60248201527f7a65726f20616d6f756e74000000000000000000000000000000000000000000604482015290519081900360640190fd5b6114ba8286612c35565b61150b576040805162461bcd60e51b815260206004820152600d60248201527f6e6f74206c6f636b656420757000000000000000000000000000000000000000604482015290519081900360640190fd5b8054841115611561576040805162461bcd60e51b815260206004820152601760248201527f6e6f7420656e6f756768206c6f636b6564207374616b65000000000000000000604482015290519081900360640190fd5b61156b82866134d2565b6115bc576040805162461bcd60e51b815260206004820152601860248201527f6f75747374616e64696e67207346544d2062616c616e63650000000000000000604482015290519081900360640190fd5b6115c6828661358d565b5060006115d98387878560000154613758565b905081600301546363401ec501826002015410156115f5575060005b8154859003825580156116185761160f8387836001613889565b61161881613a8f565b85836001600160a01b03167fef6c0c14fe9aa51af36acd791464dec3badbde668b63189b47bfa4e25be9b2b98784604051808381526020018281526020019250505060405180910390a395945050505050565b61167433613288565b6116af5760405162461bcd60e51b8152600401808060200182810382526029815260200180614e046029913960400191505060405180910390fd5b80611701576040805162461bcd60e51b815260206004820152600c60248201527f77726f6e67207374617475730000000000000000000000000000000000000000604482015290519081900360640190fd5b61170b8282613af9565b6117168260006129e0565b6000828152606860205260408120600601546001600160a01b03169061173f9082908190613c23565b505050565b607160209081526000938452604080852082529284528284209052825290208054600182015460029092015490919083565b608254604080516001600160a01b03878116602483015286811660448084019190915283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4a7702bb000000000000000000000000000000000000000000000000000000001781529251825160009592909216938693928291908083835b6020831061184557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611808565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d80600081146118a8576040519150601f19603f3d011682016040523d82523d6000602084013e6118ad565b606091505b5050905080806118bb575082155b61190c576040805162461bcd60e51b815260206004820152601b60248201527f676f7620766f746573207265636f756e74696e67206661696c65640000000000604482015290519081900360640190fd5b5050505050565b606d5481565b607760205280600052604060002060009150905080600701549080600801549080600901549080600a01549080600b01549080600c01549080600d0154905087565b33611964614d24565b506001600160a01b038116600090815260716020908152604080832086845282528083208584528252918290208251606081018452815480825260018301549382019390935260029091015492810192909252611a08576040805162461bcd60e51b815260206004820152601560248201527f7265717565737420646f65736e27742065786973740000000000000000000000604482015290519081900360640190fd5b611a1282856134d2565b611a63576040805162461bcd60e51b815260206004820152601860248201527f6f75747374616e64696e67207346544d2062616c616e63650000000000000000604482015290519081900360640190fd5b60208082015182516000878152606890935260409092206001015490919015801590611a9f575060008681526068602052604090206001015482115b15611ac0575050600084815260686020526040902060018101546002909101545b608160009054906101000a90046001600160a01b03166001600160a01b031663b82b84276040518163ffffffff1660e01b815260040160206040518083038186803b158015611b0e57600080fd5b505afa158015611b22573d6000803e3d6000fd5b505050506040513d6020811015611b3857600080fd5b50518201611b44613dcd565b1015611b97576040805162461bcd60e51b815260206004820152601660248201527f6e6f7420656e6f7567682074696d652070617373656400000000000000000000604482015290519081900360640190fd5b608160009054906101000a90046001600160a01b03166001600160a01b031663650acd666040518163ffffffff1660e01b815260040160206040518083038186803b158015611be557600080fd5b505afa158015611bf9573d6000803e3d6000fd5b505050506040513d6020811015611c0f57600080fd5b50518101611c1b61250e565b1015611c6e576040805162461bcd60e51b815260206004820152601860248201527f6e6f7420656e6f7567682065706f636873207061737365640000000000000000604482015290519081900360640190fd5b6001600160a01b0384166000908152607160209081526040808320898452825280832088845290915281206002015490611ca7886129a2565b90506000611cc98383607a60008d815260200190815260200160002054613dd1565b6001600160a01b03881660009081526071602090815260408083208d845282528083208c845290915281208181556001810182905560020155606e8054820190559050808311611d60576040805162461bcd60e51b815260206004820152601660248201527f7374616b652069732066756c6c7920736c617368656400000000000000000000604482015290519081900360640190fd5b60006001600160a01b038816611d7c858463ffffffff61324616565b604051600081818185875af1925050503d8060008114611db8576040519150601f19603f3d011682016040523d82523d6000602084013e611dbd565b606091505b5050905080611e13576040805162461bcd60e51b815260206004820152601260248201527f4661696c656420746f2073656e642046544d0000000000000000000000000000604482015290519081900360640190fd5b611e1c82613a8f565b888a896001600160a01b03167f75e161b3e824b114fc1a33274bd7091918dd4e639cede50b78b15a4eea956a21876040518082815260200191505060405180910390a450505050505050505050565b611e7361265a565b611ec4576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b611ecd826129a2565b611f1e576040805162461bcd60e51b815260206004820152601760248201527f76616c696461746f722069736e277420736c6173686564000000000000000000604482015290519081900360640190fd5b611f26613e33565b811115611f645760405162461bcd60e51b8152600401808060200182810382526021815260200180614e4e6021913960400191505060405180910390fd5b6000828152607a60209081526040918290208390558151838152915184927f047575f43f09a7a093d94ec483064acfc61b7e25c0de28017da442abf99cb91792908290030190a25050565b33611fba818561358d565b5060008211612010576040805162461bcd60e51b815260206004820152600b60248201527f7a65726f20616d6f756e74000000000000000000000000000000000000000000604482015290519081900360640190fd5b61201a8185611250565b82111561206e576040805162461bcd60e51b815260206004820152601960248201527f6e6f7420656e6f75676820756e6c6f636b6564207374616b6500000000000000604482015290519081900360640190fd5b61207881856134d2565b6120c9576040805162461bcd60e51b815260206004820152601860248201527f6f75747374616e64696e67207346544d2062616c616e63650000000000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260716020908152604080832087845282528083208684529091529020600201541561214a576040805162461bcd60e51b815260206004820152601360248201527f7772494420616c72656164792065786973747300000000000000000000000000604482015290519081900360640190fd5b6121578185846001613889565b6001600160a01b03811660009081526071602090815260408083208784528252808320868452909152902060020182905561219061250e565b6001600160a01b038216600090815260716020908152604080832088845282528083208784529091529020556121c4613dcd565b6001600160a01b038216600090815260716020908152604080832088845282528083208784529091528120600101919091556122019085906129e0565b8284826001600160a01b03167fd3bb4e423fbea695d16b982f9f682dc5f35152e5411646a8a5a79a6b02ba8d57856040518082815260200191505060405180910390a450505050565b61225333613288565b61228e5760405162461bcd60e51b8152600401808060200182810382526029815260200180614e046029913960400191505060405180910390fd5b6122d6898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b92508a91508990508888613e3f565b606b5488111561143657606b889055505050505050505050565b6000818152606860209081526040808320600601546001600160a01b03168352607282528083208484529091529020545b919050565b600091825260776020908152604080842092845291905290205490565b606e5481565b6000612353614d24565b61235d8484614006565b80516020820151604083015192935061237f9261113a9163ffffffff6130e016565b949350505050565b60009182526077602090815260408084209284526001909201905290205490565b60006123b48383612c35565b6123c0575060006112d3565b506001600160a01b03919091166000908152607360209081526040808320938352929052205490565b60006123f3614d24565b506001600160a01b0383166000908152606f602090815260408083208584528252918290208251606081018452815480825260018301549382018490526002909201549381018490529261237f92909161113a919063ffffffff6130e016565b61245b61265a565b6124ac576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6067546001015b90565b60675481565b606a6020908152600091825260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600186161502019093169290920491820184900484028101840190945280845290918301828280156125cf5780601f106125a4576101008083540402835291602001916125cf565b820191906000526020600020905b8154815290600101906020018083116125b257829003601f168201915b505050505081565b6082546001600160a01b031681565b606c5481565b6125f6828261358d565b612647576040805162461bcd60e51b815260206004820152601060248201527f6e6f7468696e6720746f20737461736800000000000000000000000000000000604482015290519081900360640190fd5b5050565b6033546001600160a01b031690565b6033546001600160a01b0316331490565b61267361265a565b6126c4576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6126cd81613a8f565b50565b607360209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b6126cd33823461313a565b60009182526077602090815260408084209284526005909201905290205490565b608160009054906101000a90046001600160a01b03166001600160a01b031663c5f530af6040518163ffffffff1660e01b815260040160206040518083038186803b15801561277c57600080fd5b505afa158015612790573d6000803e3d6000fd5b505050506040513d60208110156127a657600080fd5b50513410156127fc576040805162461bcd60e51b815260206004820152601760248201527f696e73756666696369656e742073656c662d7374616b65000000000000000000604482015290519081900360640190fd5b8061284e576040805162461bcd60e51b815260206004820152600c60248201527f656d707479207075626b65790000000000000000000000000000000000000000604482015290519081900360640190fd5b61288e3383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061407492505050565b61264733606b543461313a565b607060209081526000928352604080842090915290825290205481565b606860205260009081526040902080546001820154600283015460038401546004850154600586015460069096015494959394929391929091906001600160a01b031687565b607460209081526000928352604080842090915290825290208054600182015460029092015490919083565b60008181526077602090815260409182902060060180548351818402810184019094528084526060939283018282801561298357602002820191906000526020600020905b81548152602001906001019080831161296f575b50505050509050919050565b3361299c8185858561409f565b50505050565b600090815260686020526040902054608016151590565b607f546001600160a01b031681565b607a6020526000908152604090205481565b606b5481565b6129e982614454565b612a3a576040805162461bcd60e51b815260206004820152601760248201527f76616c696461746f7220646f65736e2774206578697374000000000000000000604482015290519081900360640190fd5b60008281526068602052604090206003810154905415612a58575060005b606654604080517fa4066fbe000000000000000000000000000000000000000000000000000000008152600481018690526024810184905290516001600160a01b039092169163a4066fbe9160448082019260009290919082900301818387803b158015612ac557600080fd5b505af1158015612ad9573d6000803e3d6000fd5b50505050818015612ae957508015155b1561173f576066546000848152606a60205260409081902081517f242a6e3f0000000000000000000000000000000000000000000000000000000081526004810187815260248201938452825460027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001831615610100020190911604604483018190526001600160a01b039095169463242a6e3f94899493909160649091019084908015612bda5780601f10612baf57610100808354040283529160200191612bda565b820191906000526020600020905b815481529060010190602001808311612bbd57829003601f168201915b50509350505050600060405180830381600087803b158015612bfb57600080fd5b505af1158015612c0f573d6000803e3d6000fd5b50505050505050565b607260209081526000928352604080842090915290825290205481565b6001600160a01b038216600090815260736020908152604080832084845290915281206002015415801590612c8c57506001600160a01b038316600090815260736020908152604080832085845290915290205415155b80156112d057506001600160a01b0383166000908152607360209081526040808320858452909152902060020154612cc2613dcd565b11159392505050565b607e5481565b60009182526077602090815260408084209284526003909201905290205490565b3381612d45576040805162461bcd60e51b815260206004820152600b60248201527f7a65726f20616d6f756e74000000000000000000000000000000000000000000604482015290519081900360640190fd5b612d4f8185612c35565b15612da1576040805162461bcd60e51b815260206004820152601160248201527f616c7265616479206c6f636b6564207570000000000000000000000000000000604482015290519081900360640190fd5b61299c8185858561409f565b60009182526077602090815260408084209284526002909201905290205490565b60009182526077602090815260408084209284526004909201905290205490565b612df761265a565b612e48576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b612e5183613434565b6040516001600160a01b0385169084156108fc029085906000818181858888f19350505050158015612e87573d6000803e3d6000fd5b50836001600160a01b03167f9eec469b348bcf64bbfb60e46ce7b160e2e09bf5421496a2cdbc43714c28b8ad84848460405180848152602001806020018281038252848482818152602001925080828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909201829003965090945050505050a250505050565b612f2661265a565b612f77576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6126cd8161446b565b612f88614d24565b612f9283836134d2565b612fe3576040805162461bcd60e51b815260206004820152601860248201527f6f75747374616e64696e67207346544d2062616c616e63650000000000000000604482015290519081900360640190fd5b612fed838361358d565b50506001600160a01b0382166000908152606f602090815260408083208484528252808320815160608101835281548082526001830154948201859052600290920154928101839052939261304b9261113a9163ffffffff6130e016565b90508061309f576040805162461bcd60e51b815260206004820152600c60248201527f7a65726f20726577617264730000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0384166000908152606f60209081526040808320868452909152812081815560018101829055600201556130d981613434565b5092915050565b6000828201838110156112d0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b61314382614454565b613194576040805162461bcd60e51b815260206004820152601760248201527f76616c696461746f7220646f65736e2774206578697374000000000000000000604482015290519081900360640190fd5b600082815260686020526040902054156131f5576040805162461bcd60e51b815260206004820152601660248201527f76616c696461746f722069736e27742061637469766500000000000000000000604482015290519081900360640190fd5b613202838383600161329c565b61320b82614524565b61173f5760405162461bcd60e51b8152600401808060200182810382526029815260200180614e976029913960400191505060405180910390fd5b60006112d083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506145ec565b6066546001600160a01b0390811691161490565b600082116132f1576040805162461bcd60e51b815260206004820152600b60248201527f7a65726f20616d6f756e74000000000000000000000000000000000000000000604482015290519081900360640190fd5b6132fb848461358d565b506001600160a01b0384166000908152607260209081526040808320868452909152902054613330908363ffffffff6130e016565b6001600160a01b0385166000908152607260209081526040808320878452825280832093909355606890522060030154613370818463ffffffff6130e016565b600085815260686020526040902060030155606c54613395908463ffffffff6130e016565b606c556000848152606860205260409020546133c257606d546133be908463ffffffff6130e016565b606d555b6133cd8482156129e0565b60408051848152905185916001600160a01b038816917f9a8f44850296624dadfd9c246d17e47171d35727a181bd090aa14bbbe00238bb9181900360200190a360008481526068602052604090206006015461190c9086906001600160a01b031684613c23565b606654604080517f66e7ea0f0000000000000000000000000000000000000000000000000000000081523060048201526024810184905290516001600160a01b03909216916366e7ea0f9160448082019260009290919082900301818387803b1580156134a057600080fd5b505af11580156134b4573d6000803e3d6000fd5b50506076546134cc925090508263ffffffff6130e016565b60765550565b607b546000906001600160a01b03166134ed575060016112d3565b607b54604080517f21d585c30000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015260248201869052915191909216916321d585c3916044808301926020929190829003018186803b15801561355a57600080fd5b505afa15801561356e573d6000803e3d6000fd5b505050506040513d602081101561358457600080fd5b50519392505050565b6000613597614d24565b6135a18484614683565b90506135ac836147bb565b6001600160a01b0385166000818152607060209081526040808320888452825280832094909455918152606f8252828120868252825282902082516060810184528154815260018201549281019290925260020154918101919091526136129082614816565b6001600160a01b0385166000818152606f602090815260408083208884528252808320855181558583015160018083019190915595820151600291820155938352607482528083208884528252918290208251606081018452815481529481015491850191909152909101549082015261368c9082614816565b6001600160a01b0385166000908152607460209081526040808320878452825291829020835181559083015160018201559101516002909101556136d08484612c35565b613733576001600160a01b0384166000818152607360209081526040808320878452825280832083815560018082018590556002808301869055600390920185905594845260748352818420888552909252822082815592830182905591909101555b60208101511515806137455750805115155b8061237f57506040015115159392505050565b6001600160a01b038416600090815260746020908152604080832086845290915281205481906137a0908490613794908763ffffffff61488816565b9063ffffffff6148e116565b6001600160a01b0387166000908152607460209081526040808320898452909152812060010154919250906137e1908590613794908863ffffffff61488816565b6001600160a01b03881660009081526074602090815260408083208a8452909152902054909150600282048301906138199084613246565b6001600160a01b03891660009081526074602090815260408083208b845290915290209081556001015461384d9083613246565b6001600160a01b03891660009081526074602090815260408083208b845290915290206001015585811061387e5750845b979650505050505050565b6001600160a01b038416600090815260726020908152604080832086845282528083208054869003905560689091529020600301546138ce908363ffffffff61324616565b600084815260686020526040902060030155606c546138f3908363ffffffff61324616565b606c5560008381526068602052604090205461392057606d5461391c908363ffffffff61324616565b606d555b600061392b846122f0565b90508015613a5d57600084815260686020526040902054613a5857608160009054906101000a90046001600160a01b03166001600160a01b031663c5f530af6040518163ffffffff1660e01b815260040160206040518083038186803b15801561399457600080fd5b505afa1580156139a8573d6000803e3d6000fd5b505050506040513d60208110156139be57600080fd5b5051811015613a14576040805162461bcd60e51b815260206004820152601760248201527f696e73756666696369656e742073656c662d7374616b65000000000000000000604482015290519081900360640190fd5b613a1d84614524565b613a585760405162461bcd60e51b8152600401808060200182810382526029815260200180614e976029913960400191505060405180910390fd5b613a68565b613a68846001613af9565b60008481526068602052604090206006015461190c9086906001600160a01b031684613c23565b80156126cd5760405160009082156108fc0290839083818181858288f19350505050158015613ac2573d6000803e3d6000fd5b506040805182815290517f8918bd6046d08b314e457977f29562c5d76a7030d79b1edba66e8a5da0b77ae89181900360200190a150565b600082815260686020526040902054158015613b1457508015155b15613b4157600082815260686020526040902060030154606d54613b3d9163ffffffff61324616565b606d555b60008281526068602052604090205481111561264757600082815260686020526040902081815560020154613be957613b7861250e565b600083815260686020526040902060020155613b92613dcd565b6000838152606860209081526040918290206001810184905560020154825190815290810192909252805184927fac4801c32a6067ff757446524ee4e7a373797278ac3c883eac5c693b4ad72e4792908290030190a25b60408051828152905183917fcd35267e7654194727477d6c78b541a553483cff7f92a055d17868d3da6e953e919081900360200190a25050565b6082546001600160a01b03161561173f57608254604080516001600160a01b03868116602483015285811660448084019190915283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4a7702bb00000000000000000000000000000000000000000000000000000000178152925182516000959290921693627a120093928291908083835b60208310613d0657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613cc9565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d8060008114613d69576040519150601f19603f3d011682016040523d82523d6000602084013e613d6e565b606091505b505090508080613d7c575081155b61299c576040805162461bcd60e51b815260206004820152601b60248201527f676f7620766f746573207265636f756e74696e67206661696c65640000000000604482015290519081900360640190fd5b4290565b6000821580613de75750613de3613e33565b8210155b15613df457506000613e2c565b613e1f600161113a613e04613e33565b61379486613e10613e33565b8a91900363ffffffff61488816565b905083811115613e2c5750825b9392505050565b670de0b6b3a764000090565b6001600160a01b03881660009081526069602052604090205415613eaa576040805162461bcd60e51b815260206004820152601860248201527f76616c696461746f7220616c7265616479206578697374730000000000000000604482015290519081900360640190fd5b6001600160a01b03881660008181526069602090815260408083208b90558a8352606882528083208981556004810189905560058101889055600181018690556002810187905560060180547fffffffffffffffffffffffff000000000000000000000000000000000000000016909417909355606a81529190208751613f3392890190614d45565b50876001600160a01b0316877f49bca1ed2666922f9f1690c26a569e1299c2a715fe57647d77e81adfabbf25bf8686604051808381526020018281526020019250505060405180910390a38115613fbf576040805183815260208101839052815189927fac4801c32a6067ff757446524ee4e7a373797278ac3c883eac5c693b4ad72e47928290030190a25b8415613ffc5760408051868152905188917fcd35267e7654194727477d6c78b541a553483cff7f92a055d17868d3da6e953e919081900360200190a25b5050505050505050565b61400e614d24565b614016614d24565b6140208484614683565b6001600160a01b0385166000908152606f60209081526040808320878452825291829020825160608101845281548152600182015492810192909252600201549181019190915290915061237f9082614816565b606b80546001019081905561173f838284600061408f61250e565b614097613dcd565b600080613e3f565b6140a98484611250565b8111156140fd576040805162461bcd60e51b815260206004820152601060248201527f6e6f7420656e6f756768207374616b6500000000000000000000000000000000604482015290519081900360640190fd5b6000838152606860205260409020541561415e576040805162461bcd60e51b815260206004820152601660248201527f76616c696461746f722069736e27742061637469766500000000000000000000604482015290519081900360640190fd5b608160009054906101000a90046001600160a01b03166001600160a01b0316630d7b26096040518163ffffffff1660e01b815260040160206040518083038186803b1580156141ac57600080fd5b505afa1580156141c0573d6000803e3d6000fd5b505050506040513d60208110156141d657600080fd5b505182108015906142605750608160009054906101000a90046001600160a01b03166001600160a01b0316630d4955e36040518163ffffffff1660e01b815260040160206040518083038186803b15801561423057600080fd5b505afa158015614244573d6000803e3d6000fd5b505050506040513d602081101561425a57600080fd5b50518211155b6142b1576040805162461bcd60e51b815260206004820152601260248201527f696e636f7272656374206475726174696f6e0000000000000000000000000000604482015290519081900360640190fd5b60006142bf8361113a613dcd565b6000858152606860205260409020600601549091506001600160a01b03908116908616811461434d576001600160a01b038116600090815260736020908152604080832088845290915290206002015482111561434d5760405162461bcd60e51b8152600401808060200182810382526028815260200180614e6f6028913960400191505060405180910390fd5b614357868661358d565b506001600160a01b0386166000908152607360209081526040808320888452909152902060038101548510156143d4576040805162461bcd60e51b815260206004820152601f60248201527f6c6f636b7570206475726174696f6e2063616e6e6f7420646563726561736500604482015290519081900360640190fd5b80546143e6908563ffffffff6130e016565b81556143f061250e565b600182015560028101839055600381018590556040805186815260208101869052815188926001600160a01b038b16927f138940e95abffcd789b497bf6188bba3afa5fbd22fb5c42c2f6018d1bf0f4e78929081900390910190a350505050505050565b600090815260686020526040902060050154151590565b6001600160a01b0381166144b05760405162461bcd60e51b8152600401808060200182810382526026815260200180614dde6026913960400191505060405180910390fd5b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60006145d1614531613e33565b608154604080517f2265f2840000000000000000000000000000000000000000000000000000000081529051613794926001600160a01b031691632265f284916004808301926020929190829003018186803b15801561459057600080fd5b505afa1580156145a4573d6000803e3d6000fd5b505050506040513d60208110156145ba57600080fd5b50516145c5866122f0565b9063ffffffff61488816565b60008381526068602052604090206003015411159050919050565b6000818484111561467b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614640578181015183820152602001614628565b50505050905090810190601f16801561466d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b61468b614d24565b6001600160a01b0383166000908152607060209081526040808320858452909152812054906146b9846147bb565b905060006146c78686614923565b9050818111156146d45750805b828110156146df5750815b6001600160a01b0386166000818152607360209081526040808320898452825280832093835260728252808320898452909152812054825490919061472b90839063ffffffff61324616565b9050600061473f84600001548a8988614a00565b9050614749614d24565b614757828660030154614a63565b9050614765838b8a89614a00565b915061476f614d24565b61477a836000614a63565b9050614788858c898b614a00565b9250614792614d24565b61479d846000614a63565b90506147aa838383614c24565b9d9c50505050505050505050505050565b6000818152606860205260408120600201541561480e5760008281526068602052604090206002015460675410156147f65750606754612321565b50600081815260686020526040902060020154612321565b505060675490565b61481e614d24565b604080516060810190915282518451829161483f919063ffffffff6130e016565b815260200161485f846020015186602001516130e090919063ffffffff16565b815260200161487f846040015186604001516130e090919063ffffffff16565b90529392505050565b600082614897575060006112d3565b828202828482816148a457fe5b04146112d05760405162461bcd60e51b8152600401808060200182810382526021815260200180614e2d6021913960400191505060405180910390fd5b60006112d083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614c3f565b6001600160a01b0382166000908152607360209081526040808320848452909152812060010154606754614958858583614ca4565b156149665791506112d39050565b614971858584614ca4565b614980576000925050506112d3565b80821115614993576000925050506112d3565b808210156149c6576002818301046149ac868683614ca4565b156149bc578060010192506149c0565b8091505b50614993565b806149d6576000925050506112d3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01949350505050565b6000818310614a115750600061237f565b60008381526077602081815260408084208885526001908101835281852054878652938352818520898652019091529091205461387e614a4f613e33565b613794896145c5858763ffffffff61324616565b614a6b614d24565b60405180606001604052806000815260200160008152602001600081525090506000608160009054906101000a90046001600160a01b03166001600160a01b0316635e2308d26040518163ffffffff1660e01b815260040160206040518083038186803b158015614adb57600080fd5b505afa158015614aef573d6000803e3d6000fd5b505050506040513d6020811015614b0557600080fd5b505190508215614bfd57600081614b1a613e33565b0390506000614bac608160009054906101000a90046001600160a01b03166001600160a01b0316630d4955e36040518163ffffffff1660e01b815260040160206040518083038186803b158015614b7057600080fd5b505afa158015614b84573d6000803e3d6000fd5b505050506040513d6020811015614b9a57600080fd5b5051613794848863ffffffff61488816565b90506000614bcd614bbb613e33565b6137948987860163ffffffff61488816565b9050614bea614bda613e33565b613794898763ffffffff61488816565b6020860181905290038452506130d99050565b614c18614c08613e33565b613794868463ffffffff61488816565b60408301525092915050565b614c2c614d24565b61237f614c398585614816565b83614816565b60008183614c8e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614640578181015183820152602001614628565b506000838581614c9a57fe5b0495945050505050565b6001600160a01b0383166000908152607360209081526040808320858452909152812060010154821080159061237f57506001600160a01b0384166000908152607360209081526040808320868452909152902060020154614d0583614d0f565b1115949350505050565b60009081526077602052604090206007015490565b60405180606001604052806000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614d8657805160ff1916838001178555614db3565b82800160010185558215614db3579182015b82811115614db3578251825591602001919060010190614d98565b50614dbf929150614dc3565b5090565b61251591905b80821115614dbf5760008155600101614dc956fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737363616c6c6572206973206e6f7420746865204e6f64654472697665724175746820636f6e7472616374536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776d757374206265206c657373207468616e206f7220657175616c20746f20312e3076616c696461746f72206c6f636b757020706572696f642077696c6c20656e64206561726c69657276616c696461746f7227732064656c65676174696f6e73206c696d69742069732065786365656465646c6f636b6564207374616b652069732067726561746572207468616e207468652077686f6c65207374616b65a265627a7a7231582087037332c1e7e6c6d22bd22a9138be994cc25958ae26e11634b7757630a9b59464736f6c63430005110032"