From aafc8fec01d26471d2ba73e588a12445a56de355 Mon Sep 17 00:00:00 2001 From: Albert Chon Date: Thu, 28 Oct 2021 08:54:02 -0400 Subject: [PATCH] re-gen --- chain/exchange/types/codec.go | 2 + chain/exchange/types/common_utils.go | 7 +- chain/exchange/types/errors.go | 111 +- chain/exchange/types/expected_keepers.go | 4 +- chain/exchange/types/fee_discounts.go | 8 +- chain/exchange/types/key.go | 5 +- chain/exchange/types/msgs.go | 43 +- chain/exchange/types/positions.go | 2 +- chain/exchange/types/proposal.go | 347 +++--- chain/exchange/types/query.pb.go | 323 +++--- chain/exchange/types/trading_rewards.go | 4 +- chain/exchange/types/tx.pb.go | 1239 +++++++++++++++++----- chain/oracle/types/expected_keepers.go | 4 +- chain/oracle/types/oracle.pb.go | 269 ++--- go.mod | 10 +- go.sum | 48 +- 16 files changed, 1632 insertions(+), 794 deletions(-) diff --git a/chain/exchange/types/codec.go b/chain/exchange/types/codec.go index cabc0589..197d6d84 100644 --- a/chain/exchange/types/codec.go +++ b/chain/exchange/types/codec.go @@ -33,6 +33,7 @@ func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&MsgLiquidatePosition{}, "exchange/MsgLiquidatePosition", nil) cdc.RegisterConcrete(&ExchangeEnableProposal{}, "exchange/ExchangeEnableProposal", nil) + cdc.RegisterConcrete(&BatchExchangeModificationProposal{}, "exchange/BatchExchangeModificationProposal", nil) cdc.RegisterConcrete(&SpotMarketParamUpdateProposal{}, "exchange/SpotMarketParamUpdateProposal", nil) cdc.RegisterConcrete(&SpotMarketLaunchProposal{}, "exchange/SpotMarketLaunchProposal", nil) cdc.RegisterConcrete(&PerpetualMarketLaunchProposal{}, "exchange/PerpetualMarketLaunchProposal", nil) @@ -69,6 +70,7 @@ func RegisterInterfaces(registry types.InterfaceRegistry) { registry.RegisterImplementations( (*govtypes.Content)(nil), &ExchangeEnableProposal{}, + &BatchExchangeModificationProposal{}, &SpotMarketParamUpdateProposal{}, &SpotMarketLaunchProposal{}, &PerpetualMarketLaunchProposal{}, diff --git a/chain/exchange/types/common_utils.go b/chain/exchange/types/common_utils.go index b78b4deb..6a8038cc 100644 --- a/chain/exchange/types/common_utils.go +++ b/chain/exchange/types/common_utils.go @@ -107,12 +107,9 @@ func IsValidOrderHash(orderHash string) bool { if len(orderHash) != 66 { return false } - orderHashBytes := common.FromHex(orderHash) - if len(orderHashBytes) != common.HashLength { - return false - } - return true + orderHashBytes := common.FromHex(orderHash) + return len(orderHashBytes) == common.HashLength } func BreachesMinimumTickSize(value sdk.Dec, minTickSize sdk.Dec) bool { diff --git a/chain/exchange/types/errors.go b/chain/exchange/types/errors.go index 3e1f720d..052f9d36 100644 --- a/chain/exchange/types/errors.go +++ b/chain/exchange/types/errors.go @@ -5,61 +5,58 @@ import ( ) var ( - ErrOrderInvalid = sdkerrors.Register(ModuleName, 1, "failed to validate order") - ErrSpotMarketNotFound = sdkerrors.Register(ModuleName, 2, "spot market not found") - ErrSpotMarketExists = sdkerrors.Register(ModuleName, 3, "spot market exists") - ErrBadField = sdkerrors.Register(ModuleName, 4, "struct field error") - ErrMarketInvalid = sdkerrors.Register(ModuleName, 5, "failed to validate market") - ErrInsufficientDeposit = sdkerrors.Register(ModuleName, 6, "subaccount has insufficient deposits") - ErrUnrecognizedOrderType = sdkerrors.Register(ModuleName, 7, "unrecognized order type") - ErrInsufficientPositionQuantity = sdkerrors.Register(ModuleName, 8, "position quantity insufficient for order") - ErrOrderHashInvalid = sdkerrors.Register(ModuleName, 9, "order hash is not valid") - ErrBadSubaccountID = sdkerrors.Register(ModuleName, 10, "subaccount id is not valid") - ErrInvalidTicker = sdkerrors.Register(ModuleName, 11, "invalid ticker") - ErrInvalidBaseDenom = sdkerrors.Register(ModuleName, 12, "invalid base denom") - ErrInvalidQuoteDenom = sdkerrors.Register(ModuleName, 13, "invalid quote denom") - ErrInvalidOracle = sdkerrors.Register(ModuleName, 14, "invalid oracle") - ErrInvalidExpiry = sdkerrors.Register(ModuleName, 15, "invalid expiry") - ErrInvalidPrice = sdkerrors.Register(ModuleName, 16, "invalid price") - ErrInvalidQuantity = sdkerrors.Register(ModuleName, 17, "invalid quantity") - ErrUnsupportedOracleType = sdkerrors.Register(ModuleName, 18, "unsupported oracle type") - ErrOrderDoesntExist = sdkerrors.Register(ModuleName, 19, "order doesnt exist") - ErrOrderbookFillInvalid = sdkerrors.Register(ModuleName, 20, "spot limit orderbook fill invalid") - ErrPerpetualMarketExists = sdkerrors.Register(ModuleName, 21, "perpetual market exists") - ErrExpiryFuturesMarketExists = sdkerrors.Register(ModuleName, 22, "expiry futures market exists") - ErrExpiryFuturesMarketExpired = sdkerrors.Register(ModuleName, 23, "expiry futures market expired") - ErrNoLiquidity = sdkerrors.Register(ModuleName, 24, "no liquidity on the orderbook!") - ErrSlippageExceedsWorstPrice = sdkerrors.Register(ModuleName, 25, "Orderbook liquidity cannot satisfy current worst price") - ErrInsufficientOrderMargin = sdkerrors.Register(ModuleName, 26, "Order has insufficient margin") - ErrDerivativeMarketNotFound = sdkerrors.Register(ModuleName, 27, "Derivative market not found") - ErrPositionNotFound = sdkerrors.Register(ModuleName, 28, "Position not found") - ErrInvalidReduceOnlyPositionDirection = sdkerrors.Register(ModuleName, 29, "Position direction does not oppose the reduce-only order") - ErrPriceSurpassesBankruptcyPrice = sdkerrors.Register(ModuleName, 30, "Price Surpasses Bankruptcy Price") - ErrPositionNotLiquidable = sdkerrors.Register(ModuleName, 31, "Position not liquidable") - ErrInvalidTriggerPrice = sdkerrors.Register(ModuleName, 32, "invalid trigger price") - ErrInvalidOracleType = sdkerrors.Register(ModuleName, 33, "invalid oracle type") - ErrInvalidPriceTickSize = sdkerrors.Register(ModuleName, 34, "invalid minimum price tick size") - ErrInvalidQuantityTickSize = sdkerrors.Register(ModuleName, 35, "invalid minimum quantity tick size") - ErrInvalidMargin = sdkerrors.Register(ModuleName, 36, "invalid minimum order margin") - ErrExceedsOrderSideCount = sdkerrors.Register(ModuleName, 37, "Exceeds order side count") - ErrDerivativeMarketOrderAlreadyExists = sdkerrors.Register(ModuleName, 38, "Subaccount cannot place a market order when a market order or limit order in the same market was already placed in same block") - ErrDerivativeLimitOrderAlreadyExists = sdkerrors.Register(ModuleName, 39, "Subaccount cannot place a limit order when a market order in the same market was already placed in the same block") - ErrMarketLaunchProposalAlreadyExists = sdkerrors.Register(ModuleName, 40, "An equivalent market launch proposal already exists.") - ErrInvalidMarketStatus = sdkerrors.Register(ModuleName, 41, "Invalid Market Status") - ErrSameDenoms = sdkerrors.Register(ModuleName, 42, "base denom cannot be same with quote denom") - ErrSameOracles = sdkerrors.Register(ModuleName, 43, "oracle base cannot be same with oracle quote") - ErrFeeRatesRelation = sdkerrors.Register(ModuleName, 44, "MakerFeeRate does not match TakerFeeRate requirements") - ErrMarginsRelation = sdkerrors.Register(ModuleName, 45, "MaintenanceMarginRatio cannot be greater than InitialMarginRatio") - ErrExceedsMaxOracleScaleFactor = sdkerrors.Register(ModuleName, 46, "OracleScaleFactor cannot be greater than MaxOracleScaleFactor") - ErrSpotExchangeNotEnabled = sdkerrors.Register(ModuleName, 47, "Spot exchange is not enabled yet") - ErrDerivativesExchangeNotEnabled = sdkerrors.Register(ModuleName, 48, "Derivatives exchange is not enabled yet") - ErrBandIBCOraclePriceDeltaExceedsThreshold = sdkerrors.Register(ModuleName, 49, "Band IBC oracle price delta exceeds threshold") - ErrInvalidHourlyInterestRate = sdkerrors.Register(ModuleName, 50, "Invalid hourly interest rate") - ErrInvalidHourlyFundingRateCap = sdkerrors.Register(ModuleName, 51, "Invalid hourly funding rate cap") - ErrInvalidMarketFundingParamUpdate = sdkerrors.Register(ModuleName, 52, "Only perpetual markets can update funding parameters") - ErrInvalidLiquidityMiningMarket = sdkerrors.Register(ModuleName, 53, "Invalid liquidity mining market") - ErrInvalidLiquidityMiningMarketWeights = sdkerrors.Register(ModuleName, 54, "Invalid liquidity mining market weights") - ErrInvalidTradingRewardCampaign = sdkerrors.Register(ModuleName, 55, "Invalid trading reward campaign") - ErrInvalidLiquidityMiningReward = sdkerrors.Register(ModuleName, 56, "Invalid liquidity mining reward") - ErrInvalidFeeDiscountSchedule = sdkerrors.Register(ModuleName, 57, "Invalid fee discount schedule") + ErrOrderInvalid = sdkerrors.Register(ModuleName, 1, "failed to validate order") + ErrSpotMarketNotFound = sdkerrors.Register(ModuleName, 2, "spot market not found") + ErrSpotMarketExists = sdkerrors.Register(ModuleName, 3, "spot market exists") + ErrBadField = sdkerrors.Register(ModuleName, 4, "struct field error") + ErrMarketInvalid = sdkerrors.Register(ModuleName, 5, "failed to validate market") + ErrInsufficientDeposit = sdkerrors.Register(ModuleName, 6, "subaccount has insufficient deposits") + ErrUnrecognizedOrderType = sdkerrors.Register(ModuleName, 7, "unrecognized order type") + ErrInsufficientPositionQuantity = sdkerrors.Register(ModuleName, 8, "position quantity insufficient for order") + ErrOrderHashInvalid = sdkerrors.Register(ModuleName, 9, "order hash is not valid") + ErrBadSubaccountID = sdkerrors.Register(ModuleName, 10, "subaccount id is not valid") + ErrInvalidTicker = sdkerrors.Register(ModuleName, 11, "invalid ticker") + ErrInvalidBaseDenom = sdkerrors.Register(ModuleName, 12, "invalid base denom") + ErrInvalidQuoteDenom = sdkerrors.Register(ModuleName, 13, "invalid quote denom") + ErrInvalidOracle = sdkerrors.Register(ModuleName, 14, "invalid oracle") + ErrInvalidExpiry = sdkerrors.Register(ModuleName, 15, "invalid expiry") + ErrInvalidPrice = sdkerrors.Register(ModuleName, 16, "invalid price") + ErrInvalidQuantity = sdkerrors.Register(ModuleName, 17, "invalid quantity") + ErrUnsupportedOracleType = sdkerrors.Register(ModuleName, 18, "unsupported oracle type") + ErrOrderDoesntExist = sdkerrors.Register(ModuleName, 19, "order doesnt exist") + ErrOrderbookFillInvalid = sdkerrors.Register(ModuleName, 20, "spot limit orderbook fill invalid") + ErrPerpetualMarketExists = sdkerrors.Register(ModuleName, 21, "perpetual market exists") + ErrExpiryFuturesMarketExists = sdkerrors.Register(ModuleName, 22, "expiry futures market exists") + ErrExpiryFuturesMarketExpired = sdkerrors.Register(ModuleName, 23, "expiry futures market expired") + ErrNoLiquidity = sdkerrors.Register(ModuleName, 24, "no liquidity on the orderbook!") + ErrSlippageExceedsWorstPrice = sdkerrors.Register(ModuleName, 25, "Orderbook liquidity cannot satisfy current worst price") + ErrInsufficientOrderMargin = sdkerrors.Register(ModuleName, 26, "Order has insufficient margin") + ErrDerivativeMarketNotFound = sdkerrors.Register(ModuleName, 27, "Derivative market not found") + ErrPositionNotFound = sdkerrors.Register(ModuleName, 28, "Position not found") + ErrInvalidReduceOnlyPositionDirection = sdkerrors.Register(ModuleName, 29, "Position direction does not oppose the reduce-only order") + ErrPriceSurpassesBankruptcyPrice = sdkerrors.Register(ModuleName, 30, "Price Surpasses Bankruptcy Price") + ErrPositionNotLiquidable = sdkerrors.Register(ModuleName, 31, "Position not liquidable") + ErrInvalidTriggerPrice = sdkerrors.Register(ModuleName, 32, "invalid trigger price") + ErrInvalidOracleType = sdkerrors.Register(ModuleName, 33, "invalid oracle type") + ErrInvalidPriceTickSize = sdkerrors.Register(ModuleName, 34, "invalid minimum price tick size") + ErrInvalidQuantityTickSize = sdkerrors.Register(ModuleName, 35, "invalid minimum quantity tick size") + ErrInvalidMargin = sdkerrors.Register(ModuleName, 36, "invalid minimum order margin") + ErrExceedsOrderSideCount = sdkerrors.Register(ModuleName, 37, "Exceeds order side count") + ErrDerivativeMarketOrderAlreadyExists = sdkerrors.Register(ModuleName, 38, "Subaccount cannot place a market order when a market order or limit order in the same market was already placed in same block") + ErrDerivativeLimitOrderAlreadyExists = sdkerrors.Register(ModuleName, 39, "Subaccount cannot place a limit order when a market order in the same market was already placed in the same block") + ErrMarketLaunchProposalAlreadyExists = sdkerrors.Register(ModuleName, 40, "An equivalent market launch proposal already exists.") + ErrInvalidMarketStatus = sdkerrors.Register(ModuleName, 41, "Invalid Market Status") + ErrSameDenoms = sdkerrors.Register(ModuleName, 42, "base denom cannot be same with quote denom") + ErrSameOracles = sdkerrors.Register(ModuleName, 43, "oracle base cannot be same with oracle quote") + ErrFeeRatesRelation = sdkerrors.Register(ModuleName, 44, "MakerFeeRate does not match TakerFeeRate requirements") + ErrMarginsRelation = sdkerrors.Register(ModuleName, 45, "MaintenanceMarginRatio cannot be greater than InitialMarginRatio") + ErrExceedsMaxOracleScaleFactor = sdkerrors.Register(ModuleName, 46, "OracleScaleFactor cannot be greater than MaxOracleScaleFactor") + ErrSpotExchangeNotEnabled = sdkerrors.Register(ModuleName, 47, "Spot exchange is not enabled yet") + ErrDerivativesExchangeNotEnabled = sdkerrors.Register(ModuleName, 48, "Derivatives exchange is not enabled yet") + ErrOraclePriceDeltaExceedsThreshold = sdkerrors.Register(ModuleName, 49, "Oracle price delta exceeds threshold") + ErrInvalidHourlyInterestRate = sdkerrors.Register(ModuleName, 50, "Invalid hourly interest rate") + ErrInvalidHourlyFundingRateCap = sdkerrors.Register(ModuleName, 51, "Invalid hourly funding rate cap") + ErrInvalidMarketFundingParamUpdate = sdkerrors.Register(ModuleName, 52, "Only perpetual markets can update funding parameters") + ErrInvalidTradingRewardCampaign = sdkerrors.Register(ModuleName, 53, "Invalid trading reward campaign") + ErrInvalidFeeDiscountSchedule = sdkerrors.Register(ModuleName, 54, "Invalid fee discount schedule") ) diff --git a/chain/exchange/types/expected_keepers.go b/chain/exchange/types/expected_keepers.go index 79bf52ec..bbcd445b 100644 --- a/chain/exchange/types/expected_keepers.go +++ b/chain/exchange/types/expected_keepers.go @@ -39,8 +39,8 @@ type InsuranceKeeper interface { DepositIntoInsuranceFund(ctx sdk.Context, marketID common.Hash, amount sdk.Int) error // WithdrawFromInsuranceFund decrements the insurance fund balance by amount and sends WithdrawFromInsuranceFund(ctx sdk.Context, marketID common.Hash, amount sdk.Int) error - // UpdateInsuranceFundBandOracle updates the insurance fund's oracle from Band to Band IBC - UpdateInsuranceFundBandOracle(ctx sdk.Context, marketID common.Hash) error + // UpdateInsuranceFundOracleParams updates the insurance fund's oracle parameters + UpdateInsuranceFundOracleParams(ctx sdk.Context, marketID common.Hash, oracleParams *OracleParams) error } type GovKeeper interface { diff --git a/chain/exchange/types/fee_discounts.go b/chain/exchange/types/fee_discounts.go index 397b3cb4..42611670 100644 --- a/chain/exchange/types/fee_discounts.go +++ b/chain/exchange/types/fee_discounts.go @@ -13,7 +13,7 @@ func (s *FeeDiscountSchedule) CalculateFeeDiscountTier( stakedAmount sdk.Int, tradingFeePaid sdk.Dec, ) ( - discountRates *FeeDiscountRates, + feeDiscountRates *FeeDiscountRates, tierLevel uint64, ) { highestTierLevel := 0 @@ -29,18 +29,18 @@ func (s *FeeDiscountSchedule) CalculateFeeDiscountTier( tierLevel = uint64(highestTierLevel) if tierLevel == 0 { - discountRates = &FeeDiscountRates{ + feeDiscountRates = &FeeDiscountRates{ MakerDiscountRate: sdk.ZeroDec(), TakerDiscountRate: sdk.ZeroDec(), } } else { - discountRates = &FeeDiscountRates{ + feeDiscountRates = &FeeDiscountRates{ MakerDiscountRate: s.TierInfos[highestTierLevel-1].MakerDiscountRate, TakerDiscountRate: s.TierInfos[highestTierLevel-1].TakerDiscountRate, } } - return discountRates, tierLevel + return feeDiscountRates, tierLevel } func (s *FeeDiscountSchedule) TierOneRequirements() ( diff --git a/chain/exchange/types/key.go b/chain/exchange/types/key.go index 634d16be..5fb8db37 100644 --- a/chain/exchange/types/key.go +++ b/chain/exchange/types/key.go @@ -282,10 +282,7 @@ const TrueByte byte = byte(1) const FalseByte byte = byte(0) func IsTrueByte(bz []byte) bool { - if bytes.Equal(bz, []byte{TrueByte}) { - return true - } - return false + return bytes.Equal(bz, []byte{TrueByte}) } // MarketDirectionPrefix allows to obtain prefix against a particular marketID, direction diff --git a/chain/exchange/types/msgs.go b/chain/exchange/types/msgs.go index 8c2b1c5b..b6804567 100644 --- a/chain/exchange/types/msgs.go +++ b/chain/exchange/types/msgs.go @@ -5,8 +5,6 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - - "github.com/InjectiveLabs/sdk-go/chain/oracle/types" ) const RouterKey = ModuleName @@ -279,24 +277,9 @@ func (msg MsgInstantPerpetualMarketLaunch) ValidateBasic() error { if msg.QuoteDenom == "" { return sdkerrors.Wrap(ErrInvalidQuoteDenom, "quote denom should not be empty") } - if msg.OracleBase == "" { - return sdkerrors.Wrap(ErrInvalidOracle, "oracle base should not be empty") - } - if msg.OracleQuote == "" { - return sdkerrors.Wrap(ErrInvalidOracle, "oracle quote should not be empty") - } - if msg.OracleBase == msg.OracleQuote { - return ErrSameOracles - } - switch msg.OracleType { - case types.OracleType_Band, types.OracleType_PriceFeed, types.OracleType_Coinbase, types.OracleType_Chainlink, types.OracleType_Razor, - types.OracleType_Dia, types.OracleType_API3, types.OracleType_Uma, types.OracleType_Pyth, types.OracleType_BandIBC: - - default: - return sdkerrors.Wrap(ErrInvalidOracleType, msg.OracleType.String()) - } - if msg.OracleScaleFactor > MaxOracleScaleFactor { - return ErrExceedsMaxOracleScaleFactor + oracleParams := NewOracleParams(msg.OracleBase, msg.OracleQuote, msg.OracleScaleFactor, msg.OracleType) + if err := oracleParams.ValidateBasic(); err != nil { + return err } if err := ValidateFee(msg.MakerFeeRate); err != nil { return err @@ -360,24 +343,10 @@ func (msg MsgInstantExpiryFuturesMarketLaunch) ValidateBasic() error { if msg.QuoteDenom == "" { return sdkerrors.Wrap(ErrInvalidQuoteDenom, "quote denom should not be empty") } - if msg.OracleBase == "" { - return sdkerrors.Wrap(ErrInvalidOracle, "oracle base should not be empty") - } - if msg.OracleQuote == "" { - return sdkerrors.Wrap(ErrInvalidOracle, "oracle quote should not be empty") - } - if msg.OracleBase == msg.OracleQuote { - return ErrSameOracles - } - switch msg.OracleType { - case types.OracleType_Band, types.OracleType_PriceFeed, types.OracleType_Coinbase, types.OracleType_Chainlink, types.OracleType_Razor, - types.OracleType_Dia, types.OracleType_API3, types.OracleType_Uma, types.OracleType_Pyth, types.OracleType_BandIBC: - default: - return sdkerrors.Wrap(ErrInvalidOracleType, msg.OracleType.String()) - } - if msg.OracleScaleFactor > MaxOracleScaleFactor { - return ErrExceedsMaxOracleScaleFactor + oracleParams := NewOracleParams(msg.OracleBase, msg.OracleQuote, msg.OracleScaleFactor, msg.OracleType) + if err := oracleParams.ValidateBasic(); err != nil { + return err } if msg.Expiry <= 0 { return sdkerrors.Wrap(ErrInvalidExpiry, "expiry should not be empty") diff --git a/chain/exchange/types/positions.go b/chain/exchange/types/positions.go index eefafc00..6c94637b 100644 --- a/chain/exchange/types/positions.go +++ b/chain/exchange/types/positions.go @@ -32,7 +32,7 @@ func NewPosition(isLong bool, cumulativeFundingEntry sdk.Dec) *Position { // Formula for adjustment: // newPayoutFromPnl = oldPayoutFromPnl * (1 - missingFundsRate) // => Entry price adjustment for buys -// (newEntryPrice - settlementPrice) * quantity = (entryPrice - settlementPrice) * quantity * (1- missingFundsRate) +// (newEntryPrice - settlementPrice) * quantity = (entryPrice - settlementPrice) * quantity * (1 - missingFundsRate) // newEntryPrice = entryPrice - entryPrice * haircutPercentage + settlementPrice * haircutPercentage // => Entry price adjustment for sells // (settlementPrice - newEntryPrice) * quantity = (settlementPrice - entryPrice) * quantity * (1 - missingFundsRate) diff --git a/chain/exchange/types/proposal.go b/chain/exchange/types/proposal.go index 0e981922..68bdbb67 100644 --- a/chain/exchange/types/proposal.go +++ b/chain/exchange/types/proposal.go @@ -12,21 +12,23 @@ import ( // constants const ( - ProposalTypeExchangeEnable string = "ProposalTypeExchangeEnable" - ProposalTypeSpotMarketParamUpdate string = "ProposalTypeSpotMarketParamUpdate" - ProposalTypeSpotMarketLaunch string = "ProposalTypeSpotMarketLaunch" - ProposalTypePerpetualMarketLaunch string = "ProposalTypePerpetualMarketLaunch" - ProposalTypeExpiryFuturesMarketLaunch string = "ProposalTypeExpiryFuturesMarketLaunch" - ProposalTypeDerivativeMarketParamUpdate string = "ProposalTypeDerivativeMarketParamUpdate" - ProposalTypeDerivativeMarketBandOraclePromotion string = "ProposalTypeDerivativeMarketBandOraclePromotion" - ProposalTypeTradingRewardCampaign string = "ProposalTypeTradingRewardCampaign" - ProposalTypeTradingRewardCampaignUpdate string = "ProposalTypeTradingRewardCampaignUpdateProposal" - ProposalTypeFeeDiscountProposal string = "ProposalTypeFeeDiscountProposal" + ProposalTypeExchangeEnable string = "ProposalTypeExchangeEnable" + ProposalTypeBatchExchangeModification string = "ProposalTypeBatchExchangeModification" + ProposalTypeSpotMarketParamUpdate string = "ProposalTypeSpotMarketParamUpdate" + ProposalTypeSpotMarketLaunch string = "ProposalTypeSpotMarketLaunch" + ProposalTypePerpetualMarketLaunch string = "ProposalTypePerpetualMarketLaunch" + ProposalTypeExpiryFuturesMarketLaunch string = "ProposalTypeExpiryFuturesMarketLaunch" + ProposalTypeDerivativeMarketParamUpdate string = "ProposalTypeDerivativeMarketParamUpdate" + ProposalTypeTradingRewardCampaign string = "ProposalTypeTradingRewardCampaign" + ProposalTypeTradingRewardCampaignUpdate string = "ProposalTypeTradingRewardCampaignUpdateProposal" + ProposalTypeFeeDiscountProposal string = "ProposalTypeFeeDiscountProposal" ) func init() { gov.RegisterProposalType(ProposalTypeExchangeEnable) gov.RegisterProposalTypeCodec(&ExchangeEnableProposal{}, "injective/ExchangeEnableProposal") + gov.RegisterProposalType(ProposalTypeBatchExchangeModification) + gov.RegisterProposalTypeCodec(&BatchExchangeModificationProposal{}, "injective/BatchExchangeModificationProposal") gov.RegisterProposalType(ProposalTypeSpotMarketParamUpdate) gov.RegisterProposalTypeCodec(&SpotMarketParamUpdateProposal{}, "injective/SpotMarketParamUpdateProposal") gov.RegisterProposalType(ProposalTypeSpotMarketLaunch) @@ -37,8 +39,6 @@ func init() { gov.RegisterProposalTypeCodec(&ExpiryFuturesMarketLaunchProposal{}, "injective/ExpiryFuturesMarketLaunchProposal") gov.RegisterProposalType(ProposalTypeDerivativeMarketParamUpdate) gov.RegisterProposalTypeCodec(&DerivativeMarketParamUpdateProposal{}, "injective/DerivativeMarketParamUpdateProposal") - gov.RegisterProposalType(ProposalTypeDerivativeMarketBandOraclePromotion) - gov.RegisterProposalTypeCodec(&DerivativeMarketBandOraclePromotionProposal{}, "injective/DerivativeMarketBandOraclePromotionProposal") gov.RegisterProposalType(ProposalTypeTradingRewardCampaign) gov.RegisterProposalTypeCodec(&TradingRewardCampaignLaunchProposal{}, "injective/TradingRewardCampaignLaunchProposal") gov.RegisterProposalType(ProposalTypeTradingRewardCampaignUpdate) @@ -47,6 +47,30 @@ func init() { gov.RegisterProposalTypeCodec(&FeeDiscountProposal{}, "injective/FeeDiscountProposal") } +func SafeIsPositiveInt(v sdk.Int) bool { + if v.IsNil() { + return false + } + + return v.IsPositive() +} + +func SafeIsPositiveDec(v sdk.Dec) bool { + if v.IsNil() { + return false + } + + return v.IsPositive() +} + +func IsZeroOrNilInt(v sdk.Int) bool { + return v.IsNil() || v.IsZero() +} + +func IsZeroOrNilDec(v sdk.Dec) bool { + return v.IsNil() || v.IsZero() +} + // Implements Proposal Interface var _ gov.Content = &ExchangeEnableProposal{} @@ -79,6 +103,68 @@ func (p *ExchangeEnableProposal) ValidateBasic() error { return gov.ValidateAbstract(p) } +// Implements Proposal Interface +var _ gov.Content = &BatchExchangeModificationProposal{} + +// GetTitle returns the title of this proposal. +func (p *BatchExchangeModificationProposal) GetTitle() string { + return p.Title +} + +// GetDescription returns the description of this proposal. +func (p *BatchExchangeModificationProposal) GetDescription() string { + return p.Description +} + +// ProposalRoute returns router key of this proposal. +func (p *BatchExchangeModificationProposal) ProposalRoute() string { return RouterKey } + +// ProposalType returns proposal type of this proposal. +func (p *BatchExchangeModificationProposal) ProposalType() string { + return ProposalTypeBatchExchangeModification +} + +// ValidateBasic returns ValidateBasic result of this proposal. +func (p *BatchExchangeModificationProposal) ValidateBasic() error { + for _, proposal := range p.SpotMarketParamUpdateProposals { + if err := proposal.ValidateBasic(); err != nil { + return err + } + } + + for _, proposal := range p.DerivativeMarketParamUpdateProposals { + if err := proposal.ValidateBasic(); err != nil { + return err + } + } + + for _, proposal := range p.SpotMarketLaunchProposals { + if err := proposal.ValidateBasic(); err != nil { + return err + } + } + + for _, proposal := range p.PerpetualMarketLaunchProposals { + if err := proposal.ValidateBasic(); err != nil { + return err + } + } + + for _, proposal := range p.ExpiryFuturesMarketLaunchProposals { + if err := proposal.ValidateBasic(); err != nil { + return err + } + } + + if p.TradingRewardCampaignUpdateProposal != nil { + if err := p.TradingRewardCampaignUpdateProposal.ValidateBasic(); err != nil { + return err + } + } + + return gov.ValidateAbstract(p) +} + // NewSpotMarketParamUpdateProposal returns new instance of SpotMarketParamUpdateProposal func NewSpotMarketParamUpdateProposal(title, description string, marketID common.Hash, makerFeeRate, takerFeeRate, relayerFeeShareRate, minPriceTickSize, minQuantityTickSize *sdk.Dec, status MarketStatus) *SpotMarketParamUpdateProposal { @@ -169,9 +255,27 @@ func (p *SpotMarketParamUpdateProposal) ValidateBasic() error { } // NewSpotMarketLaunchProposal returns new instance of SpotMarketLaunchProposal -func NewSpotMarketLaunchProposal(title, description, ticker, baseDenom, quoteDenom string, minPriceTickSize, minQuantityTickSize sdk.Dec) *SpotMarketLaunchProposal { +func NewSpotMarketLaunchProposal( + title string, + description string, + ticker string, + baseDenom string, + quoteDenom string, + minPriceTickSize sdk.Dec, + minQuantityTickSize sdk.Dec, + makerFeeRate *sdk.Dec, + takerFeeRate *sdk.Dec, +) *SpotMarketLaunchProposal { return &SpotMarketLaunchProposal{ - title, description, ticker, baseDenom, quoteDenom, minPriceTickSize, minQuantityTickSize, + Title: title, + Description: description, + Ticker: ticker, + BaseDenom: baseDenom, + QuoteDenom: quoteDenom, + MinPriceTickSize: minPriceTickSize, + MinQuantityTickSize: minQuantityTickSize, + MakerFeeRate: makerFeeRate, + TakerFeeRate: takerFeeRate, } } @@ -217,6 +321,29 @@ func (p *SpotMarketLaunchProposal) ValidateBasic() error { if err := ValidateTickSize(p.MinQuantityTickSize); err != nil { return sdkerrors.Wrap(ErrInvalidQuantityTickSize, err.Error()) } + + if p.MakerFeeRate != nil { + if err := ValidateMakerFee(*p.MakerFeeRate); err != nil { + return err + } + } + + if p.TakerFeeRate != nil { + if err := ValidateFee(*p.TakerFeeRate); err != nil { + return err + } + } + + if (p.MakerFeeRate == nil && p.TakerFeeRate != nil) || (p.MakerFeeRate != nil && p.TakerFeeRate == nil) { + return sdkerrors.Wrap(ErrFeeRatesRelation, "maker and taker fee rate must either be both nil or both specified") + } + + if p.MakerFeeRate != nil && p.TakerFeeRate != nil { + if p.MakerFeeRate.GT(*p.TakerFeeRate) { + return ErrFeeRatesRelation + } + } + return gov.ValidateAbstract(p) } @@ -226,22 +353,23 @@ func NewDerivativeMarketParamUpdateProposal( initialMarginRatio, maintenanceMarginRatio, makerFeeRate, takerFeeRate, relayerFeeShareRate, minPriceTickSize, minQuantityTickSize *sdk.Dec, hourlyInterestRate, hourlyFundingRateCap *sdk.Dec, - status MarketStatus, + status MarketStatus, oracleParams *OracleParams, ) *DerivativeMarketParamUpdateProposal { return &DerivativeMarketParamUpdateProposal{ - title, - description, - marketID, - initialMarginRatio, - maintenanceMarginRatio, - makerFeeRate, - takerFeeRate, - relayerFeeShareRate, - minPriceTickSize, - minQuantityTickSize, - hourlyInterestRate, - hourlyFundingRateCap, - status, + Title: title, + Description: description, + MarketId: marketID, + InitialMarginRatio: initialMarginRatio, + MaintenanceMarginRatio: maintenanceMarginRatio, + MakerFeeRate: makerFeeRate, + TakerFeeRate: takerFeeRate, + RelayerFeeShareRate: relayerFeeShareRate, + MinPriceTickSize: minPriceTickSize, + MinQuantityTickSize: minQuantityTickSize, + HourlyInterestRate: hourlyInterestRate, + HourlyFundingRateCap: hourlyFundingRateCap, + Status: status, + OracleParams: oracleParams, } } @@ -280,7 +408,8 @@ func (p *DerivativeMarketParamUpdateProposal) ValidateBasic() error { p.MaintenanceMarginRatio == nil && p.HourlyInterestRate == nil && p.HourlyFundingRateCap == nil && - p.Status == MarketStatus_Unspecified { + p.Status == MarketStatus_Unspecified && + p.OracleParams == nil { return sdkerrors.Wrap(gov.ErrInvalidProposalContent, "At least one field should not be nil") } @@ -348,9 +477,54 @@ func (p *DerivativeMarketParamUpdateProposal) ValidateBasic() error { return sdkerrors.Wrap(ErrInvalidMarketStatus, p.Status.String()) } + if p.OracleParams != nil { + if err := p.OracleParams.ValidateBasic(); err != nil { + return err + } + } + return gov.ValidateAbstract(p) } +func NewOracleParams( + oracleBase string, + oracleQuote string, + oracleScaleFactor uint32, + oracleType oracletypes.OracleType, +) *OracleParams { + return &OracleParams{ + OracleBase: oracleBase, + OracleQuote: oracleQuote, + OracleScaleFactor: oracleScaleFactor, + OracleType: oracleType, + } +} + +func (p *OracleParams) ValidateBasic() error { + if p.OracleBase == "" { + return sdkerrors.Wrap(ErrInvalidOracle, "oracle base should not be empty") + } + if p.OracleQuote == "" { + return sdkerrors.Wrap(ErrInvalidOracle, "oracle quote should not be empty") + } + if p.OracleBase == p.OracleQuote { + return ErrSameOracles + } + switch p.OracleType { + case oracletypes.OracleType_Band, oracletypes.OracleType_PriceFeed, oracletypes.OracleType_Coinbase, oracletypes.OracleType_Chainlink, oracletypes.OracleType_Razor, + oracletypes.OracleType_Dia, oracletypes.OracleType_API3, oracletypes.OracleType_Uma, oracletypes.OracleType_Pyth, oracletypes.OracleType_BandIBC: + + default: + return sdkerrors.Wrap(ErrInvalidOracleType, p.OracleType.String()) + } + + if p.OracleScaleFactor > MaxOracleScaleFactor { + return ErrExceedsMaxOracleScaleFactor + } + + return nil +} + // NewPerpetualMarketLaunchProposal returns new instance of PerpetualMarketLaunchProposal func NewPerpetualMarketLaunchProposal( title, description, ticker, quoteDenom, @@ -404,24 +578,10 @@ func (p *PerpetualMarketLaunchProposal) ValidateBasic() error { if p.QuoteDenom == "" { return sdkerrors.Wrap(ErrInvalidQuoteDenom, "quote denom should not be empty") } - if p.OracleBase == "" { - return sdkerrors.Wrap(ErrInvalidOracle, "oracle base should not be empty") - } - if p.OracleQuote == "" { - return sdkerrors.Wrap(ErrInvalidOracle, "oracle quote should not be empty") - } - if p.OracleBase == p.OracleQuote { - return ErrSameOracles - } - switch p.OracleType { - case oracletypes.OracleType_Band, oracletypes.OracleType_PriceFeed, oracletypes.OracleType_Coinbase, oracletypes.OracleType_Chainlink, oracletypes.OracleType_Razor, - oracletypes.OracleType_Dia, oracletypes.OracleType_API3, oracletypes.OracleType_Uma, oracletypes.OracleType_Pyth, oracletypes.OracleType_BandIBC: - default: - return sdkerrors.Wrap(ErrInvalidOracleType, p.OracleType.String()) - } - if p.OracleScaleFactor > MaxOracleScaleFactor { - return ErrExceedsMaxOracleScaleFactor + oracleParams := NewOracleParams(p.OracleBase, p.OracleQuote, p.OracleScaleFactor, p.OracleType) + if err := oracleParams.ValidateBasic(); err != nil { + return err } if err := ValidateFee(p.MakerFeeRate); err != nil { return err @@ -506,24 +666,10 @@ func (p *ExpiryFuturesMarketLaunchProposal) ValidateBasic() error { if p.QuoteDenom == "" { return sdkerrors.Wrap(ErrInvalidQuoteDenom, "quote denom should not be empty") } - if p.OracleBase == "" { - return sdkerrors.Wrap(ErrInvalidOracle, "oracle base should not be empty") - } - if p.OracleQuote == "" { - return sdkerrors.Wrap(ErrInvalidOracle, "oracle quote should not be empty") - } - if p.OracleBase == p.OracleQuote { - return ErrSameOracles - } - switch p.OracleType { - case oracletypes.OracleType_Band, oracletypes.OracleType_PriceFeed, oracletypes.OracleType_Coinbase, oracletypes.OracleType_Chainlink, oracletypes.OracleType_Razor, - oracletypes.OracleType_Dia, oracletypes.OracleType_API3, oracletypes.OracleType_Uma, oracletypes.OracleType_Pyth, oracletypes.OracleType_BandIBC: - default: - return sdkerrors.Wrap(ErrInvalidOracleType, p.OracleType.String()) - } - if p.OracleScaleFactor > MaxOracleScaleFactor { - return ErrExceedsMaxOracleScaleFactor + oracleParams := NewOracleParams(p.OracleBase, p.OracleQuote, p.OracleScaleFactor, p.OracleType) + if err := oracleParams.ValidateBasic(); err != nil { + return err } if p.Expiry <= 0 { return sdkerrors.Wrap(ErrInvalidExpiry, "expiry should not be empty") @@ -557,45 +703,6 @@ func (p *ExpiryFuturesMarketLaunchProposal) ValidateBasic() error { return gov.ValidateAbstract(p) } -// NewDerivativeMarketBandOraclePromotionProposal returns new instance of DerivativeMarketBandOraclePromotionProposal -func NewDerivativeMarketBandOraclePromotionProposal(title, description string, marketID string) *DerivativeMarketBandOraclePromotionProposal { - return &DerivativeMarketBandOraclePromotionProposal{ - title, - description, - marketID, - } -} - -// Implements Proposal Interface -var _ gov.Content = &DerivativeMarketBandOraclePromotionProposal{} - -// GetTitle returns the title of this proposal -func (p *DerivativeMarketBandOraclePromotionProposal) GetTitle() string { - return p.Title -} - -// GetDescription returns the description of this proposal -func (p *DerivativeMarketBandOraclePromotionProposal) GetDescription() string { - return p.Description -} - -// ProposalRoute returns router key of this proposal. -func (p *DerivativeMarketBandOraclePromotionProposal) ProposalRoute() string { return RouterKey } - -// ProposalType returns proposal type of this proposal. -func (p *DerivativeMarketBandOraclePromotionProposal) ProposalType() string { - return ProposalTypeDerivativeMarketBandOraclePromotion -} - -// ValidateBasic returns ValidateBasic result of this proposal. -func (p *DerivativeMarketBandOraclePromotionProposal) ValidateBasic() error { - if p.MarketId == "" { - return sdkerrors.Wrap(ErrMarketInvalid, p.MarketId) - } - - return gov.ValidateAbstract(p) -} - // NewTradingRewardCampaignUpdateProposal returns new instance of TradingRewardCampaignLaunchProposal func NewTradingRewardCampaignUpdateProposal( title, description string, @@ -753,29 +860,29 @@ func (t *TradingRewardCampaignBoostInfo) ValidateBasic() error { } for _, multiplier := range t.SpotMarketMultipliers { - if multiplier.MakerPointsMultiplier.IsZero() { - return sdkerrors.Wrap(ErrInvalidTradingRewardCampaign, "spot market maker multiplier cannot be zero") + if IsZeroOrNilDec(multiplier.MakerPointsMultiplier) { + return sdkerrors.Wrap(ErrInvalidTradingRewardCampaign, "spot market maker multiplier cannot be zero or nil") } - if multiplier.TakerPointsMultiplier.IsZero() { - return sdkerrors.Wrap(ErrInvalidTradingRewardCampaign, "spot market maker multiplier cannot be zero") + if IsZeroOrNilDec(multiplier.TakerPointsMultiplier) { + return sdkerrors.Wrap(ErrInvalidTradingRewardCampaign, "spot market maker multiplier cannot be zero or nil") } - if multiplier.TakerPointsMultiplier.IsNegative() { + if !SafeIsPositiveDec(multiplier.TakerPointsMultiplier) { return sdkerrors.Wrap(ErrInvalidTradingRewardCampaign, "spot market maker multiplier cannot be negative") } } for _, multiplier := range t.DerivativeMarketMultipliers { - if multiplier.MakerPointsMultiplier.IsZero() { - return sdkerrors.Wrap(ErrInvalidTradingRewardCampaign, "derivative market maker multiplier cannot be zero") + if IsZeroOrNilDec(multiplier.MakerPointsMultiplier) { + return sdkerrors.Wrap(ErrInvalidTradingRewardCampaign, "derivative market maker multiplier cannot be zero or nil") } - if multiplier.TakerPointsMultiplier.IsZero() { - return sdkerrors.Wrap(ErrInvalidTradingRewardCampaign, "derivative market maker multiplier cannot be zero") + if IsZeroOrNilDec(multiplier.TakerPointsMultiplier) { + return sdkerrors.Wrap(ErrInvalidTradingRewardCampaign, "derivative market maker multiplier cannot be zero or nil") } - if multiplier.TakerPointsMultiplier.IsNegative() { + if !SafeIsPositiveDec(multiplier.TakerPointsMultiplier) { return sdkerrors.Wrap(ErrInvalidTradingRewardCampaign, "derivative market maker multiplier cannot be negative") } } @@ -832,8 +939,8 @@ func validateCampaignRewardPool(pool *CampaignRewardPool, campaignDurationSecond return 0, sdkerrors.Wrap(sdkerrors.ErrInvalidCoins, epochRewardDenom.String()) } - if epochRewardDenom.Amount.IsZero() { - return 0, sdkerrors.Wrap(ErrInvalidTradingRewardCampaign, "reward pool contains zero reward amount") + if IsZeroOrNilInt(epochRewardDenom.Amount) { + return 0, sdkerrors.Wrap(ErrInvalidTradingRewardCampaign, "reward pool contains zero or nil reward amount") } } @@ -888,6 +995,10 @@ func (p *FeeDiscountProposal) ValidateBasic() error { return sdkerrors.Wrap(ErrInvalidFeeDiscountSchedule, "new fee discount schedule cannot have duplicate quote denoms") } + if HasDuplicates(p.Schedule.DisqualifiedMarketIds) { + return sdkerrors.Wrap(ErrInvalidFeeDiscountSchedule, "new fee discount schedule cannot have duplicate disqualified market ids") + } + if len(p.Schedule.TierInfos) < 1 { return sdkerrors.Wrap(ErrInvalidFeeDiscountSchedule, "new fee discount schedule must have at least one discount tier") } @@ -922,19 +1033,19 @@ func (p *FeeDiscountProposal) ValidateBasic() error { } func (t *FeeDiscountTierInfo) ValidateBasic() error { - if t.MakerDiscountRate.IsNil() || t.MakerDiscountRate.IsNegative() || t.MakerDiscountRate.GT(sdk.OneDec()) { + if !SafeIsPositiveDec(t.MakerDiscountRate) || t.MakerDiscountRate.GT(sdk.OneDec()) { return sdkerrors.Wrap(ErrInvalidFeeDiscountSchedule, "MakerDiscountRate must be between 0 and 1") } - if t.TakerDiscountRate.IsNil() || t.TakerDiscountRate.IsNegative() || t.TakerDiscountRate.GT(sdk.OneDec()) { + if !SafeIsPositiveDec(t.TakerDiscountRate) || t.TakerDiscountRate.GT(sdk.OneDec()) { return sdkerrors.Wrap(ErrInvalidFeeDiscountSchedule, "TakerDiscountRate must be between 0 and 1") } - if t.StakedAmount.IsNil() || t.StakedAmount.IsNegative() { + if !SafeIsPositiveInt(t.StakedAmount) { return sdkerrors.Wrap(ErrInvalidFeeDiscountSchedule, "StakedAmount must be non-negative") } - if t.FeePaidAmount.IsNil() || t.FeePaidAmount.IsNegative() { + if !SafeIsPositiveDec(t.FeePaidAmount) { return sdkerrors.Wrap(ErrInvalidFeeDiscountSchedule, "FeePaidAmount must be non-negative") } return nil diff --git a/chain/exchange/types/query.pb.go b/chain/exchange/types/query.pb.go index f8d2a88b..aea7c042 100644 --- a/chain/exchange/types/query.pb.go +++ b/chain/exchange/types/query.pb.go @@ -2000,8 +2000,8 @@ func (m *QueryFeeDiscountAccountInfoRequest) GetAccount() string { // QueryFeeDiscountAccountInfoResponse is the response type for the Query/FeeDiscountAccountInfo RPC method. type QueryFeeDiscountAccountInfoResponse struct { - TierLevel uint64 `protobuf:"varint,1,opt,name=tier_level,json=tierLevel,proto3" json:"tier_level,omitempty"` - TotalFeesPaid github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,2,opt,name=total_fees_paid,json=totalFeesPaid,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"total_fees_paid"` + TierLevel uint64 `protobuf:"varint,1,opt,name=tier_level,json=tierLevel,proto3" json:"tier_level,omitempty"` + AccountInfo *FeeDiscountTierInfo `protobuf:"bytes,2,opt,name=account_info,json=accountInfo,proto3" json:"account_info,omitempty"` } func (m *QueryFeeDiscountAccountInfoResponse) Reset() { *m = QueryFeeDiscountAccountInfoResponse{} } @@ -2044,6 +2044,13 @@ func (m *QueryFeeDiscountAccountInfoResponse) GetTierLevel() uint64 { return 0 } +func (m *QueryFeeDiscountAccountInfoResponse) GetAccountInfo() *FeeDiscountTierInfo { + if m != nil { + return m.AccountInfo + } + return nil +} + // QueryFeeDiscountScheduleRequest is the request type for the Query/FeeDiscountSchedule RPC method. type QueryFeeDiscountScheduleRequest struct { } @@ -2179,142 +2186,142 @@ func init() { } var fileDescriptor_523db28b8af54781 = []byte{ - // 2152 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5a, 0x5d, 0x6c, 0x1c, 0x57, - 0x15, 0xf6, 0xf5, 0x5f, 0xed, 0xe3, 0xba, 0x71, 0xae, 0x1d, 0xd7, 0xd9, 0x24, 0x8e, 0x73, 0xa3, - 0x06, 0xb7, 0x6a, 0x76, 0x63, 0xbb, 0xb1, 0xe3, 0xc4, 0x75, 0xa8, 0x6b, 0x3b, 0x71, 0x9b, 0x1f, - 0x77, 0x12, 0x10, 0x8d, 0x90, 0xb6, 0xe3, 0xdd, 0xbb, 0xeb, 0x69, 0x66, 0x67, 0x36, 0x33, 0xb3, - 0xa6, 0x56, 0x14, 0x09, 0xf1, 0x02, 0x6f, 0x20, 0xf5, 0x15, 0x21, 0xf1, 0xda, 0x47, 0x78, 0xe3, - 0x01, 0xa4, 0x22, 0xa1, 0x08, 0x24, 0x54, 0x04, 0x42, 0x88, 0x87, 0x0a, 0x25, 0x3c, 0x20, 0xc4, - 0x2b, 0x12, 0x8f, 0x68, 0xee, 0x3d, 0x33, 0xb3, 0xbb, 0xf3, 0xe3, 0x3b, 0x4b, 0x1e, 0xca, 0x93, - 0xf7, 0xde, 0xb9, 0xe7, 0x9c, 0xef, 0xfc, 0xdd, 0x7b, 0xce, 0x91, 0xe1, 0x82, 0x61, 0x7d, 0xcc, - 0x2b, 0x9e, 0x71, 0xc0, 0x4b, 0xfc, 0x93, 0xca, 0xbe, 0x6e, 0xd5, 0x79, 0xe9, 0x60, 0x61, 0x8f, - 0x7b, 0xfa, 0x42, 0xe9, 0x51, 0x8b, 0x3b, 0x87, 0xc5, 0xa6, 0x63, 0x7b, 0x36, 0x2d, 0x84, 0xe7, - 0x8a, 0xc1, 0xb9, 0x22, 0x9e, 0x2b, 0x9c, 0xae, 0xdb, 0x76, 0xdd, 0xe4, 0x25, 0xbd, 0x69, 0x94, - 0x74, 0xcb, 0xb2, 0x3d, 0xdd, 0x33, 0x6c, 0xcb, 0x95, 0x94, 0x85, 0xd7, 0x33, 0x24, 0x84, 0xac, - 0xe4, 0xd1, 0xf9, 0x8c, 0xa3, 0x75, 0x6e, 0x71, 0xd7, 0x08, 0x98, 0x4e, 0xd5, 0xed, 0xba, 0x2d, - 0x7e, 0x96, 0xfc, 0x5f, 0x72, 0x97, 0xdd, 0x05, 0xb8, 0xd7, 0xda, 0xd3, 0x2b, 0x15, 0xbb, 0x65, - 0x79, 0x74, 0x1a, 0x86, 0x3d, 0x47, 0xaf, 0x72, 0x67, 0x86, 0xcc, 0x91, 0xf9, 0x51, 0x0d, 0x57, - 0xf4, 0x75, 0x98, 0x70, 0xc3, 0x53, 0x65, 0xcb, 0xb6, 0x2a, 0x7c, 0xa6, 0x7f, 0x8e, 0xcc, 0x8f, - 0x6b, 0xc7, 0xa2, 0xfd, 0x3b, 0xfe, 0x36, 0x3b, 0x0d, 0x85, 0x0f, 0x7c, 0x23, 0x6c, 0x21, 0x9a, - 0x5d, 0xdd, 0xd1, 0x1b, 0xae, 0xc6, 0x1f, 0xb5, 0xb8, 0xeb, 0xb1, 0x32, 0x9c, 0x4a, 0xfc, 0xea, - 0x36, 0x6d, 0xcb, 0xe5, 0xf4, 0xeb, 0x30, 0xdc, 0x14, 0x3b, 0x42, 0xfe, 0xd8, 0x22, 0x2b, 0xa6, - 0xdb, 0xb0, 0x28, 0x69, 0x37, 0x06, 0x9f, 0x7e, 0x79, 0xb6, 0x4f, 0x43, 0x3a, 0xf6, 0x29, 0x81, - 0x59, 0x21, 0x21, 0xd2, 0x6a, 0x93, 0x37, 0x6d, 0xd7, 0xf0, 0x02, 0x0c, 0xf4, 0x3c, 0x8c, 0xb7, - 0x29, 0x63, 0x54, 0x51, 0xd7, 0x97, 0xa3, 0xcd, 0x9d, 0x2a, 0xbd, 0x05, 0x10, 0xad, 0x85, 0xae, - 0x63, 0x8b, 0x17, 0xb2, 0xd0, 0x44, 0xf2, 0x04, 0x22, 0xa2, 0xb5, 0xd1, 0xb3, 0x7f, 0x12, 0x38, - 0x9b, 0x8a, 0x0a, 0x75, 0xe7, 0x30, 0x52, 0xc5, 0xbd, 0x19, 0x32, 0x37, 0x30, 0x3f, 0xb6, 0xb8, - 0x93, 0x25, 0xef, 0x08, 0x76, 0xc5, 0x60, 0x63, 0xcb, 0xf2, 0x9c, 0x43, 0x2d, 0x64, 0x5d, 0xf8, - 0x08, 0xc6, 0x3b, 0x3e, 0xd1, 0x09, 0x18, 0x78, 0xc8, 0x0f, 0xd1, 0x08, 0xfe, 0x4f, 0xba, 0x0a, - 0x43, 0x07, 0xba, 0xd9, 0xe2, 0xa8, 0xf6, 0xf9, 0x2c, 0x18, 0xc8, 0x4b, 0x93, 0x14, 0x57, 0xfb, - 0xaf, 0x10, 0x36, 0x0b, 0xa7, 0x3b, 0x7c, 0xbc, 0xa1, 0x9b, 0xba, 0x55, 0xe1, 0x61, 0x0c, 0xd4, - 0xe0, 0x4c, 0xca, 0x77, 0xb4, 0xc4, 0x16, 0x8c, 0xec, 0xe1, 0x1e, 0x5a, 0x22, 0x13, 0x02, 0xd2, - 0x63, 0x20, 0x84, 0xa4, 0xec, 0x01, 0xca, 0x89, 0x19, 0x29, 0x57, 0x20, 0x4c, 0xc1, 0x50, 0x95, - 0x5b, 0x76, 0x43, 0x18, 0x63, 0x54, 0x93, 0x0b, 0xa6, 0xa7, 0x45, 0x59, 0xa8, 0xc4, 0xf5, 0x0e, - 0x77, 0x2a, 0xdb, 0x31, 0x24, 0x62, 0x0b, 0xf0, 0xaa, 0x14, 0xd1, 0xb4, 0xbd, 0xdb, 0xba, 0xf3, - 0x90, 0x47, 0x11, 0x3c, 0x0d, 0xc3, 0xae, 0xa7, 0x7b, 0x2d, 0x37, 0x48, 0x53, 0xb9, 0x62, 0xdf, - 0x86, 0x99, 0x38, 0x49, 0x98, 0x5a, 0x2f, 0x35, 0xe4, 0x16, 0xda, 0x34, 0x3b, 0x9a, 0x43, 0x0e, - 0x5a, 0x40, 0xc6, 0x2e, 0xc3, 0x74, 0x17, 0xf7, 0x00, 0xcf, 0x29, 0x18, 0x95, 0x87, 0x22, 0x23, - 0x8e, 0xc8, 0x8d, 0x9d, 0x2a, 0xfb, 0x30, 0xa6, 0x47, 0x88, 0x69, 0x1d, 0x86, 0xe5, 0x31, 0xb4, - 0x90, 0x2a, 0x24, 0xa4, 0x62, 0x77, 0xe0, 0x64, 0xc8, 0xfa, 0xae, 0x53, 0xe5, 0xce, 0x9e, 0x6d, - 0x3f, 0x54, 0x01, 0xe5, 0x7b, 0xd5, 0x34, 0x1a, 0x86, 0xcc, 0xec, 0x41, 0x4d, 0x2e, 0xd8, 0xe7, - 0x04, 0x2f, 0xaf, 0x2e, 0x86, 0x08, 0x77, 0x17, 0x26, 0xf6, 0x5a, 0x87, 0x6e, 0xb9, 0xe9, 0x18, - 0x15, 0x5e, 0x36, 0xf9, 0x01, 0x37, 0x55, 0x6c, 0xb9, 0xeb, 0x1f, 0xbf, 0xe5, 0x9f, 0xd6, 0x5e, - 0xf1, 0xe9, 0xa3, 0x35, 0xd5, 0xe0, 0xb8, 0xcb, 0x4d, 0xb3, 0x93, 0x65, 0x7f, 0x2e, 0x96, 0xc7, - 0x04, 0x83, 0x68, 0x83, 0x7d, 0x84, 0xe9, 0x77, 0x5f, 0x5c, 0xdd, 0xa1, 0x26, 0xae, 0x92, 0x5d, - 0x62, 0x29, 0xd1, 0x1f, 0x4f, 0x09, 0xf6, 0x59, 0x3f, 0x9c, 0xb8, 0xef, 0x18, 0x8d, 0x06, 0xaf, - 0xfa, 0xec, 0x6f, 0xf9, 0xb6, 0x13, 0x32, 0xe8, 0x26, 0x0c, 0x09, 0x4d, 0x24, 0xdf, 0x8d, 0xa2, - 0x9f, 0x91, 0x7f, 0xfd, 0xf2, 0xec, 0x85, 0xba, 0xe1, 0xed, 0xb7, 0xf6, 0x8a, 0x15, 0xbb, 0x51, - 0xaa, 0xd8, 0x6e, 0xc3, 0x76, 0xf1, 0xcf, 0x45, 0xb7, 0xfa, 0xb0, 0xe4, 0x1d, 0x36, 0xb9, 0x5b, - 0xdc, 0xe4, 0x15, 0x4d, 0x12, 0xd3, 0xf7, 0x60, 0xe4, 0x51, 0x4b, 0xb7, 0x3c, 0xc3, 0x3b, 0x94, - 0xf2, 0x73, 0x33, 0x0a, 0xe9, 0x7d, 0x5e, 0x35, 0xc3, 0x34, 0xf5, 0x3d, 0x93, 0xcf, 0x0c, 0xf4, - 0xc6, 0x2b, 0xa0, 0xf7, 0x83, 0xc6, 0x70, 0x37, 0x5a, 0x87, 0x33, 0x83, 0x73, 0x64, 0x7e, 0x44, - 0x93, 0x0b, 0x7a, 0x06, 0xc0, 0xf6, 0x95, 0x2f, 0xef, 0xeb, 0xee, 0xfe, 0xcc, 0x90, 0xb0, 0xd7, - 0xa8, 0xd8, 0xb9, 0xa9, 0xbb, 0xfb, 0xec, 0x63, 0xbc, 0x85, 0xe2, 0xee, 0xc0, 0xa8, 0xda, 0x81, - 0x61, 0x71, 0x3a, 0xc8, 0xcb, 0x85, 0x2c, 0xc7, 0x27, 0x9a, 0x5d, 0x43, 0x06, 0xec, 0x3e, 0xbe, - 0x32, 0x9b, 0xdc, 0x31, 0x0e, 0x74, 0x9f, 0xc3, 0x8b, 0xc8, 0x8a, 0xa7, 0x04, 0xe6, 0xd2, 0xd9, - 0xfe, 0x5f, 0xe5, 0x46, 0x0d, 0x58, 0x9b, 0x33, 0xba, 0xf4, 0x79, 0x81, 0x19, 0xf2, 0x9f, 0x7e, - 0x38, 0x85, 0xae, 0x8a, 0x84, 0x7c, 0xa5, 0xf3, 0x64, 0x5b, 0x5c, 0xc5, 0x75, 0xc3, 0xea, 0x31, - 0x4b, 0x90, 0xba, 0x23, 0xdf, 0x06, 0x5f, 0x54, 0xbe, 0x0d, 0xa5, 0xe7, 0xdb, 0x70, 0x77, 0xbe, - 0x1d, 0xc0, 0xf9, 0x4c, 0x17, 0x63, 0xbc, 0xde, 0xed, 0xca, 0xba, 0x15, 0x85, 0xac, 0x4b, 0x72, - 0x65, 0x98, 0x7b, 0x2b, 0x98, 0xe7, 0xd1, 0x21, 0xc5, 0x47, 0xfb, 0x27, 0x04, 0xa0, 0x2d, 0xec, - 0xbf, 0x72, 0xa1, 0xc1, 0x7e, 0x45, 0x60, 0x6a, 0x97, 0x3b, 0x4d, 0xee, 0xb5, 0x74, 0x53, 0x2a, - 0x75, 0xcf, 0xd3, 0x3d, 0x3f, 0xe7, 0xc7, 0x82, 0x3c, 0xb1, 0x6a, 0x36, 0xbe, 0xe1, 0xa5, 0xcc, - 0xdc, 0xec, 0x64, 0xb3, 0x63, 0xd5, 0x6c, 0x0d, 0x1a, 0xe1, 0x6f, 0xfa, 0x0d, 0x78, 0xb9, 0xd6, - 0xb2, 0xaa, 0x86, 0x55, 0x97, 0x2c, 0x65, 0x01, 0xba, 0x98, 0x83, 0xe5, 0xb6, 0x24, 0xd7, 0xc6, - 0x90, 0x8f, 0xcf, 0x96, 0xfd, 0xa3, 0x1f, 0xa6, 0xb6, 0x5b, 0xa6, 0xd9, 0xed, 0x1b, 0xba, 0xd9, - 0x55, 0x80, 0xbc, 0x99, 0x5d, 0xa2, 0x75, 0x52, 0x07, 0x65, 0x08, 0xfd, 0x10, 0x5e, 0x69, 0x06, - 0x28, 0xda, 0x71, 0x5f, 0xca, 0x81, 0x5b, 0x58, 0xf4, 0x66, 0x9f, 0x36, 0x1e, 0x72, 0x12, 0x06, - 0xf9, 0x96, 0x6f, 0x10, 0xaf, 0xe5, 0x70, 0x57, 0x32, 0x1e, 0x10, 0x8c, 0x97, 0xb2, 0x18, 0x6f, - 0x7d, 0xd2, 0x34, 0x9c, 0xc3, 0x6d, 0x49, 0x15, 0xd9, 0xf9, 0x66, 0x9f, 0x6f, 0x13, 0xb1, 0x29, - 0x38, 0xdf, 0x06, 0x61, 0x78, 0x79, 0xbb, 0xf6, 0x98, 0xaa, 0xe2, 0x9a, 0x14, 0xb1, 0xbb, 0x31, - 0x0c, 0x83, 0x3e, 0x40, 0x66, 0x62, 0x61, 0x9c, 0x90, 0x06, 0x98, 0x79, 0xef, 0x75, 0x17, 0xa2, - 0x99, 0x66, 0x4a, 0x72, 0x5b, 0x54, 0x92, 0x5e, 0xc3, 0x5a, 0x27, 0x76, 0x42, 0xa5, 0x30, 0x35, - 0x52, 0x32, 0x36, 0x44, 0x7a, 0xb3, 0x2b, 0x3a, 0xf2, 0x03, 0x0d, 0x0a, 0xd5, 0x1b, 0xf8, 0x82, - 0x46, 0xed, 0x82, 0xb8, 0x9e, 0x44, 0xc7, 0x9c, 0xa7, 0x1b, 0x61, 0xab, 0x70, 0x2e, 0x83, 0x11, - 0xe2, 0x9e, 0x82, 0x21, 0xd9, 0xa2, 0x13, 0xd1, 0xa2, 0xcb, 0x05, 0x3b, 0x89, 0x75, 0xf8, 0x6d, - 0xbb, 0xda, 0x32, 0xb9, 0x88, 0xb7, 0xa0, 0x23, 0x7b, 0x80, 0x7d, 0x43, 0xc7, 0xa7, 0xb0, 0x46, - 0x1f, 0xf2, 0x2f, 0x2a, 0x8e, 0x36, 0x98, 0xcf, 0xb2, 0xc1, 0x0d, 0x39, 0x70, 0x90, 0x0c, 0x24, - 0x19, 0x7b, 0x15, 0x4e, 0x08, 0xde, 0xbb, 0x7e, 0x57, 0x63, 0xd8, 0x56, 0xd8, 0x06, 0x56, 0xb1, - 0x9d, 0x68, 0xfb, 0x10, 0x46, 0x48, 0x28, 0xd2, 0x8f, 0x8f, 0xa2, 0x5a, 0x52, 0x06, 0x7c, 0xb0, - 0x0f, 0x44, 0xf1, 0xd7, 0xda, 0xcb, 0x2f, 0x8d, 0x7f, 0x47, 0x77, 0xaa, 0xbb, 0xb6, 0x61, 0x45, - 0xd7, 0x72, 0x01, 0x46, 0xd0, 0x92, 0x32, 0x1e, 0x47, 0xb5, 0x70, 0xcd, 0x7e, 0x18, 0x0c, 0x13, - 0x12, 0xa8, 0x11, 0x6b, 0x03, 0x4e, 0x05, 0x2e, 0x13, 0xb3, 0x92, 0xb2, 0x23, 0x4e, 0x95, 0x9b, - 0xe2, 0x98, 0xe4, 0x98, 0x3b, 0xaf, 0x66, 0xda, 0x7d, 0xdb, 0x2e, 0x96, 0x9d, 0xc3, 0x0a, 0xaf, - 0xed, 0xcb, 0xbb, 0x7a, 0xa3, 0xa9, 0x1b, 0x75, 0x2b, 0xb0, 0xeb, 0x0f, 0x06, 0x30, 0xd8, 0x12, - 0xcf, 0x20, 0xec, 0x03, 0x38, 0xed, 0xc3, 0xf5, 0x2f, 0x5a, 0x04, 0x5c, 0xc1, 0x23, 0xed, 0x77, - 0xf9, 0xe5, 0xec, 0x47, 0x51, 0xd0, 0x77, 0x0a, 0x10, 0x37, 0xfa, 0x49, 0x2f, 0xed, 0x13, 0xfd, - 0x2e, 0x81, 0xd7, 0xba, 0x04, 0x37, 0x6d, 0xdb, 0x8c, 0xa4, 0xbb, 0x95, 0x7d, 0xee, 0x07, 0x21, - 0x56, 0x7a, 0x99, 0xbe, 0x8f, 0xb4, 0x92, 0x16, 0xb2, 0x4d, 0xed, 0x5c, 0x87, 0x68, 0x7f, 0x2b, - 0x38, 0x74, 0x0f, 0x19, 0x53, 0x03, 0x4e, 0x7a, 0xb6, 0xa7, 0x9b, 0x89, 0xfe, 0xea, 0xad, 0xf8, - 0x99, 0x16, 0x0c, 0xe3, 0xde, 0x5a, 0xc7, 0x72, 0x73, 0x9b, 0xf3, 0x4d, 0xc3, 0x15, 0x2e, 0x7d, - 0x07, 0x53, 0xd9, 0xb7, 0x13, 0x46, 0xe0, 0x0c, 0xbc, 0x14, 0xcc, 0x99, 0x64, 0xca, 0x07, 0x4b, - 0xf6, 0x63, 0x82, 0xc5, 0x4c, 0x1a, 0x03, 0xf4, 0xe6, 0x19, 0x00, 0xcf, 0xe0, 0x4e, 0x58, 0x76, - 0xfb, 0xc5, 0xfb, 0xa8, 0xbf, 0x23, 0x4b, 0x8a, 0x6f, 0xc2, 0x31, 0xa9, 0x71, 0x8d, 0x73, 0xb7, - 0xdc, 0xd4, 0x83, 0xa2, 0x35, 0xb7, 0x9e, 0xe3, 0x82, 0xcd, 0x36, 0xe7, 0xee, 0xae, 0x6e, 0x54, - 0xc3, 0x60, 0x6c, 0x43, 0x17, 0x58, 0x39, 0x08, 0xc6, 0xef, 0x07, 0xbd, 0x43, 0xe2, 0x19, 0x84, - 0x5f, 0x81, 0x13, 0x35, 0xce, 0xcb, 0x55, 0xfc, 0x1e, 0xc5, 0x80, 0x42, 0x45, 0x91, 0xc4, 0x77, - 0xb2, 0x16, 0xdf, 0x5c, 0xfc, 0xf7, 0x19, 0x18, 0x12, 0x48, 0xe8, 0x2f, 0x08, 0x4c, 0x26, 0x0c, - 0x21, 0xe9, 0xf2, 0x91, 0xe3, 0xb6, 0xc4, 0x99, 0x66, 0x61, 0x25, 0x37, 0x9d, 0xd4, 0x9b, 0x2d, - 0x7e, 0xef, 0x8f, 0x7f, 0xff, 0xb4, 0xff, 0x4d, 0xfa, 0x46, 0x49, 0x61, 0xde, 0x8b, 0x20, 0x7f, - 0x4f, 0x80, 0xc6, 0xa7, 0x7e, 0xf4, 0x6a, 0x4f, 0xa3, 0x42, 0x89, 0xff, 0xda, 0xff, 0x30, 0x66, - 0x64, 0xd7, 0x85, 0x0e, 0xab, 0x74, 0x45, 0x45, 0x87, 0x92, 0x1b, 0x47, 0xfe, 0x5b, 0x02, 0xc7, - 0x63, 0xfc, 0xe9, 0x6a, 0x7e, 0x4c, 0x81, 0x3a, 0x57, 0x7b, 0x21, 0x45, 0x6d, 0xd6, 0x85, 0x36, - 0x57, 0xe8, 0x72, 0x6f, 0xda, 0xd0, 0xdf, 0x10, 0x98, 0xe8, 0x1e, 0x6b, 0xd2, 0x2b, 0xca, 0xf1, - 0xd1, 0x35, 0x29, 0x2d, 0xac, 0xf6, 0x40, 0x89, 0x9a, 0xbc, 0x2d, 0x34, 0x59, 0xa1, 0x97, 0x95, - 0x34, 0xe1, 0xdd, 0x98, 0x3f, 0x23, 0x30, 0xd6, 0x36, 0x45, 0xa4, 0x4b, 0x47, 0x1b, 0x35, 0x36, - 0xa6, 0x2c, 0xbc, 0x95, 0x8f, 0x08, 0x91, 0x5f, 0x12, 0xc8, 0xdf, 0xa0, 0xf3, 0x59, 0xc8, 0xdd, - 0xa6, 0xed, 0x95, 0xb0, 0x0a, 0xa4, 0x3f, 0x27, 0x00, 0x11, 0x27, 0xba, 0x98, 0x43, 0x6c, 0x00, - 0x75, 0x29, 0x17, 0x0d, 0x22, 0x5d, 0x13, 0x48, 0x97, 0xe9, 0x5b, 0xaa, 0x48, 0x4b, 0x8f, 0xc3, - 0x6a, 0xf4, 0x09, 0xfd, 0x25, 0x81, 0xf1, 0x8e, 0x39, 0x23, 0xbd, 0xac, 0x04, 0xa2, 0x7b, 0xa4, - 0x53, 0x58, 0xce, 0x4b, 0x96, 0x27, 0xd8, 0x05, 0x7c, 0x3b, 0xa0, 0xed, 0x50, 0xe0, 0x4f, 0x04, - 0x26, 0xba, 0xa7, 0x5a, 0x0a, 0xc1, 0x9e, 0x32, 0x97, 0x54, 0x08, 0xf6, 0xb4, 0x11, 0x1a, 0x7b, - 0x5f, 0x68, 0xb2, 0x45, 0xdf, 0x55, 0xd3, 0xa4, 0xc3, 0x0f, 0xa5, 0xc7, 0x1d, 0x55, 0xf7, 0x13, - 0xfa, 0x67, 0x02, 0x93, 0x09, 0x93, 0x2e, 0x7a, 0xf4, 0x35, 0x99, 0x3e, 0x76, 0x2b, 0xac, 0xf5, - 0x46, 0x8c, 0xfa, 0x6d, 0x0a, 0xfd, 0xd6, 0xe9, 0x5a, 0x96, 0x7e, 0xd5, 0x90, 0x41, 0x8a, 0xbf, - 0xfe, 0x45, 0x60, 0x3a, 0x79, 0x2a, 0x42, 0xd7, 0x15, 0x6d, 0x9f, 0x32, 0x31, 0x2b, 0x5c, 0xef, - 0x99, 0x1e, 0x35, 0xfc, 0x40, 0x68, 0xf8, 0x3e, 0xdd, 0xc9, 0xa3, 0x61, 0xb6, 0x1f, 0x3f, 0x27, - 0x70, 0x3c, 0xd6, 0x85, 0x2a, 0x3c, 0x2c, 0x69, 0x03, 0x1c, 0x85, 0x87, 0x25, 0xb5, 0xe9, 0x65, - 0xcb, 0x42, 0xbf, 0x4b, 0xb4, 0xa8, 0xa8, 0x5f, 0x70, 0xb5, 0xfd, 0x8e, 0xc0, 0x44, 0x6c, 0x6a, - 0x71, 0x25, 0x37, 0x10, 0xf5, 0x1c, 0x4b, 0x6b, 0x86, 0xd9, 0x86, 0xd0, 0x60, 0x8d, 0x5e, 0xcd, - 0xa7, 0x41, 0x47, 0x04, 0xfe, 0x81, 0xc0, 0x54, 0x52, 0xe7, 0x4a, 0xd7, 0x72, 0xbc, 0xd9, 0xb1, - 0xce, 0xb9, 0xf0, 0x76, 0x8f, 0xd4, 0x79, 0xae, 0xf1, 0x70, 0xa3, 0x3b, 0xcc, 0x7e, 0x46, 0x60, - 0x32, 0x78, 0x85, 0xdb, 0xfa, 0x67, 0x85, 0x17, 0x33, 0xde, 0x88, 0x2b, 0xbc, 0x98, 0x09, 0x2d, - 0xba, 0xda, 0x8b, 0xd9, 0x10, 0x84, 0x65, 0xd1, 0x15, 0xd3, 0x9f, 0x12, 0x18, 0x0d, 0xfb, 0x6e, - 0xba, 0x70, 0xa4, 0xd4, 0xee, 0xe6, 0xbd, 0xb0, 0x98, 0x87, 0x04, 0x61, 0x5e, 0x14, 0x30, 0xbf, - 0x46, 0x5f, 0xcb, 0x82, 0xd9, 0x0c, 0x51, 0xfd, 0x9a, 0xc0, 0xf1, 0x58, 0x4b, 0x45, 0x15, 0x5f, - 0x89, 0x84, 0x4e, 0x5f, 0x21, 0x7f, 0x53, 0xdb, 0x7c, 0xb6, 0x22, 0xb0, 0x2f, 0xd0, 0x52, 0x16, - 0xf6, 0x84, 0x86, 0xd2, 0x4f, 0xe0, 0xc9, 0x84, 0x46, 0x5c, 0xe1, 0x35, 0x49, 0x6f, 0xf1, 0x15, - 0x5e, 0x93, 0x8c, 0xde, 0x9f, 0xad, 0x0a, 0x5d, 0x96, 0xe8, 0x82, 0xb2, 0x2e, 0x41, 0x77, 0x4e, - 0x9f, 0x11, 0x98, 0x4e, 0xee, 0x45, 0x15, 0x9e, 0x90, 0xcc, 0x2e, 0x58, 0xe1, 0x09, 0xc9, 0x6e, - 0x82, 0xd9, 0x0d, 0xa1, 0xd6, 0x3b, 0xf4, 0x7a, 0x96, 0x5a, 0x1d, 0x7d, 0x66, 0x98, 0xc6, 0x56, - 0xcd, 0x2e, 0x3d, 0xc6, 0xd5, 0x13, 0xe1, 0xb2, 0x84, 0xb6, 0x52, 0xc1, 0x65, 0xe9, 0x8d, 0xb0, - 0x82, 0xcb, 0x32, 0x3a, 0x64, 0x35, 0x97, 0x25, 0xf6, 0xd0, 0x1b, 0xfb, 0x4f, 0x9f, 0xcd, 0x92, - 0x2f, 0x9e, 0xcd, 0x92, 0xbf, 0x3d, 0x9b, 0x25, 0x3f, 0x7a, 0x3e, 0xdb, 0xf7, 0xc5, 0xf3, 0xd9, - 0xbe, 0xbf, 0x3c, 0x9f, 0xed, 0x7b, 0x70, 0xa7, 0xad, 0xeb, 0xdf, 0x09, 0xd8, 0xde, 0xd2, 0xf7, - 0xdc, 0x48, 0xc8, 0xc5, 0x8a, 0xed, 0xf0, 0xf6, 0xe5, 0xbe, 0x6e, 0x58, 0x78, 0x95, 0xb8, 0x11, - 0x02, 0x31, 0x21, 0xd8, 0x1b, 0x16, 0xff, 0x51, 0xb4, 0xf4, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x58, 0x03, 0x9f, 0x6f, 0x20, 0x25, 0x00, 0x00, + // 2145 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5a, 0x4d, 0x6c, 0x1d, 0x57, + 0x15, 0xf6, 0xf5, 0x5f, 0xed, 0xe3, 0xb8, 0x75, 0xae, 0x1d, 0xd7, 0x79, 0x49, 0x1c, 0xe7, 0x46, + 0x0d, 0x6e, 0xd5, 0xbc, 0x17, 0xdb, 0x8d, 0x1d, 0x27, 0xae, 0x43, 0x5d, 0xdb, 0x89, 0xdb, 0xfc, + 0xb8, 0x93, 0x20, 0xd1, 0x08, 0xc9, 0x1d, 0xbf, 0x77, 0xfd, 0x3c, 0xcd, 0xbc, 0x99, 0x97, 0x99, + 0x79, 0xa6, 0x56, 0x14, 0x09, 0xb1, 0x81, 0x1d, 0x48, 0xdd, 0xb0, 0x42, 0x62, 0xdb, 0x25, 0xec, + 0x58, 0x80, 0x54, 0x24, 0x14, 0x81, 0x84, 0x8a, 0x40, 0x08, 0xb1, 0xa8, 0x50, 0xc2, 0x02, 0x21, + 0xb6, 0x48, 0x2c, 0xd1, 0xdc, 0x7b, 0xe6, 0xe7, 0xbd, 0xf9, 0xf1, 0x9d, 0x47, 0x16, 0xed, 0xca, + 0xef, 0xde, 0xb9, 0xe7, 0x9c, 0xef, 0xfc, 0xdd, 0x7b, 0xce, 0x91, 0xe1, 0x82, 0x61, 0x7d, 0xcc, + 0xab, 0x9e, 0x71, 0xc0, 0x2b, 0xfc, 0x93, 0xea, 0xbe, 0x6e, 0xd5, 0x79, 0xe5, 0x60, 0x6e, 0x97, + 0x7b, 0xfa, 0x5c, 0xe5, 0x51, 0x8b, 0x3b, 0x87, 0xe5, 0xa6, 0x63, 0x7b, 0x36, 0x2d, 0x85, 0xe7, + 0xca, 0xc1, 0xb9, 0x32, 0x9e, 0x2b, 0x9d, 0xae, 0xdb, 0x76, 0xdd, 0xe4, 0x15, 0xbd, 0x69, 0x54, + 0x74, 0xcb, 0xb2, 0x3d, 0xdd, 0x33, 0x6c, 0xcb, 0x95, 0x94, 0xa5, 0xd7, 0x73, 0x24, 0x84, 0xac, + 0xe4, 0xd1, 0xd9, 0x9c, 0xa3, 0x75, 0x6e, 0x71, 0xd7, 0x08, 0x98, 0x4e, 0xd4, 0xed, 0xba, 0x2d, + 0x7e, 0x56, 0xfc, 0x5f, 0x72, 0x97, 0xdd, 0x05, 0xb8, 0xd7, 0xda, 0xd5, 0xab, 0x55, 0xbb, 0x65, + 0x79, 0x74, 0x12, 0x06, 0x3d, 0x47, 0xaf, 0x71, 0x67, 0x8a, 0xcc, 0x90, 0xd9, 0x61, 0x0d, 0x57, + 0xf4, 0x75, 0x18, 0x73, 0xc3, 0x53, 0x3b, 0x96, 0x6d, 0x55, 0xf9, 0x54, 0xef, 0x0c, 0x99, 0x1d, + 0xd5, 0x5e, 0x89, 0xf6, 0xef, 0xf8, 0xdb, 0xec, 0x34, 0x94, 0x3e, 0xf0, 0x8d, 0xb0, 0x81, 0x68, + 0xb6, 0x75, 0x47, 0x6f, 0xb8, 0x1a, 0x7f, 0xd4, 0xe2, 0xae, 0xc7, 0x76, 0xe0, 0x54, 0xea, 0x57, + 0xb7, 0x69, 0x5b, 0x2e, 0xa7, 0xdf, 0x84, 0xc1, 0xa6, 0xd8, 0x11, 0xf2, 0x47, 0xe6, 0x59, 0x39, + 0xdb, 0x86, 0x65, 0x49, 0xbb, 0xd6, 0xff, 0xf4, 0xcb, 0xb3, 0x3d, 0x1a, 0xd2, 0xb1, 0x4f, 0x09, + 0x4c, 0x0b, 0x09, 0x91, 0x56, 0xeb, 0xbc, 0x69, 0xbb, 0x86, 0x17, 0x60, 0xa0, 0xe7, 0x61, 0x34, + 0xa6, 0x8c, 0x51, 0x43, 0x5d, 0x8f, 0x45, 0x9b, 0x5b, 0x35, 0x7a, 0x0b, 0x20, 0x5a, 0x0b, 0x5d, + 0x47, 0xe6, 0x2f, 0xe4, 0xa1, 0x89, 0xe4, 0x09, 0x44, 0x44, 0x8b, 0xd1, 0xb3, 0x7f, 0x11, 0x38, + 0x9b, 0x89, 0x0a, 0x75, 0xe7, 0x30, 0x54, 0xc3, 0xbd, 0x29, 0x32, 0xd3, 0x37, 0x3b, 0x32, 0xbf, + 0x95, 0x27, 0xef, 0x08, 0x76, 0xe5, 0x60, 0x63, 0xc3, 0xf2, 0x9c, 0x43, 0x2d, 0x64, 0x5d, 0xfa, + 0x08, 0x46, 0xdb, 0x3e, 0xd1, 0x31, 0xe8, 0x7b, 0xc8, 0x0f, 0xd1, 0x08, 0xfe, 0x4f, 0xba, 0x0c, + 0x03, 0x07, 0xba, 0xd9, 0xe2, 0xa8, 0xf6, 0xf9, 0x3c, 0x18, 0xc8, 0x4b, 0x93, 0x14, 0x57, 0x7b, + 0xaf, 0x10, 0x36, 0x0d, 0xa7, 0xdb, 0x7c, 0xbc, 0xa6, 0x9b, 0xba, 0x55, 0xe5, 0x61, 0x0c, 0xec, + 0xc1, 0x99, 0x8c, 0xef, 0x68, 0x89, 0x0d, 0x18, 0xda, 0xc5, 0x3d, 0xb4, 0x44, 0x2e, 0x04, 0xa4, + 0xc7, 0x40, 0x08, 0x49, 0xd9, 0x03, 0x94, 0x93, 0x30, 0x52, 0xa1, 0x40, 0x98, 0x80, 0x81, 0x1a, + 0xb7, 0xec, 0x86, 0x30, 0xc6, 0xb0, 0x26, 0x17, 0x4c, 0xcf, 0x8a, 0xb2, 0x50, 0x89, 0xeb, 0x6d, + 0xee, 0x54, 0xb6, 0x63, 0x48, 0xc4, 0xe6, 0xe0, 0x55, 0x29, 0xa2, 0x69, 0x7b, 0xb7, 0x75, 0xe7, + 0x21, 0x8f, 0x22, 0x78, 0x12, 0x06, 0x5d, 0x4f, 0xf7, 0x5a, 0x6e, 0x90, 0xa6, 0x72, 0xc5, 0xbe, + 0x03, 0x53, 0x49, 0x92, 0x30, 0xb5, 0x5e, 0x6a, 0xc8, 0x2d, 0xb4, 0x69, 0x7e, 0x34, 0x87, 0x1c, + 0xb4, 0x80, 0x8c, 0x5d, 0x86, 0xc9, 0x0e, 0xee, 0x01, 0x9e, 0x53, 0x30, 0x2c, 0x0f, 0x45, 0x46, + 0x1c, 0x92, 0x1b, 0x5b, 0x35, 0xf6, 0x61, 0x42, 0x8f, 0x10, 0xd3, 0x2a, 0x0c, 0xca, 0x63, 0x68, + 0x21, 0x55, 0x48, 0x48, 0xc5, 0xee, 0xc0, 0xc9, 0x90, 0xf5, 0x5d, 0xa7, 0xc6, 0x9d, 0x5d, 0xdb, + 0x7e, 0xa8, 0x02, 0xca, 0xf7, 0xaa, 0x69, 0x34, 0x0c, 0x99, 0xd9, 0xfd, 0x9a, 0x5c, 0xb0, 0xcf, + 0x09, 0x5e, 0x5e, 0x1d, 0x0c, 0x11, 0xee, 0x36, 0x8c, 0xed, 0xb6, 0x0e, 0xdd, 0x9d, 0xa6, 0x63, + 0x54, 0xf9, 0x8e, 0xc9, 0x0f, 0xb8, 0xa9, 0x62, 0xcb, 0x6d, 0xff, 0xf8, 0x2d, 0xff, 0xb4, 0xf6, + 0xb2, 0x4f, 0x1f, 0xad, 0xa9, 0x06, 0xc7, 0x5d, 0x6e, 0x9a, 0xed, 0x2c, 0x7b, 0x0b, 0xb1, 0x7c, + 0x45, 0x30, 0x88, 0x36, 0xd8, 0x47, 0x98, 0x7e, 0xf7, 0xc5, 0xd5, 0x1d, 0x6a, 0xe2, 0x2a, 0xd9, + 0x25, 0x91, 0x12, 0xbd, 0xc9, 0x94, 0x60, 0x9f, 0xf5, 0xc2, 0x89, 0xfb, 0x8e, 0xd1, 0x68, 0xf0, + 0x9a, 0xcf, 0xfe, 0x96, 0x6f, 0x3b, 0x21, 0x83, 0xae, 0xc3, 0x80, 0xd0, 0x44, 0xf2, 0x5d, 0x2b, + 0xfb, 0x19, 0xf9, 0xb7, 0x2f, 0xcf, 0x5e, 0xa8, 0x1b, 0xde, 0x7e, 0x6b, 0xb7, 0x5c, 0xb5, 0x1b, + 0x95, 0xaa, 0xed, 0x36, 0x6c, 0x17, 0xff, 0x5c, 0x74, 0x6b, 0x0f, 0x2b, 0xde, 0x61, 0x93, 0xbb, + 0xe5, 0x75, 0x5e, 0xd5, 0x24, 0x31, 0x7d, 0x0f, 0x86, 0x1e, 0xb5, 0x74, 0xcb, 0x33, 0xbc, 0x43, + 0x29, 0xbf, 0x30, 0xa3, 0x90, 0xde, 0xe7, 0xb5, 0x67, 0x98, 0xa6, 0xbe, 0x6b, 0xf2, 0xa9, 0xbe, + 0xee, 0x78, 0x05, 0xf4, 0x7e, 0xd0, 0x18, 0xee, 0x5a, 0xeb, 0x70, 0xaa, 0x7f, 0x86, 0xcc, 0x0e, + 0x69, 0x72, 0x41, 0xcf, 0x00, 0xd8, 0xbe, 0xf2, 0x3b, 0xfb, 0xba, 0xbb, 0x3f, 0x35, 0x20, 0xec, + 0x35, 0x2c, 0x76, 0x6e, 0xea, 0xee, 0x3e, 0xfb, 0x18, 0x6f, 0xa1, 0xa4, 0x3b, 0x30, 0xaa, 0xb6, + 0x60, 0x50, 0x9c, 0x0e, 0xf2, 0x72, 0x2e, 0xcf, 0xf1, 0xa9, 0x66, 0xd7, 0x90, 0x01, 0xbb, 0x8f, + 0xaf, 0xcc, 0x3a, 0x77, 0x8c, 0x03, 0xdd, 0xe7, 0xf0, 0x22, 0xb2, 0xe2, 0x29, 0x81, 0x99, 0x6c, + 0xb6, 0x5f, 0xab, 0xdc, 0xd8, 0x03, 0x16, 0x73, 0x46, 0x87, 0x3e, 0x2f, 0x30, 0x43, 0xfe, 0xdb, + 0x0b, 0xa7, 0xd0, 0x55, 0x91, 0x90, 0xaf, 0x74, 0x9e, 0x6c, 0x8a, 0xab, 0xb8, 0x6e, 0x58, 0x5d, + 0x66, 0x09, 0x52, 0xb7, 0xe5, 0x5b, 0xff, 0x8b, 0xca, 0xb7, 0x81, 0xec, 0x7c, 0x1b, 0xec, 0xcc, + 0xb7, 0x03, 0x38, 0x9f, 0xeb, 0x62, 0x8c, 0xd7, 0xbb, 0x1d, 0x59, 0xb7, 0xa4, 0x90, 0x75, 0x69, + 0xae, 0x0c, 0x73, 0x6f, 0x09, 0xf3, 0x3c, 0x3a, 0xa4, 0xf8, 0x68, 0xff, 0x94, 0x00, 0xc4, 0xc2, + 0xfe, 0x2b, 0x17, 0x1a, 0xec, 0xd7, 0x04, 0x26, 0xb6, 0xb9, 0xd3, 0xe4, 0x5e, 0x4b, 0x37, 0xa5, + 0x52, 0xf7, 0x3c, 0xdd, 0xf3, 0x73, 0x7e, 0x24, 0xc8, 0x13, 0x6b, 0xcf, 0xc6, 0x37, 0xbc, 0x92, + 0x9b, 0x9b, 0xed, 0x6c, 0xb6, 0xac, 0x3d, 0x5b, 0x83, 0x46, 0xf8, 0x9b, 0x7e, 0x0b, 0x8e, 0xed, + 0xb5, 0xac, 0x9a, 0x61, 0xd5, 0x25, 0x4b, 0x59, 0x80, 0xce, 0x17, 0x60, 0xb9, 0x29, 0xc9, 0xb5, + 0x11, 0xe4, 0xe3, 0xb3, 0x65, 0xff, 0xec, 0x85, 0x89, 0xcd, 0x96, 0x69, 0x76, 0xfa, 0x86, 0xae, + 0x77, 0x14, 0x20, 0x6f, 0xe6, 0x97, 0x68, 0xed, 0xd4, 0x41, 0x19, 0x42, 0x3f, 0x84, 0x97, 0x9b, + 0x01, 0x8a, 0x38, 0xee, 0x4b, 0x05, 0x70, 0x0b, 0x8b, 0xde, 0xec, 0xd1, 0x46, 0x43, 0x4e, 0xc2, + 0x20, 0xdf, 0xf6, 0x0d, 0xe2, 0xb5, 0x1c, 0xee, 0x4a, 0xc6, 0x7d, 0x82, 0xf1, 0x42, 0x1e, 0xe3, + 0x8d, 0x4f, 0x9a, 0x86, 0x73, 0xb8, 0x29, 0xa9, 0x22, 0x3b, 0xdf, 0xec, 0xf1, 0x6d, 0x22, 0x36, + 0x05, 0xe7, 0xdb, 0x20, 0x0c, 0x2f, 0x6f, 0xd7, 0x2e, 0x53, 0x55, 0x5c, 0x93, 0x22, 0x76, 0xd7, + 0x06, 0xa1, 0xdf, 0x07, 0xc8, 0x4c, 0x2c, 0x8c, 0x53, 0xd2, 0x00, 0x33, 0xef, 0xbd, 0xce, 0x42, + 0x34, 0xd7, 0x4c, 0x69, 0x6e, 0x8b, 0x4a, 0xd2, 0x6b, 0x58, 0xeb, 0x24, 0x4e, 0xa8, 0x14, 0xa6, + 0x46, 0x46, 0xc6, 0x86, 0x48, 0x6f, 0x76, 0x44, 0x47, 0x71, 0xa0, 0x41, 0xa1, 0x7a, 0x03, 0x5f, + 0xd0, 0xa8, 0x5d, 0x10, 0xd7, 0x93, 0xe8, 0x98, 0x8b, 0x74, 0x23, 0x6c, 0x19, 0xce, 0xe5, 0x30, + 0x42, 0xdc, 0x13, 0x30, 0x20, 0x5b, 0x74, 0x22, 0x5a, 0x74, 0xb9, 0x60, 0x27, 0xb1, 0x0e, 0xbf, + 0x6d, 0xd7, 0x5a, 0x26, 0x17, 0xf1, 0x16, 0x74, 0x64, 0x0f, 0xb0, 0x6f, 0x68, 0xfb, 0x14, 0xd6, + 0xe8, 0x03, 0xfe, 0x45, 0xc5, 0xd1, 0x06, 0xb3, 0x79, 0x36, 0xb8, 0x21, 0x07, 0x0e, 0x92, 0x81, + 0x24, 0x63, 0xaf, 0xc2, 0x09, 0xc1, 0x7b, 0xdb, 0xef, 0x6a, 0x0c, 0xdb, 0x0a, 0xdb, 0xc0, 0x1a, + 0xb6, 0x13, 0xb1, 0x0f, 0x61, 0x84, 0x84, 0x22, 0xfd, 0xf8, 0x28, 0xab, 0x25, 0x65, 0xc0, 0x07, + 0xfb, 0x40, 0x14, 0x7f, 0x2d, 0x5e, 0x7e, 0x69, 0xfc, 0xbb, 0xba, 0x53, 0xdb, 0xb6, 0x0d, 0x2b, + 0xba, 0x96, 0x4b, 0x30, 0x84, 0x96, 0x94, 0xf1, 0x38, 0xac, 0x85, 0x6b, 0xf6, 0xa3, 0x60, 0x98, + 0x90, 0x42, 0x8d, 0x58, 0x1b, 0x70, 0x2a, 0x70, 0x99, 0x98, 0x95, 0xec, 0x38, 0xe2, 0xd4, 0x4e, + 0x53, 0x1c, 0x93, 0x1c, 0x0b, 0xe7, 0xd5, 0x54, 0xdc, 0xb7, 0x71, 0xb1, 0xec, 0x1c, 0x56, 0x78, + 0xb1, 0x2f, 0xef, 0xea, 0x8d, 0xa6, 0x6e, 0xd4, 0xad, 0xc0, 0xae, 0x3f, 0xec, 0xc3, 0x60, 0x4b, + 0x3d, 0x83, 0xb0, 0x0f, 0xe0, 0xb4, 0x0f, 0xd7, 0xbf, 0x68, 0x11, 0x70, 0x15, 0x8f, 0xc4, 0xef, + 0xf2, 0xcb, 0xf9, 0x8f, 0xa2, 0xa0, 0x6f, 0x17, 0x20, 0x6e, 0xf4, 0x93, 0x5e, 0xd6, 0x27, 0xfa, + 0x3d, 0x02, 0xaf, 0x75, 0x08, 0x6e, 0xda, 0xb6, 0x19, 0x49, 0x77, 0xab, 0xfb, 0xdc, 0x0f, 0x42, + 0xac, 0xf4, 0x72, 0x7d, 0x1f, 0x69, 0x25, 0x2d, 0x64, 0x9b, 0xda, 0xb9, 0x36, 0xd1, 0xfe, 0x56, + 0x70, 0xe8, 0x1e, 0x32, 0xa6, 0x06, 0x9c, 0xf4, 0x6c, 0x4f, 0x37, 0x53, 0xfd, 0xd5, 0x5d, 0xf1, + 0x33, 0x29, 0x18, 0x26, 0xbd, 0xb5, 0x8a, 0xe5, 0xe6, 0x26, 0xe7, 0xeb, 0x86, 0x2b, 0x5c, 0xfa, + 0x0e, 0xa6, 0xb2, 0x6f, 0x27, 0x8c, 0xc0, 0x29, 0x78, 0x29, 0x98, 0x33, 0xc9, 0x94, 0x0f, 0x96, + 0xec, 0x27, 0x04, 0x8b, 0x99, 0x2c, 0x06, 0xe8, 0xcd, 0x33, 0x00, 0x9e, 0xc1, 0x9d, 0xb0, 0xec, + 0xf6, 0x8b, 0xf7, 0x61, 0x7f, 0x27, 0xa8, 0xa4, 0x8f, 0x85, 0xd7, 0x4a, 0xf4, 0x3a, 0xe5, 0x3e, + 0xd4, 0x31, 0x81, 0xf7, 0x0d, 0xee, 0x08, 0x69, 0x23, 0x7a, 0x24, 0x3a, 0x0c, 0xc4, 0xd8, 0xc1, + 0xc0, 0xc2, 0x41, 0x20, 0xfe, 0x20, 0xe8, 0x1b, 0x52, 0xcf, 0x20, 0xf4, 0x2a, 0x9c, 0xd8, 0xe3, + 0x7c, 0xa7, 0x86, 0xdf, 0x23, 0xff, 0x93, 0x42, 0x20, 0x43, 0xbe, 0xe3, 0x7b, 0xc9, 0xcd, 0xf9, + 0xff, 0x9c, 0x81, 0x01, 0x81, 0x84, 0xfe, 0x92, 0xc0, 0x78, 0xca, 0x00, 0x92, 0x2e, 0x1e, 0x39, + 0x6a, 0x4b, 0x9d, 0x67, 0x96, 0x96, 0x0a, 0xd3, 0x49, 0xbd, 0xd9, 0xfc, 0xf7, 0xff, 0xf4, 0x8f, + 0x4f, 0x7b, 0xdf, 0xa4, 0x6f, 0x54, 0x14, 0x66, 0xbd, 0x08, 0xf2, 0x0f, 0x04, 0x68, 0x72, 0xe2, + 0x47, 0xaf, 0x76, 0x35, 0x26, 0x94, 0xf8, 0xaf, 0xfd, 0x1f, 0x23, 0x46, 0x76, 0x5d, 0xe8, 0xb0, + 0x4c, 0x97, 0x54, 0x74, 0xa8, 0xb8, 0x49, 0xe4, 0xbf, 0x23, 0x70, 0x3c, 0xc1, 0x9f, 0x2e, 0x17, + 0xc7, 0x14, 0xa8, 0x73, 0xb5, 0x1b, 0x52, 0xd4, 0x66, 0x55, 0x68, 0x73, 0x85, 0x2e, 0x76, 0xa7, + 0x0d, 0xfd, 0x2d, 0x81, 0xb1, 0xce, 0x91, 0x26, 0xbd, 0xa2, 0x1c, 0x1f, 0x1d, 0x53, 0xd2, 0xd2, + 0x72, 0x17, 0x94, 0xa8, 0xc9, 0xdb, 0x42, 0x93, 0x25, 0x7a, 0x59, 0x49, 0x13, 0xde, 0x89, 0xf9, + 0x33, 0x02, 0x23, 0xb1, 0x09, 0x22, 0x5d, 0x38, 0xda, 0xa8, 0x89, 0x11, 0x65, 0xe9, 0xad, 0x62, + 0x44, 0x88, 0xfc, 0x92, 0x40, 0xfe, 0x06, 0x9d, 0xcd, 0x43, 0xee, 0x36, 0x6d, 0xaf, 0x82, 0x15, + 0x20, 0xfd, 0x05, 0x01, 0x88, 0x38, 0xd1, 0xf9, 0x02, 0x62, 0x03, 0xa8, 0x0b, 0x85, 0x68, 0x10, + 0xe9, 0x8a, 0x40, 0xba, 0x48, 0xdf, 0x52, 0x45, 0x5a, 0x79, 0x1c, 0x56, 0xa2, 0x4f, 0xe8, 0xaf, + 0x08, 0x8c, 0xb6, 0xcd, 0x18, 0xe9, 0x65, 0x25, 0x10, 0x9d, 0xe3, 0x9c, 0xd2, 0x62, 0x51, 0xb2, + 0x22, 0xc1, 0x2e, 0xe0, 0xdb, 0x01, 0x6d, 0x9b, 0x02, 0x7f, 0x26, 0x30, 0xd6, 0x39, 0xd1, 0x52, + 0x08, 0xf6, 0x8c, 0x99, 0xa4, 0x42, 0xb0, 0x67, 0x8d, 0xcf, 0xd8, 0xfb, 0x42, 0x93, 0x0d, 0xfa, + 0xae, 0x9a, 0x26, 0x6d, 0x7e, 0xa8, 0x3c, 0x6e, 0xab, 0xb8, 0x9f, 0xd0, 0xbf, 0x10, 0x18, 0x4f, + 0x99, 0x72, 0xd1, 0xa3, 0xaf, 0xc9, 0xec, 0x91, 0x5b, 0x69, 0xa5, 0x3b, 0x62, 0xd4, 0x6f, 0x5d, + 0xe8, 0xb7, 0x4a, 0x57, 0xf2, 0xf4, 0xab, 0x85, 0x0c, 0x32, 0xfc, 0xf5, 0x6f, 0x02, 0x93, 0xe9, + 0x13, 0x11, 0xba, 0xaa, 0x68, 0xfb, 0x8c, 0x69, 0x59, 0xe9, 0x7a, 0xd7, 0xf4, 0xa8, 0xe1, 0x07, + 0x42, 0xc3, 0xf7, 0xe9, 0x56, 0x11, 0x0d, 0xf3, 0xfd, 0xf8, 0x39, 0x81, 0xe3, 0x89, 0x0e, 0x54, + 0xe1, 0x61, 0xc9, 0x1a, 0xde, 0x28, 0x3c, 0x2c, 0x99, 0x0d, 0x2f, 0x5b, 0x14, 0xfa, 0x5d, 0xa2, + 0x65, 0x45, 0xfd, 0x82, 0xab, 0xed, 0xf7, 0x04, 0xc6, 0x12, 0x13, 0x8b, 0x2b, 0x85, 0x81, 0xa8, + 0xe7, 0x58, 0x56, 0x23, 0xcc, 0xd6, 0x84, 0x06, 0x2b, 0xf4, 0x6a, 0x31, 0x0d, 0xda, 0x22, 0xf0, + 0x8f, 0x04, 0x26, 0xd2, 0xba, 0x56, 0xba, 0x52, 0xe0, 0xcd, 0x4e, 0x74, 0xcd, 0xa5, 0xb7, 0xbb, + 0xa4, 0x2e, 0x72, 0x8d, 0x87, 0x1b, 0x9d, 0x61, 0xf6, 0x73, 0x02, 0xe3, 0xc1, 0x2b, 0x1c, 0xeb, + 0x9d, 0x15, 0x5e, 0xcc, 0x64, 0x13, 0xae, 0xf0, 0x62, 0xa6, 0xb4, 0xe7, 0x6a, 0x2f, 0x66, 0x43, + 0x10, 0xee, 0x88, 0x8e, 0x98, 0xfe, 0x8c, 0xc0, 0x70, 0xd8, 0x73, 0xd3, 0xb9, 0x23, 0xa5, 0x76, + 0x36, 0xee, 0xa5, 0xf9, 0x22, 0x24, 0x08, 0xf3, 0xa2, 0x80, 0xf9, 0x0d, 0xfa, 0x5a, 0x1e, 0xcc, + 0x66, 0x88, 0xea, 0x37, 0x04, 0x8e, 0x27, 0xda, 0x29, 0xaa, 0xf8, 0x4a, 0xa4, 0x74, 0xf9, 0x0a, + 0xf9, 0x9b, 0xd9, 0xe2, 0xb3, 0x25, 0x81, 0x7d, 0x8e, 0x56, 0xf2, 0xb0, 0xa7, 0x34, 0x93, 0x7e, + 0x02, 0x8f, 0xa7, 0x34, 0xe1, 0x0a, 0xaf, 0x49, 0x76, 0x7b, 0xaf, 0xf0, 0x9a, 0xe4, 0xf4, 0xfd, + 0x6c, 0x59, 0xe8, 0xb2, 0x40, 0xe7, 0x94, 0x75, 0x09, 0x3a, 0x73, 0xfa, 0x8c, 0xc0, 0x64, 0x7a, + 0x1f, 0xaa, 0xf0, 0x84, 0xe4, 0x76, 0xc0, 0x0a, 0x4f, 0x48, 0x7e, 0x03, 0xcc, 0x6e, 0x08, 0xb5, + 0xde, 0xa1, 0xd7, 0xf3, 0xd4, 0x6a, 0xeb, 0x33, 0xe3, 0x0d, 0x71, 0xe5, 0x31, 0xae, 0x9e, 0x08, + 0x97, 0xa5, 0xb4, 0x95, 0x0a, 0x2e, 0xcb, 0x6e, 0x84, 0x15, 0x5c, 0x96, 0xd3, 0x21, 0xab, 0xb9, + 0x2c, 0xb5, 0x87, 0x5e, 0xdb, 0x7f, 0xfa, 0x6c, 0x9a, 0x7c, 0xf1, 0x6c, 0x9a, 0xfc, 0xfd, 0xd9, + 0x34, 0xf9, 0xf1, 0xf3, 0xe9, 0x9e, 0x2f, 0x9e, 0x4f, 0xf7, 0xfc, 0xf5, 0xf9, 0x74, 0xcf, 0x83, + 0x3b, 0xb1, 0xc9, 0xc6, 0x56, 0xc0, 0xf6, 0x96, 0xbe, 0xeb, 0x46, 0x42, 0x2e, 0x56, 0x6d, 0x87, + 0xc7, 0x97, 0xfb, 0xba, 0x61, 0xe1, 0x55, 0xe2, 0x46, 0x08, 0xc4, 0x14, 0x64, 0x77, 0x50, 0xfc, + 0x37, 0xd1, 0xc2, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x9e, 0xbd, 0x40, 0x2c, 0x1c, 0x25, 0x00, + 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -4694,16 +4701,18 @@ func (m *QueryFeeDiscountAccountInfoResponse) MarshalToSizedBuffer(dAtA []byte) _ = i var l int _ = l - { - size := m.TotalFeesPaid.Size() - i -= size - if _, err := m.TotalFeesPaid.MarshalTo(dAtA[i:]); err != nil { - return 0, err + if m.AccountInfo != nil { + { + size, err := m.AccountInfo.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) } - i = encodeVarintQuery(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x12 } - i-- - dAtA[i] = 0x12 if m.TierLevel != 0 { i = encodeVarintQuery(dAtA, i, uint64(m.TierLevel)) i-- @@ -5427,8 +5436,10 @@ func (m *QueryFeeDiscountAccountInfoResponse) Size() (n int) { if m.TierLevel != 0 { n += 1 + sovQuery(uint64(m.TierLevel)) } - l = m.TotalFeesPaid.Size() - n += 1 + l + sovQuery(uint64(l)) + if m.AccountInfo != nil { + l = m.AccountInfo.Size() + n += 1 + l + sovQuery(uint64(l)) + } return n } @@ -9624,9 +9635,9 @@ func (m *QueryFeeDiscountAccountInfoResponse) Unmarshal(dAtA []byte) error { } case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TotalFeesPaid", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AccountInfo", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -9636,23 +9647,25 @@ func (m *QueryFeeDiscountAccountInfoResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthQuery } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthQuery } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.TotalFeesPaid.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.AccountInfo == nil { + m.AccountInfo = &FeeDiscountTierInfo{} + } + if err := m.AccountInfo.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex diff --git a/chain/exchange/types/trading_rewards.go b/chain/exchange/types/trading_rewards.go index c868efa7..7e3ecea2 100644 --- a/chain/exchange/types/trading_rewards.go +++ b/chain/exchange/types/trading_rewards.go @@ -9,9 +9,9 @@ import ( type TradingRewardPoints map[string]sdk.Dec func NewTradingRewardPoints() TradingRewardPoints { - liquidityMiningRewards := make(TradingRewardPoints) + tradingRewardPoints := make(TradingRewardPoints) - return liquidityMiningRewards + return tradingRewardPoints } func (l TradingRewardPoints) GetSortedAccountKeys() []string { diff --git a/chain/exchange/types/tx.pb.go b/chain/exchange/types/tx.pb.go index 521e6c24..2d860f1e 100644 --- a/chain/exchange/types/tx.pb.go +++ b/chain/exchange/types/tx.pb.go @@ -470,13 +470,13 @@ type MsgInstantPerpetualMarketLaunch struct { OracleScaleFactor uint32 `protobuf:"varint,6,opt,name=oracle_scale_factor,json=oracleScaleFactor,proto3" json:"oracle_scale_factor,omitempty"` // Oracle type OracleType types1.OracleType `protobuf:"varint,7,opt,name=oracle_type,json=oracleType,proto3,enum=injective.oracle.v1beta1.OracleType" json:"oracle_type,omitempty"` - // maker_fee_rate defines the trade fee rate for makers on the spot market + // maker_fee_rate defines the trade fee rate for makers on the perpetual market MakerFeeRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,8,opt,name=maker_fee_rate,json=makerFeeRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"maker_fee_rate"` - // taker_fee_rate defines the trade fee rate for takers on the spot market + // taker_fee_rate defines the trade fee rate for takers on the perpetual market TakerFeeRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,9,opt,name=taker_fee_rate,json=takerFeeRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"taker_fee_rate"` - // initial_margin_ratio defines the initial margin ratio for the derivative market + // initial_margin_ratio defines the initial margin ratio for the perpetual market InitialMarginRatio github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,10,opt,name=initial_margin_ratio,json=initialMarginRatio,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"initial_margin_ratio"` - // maintenance_margin_ratio defines the maintenance margin ratio for the derivative market + // maintenance_margin_ratio defines the maintenance margin ratio for the perpetual market MaintenanceMarginRatio github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,11,opt,name=maintenance_margin_ratio,json=maintenanceMarginRatio,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"maintenance_margin_ratio"` // min_price_tick_size defines the minimum tick size of the order's price and margin MinPriceTickSize github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,12,opt,name=min_price_tick_size,json=minPriceTickSize,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"min_price_tick_size"` @@ -573,9 +573,9 @@ type MsgInstantExpiryFuturesMarketLaunch struct { OracleScaleFactor uint32 `protobuf:"varint,7,opt,name=oracle_scale_factor,json=oracleScaleFactor,proto3" json:"oracle_scale_factor,omitempty"` // Expiration time of the market Expiry int64 `protobuf:"varint,8,opt,name=expiry,proto3" json:"expiry,omitempty"` - // maker_fee_rate defines the trade fee rate for makers on the spot market + // maker_fee_rate defines the trade fee rate for makers on the expiry futures market MakerFeeRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,9,opt,name=maker_fee_rate,json=makerFeeRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"maker_fee_rate"` - // taker_fee_rate defines the trade fee rate for takers on the spot market + // taker_fee_rate defines the trade fee rate for takers on the expiry futures market TakerFeeRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,10,opt,name=taker_fee_rate,json=takerFeeRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"taker_fee_rate"` // initial_margin_ratio defines the initial margin ratio for the derivative market InitialMarginRatio github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,11,opt,name=initial_margin_ratio,json=initialMarginRatio,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"initial_margin_ratio"` @@ -1863,6 +1863,50 @@ func (m *ExchangeEnableProposal) XXX_DiscardUnknown() { var xxx_messageInfo_ExchangeEnableProposal proto.InternalMessageInfo +type BatchExchangeModificationProposal struct { + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + SpotMarketParamUpdateProposals []*SpotMarketParamUpdateProposal `protobuf:"bytes,3,rep,name=spot_market_param_update_proposals,json=spotMarketParamUpdateProposals,proto3" json:"spot_market_param_update_proposals,omitempty"` + DerivativeMarketParamUpdateProposals []*DerivativeMarketParamUpdateProposal `protobuf:"bytes,4,rep,name=derivative_market_param_update_proposals,json=derivativeMarketParamUpdateProposals,proto3" json:"derivative_market_param_update_proposals,omitempty"` + SpotMarketLaunchProposals []*SpotMarketLaunchProposal `protobuf:"bytes,5,rep,name=spot_market_launch_proposals,json=spotMarketLaunchProposals,proto3" json:"spot_market_launch_proposals,omitempty"` + PerpetualMarketLaunchProposals []*PerpetualMarketLaunchProposal `protobuf:"bytes,6,rep,name=perpetual_market_launch_proposals,json=perpetualMarketLaunchProposals,proto3" json:"perpetual_market_launch_proposals,omitempty"` + ExpiryFuturesMarketLaunchProposals []*ExpiryFuturesMarketLaunchProposal `protobuf:"bytes,7,rep,name=expiry_futures_market_launch_proposals,json=expiryFuturesMarketLaunchProposals,proto3" json:"expiry_futures_market_launch_proposals,omitempty"` + TradingRewardCampaignUpdateProposal *TradingRewardCampaignUpdateProposal `protobuf:"bytes,8,opt,name=trading_reward_campaign_update_proposal,json=tradingRewardCampaignUpdateProposal,proto3" json:"trading_reward_campaign_update_proposal,omitempty"` +} + +func (m *BatchExchangeModificationProposal) Reset() { *m = BatchExchangeModificationProposal{} } +func (m *BatchExchangeModificationProposal) String() string { return proto.CompactTextString(m) } +func (*BatchExchangeModificationProposal) ProtoMessage() {} +func (*BatchExchangeModificationProposal) Descriptor() ([]byte, []int) { + return fileDescriptor_bd45b74cb6d81462, []int{41} +} +func (m *BatchExchangeModificationProposal) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *BatchExchangeModificationProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_BatchExchangeModificationProposal.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *BatchExchangeModificationProposal) XXX_Merge(src proto.Message) { + xxx_messageInfo_BatchExchangeModificationProposal.Merge(m, src) +} +func (m *BatchExchangeModificationProposal) XXX_Size() int { + return m.Size() +} +func (m *BatchExchangeModificationProposal) XXX_DiscardUnknown() { + xxx_messageInfo_BatchExchangeModificationProposal.DiscardUnknown(m) +} + +var xxx_messageInfo_BatchExchangeModificationProposal proto.InternalMessageInfo + // SpotMarketLaunchProposal defines a SDK message for proposing a new spot market through governance type SpotMarketLaunchProposal struct { Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` @@ -1877,13 +1921,17 @@ type SpotMarketLaunchProposal struct { MinPriceTickSize github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,6,opt,name=min_price_tick_size,json=minPriceTickSize,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"min_price_tick_size"` // min_quantity_tick_size defines the minimum tick size of the order's quantity MinQuantityTickSize github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,7,opt,name=min_quantity_tick_size,json=minQuantityTickSize,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"min_quantity_tick_size"` + // maker_fee_rate defines the fee percentage makers pay when trading + MakerFeeRate *github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,8,opt,name=maker_fee_rate,json=makerFeeRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"maker_fee_rate,omitempty"` + // taker_fee_rate defines the fee percentage takers pay when trading + TakerFeeRate *github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,9,opt,name=taker_fee_rate,json=takerFeeRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"taker_fee_rate,omitempty"` } func (m *SpotMarketLaunchProposal) Reset() { *m = SpotMarketLaunchProposal{} } func (m *SpotMarketLaunchProposal) String() string { return proto.CompactTextString(m) } func (*SpotMarketLaunchProposal) ProtoMessage() {} func (*SpotMarketLaunchProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_bd45b74cb6d81462, []int{41} + return fileDescriptor_bd45b74cb6d81462, []int{42} } func (m *SpotMarketLaunchProposal) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1946,7 +1994,7 @@ func (m *PerpetualMarketLaunchProposal) Reset() { *m = PerpetualMarketLa func (m *PerpetualMarketLaunchProposal) String() string { return proto.CompactTextString(m) } func (*PerpetualMarketLaunchProposal) ProtoMessage() {} func (*PerpetualMarketLaunchProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_bd45b74cb6d81462, []int{42} + return fileDescriptor_bd45b74cb6d81462, []int{43} } func (m *PerpetualMarketLaunchProposal) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2011,7 +2059,7 @@ func (m *ExpiryFuturesMarketLaunchProposal) Reset() { *m = ExpiryFutures func (m *ExpiryFuturesMarketLaunchProposal) String() string { return proto.CompactTextString(m) } func (*ExpiryFuturesMarketLaunchProposal) ProtoMessage() {} func (*ExpiryFuturesMarketLaunchProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_bd45b74cb6d81462, []int{43} + return fileDescriptor_bd45b74cb6d81462, []int{44} } func (m *ExpiryFuturesMarketLaunchProposal) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2063,13 +2111,14 @@ type DerivativeMarketParamUpdateProposal struct { // hourly_funding_rate_cap defines the maximum absolute value of the hourly funding rate HourlyFundingRateCap *github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,12,opt,name=HourlyFundingRateCap,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"HourlyFundingRateCap,omitempty"` Status MarketStatus `protobuf:"varint,13,opt,name=status,proto3,enum=injective.exchange.v1beta1.MarketStatus" json:"status,omitempty"` + OracleParams *OracleParams `protobuf:"bytes,14,opt,name=oracle_params,json=oracleParams,proto3" json:"oracle_params,omitempty"` } func (m *DerivativeMarketParamUpdateProposal) Reset() { *m = DerivativeMarketParamUpdateProposal{} } func (m *DerivativeMarketParamUpdateProposal) String() string { return proto.CompactTextString(m) } func (*DerivativeMarketParamUpdateProposal) ProtoMessage() {} func (*DerivativeMarketParamUpdateProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_bd45b74cb6d81462, []int{44} + return fileDescriptor_bd45b74cb6d81462, []int{45} } func (m *DerivativeMarketParamUpdateProposal) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2098,28 +2147,29 @@ func (m *DerivativeMarketParamUpdateProposal) XXX_DiscardUnknown() { var xxx_messageInfo_DerivativeMarketParamUpdateProposal proto.InternalMessageInfo -type DerivativeMarketBandOraclePromotionProposal struct { - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - MarketId string `protobuf:"bytes,3,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` +type OracleParams struct { + // Oracle base currency + OracleBase string `protobuf:"bytes,1,opt,name=oracle_base,json=oracleBase,proto3" json:"oracle_base,omitempty"` + // Oracle quote currency + OracleQuote string `protobuf:"bytes,2,opt,name=oracle_quote,json=oracleQuote,proto3" json:"oracle_quote,omitempty"` + // Scale factor for oracle prices. + OracleScaleFactor uint32 `protobuf:"varint,3,opt,name=oracle_scale_factor,json=oracleScaleFactor,proto3" json:"oracle_scale_factor,omitempty"` + // Oracle type + OracleType types1.OracleType `protobuf:"varint,4,opt,name=oracle_type,json=oracleType,proto3,enum=injective.oracle.v1beta1.OracleType" json:"oracle_type,omitempty"` } -func (m *DerivativeMarketBandOraclePromotionProposal) Reset() { - *m = DerivativeMarketBandOraclePromotionProposal{} -} -func (m *DerivativeMarketBandOraclePromotionProposal) String() string { - return proto.CompactTextString(m) -} -func (*DerivativeMarketBandOraclePromotionProposal) ProtoMessage() {} -func (*DerivativeMarketBandOraclePromotionProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_bd45b74cb6d81462, []int{45} +func (m *OracleParams) Reset() { *m = OracleParams{} } +func (m *OracleParams) String() string { return proto.CompactTextString(m) } +func (*OracleParams) ProtoMessage() {} +func (*OracleParams) Descriptor() ([]byte, []int) { + return fileDescriptor_bd45b74cb6d81462, []int{46} } -func (m *DerivativeMarketBandOraclePromotionProposal) XXX_Unmarshal(b []byte) error { +func (m *OracleParams) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *DerivativeMarketBandOraclePromotionProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *OracleParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_DerivativeMarketBandOraclePromotionProposal.Marshal(b, m, deterministic) + return xxx_messageInfo_OracleParams.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -2129,17 +2179,45 @@ func (m *DerivativeMarketBandOraclePromotionProposal) XXX_Marshal(b []byte, dete return b[:n], nil } } -func (m *DerivativeMarketBandOraclePromotionProposal) XXX_Merge(src proto.Message) { - xxx_messageInfo_DerivativeMarketBandOraclePromotionProposal.Merge(m, src) +func (m *OracleParams) XXX_Merge(src proto.Message) { + xxx_messageInfo_OracleParams.Merge(m, src) } -func (m *DerivativeMarketBandOraclePromotionProposal) XXX_Size() int { +func (m *OracleParams) XXX_Size() int { return m.Size() } -func (m *DerivativeMarketBandOraclePromotionProposal) XXX_DiscardUnknown() { - xxx_messageInfo_DerivativeMarketBandOraclePromotionProposal.DiscardUnknown(m) +func (m *OracleParams) XXX_DiscardUnknown() { + xxx_messageInfo_OracleParams.DiscardUnknown(m) +} + +var xxx_messageInfo_OracleParams proto.InternalMessageInfo + +func (m *OracleParams) GetOracleBase() string { + if m != nil { + return m.OracleBase + } + return "" +} + +func (m *OracleParams) GetOracleQuote() string { + if m != nil { + return m.OracleQuote + } + return "" +} + +func (m *OracleParams) GetOracleScaleFactor() uint32 { + if m != nil { + return m.OracleScaleFactor + } + return 0 } -var xxx_messageInfo_DerivativeMarketBandOraclePromotionProposal proto.InternalMessageInfo +func (m *OracleParams) GetOracleType() types1.OracleType { + if m != nil { + return m.OracleType + } + return types1.OracleType_Unspecified +} type TradingRewardCampaignLaunchProposal struct { Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` @@ -2152,7 +2230,7 @@ func (m *TradingRewardCampaignLaunchProposal) Reset() { *m = TradingRewa func (m *TradingRewardCampaignLaunchProposal) String() string { return proto.CompactTextString(m) } func (*TradingRewardCampaignLaunchProposal) ProtoMessage() {} func (*TradingRewardCampaignLaunchProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_bd45b74cb6d81462, []int{46} + return fileDescriptor_bd45b74cb6d81462, []int{47} } func (m *TradingRewardCampaignLaunchProposal) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2193,7 +2271,7 @@ func (m *TradingRewardCampaignUpdateProposal) Reset() { *m = TradingRewa func (m *TradingRewardCampaignUpdateProposal) String() string { return proto.CompactTextString(m) } func (*TradingRewardCampaignUpdateProposal) ProtoMessage() {} func (*TradingRewardCampaignUpdateProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_bd45b74cb6d81462, []int{47} + return fileDescriptor_bd45b74cb6d81462, []int{48} } func (m *TradingRewardCampaignUpdateProposal) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2232,7 +2310,7 @@ func (m *FeeDiscountProposal) Reset() { *m = FeeDiscountProposal{} } func (m *FeeDiscountProposal) String() string { return proto.CompactTextString(m) } func (*FeeDiscountProposal) ProtoMessage() {} func (*FeeDiscountProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_bd45b74cb6d81462, []int{48} + return fileDescriptor_bd45b74cb6d81462, []int{49} } func (m *FeeDiscountProposal) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2304,11 +2382,12 @@ func init() { proto.RegisterType((*MsgIncreasePositionMarginResponse)(nil), "injective.exchange.v1beta1.MsgIncreasePositionMarginResponse") proto.RegisterType((*SpotMarketParamUpdateProposal)(nil), "injective.exchange.v1beta1.SpotMarketParamUpdateProposal") proto.RegisterType((*ExchangeEnableProposal)(nil), "injective.exchange.v1beta1.ExchangeEnableProposal") + proto.RegisterType((*BatchExchangeModificationProposal)(nil), "injective.exchange.v1beta1.BatchExchangeModificationProposal") proto.RegisterType((*SpotMarketLaunchProposal)(nil), "injective.exchange.v1beta1.SpotMarketLaunchProposal") proto.RegisterType((*PerpetualMarketLaunchProposal)(nil), "injective.exchange.v1beta1.PerpetualMarketLaunchProposal") proto.RegisterType((*ExpiryFuturesMarketLaunchProposal)(nil), "injective.exchange.v1beta1.ExpiryFuturesMarketLaunchProposal") proto.RegisterType((*DerivativeMarketParamUpdateProposal)(nil), "injective.exchange.v1beta1.DerivativeMarketParamUpdateProposal") - proto.RegisterType((*DerivativeMarketBandOraclePromotionProposal)(nil), "injective.exchange.v1beta1.DerivativeMarketBandOraclePromotionProposal") + proto.RegisterType((*OracleParams)(nil), "injective.exchange.v1beta1.OracleParams") proto.RegisterType((*TradingRewardCampaignLaunchProposal)(nil), "injective.exchange.v1beta1.TradingRewardCampaignLaunchProposal") proto.RegisterType((*TradingRewardCampaignUpdateProposal)(nil), "injective.exchange.v1beta1.TradingRewardCampaignUpdateProposal") proto.RegisterType((*FeeDiscountProposal)(nil), "injective.exchange.v1beta1.FeeDiscountProposal") @@ -2319,158 +2398,173 @@ func init() { } var fileDescriptor_bd45b74cb6d81462 = []byte{ - // 2413 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0xdd, 0x6f, 0xdb, 0xd6, - 0x15, 0x37, 0x2d, 0x59, 0x1f, 0xc7, 0x76, 0x92, 0xd2, 0x8e, 0xa3, 0x30, 0xb1, 0xad, 0xd8, 0x4d, - 0x9a, 0x2e, 0x88, 0xd4, 0xb8, 0x69, 0xbb, 0xa4, 0xdb, 0xb2, 0xd8, 0x96, 0x13, 0xad, 0x56, 0xe2, - 0x50, 0x6e, 0x37, 0x04, 0xd8, 0xb4, 0x6b, 0xea, 0x46, 0xe2, 0x22, 0x91, 0x0a, 0xef, 0x55, 0x1a, - 0x17, 0xc3, 0x02, 0xec, 0xa1, 0x2b, 0xb2, 0xae, 0x5b, 0x31, 0xec, 0x61, 0x03, 0x02, 0x04, 0xc3, - 0x80, 0x0d, 0xd8, 0xfa, 0x07, 0xec, 0x3f, 0xe8, 0x63, 0x1f, 0x86, 0x61, 0xe8, 0x43, 0x31, 0x24, - 0x2f, 0x7b, 0xdf, 0xcb, 0x1e, 0x07, 0x5e, 0x52, 0x14, 0x45, 0xf1, 0x4b, 0xb4, 0xe9, 0x16, 0x41, - 0x9f, 0x2c, 0x5e, 0x9e, 0x8f, 0xdf, 0x39, 0xf7, 0x9c, 0xab, 0x7b, 0x8e, 0x8e, 0x61, 0x59, 0x56, - 0x7e, 0x82, 0x25, 0x2a, 0xdf, 0xc7, 0x45, 0xfc, 0x40, 0x6a, 0x22, 0xa5, 0x81, 0x8b, 0xf7, 0x2f, - 0xec, 0x60, 0x8a, 0x2e, 0x14, 0xe9, 0x83, 0x42, 0x47, 0x53, 0xa9, 0xca, 0x0b, 0x16, 0x51, 0xa1, - 0x47, 0x54, 0x30, 0x89, 0x84, 0xd9, 0x86, 0xda, 0x50, 0x19, 0x59, 0x51, 0xff, 0x64, 0x70, 0x08, - 0xa7, 0xfb, 0x62, 0x55, 0x0d, 0x49, 0xad, 0xbe, 0x50, 0xe3, 0xd1, 0x24, 0x7b, 0xd9, 0x47, 0xbb, - 0xa5, 0xc9, 0x20, 0x5d, 0x90, 0x54, 0xd2, 0x56, 0x49, 0x71, 0x07, 0x91, 0x3e, 0x8d, 0xa4, 0xca, - 0x8a, 0xf1, 0x7e, 0xe9, 0x43, 0x0e, 0xa0, 0x42, 0x1a, 0xeb, 0xb8, 0xa3, 0x12, 0x99, 0xf2, 0x73, - 0x90, 0x22, 0x58, 0xa9, 0x63, 0x2d, 0xc7, 0xe5, 0xb9, 0xb3, 0x59, 0xd1, 0x7c, 0xe2, 0x97, 0x61, - 0x9a, 0x74, 0x77, 0x90, 0x24, 0xa9, 0x5d, 0x85, 0xd6, 0xe4, 0x7a, 0x6e, 0x9c, 0xbd, 0x9e, 0xea, - 0x2f, 0x96, 0xeb, 0xfc, 0x1b, 0x90, 0x42, 0x6d, 0xfd, 0x73, 0x2e, 0x91, 0xe7, 0xce, 0x4e, 0xae, - 0x1c, 0x2f, 0x18, 0xca, 0x0b, 0xba, 0xf2, 0x9e, 0xe5, 0x85, 0x35, 0x55, 0x56, 0x56, 0x93, 0x9f, - 0x7e, 0xb1, 0x38, 0x26, 0x9a, 0xe4, 0x97, 0x33, 0x1f, 0x3c, 0x59, 0x1c, 0xfb, 0xcf, 0x93, 0xc5, - 0xb1, 0xa5, 0x59, 0xe0, 0xfb, 0x68, 0x44, 0x4c, 0x3a, 0xaa, 0x42, 0xf0, 0xd2, 0xaf, 0x38, 0x98, - 0xac, 0x90, 0xc6, 0xf7, 0x65, 0xda, 0xac, 0x6b, 0xe8, 0xdd, 0x2f, 0x1d, 0xe5, 0x51, 0x98, 0xb1, - 0xc1, 0xb1, 0x60, 0xfe, 0x0c, 0x8e, 0x55, 0x48, 0x63, 0x4d, 0xc3, 0x88, 0xe2, 0x6a, 0x47, 0xa5, - 0x9b, 0x72, 0x5b, 0xa6, 0x37, 0x35, 0x1d, 0x99, 0x17, 0xe2, 0xab, 0x30, 0xa1, 0xea, 0x04, 0x0c, - 0xe9, 0xe4, 0xca, 0xe9, 0x82, 0x77, 0xc8, 0x14, 0x74, 0x91, 0x4c, 0x9a, 0x89, 0xcb, 0xe0, 0xb4, - 0xc1, 0xfa, 0x1e, 0x2c, 0x7a, 0xe8, 0xef, 0x41, 0xe4, 0xe7, 0x01, 0x18, 0x57, 0xad, 0x89, 0x48, - 0xd3, 0xc4, 0x92, 0x65, 0x2b, 0xd7, 0x11, 0x69, 0xda, 0x64, 0xbd, 0xcf, 0xc1, 0x7c, 0x85, 0x34, - 0x56, 0x11, 0x95, 0x9a, 0x6e, 0x12, 0x89, 0xa7, 0x49, 0x6b, 0x90, 0x62, 0x02, 0x49, 0x6e, 0x3c, - 0x9f, 0x18, 0xd5, 0x26, 0x93, 0xd5, 0x06, 0x64, 0x1b, 0x4e, 0xfb, 0xe2, 0xb0, 0x4c, 0x3b, 0x05, - 0x53, 0x7d, 0xd3, 0x30, 0xc9, 0x71, 0xf9, 0xc4, 0xd9, 0xac, 0x38, 0x69, 0x19, 0x87, 0xed, 0x52, - 0x3f, 0x1f, 0x07, 0xa1, 0x42, 0x1a, 0x65, 0x85, 0x50, 0xa4, 0x50, 0x5d, 0x64, 0x05, 0x69, 0x77, - 0x31, 0xdd, 0x44, 0x5d, 0x45, 0x6a, 0x7a, 0xda, 0x36, 0x07, 0x29, 0x2a, 0x4b, 0x77, 0xcd, 0xfd, - 0xca, 0x8a, 0xe6, 0x93, 0xee, 0x56, 0x3d, 0x7a, 0x6a, 0x75, 0xac, 0xa8, 0x6d, 0x16, 0x57, 0x59, - 0x31, 0xab, 0xaf, 0xac, 0xeb, 0x0b, 0xfc, 0x22, 0x4c, 0xde, 0xeb, 0xaa, 0xb4, 0xf7, 0x3e, 0xc9, - 0xde, 0x03, 0x5b, 0x32, 0x08, 0x7e, 0x08, 0x33, 0x6d, 0x59, 0xa9, 0x75, 0x34, 0x59, 0xc2, 0x35, - 0x5d, 0x66, 0x8d, 0xc8, 0xef, 0xe1, 0xdc, 0x84, 0x4e, 0xb8, 0x5a, 0xd0, 0x3d, 0xf3, 0xf9, 0x17, - 0x8b, 0x67, 0x1a, 0x32, 0x6d, 0x76, 0x77, 0x0a, 0x92, 0xda, 0x2e, 0x9a, 0x59, 0x6d, 0xfc, 0x39, - 0x4f, 0xea, 0x77, 0x8b, 0x74, 0xb7, 0x83, 0x49, 0x61, 0x1d, 0x4b, 0xe2, 0x91, 0xb6, 0xac, 0x6c, - 0xe9, 0x92, 0xb6, 0x65, 0xe9, 0x6e, 0x55, 0x7e, 0x0f, 0xf3, 0x12, 0xcc, 0xe9, 0xe2, 0xef, 0x75, - 0x91, 0x42, 0x65, 0xba, 0x6b, 0xd3, 0x90, 0x8a, 0xa4, 0x41, 0x07, 0x7b, 0xcb, 0x14, 0xd6, 0x53, - 0x62, 0x73, 0xee, 0x8b, 0xb0, 0xe4, 0xed, 0x5b, 0x2b, 0x5b, 0xfe, 0x9b, 0x62, 0xe1, 0x6a, 0x92, - 0x6d, 0x61, 0xad, 0x83, 0x69, 0x17, 0xb5, 0xf6, 0xb4, 0x0f, 0x0e, 0x47, 0x27, 0x86, 0x1c, 0xbd, - 0x08, 0x93, 0xc6, 0x49, 0x5a, 0xd3, 0x77, 0xa7, 0xb7, 0x13, 0xc6, 0xd2, 0x2a, 0xea, 0x45, 0x11, - 0x23, 0x60, 0x5c, 0xc6, 0x16, 0x88, 0x26, 0xd3, 0x2d, 0x7d, 0x89, 0x2f, 0xc0, 0x8c, 0x49, 0x42, - 0x24, 0xd4, 0xc2, 0xb5, 0x3b, 0x48, 0xa2, 0xaa, 0xc6, 0x5c, 0x39, 0x2d, 0xbe, 0x60, 0xbc, 0xaa, - 0xea, 0x6f, 0x36, 0xd8, 0x0b, 0xbe, 0x64, 0xe9, 0xd4, 0x3d, 0x98, 0x4b, 0xe7, 0xb9, 0xb3, 0x87, - 0x56, 0x5e, 0xb4, 0x65, 0x85, 0x79, 0xb6, 0xf7, 0x72, 0xe2, 0x26, 0x7b, 0xdc, 0xde, 0xed, 0xe0, - 0x1e, 0x32, 0xfd, 0x33, 0xbf, 0x0d, 0x87, 0xda, 0xe8, 0x2e, 0xd6, 0x6a, 0x77, 0x30, 0xae, 0x69, - 0x88, 0xe2, 0x5c, 0x26, 0xd2, 0xe6, 0x4d, 0x31, 0x29, 0x1b, 0x18, 0x8b, 0x88, 0x32, 0xa9, 0x74, - 0x50, 0x6a, 0x36, 0x9a, 0x54, 0x6a, 0x97, 0xfa, 0x63, 0x98, 0x95, 0x15, 0x99, 0xca, 0xa8, 0x55, - 0x6b, 0x23, 0xad, 0x21, 0x2b, 0xba, 0x68, 0x59, 0xcd, 0x41, 0x24, 0xd9, 0xbc, 0x29, 0xab, 0xc2, - 0x44, 0x89, 0xba, 0x24, 0xbe, 0x09, 0xb9, 0x36, 0x92, 0x15, 0x8a, 0x15, 0xa4, 0x48, 0x78, 0x50, - 0xcb, 0x64, 0x24, 0x2d, 0x73, 0x36, 0x79, 0x76, 0x4d, 0x1e, 0xb9, 0x39, 0x15, 0x7b, 0x6e, 0x4e, - 0xc7, 0x91, 0x9b, 0x2f, 0xc3, 0x4b, 0x01, 0x49, 0x67, 0x25, 0xe8, 0xaf, 0xd3, 0xb0, 0xdc, 0xa7, - 0x2d, 0x3d, 0xe8, 0xc8, 0xda, 0xee, 0x46, 0x97, 0x76, 0x35, 0x4c, 0xbe, 0xfa, 0x49, 0xea, 0x48, - 0xba, 0x54, 0xc4, 0xa4, 0xf3, 0xc8, 0xf5, 0xb4, 0x57, 0xae, 0xcf, 0x41, 0x0a, 0x33, 0x47, 0xb1, - 0xe4, 0x4c, 0x88, 0xe6, 0x93, 0x4b, 0xf2, 0x66, 0x63, 0x49, 0x5e, 0x88, 0x31, 0x79, 0x27, 0x0f, - 0x24, 0x79, 0xa7, 0x0e, 0x22, 0x79, 0xa7, 0x63, 0x4f, 0xde, 0x43, 0x71, 0x24, 0xef, 0x79, 0x38, - 0x17, 0x22, 0x21, 0xad, 0x04, 0x7e, 0x08, 0xb9, 0x81, 0xfb, 0xa0, 0x41, 0x74, 0x80, 0x17, 0xd2, - 0xb7, 0x20, 0xef, 0x05, 0x20, 0xf2, 0x8d, 0xd4, 0x90, 0xb6, 0x8e, 0x35, 0xf9, 0x3e, 0xd2, 0x61, - 0x85, 0xb8, 0x64, 0x5f, 0x1b, 0xb4, 0xe9, 0x9c, 0x9f, 0x4d, 0x7d, 0xc1, 0x2e, 0x96, 0x25, 0x75, - 0x30, 0x4b, 0x5b, 0xec, 0x46, 0xea, 0x8d, 0x63, 0x74, 0xd3, 0x3e, 0xe2, 0xd8, 0x49, 0x6b, 0xbb, - 0xe4, 0xba, 0xc9, 0xf5, 0xbe, 0x72, 0x97, 0x1d, 0x57, 0xee, 0x08, 0x16, 0xf6, 0x2e, 0xde, 0x86, - 0x89, 0xb7, 0x59, 0xa0, 0x05, 0xe1, 0x89, 0x76, 0xf5, 0xfe, 0x2d, 0xc7, 0x6a, 0xbc, 0x35, 0x3d, - 0x55, 0x5b, 0x56, 0x08, 0x79, 0xda, 0x76, 0x02, 0xb2, 0x6d, 0x16, 0x36, 0xfd, 0x7a, 0x2e, 0x63, - 0x2c, 0x94, 0xeb, 0xc3, 0x05, 0x5f, 0xc2, 0xa5, 0xe0, 0x1b, 0xdc, 0x86, 0xa4, 0x73, 0x1b, 0x0c, - 0x8b, 0x4f, 0xb2, 0x7a, 0xc0, 0x01, 0xca, 0xca, 0xa4, 0x5d, 0x96, 0x49, 0x86, 0x3f, 0x06, 0x49, - 0xbc, 0x37, 0xe5, 0x0a, 0x24, 0xeb, 0x88, 0xa2, 0x30, 0x55, 0x10, 0x93, 0xb4, 0x8e, 0x28, 0x32, - 0x37, 0x83, 0x31, 0x9a, 0xc0, 0x36, 0x58, 0x0e, 0xb9, 0xaa, 0xb6, 0xfc, 0x9f, 0x83, 0x34, 0xe9, - 0x4a, 0x12, 0x26, 0x86, 0xeb, 0x33, 0x62, 0xef, 0xd1, 0xe6, 0xf6, 0x5f, 0x70, 0xb0, 0xe0, 0x12, - 0xb6, 0x61, 0xce, 0x84, 0x7d, 0xce, 0x9f, 0x5b, 0x70, 0xc6, 0x1f, 0xc8, 0xe8, 0x09, 0xf4, 0x7b, - 0xce, 0x38, 0xea, 0x98, 0x83, 0x1c, 0x10, 0xbe, 0xec, 0xc8, 0x5a, 0x32, 0x0e, 0x41, 0x37, 0x68, - 0x56, 0x7c, 0xb5, 0x20, 0x6b, 0xc5, 0xc0, 0x20, 0x2e, 0x2e, 0x08, 0xd7, 0x78, 0x20, 0xae, 0x84, - 0x03, 0xd7, 0xd2, 0x43, 0x16, 0x09, 0xb6, 0x90, 0x72, 0xc0, 0x8a, 0x3d, 0xa6, 0x37, 0x59, 0x04, - 0xf8, 0x00, 0x18, 0x29, 0xb2, 0xff, 0xc9, 0xc1, 0xd1, 0x0a, 0x69, 0x54, 0x2d, 0x0f, 0x6c, 0x6b, - 0x48, 0x21, 0x77, 0x7c, 0x76, 0xfe, 0x15, 0x98, 0x25, 0x6a, 0x57, 0x93, 0x70, 0xcd, 0xcd, 0x97, - 0xbc, 0xf1, 0xae, 0x6a, 0xf7, 0xe8, 0x65, 0x38, 0x5e, 0xc7, 0x84, 0xca, 0x8a, 0x7e, 0xab, 0x50, - 0x6a, 0x6e, 0xa1, 0x71, 0xcc, 0x46, 0x50, 0x75, 0x6f, 0x38, 0x25, 0x47, 0x6a, 0x38, 0x2d, 0x2d, - 0xb2, 0x2f, 0xbc, 0x61, 0xbb, 0xac, 0xb0, 0xf9, 0x07, 0xc7, 0x1a, 0x51, 0xa5, 0x07, 0x14, 0x6b, - 0x0a, 0x6a, 0x3d, 0x2f, 0x76, 0xcf, 0xc3, 0x09, 0x17, 0xab, 0x2c, 0xab, 0xff, 0xce, 0xc1, 0x6c, - 0x85, 0x34, 0x36, 0xe5, 0x7b, 0x5d, 0xb9, 0x8e, 0x28, 0xde, 0x52, 0x89, 0xac, 0x2b, 0xdf, 0x5b, - 0x5b, 0x70, 0x20, 0xeb, 0x12, 0x8e, 0xac, 0xb3, 0x4e, 0xc0, 0x64, 0xb4, 0x13, 0x90, 0x33, 0x4f, - 0xc0, 0xa5, 0x05, 0x38, 0xe9, 0x06, 0xdd, 0xb2, 0xed, 0xfd, 0x71, 0x38, 0xce, 0xae, 0x78, 0x92, - 0x86, 0x11, 0xb1, 0xde, 0x1b, 0x57, 0xda, 0xaf, 0xc8, 0xbe, 0x0e, 0x78, 0x2a, 0xe9, 0xf0, 0xd4, - 0x86, 0xb5, 0xe9, 0xd1, 0x9a, 0x57, 0xbd, 0x18, 0x58, 0x86, 0x53, 0x9e, 0x7e, 0xb0, 0xbc, 0xf5, - 0xbb, 0x09, 0x98, 0xef, 0xdf, 0x2b, 0xb7, 0x90, 0x86, 0xda, 0x6f, 0x77, 0x98, 0x5f, 0x35, 0xb5, - 0xa3, 0x12, 0xd4, 0xe2, 0x67, 0x61, 0x82, 0xca, 0xb4, 0x85, 0x4d, 0x87, 0x19, 0x0f, 0x7c, 0x1e, - 0x26, 0xeb, 0x98, 0x48, 0x9a, 0xdc, 0xd1, 0x85, 0x9a, 0x6e, 0xb2, 0x2f, 0xf9, 0x47, 0xc3, 0x70, - 0x31, 0x97, 0xb4, 0x6c, 0xe5, 0xf6, 0xb1, 0x98, 0x9b, 0x88, 0x26, 0x75, 0xa0, 0x98, 0x93, 0x60, - 0x4e, 0xc3, 0x2d, 0xb4, 0x6b, 0xca, 0x25, 0x4d, 0xa4, 0x99, 0xd2, 0x53, 0x91, 0xa4, 0xcf, 0x98, - 0xd2, 0x36, 0x30, 0xae, 0xea, 0xb2, 0x98, 0x12, 0x8f, 0x2a, 0x2b, 0x1d, 0x49, 0xc3, 0x28, 0x55, - 0x56, 0x26, 0x9a, 0x0d, 0x2e, 0x55, 0x16, 0xff, 0x5d, 0x48, 0x11, 0x8a, 0x68, 0x97, 0xb0, 0xca, - 0xfc, 0xd0, 0xca, 0x59, 0xbf, 0x1c, 0x37, 0x02, 0xae, 0xca, 0xe8, 0x45, 0x93, 0xcf, 0xf6, 0x8d, - 0xf4, 0x17, 0x0e, 0xe6, 0x4a, 0x26, 0x4f, 0x49, 0x41, 0x3b, 0xad, 0xbd, 0x07, 0xe4, 0x26, 0x4c, - 0xf5, 0x50, 0x6c, 0xef, 0x76, 0x30, 0x8b, 0xc9, 0x00, 0x90, 0x25, 0x1b, 0xbd, 0x38, 0xc0, 0x6d, - 0x83, 0xfa, 0xbf, 0x71, 0xc8, 0x39, 0x5b, 0xb4, 0x7b, 0x06, 0xdb, 0xef, 0xfc, 0x24, 0x7c, 0xda, - 0xe4, 0xc9, 0x80, 0x36, 0xf9, 0x44, 0xd8, 0x36, 0x79, 0x2a, 0xf6, 0x6a, 0x3e, 0x1d, 0x47, 0x35, - 0xff, 0x71, 0x1a, 0xe6, 0x5d, 0x3b, 0x70, 0xb1, 0xf9, 0x3f, 0xf0, 0x77, 0x08, 0x47, 0xe7, 0x6d, - 0x22, 0xb0, 0xf3, 0x96, 0x0a, 0xdd, 0x1e, 0x4f, 0x87, 0x6c, 0x8f, 0x67, 0x22, 0x76, 0xea, 0xbc, - 0xba, 0x56, 0xd9, 0x03, 0xe9, 0x5a, 0xc1, 0xbe, 0x76, 0xad, 0x86, 0xbf, 0x60, 0x26, 0x63, 0xe9, - 0x16, 0x4e, 0xed, 0x43, 0xb7, 0xf0, 0xf9, 0xea, 0xb0, 0x7d, 0x92, 0x86, 0x53, 0x9e, 0x8d, 0xb5, - 0xaf, 0xf3, 0x32, 0x42, 0x5e, 0xf6, 0x3b, 0xe2, 0xd9, 0x81, 0x8e, 0xf8, 0xf3, 0xf4, 0x13, 0xd1, - 0x70, 0xbe, 0x4e, 0xc5, 0x92, 0xaf, 0xd3, 0xf1, 0xe5, 0xeb, 0xa1, 0xd8, 0xf3, 0xf5, 0x70, 0x1c, - 0xf9, 0xfa, 0xd7, 0x0c, 0x2c, 0x3b, 0x7b, 0x48, 0x07, 0x56, 0x07, 0x78, 0x85, 0x70, 0xb4, 0x6a, - 0x60, 0xd4, 0x10, 0x8e, 0x56, 0x1d, 0x84, 0x0f, 0xe1, 0x54, 0x2c, 0x35, 0x4d, 0x3a, 0xd6, 0x9a, - 0x26, 0x13, 0x7b, 0x4d, 0x93, 0x8d, 0xbd, 0xa6, 0x81, 0xfd, 0xab, 0x69, 0x7e, 0x04, 0xfc, 0x75, - 0xb5, 0xab, 0xb5, 0x76, 0xcb, 0x0a, 0xc5, 0x1a, 0x26, 0x54, 0x1c, 0xbc, 0x4b, 0x8c, 0x14, 0x9e, - 0xc3, 0x92, 0xf8, 0x1d, 0x98, 0x35, 0x56, 0x37, 0xba, 0x4a, 0x5d, 0x56, 0x1a, 0xfa, 0xe2, 0x1a, - 0xea, 0xd8, 0x4e, 0xbf, 0x51, 0x34, 0xb8, 0xca, 0xb2, 0xd5, 0x65, 0xd3, 0x7b, 0xae, 0xcb, 0x3e, - 0xe4, 0xe0, 0x9c, 0xf3, 0xb4, 0x58, 0x45, 0x4a, 0xdd, 0xf8, 0xea, 0xda, 0xd2, 0xd4, 0xb6, 0xaa, - 0x67, 0x7d, 0xac, 0xa7, 0x86, 0x0d, 0xce, 0x9f, 0xc7, 0x61, 0x79, 0x5b, 0x43, 0xcc, 0x5a, 0xfc, - 0x2e, 0xd2, 0xea, 0x6b, 0xa8, 0xdd, 0x41, 0x72, 0x43, 0xd9, 0xa7, 0xeb, 0xc6, 0x6d, 0x98, 0x96, - 0x4c, 0x89, 0x35, 0x59, 0xb9, 0xa3, 0x9a, 0x03, 0x6f, 0xaf, 0xf9, 0x79, 0xd0, 0x15, 0x4f, 0x59, - 0xb9, 0xa3, 0x8a, 0x53, 0x92, 0xed, 0x89, 0xdf, 0x81, 0xa3, 0x96, 0x6c, 0x8d, 0x11, 0xd7, 0x3a, - 0xaa, 0xda, 0x22, 0xb9, 0x24, 0x6b, 0x0d, 0x17, 0xfc, 0x74, 0xf4, 0xc4, 0x1a, 0x4a, 0xb6, 0x54, - 0xb5, 0x25, 0xce, 0x48, 0x43, 0x6b, 0xf6, 0x8d, 0xfb, 0x24, 0xe1, 0xe1, 0xa9, 0x7d, 0x3a, 0xe6, - 0xe3, 0xf4, 0x54, 0x17, 0x16, 0x5d, 0x3d, 0x55, 0x43, 0xf5, 0x3a, 0x6b, 0x6a, 0x45, 0xf5, 0xd9, - 0x49, 0x17, 0x9f, 0x5d, 0xed, 0xc9, 0xe4, 0xef, 0xc1, 0xbc, 0xbb, 0xda, 0x2e, 0x73, 0x19, 0xc9, - 0x4d, 0x44, 0x52, 0x2a, 0xb8, 0x28, 0x35, 0x36, 0xc1, 0xbe, 0x5f, 0x7f, 0xe2, 0x60, 0x66, 0x03, - 0xe3, 0x75, 0x99, 0xb0, 0xa6, 0xe1, 0x9e, 0xf7, 0xe7, 0x2d, 0xc8, 0x10, 0xa9, 0x89, 0xeb, 0xdd, - 0x16, 0x36, 0xb7, 0xa6, 0xe8, 0x87, 0xdb, 0xa6, 0xba, 0x6a, 0xb2, 0x89, 0x96, 0x80, 0x3e, 0xcc, - 0x6f, 0x3c, 0x80, 0x29, 0x7b, 0x93, 0x84, 0x5f, 0x81, 0xd9, 0xd2, 0x0f, 0xd6, 0xae, 0x5f, 0xbd, - 0x71, 0xad, 0x54, 0x7b, 0xfb, 0x46, 0x75, 0xab, 0xb4, 0x56, 0xde, 0x28, 0x97, 0xd6, 0x8f, 0x8c, - 0x09, 0xb9, 0x47, 0x8f, 0xf3, 0xae, 0xef, 0x78, 0x1e, 0x92, 0xd5, 0xad, 0x9b, 0xdb, 0x47, 0x38, - 0x21, 0xf3, 0xe8, 0x71, 0x9e, 0x7d, 0xd6, 0x0d, 0x5a, 0x2f, 0x89, 0xe5, 0x77, 0xae, 0x6e, 0x97, - 0xdf, 0x29, 0x55, 0x8f, 0x8c, 0x0b, 0x87, 0x1f, 0x3d, 0xce, 0xdb, 0x97, 0x56, 0xfe, 0x78, 0x14, - 0x12, 0x15, 0xd2, 0xe0, 0x11, 0xa4, 0x7b, 0xa3, 0xb7, 0x67, 0x7c, 0x0f, 0x36, 0x6b, 0x28, 0x56, - 0x28, 0x84, 0xa3, 0xb3, 0x7e, 0x42, 0xa9, 0x43, 0xc6, 0x1a, 0x9c, 0x7d, 0x29, 0x80, 0xb7, 0x47, - 0x28, 0x14, 0x43, 0x12, 0x5a, 0x5a, 0x3e, 0xe6, 0xe0, 0x98, 0xd7, 0x34, 0xe5, 0xeb, 0x01, 0xc2, - 0x3c, 0xf8, 0x84, 0xef, 0x44, 0xe3, 0xb3, 0x30, 0x3d, 0xe1, 0xe0, 0xa4, 0xef, 0x78, 0xe1, 0x9b, - 0xe1, 0x14, 0xb8, 0x32, 0x0b, 0x6b, 0x7b, 0x60, 0xb6, 0x20, 0xfe, 0x8d, 0x83, 0x7c, 0xe0, 0x80, - 0xd5, 0x95, 0x70, 0x9a, 0x3c, 0x05, 0x08, 0xd7, 0xf6, 0x28, 0xc0, 0x82, 0xfb, 0x01, 0x07, 0xb3, - 0xae, 0xf3, 0xcd, 0xaf, 0x06, 0x68, 0x70, 0x63, 0x12, 0xde, 0x8c, 0xc0, 0x64, 0x41, 0xf9, 0x03, - 0x07, 0x82, 0xcf, 0x74, 0xf2, 0xa5, 0x00, 0xd9, 0xde, 0xac, 0xc2, 0xd5, 0xc8, 0xac, 0x16, 0xb8, - 0x5f, 0x72, 0x70, 0xd4, 0x7d, 0xee, 0xe6, 0x62, 0x68, 0x9b, 0x6d, 0x5c, 0xc2, 0xb7, 0xa2, 0x70, - 0x59, 0x68, 0x76, 0xe1, 0xb0, 0x73, 0xda, 0x22, 0xe8, 0x10, 0x71, 0xd0, 0x0b, 0xaf, 0x8f, 0x46, - 0x3f, 0xe0, 0x08, 0xf7, 0xb1, 0x89, 0x8b, 0xa1, 0xbc, 0xec, 0xe0, 0x0a, 0x74, 0x84, 0xff, 0x9c, - 0x84, 0x1e, 0x33, 0x3e, 0xf3, 0x43, 0x97, 0x42, 0x79, 0xd9, 0x8d, 0x35, 0x30, 0x66, 0x42, 0x4c, - 0x0b, 0xe9, 0x47, 0x41, 0xe0, 0x04, 0xd0, 0x95, 0xf0, 0xb1, 0xe9, 0x2a, 0x20, 0xf0, 0x28, 0x08, - 0x3d, 0xf3, 0xf3, 0x98, 0x83, 0x13, 0x7e, 0xc3, 0x24, 0x97, 0x47, 0xf4, 0x88, 0x3d, 0xdc, 0x57, - 0xa3, 0xf3, 0x0e, 0xa6, 0xa0, 0xeb, 0x3c, 0xc8, 0xc5, 0x50, 0xb1, 0xec, 0xe0, 0x0a, 0x4e, 0x41, - 0xbf, 0x01, 0x0f, 0xe6, 0x2d, 0xbf, 0x81, 0x8b, 0xcb, 0xe1, 0xe3, 0xda, 0xc9, 0x1b, 0xe8, 0xad, - 0x30, 0x73, 0x16, 0x3f, 0xe7, 0x80, 0x77, 0x19, 0xa0, 0xb8, 0x10, 0x20, 0x7a, 0x98, 0x45, 0xb8, - 0x34, 0x32, 0x8b, 0x05, 0xe2, 0xa7, 0x70, 0x64, 0x68, 0x94, 0x21, 0xe8, 0x22, 0xe2, 0x64, 0x10, - 0xde, 0x18, 0x91, 0xc1, 0xd2, 0xfe, 0x10, 0x5e, 0x18, 0x1e, 0x29, 0x78, 0x25, 0x40, 0xda, 0x10, - 0x87, 0xf0, 0xcd, 0x51, 0x39, 0x2c, 0x00, 0x1f, 0x71, 0x30, 0xe7, 0xf1, 0xc3, 0xff, 0x6b, 0x81, - 0x5f, 0xe0, 0x6e, 0x6c, 0xc2, 0xb7, 0x23, 0xb1, 0xf5, 0x00, 0xad, 0x36, 0x3f, 0x7d, 0xba, 0xc0, - 0x7d, 0xf6, 0x74, 0x81, 0xfb, 0xf7, 0xd3, 0x05, 0xee, 0x37, 0xcf, 0x16, 0xc6, 0x3e, 0x7b, 0xb6, - 0x30, 0xf6, 0xaf, 0x67, 0x0b, 0x63, 0xb7, 0x6f, 0xd8, 0x4a, 0xfa, 0x72, 0x4f, 0xc5, 0x26, 0xda, - 0x21, 0x45, 0x4b, 0xe1, 0x79, 0x49, 0xd5, 0xb0, 0xfd, 0xb1, 0x89, 0x64, 0xa5, 0xd8, 0x56, 0xf5, - 0x2b, 0x38, 0xe9, 0xff, 0xdb, 0x1a, 0x2b, 0xff, 0x77, 0x52, 0xec, 0x9f, 0xd1, 0x5e, 0xfd, 0x7f, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x60, 0x88, 0xbb, 0x7c, 0x57, 0x37, 0x00, 0x00, + // 2645 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0xcf, 0x6f, 0x1b, 0xc7, + 0xf5, 0xd7, 0x8a, 0x14, 0x29, 0x3e, 0x49, 0x8e, 0xb3, 0x92, 0x15, 0x7a, 0x6d, 0xfd, 0x30, 0xe5, + 0x1f, 0xca, 0x37, 0x30, 0x15, 0x2b, 0x4e, 0xf2, 0xb5, 0xd3, 0xd4, 0xb5, 0x24, 0xca, 0x56, 0x23, + 0xda, 0xf2, 0x52, 0x49, 0x0b, 0x03, 0x2d, 0x3b, 0x5a, 0x8e, 0xc8, 0xad, 0xc9, 0x5d, 0x7a, 0x67, + 0xe8, 0x58, 0x41, 0x51, 0x03, 0x45, 0x9b, 0x06, 0x6e, 0x9b, 0xd6, 0x28, 0x82, 0xa2, 0x05, 0x0c, + 0x18, 0x45, 0x80, 0xf6, 0xd0, 0x1c, 0x7a, 0xec, 0x7f, 0x90, 0xde, 0x72, 0x28, 0x8a, 0x22, 0x87, + 0xa0, 0xb0, 0x2f, 0xbd, 0xf7, 0xd6, 0x53, 0xb1, 0xb3, 0xbb, 0xc3, 0x25, 0xb9, 0xbf, 0xb8, 0x12, + 0x9d, 0xc0, 0xe8, 0x49, 0xda, 0xdd, 0xf7, 0x3e, 0xef, 0x33, 0x6f, 0xde, 0x9b, 0x1f, 0x6f, 0x86, + 0xb0, 0xa0, 0x6a, 0xdf, 0xc7, 0x0a, 0x55, 0xef, 0xe0, 0x25, 0x7c, 0x57, 0xa9, 0x21, 0xad, 0x8a, + 0x97, 0xee, 0x9c, 0xdb, 0xc1, 0x14, 0x9d, 0x5b, 0xa2, 0x77, 0xf3, 0x4d, 0x43, 0xa7, 0xba, 0x28, + 0x71, 0xa1, 0xbc, 0x23, 0x94, 0xb7, 0x85, 0xa4, 0xa9, 0xaa, 0x5e, 0xd5, 0x99, 0xd8, 0x92, 0xf9, + 0x9f, 0xa5, 0x21, 0x9d, 0x6a, 0xc3, 0xea, 0x06, 0x52, 0xea, 0x6d, 0x50, 0xeb, 0xd1, 0x16, 0x7b, + 0x31, 0xc0, 0x3a, 0xb7, 0x64, 0x89, 0xce, 0x2a, 0x3a, 0x69, 0xe8, 0x64, 0x69, 0x07, 0x91, 0xb6, + 0x8c, 0xa2, 0xab, 0x9a, 0xf5, 0x3d, 0xf7, 0x73, 0x01, 0xa0, 0x48, 0xaa, 0x6b, 0xb8, 0xa9, 0x13, + 0x95, 0x8a, 0xd3, 0x90, 0x22, 0x58, 0xab, 0x60, 0x23, 0x2b, 0xcc, 0x0b, 0x8b, 0x19, 0xd9, 0x7e, + 0x12, 0x17, 0x60, 0x82, 0xb4, 0x76, 0x90, 0xa2, 0xe8, 0x2d, 0x8d, 0x96, 0xd5, 0x4a, 0x76, 0x98, + 0x7d, 0x1e, 0x6f, 0xbf, 0xdc, 0xa8, 0x88, 0xaf, 0x43, 0x0a, 0x35, 0xcc, 0xff, 0xb3, 0x89, 0x79, + 0x61, 0x71, 0x6c, 0xf9, 0x68, 0xde, 0x32, 0x9e, 0x37, 0x8d, 0x3b, 0x2d, 0xcf, 0xaf, 0xea, 0xaa, + 0xb6, 0x92, 0xfc, 0xf4, 0x8b, 0xb9, 0x21, 0xd9, 0x16, 0xbf, 0x38, 0xfa, 0xc1, 0xa3, 0xb9, 0xa1, + 0x7f, 0x3d, 0x9a, 0x1b, 0xca, 0x4d, 0x81, 0xd8, 0x66, 0x23, 0x63, 0xd2, 0xd4, 0x35, 0x82, 0x73, + 0xbf, 0x10, 0x60, 0xac, 0x48, 0xaa, 0xdf, 0x52, 0x69, 0xad, 0x62, 0xa0, 0x77, 0xbf, 0x74, 0x96, + 0x47, 0x60, 0xd2, 0x45, 0x87, 0xd3, 0xfc, 0x21, 0xbc, 0x50, 0x24, 0xd5, 0x55, 0x03, 0x23, 0x8a, + 0x4b, 0x4d, 0x9d, 0x6e, 0xaa, 0x0d, 0x95, 0x5e, 0x37, 0x4c, 0x66, 0x7e, 0x8c, 0x2f, 0xc3, 0x88, + 0x6e, 0x0a, 0x30, 0xa6, 0x63, 0xcb, 0xa7, 0xf2, 0xfe, 0x21, 0x93, 0x37, 0x21, 0x19, 0x9a, 0xcd, + 0xcb, 0xd2, 0x74, 0xd1, 0xfa, 0x26, 0xcc, 0xf9, 0xd8, 0x77, 0x28, 0x8a, 0x33, 0x00, 0x4c, 0xab, + 0x5c, 0x43, 0xa4, 0x66, 0x73, 0xc9, 0xb0, 0x37, 0x57, 0x11, 0xa9, 0xb9, 0xb0, 0xde, 0x17, 0x60, + 0xa6, 0x48, 0xaa, 0x2b, 0x88, 0x2a, 0x35, 0x2f, 0x44, 0xe2, 0xdb, 0xa4, 0x55, 0x48, 0x31, 0x40, + 0x92, 0x1d, 0x9e, 0x4f, 0xf4, 0xdb, 0x26, 0x5b, 0xd5, 0x45, 0x64, 0x1b, 0x4e, 0x05, 0xf2, 0xe0, + 0x4d, 0x3b, 0x01, 0xe3, 0xed, 0xa6, 0x61, 0x92, 0x15, 0xe6, 0x13, 0x8b, 0x19, 0x79, 0x8c, 0x37, + 0x0e, 0xbb, 0x51, 0x3f, 0x1f, 0x06, 0xa9, 0x48, 0xaa, 0x1b, 0x1a, 0xa1, 0x48, 0xa3, 0x26, 0x64, + 0x11, 0x19, 0xb7, 0x30, 0xdd, 0x44, 0x2d, 0x4d, 0xa9, 0xf9, 0xb6, 0x6d, 0x1a, 0x52, 0x54, 0x55, + 0x6e, 0xd9, 0xfd, 0x95, 0x91, 0xed, 0x27, 0xd3, 0xad, 0x66, 0xf4, 0x94, 0x2b, 0x58, 0xd3, 0x1b, + 0x2c, 0xae, 0x32, 0x72, 0xc6, 0x7c, 0xb3, 0x66, 0xbe, 0x10, 0xe7, 0x60, 0xec, 0x76, 0x4b, 0xa7, + 0xce, 0xf7, 0x24, 0xfb, 0x0e, 0xec, 0x95, 0x25, 0xf0, 0x1d, 0x98, 0x6c, 0xa8, 0x5a, 0xb9, 0x69, + 0xa8, 0x0a, 0x2e, 0x9b, 0x98, 0x65, 0xa2, 0xbe, 0x87, 0xb3, 0x23, 0xa6, 0xe0, 0x4a, 0xde, 0xf4, + 0xcc, 0xe7, 0x5f, 0xcc, 0x9d, 0xae, 0xaa, 0xb4, 0xd6, 0xda, 0xc9, 0x2b, 0x7a, 0x63, 0xc9, 0xce, + 0x6a, 0xeb, 0xcf, 0x59, 0x52, 0xb9, 0xb5, 0x44, 0xf7, 0x9a, 0x98, 0xe4, 0xd7, 0xb0, 0x22, 0x1f, + 0x6e, 0xa8, 0xda, 0x96, 0x89, 0xb4, 0xad, 0x2a, 0xb7, 0x4a, 0xea, 0x7b, 0x58, 0x54, 0x60, 0xda, + 0x84, 0xbf, 0xdd, 0x42, 0x1a, 0x55, 0xe9, 0x9e, 0xcb, 0x42, 0x2a, 0x96, 0x05, 0x93, 0xec, 0x0d, + 0x1b, 0xcc, 0x31, 0xe2, 0x72, 0xee, 0x49, 0xc8, 0xf9, 0xfb, 0x96, 0x67, 0xcb, 0xbf, 0x53, 0x2c, + 0x5c, 0x6d, 0xb1, 0x2d, 0x6c, 0x34, 0x31, 0x6d, 0xa1, 0xfa, 0xbe, 0xfa, 0xa1, 0xcb, 0xd1, 0x89, + 0x1e, 0x47, 0xcf, 0xc1, 0x98, 0x35, 0x92, 0x96, 0xcd, 0xde, 0x71, 0x7a, 0xc2, 0x7a, 0xb5, 0x82, + 0x9c, 0x28, 0x62, 0x02, 0x4c, 0xcb, 0xea, 0x02, 0xd9, 0x56, 0xba, 0x61, 0xbe, 0x12, 0xf3, 0x30, + 0x69, 0x8b, 0x10, 0x05, 0xd5, 0x71, 0x79, 0x17, 0x29, 0x54, 0x37, 0x98, 0x2b, 0x27, 0xe4, 0xe7, + 0xad, 0x4f, 0x25, 0xf3, 0xcb, 0x3a, 0xfb, 0x20, 0x16, 0xb8, 0x4d, 0xd3, 0x83, 0xd9, 0xf4, 0xbc, + 0xb0, 0x78, 0x68, 0xf9, 0xa4, 0x2b, 0x2b, 0xec, 0xb1, 0xdd, 0xc9, 0x89, 0xeb, 0xec, 0x71, 0x7b, + 0xaf, 0x89, 0x1d, 0x66, 0xe6, 0xff, 0xe2, 0x36, 0x1c, 0x6a, 0xa0, 0x5b, 0xd8, 0x28, 0xef, 0x62, + 0x5c, 0x36, 0x10, 0xc5, 0xd9, 0xd1, 0x58, 0x9d, 0x37, 0xce, 0x50, 0xd6, 0x31, 0x96, 0x11, 0x65, + 0xa8, 0xb4, 0x13, 0x35, 0x13, 0x0f, 0x95, 0xba, 0x51, 0xbf, 0x07, 0x53, 0xaa, 0xa6, 0x52, 0x15, + 0xd5, 0xcb, 0x0d, 0x64, 0x54, 0x55, 0xcd, 0x84, 0x56, 0xf5, 0x2c, 0xc4, 0xc2, 0x16, 0x6d, 0xac, + 0x22, 0x83, 0x92, 0x4d, 0x24, 0xb1, 0x06, 0xd9, 0x06, 0x52, 0x35, 0x8a, 0x35, 0xa4, 0x29, 0xb8, + 0xd3, 0xca, 0x58, 0x2c, 0x2b, 0xd3, 0x2e, 0x3c, 0xb7, 0x25, 0x9f, 0xdc, 0x1c, 0x1f, 0x78, 0x6e, + 0x4e, 0x0c, 0x22, 0x37, 0x5f, 0x84, 0x33, 0x21, 0x49, 0xc7, 0x13, 0xf4, 0x97, 0x69, 0x58, 0x68, + 0xcb, 0x16, 0xee, 0x36, 0x55, 0x63, 0x6f, 0xbd, 0x45, 0x5b, 0x06, 0x26, 0x5f, 0xfd, 0x24, 0xed, + 0x4a, 0xba, 0x54, 0xcc, 0xa4, 0xf3, 0xc9, 0xf5, 0xb4, 0x5f, 0xae, 0x4f, 0x43, 0x0a, 0x33, 0x47, + 0xb1, 0xe4, 0x4c, 0xc8, 0xf6, 0x93, 0x47, 0xf2, 0x66, 0x06, 0x92, 0xbc, 0x30, 0xc0, 0xe4, 0x1d, + 0x7b, 0x2a, 0xc9, 0x3b, 0xfe, 0x34, 0x92, 0x77, 0x62, 0xe0, 0xc9, 0x7b, 0x68, 0x10, 0xc9, 0x7b, + 0x16, 0x5e, 0x8a, 0x90, 0x90, 0x3c, 0x81, 0xef, 0x41, 0xb6, 0x63, 0x3d, 0x68, 0x09, 0x3d, 0xc5, + 0x05, 0xe9, 0x5b, 0x30, 0xef, 0x47, 0x20, 0xf6, 0x8a, 0xd4, 0x42, 0x5b, 0xc3, 0x86, 0x7a, 0x07, + 0x99, 0xb4, 0x22, 0x2c, 0xb2, 0xaf, 0x74, 0xb6, 0xe9, 0xa5, 0xa0, 0x36, 0xb5, 0x81, 0x3d, 0x5a, + 0x96, 0x34, 0xc9, 0xe4, 0xb6, 0xd8, 0x8a, 0xd4, 0x9f, 0x47, 0xff, 0x4d, 0xfb, 0x50, 0x60, 0x23, + 0xad, 0x6b, 0x91, 0xeb, 0x85, 0xeb, 0xbf, 0xe4, 0xde, 0xe8, 0x5a, 0x72, 0xc7, 0x68, 0xa1, 0xb3, + 0xf0, 0xb6, 0x9a, 0x78, 0x93, 0x05, 0x5a, 0x18, 0x9f, 0x78, 0x4b, 0xef, 0x5f, 0x0b, 0x6c, 0x8f, + 0xb7, 0x6a, 0xa6, 0x6a, 0x9d, 0x87, 0x90, 0x6f, 0xdb, 0x8e, 0x41, 0xa6, 0xc1, 0xc2, 0xa6, 0xbd, + 0x9f, 0x1b, 0xb5, 0x5e, 0x6c, 0x54, 0x7a, 0x37, 0x7c, 0x09, 0x8f, 0x0d, 0x5f, 0x67, 0x37, 0x24, + 0xbb, 0xbb, 0xc1, 0x6a, 0xf1, 0x71, 0xb6, 0x1f, 0xe8, 0x22, 0xc5, 0x33, 0x69, 0x8f, 0x65, 0x92, + 0xe5, 0x8f, 0x4e, 0x11, 0xff, 0x4e, 0xb9, 0x04, 0xc9, 0x0a, 0xa2, 0x28, 0xca, 0x2e, 0x88, 0x21, + 0xad, 0x21, 0x8a, 0xec, 0xce, 0x60, 0x8a, 0x36, 0xb1, 0x75, 0x96, 0x43, 0x9e, 0xa6, 0xb9, 0xff, + 0xb3, 0x90, 0x26, 0x2d, 0x45, 0xc1, 0xc4, 0x72, 0xfd, 0xa8, 0xec, 0x3c, 0xba, 0xdc, 0xfe, 0x53, + 0x01, 0x66, 0x3d, 0xc2, 0x36, 0xca, 0x98, 0x70, 0xc0, 0xf9, 0x73, 0x03, 0x4e, 0x07, 0x13, 0xe9, + 0x3f, 0x81, 0x7e, 0x2b, 0x58, 0x43, 0x1d, 0x73, 0x50, 0x17, 0x85, 0x2f, 0x3b, 0xb2, 0x72, 0xd6, + 0x20, 0xe8, 0x45, 0x8d, 0xc7, 0x57, 0x1d, 0x32, 0x3c, 0x06, 0x3a, 0x79, 0x09, 0x61, 0xbc, 0x86, + 0x43, 0x79, 0x25, 0xba, 0x78, 0xe5, 0xee, 0xb1, 0x48, 0x70, 0x85, 0x54, 0x17, 0xad, 0x81, 0xc7, + 0xf4, 0x26, 0x8b, 0x80, 0x00, 0x02, 0x7d, 0x45, 0xf6, 0xdf, 0x05, 0x38, 0x52, 0x24, 0xd5, 0x12, + 0xf7, 0xc0, 0xb6, 0x81, 0x34, 0xb2, 0x1b, 0xd0, 0xf3, 0x2f, 0xc3, 0x14, 0xd1, 0x5b, 0x86, 0x82, + 0xcb, 0x5e, 0xbe, 0x14, 0xad, 0x6f, 0x25, 0xb7, 0x47, 0x2f, 0xc2, 0xd1, 0x0a, 0x26, 0x54, 0xd5, + 0xcc, 0x55, 0x85, 0x56, 0xf6, 0x0a, 0x8d, 0x17, 0x5c, 0x02, 0x25, 0xef, 0x82, 0x53, 0xb2, 0xaf, + 0x82, 0x53, 0x6e, 0x8e, 0x4d, 0x78, 0xbd, 0xed, 0xe2, 0x61, 0xf3, 0x37, 0x81, 0x15, 0xa2, 0x0a, + 0x77, 0x29, 0x36, 0x34, 0x54, 0x7f, 0x56, 0xda, 0x3d, 0x03, 0xc7, 0x3c, 0x5a, 0xc5, 0x5b, 0xfd, + 0x17, 0x01, 0xa6, 0x8a, 0xa4, 0xba, 0xa9, 0xde, 0x6e, 0xa9, 0x15, 0x44, 0xf1, 0x96, 0x4e, 0x54, + 0xd3, 0xf8, 0xfe, 0xca, 0x82, 0x1d, 0x59, 0x97, 0xe8, 0xca, 0x3a, 0x3e, 0x02, 0x26, 0xe3, 0x8d, + 0x80, 0x82, 0x3d, 0x02, 0xe6, 0x66, 0xe1, 0xb8, 0x17, 0x75, 0xde, 0xb6, 0xf7, 0x87, 0xe1, 0x28, + 0x5b, 0xe2, 0x29, 0x06, 0x46, 0x84, 0x7f, 0xb7, 0x96, 0xb4, 0x5f, 0x91, 0x7e, 0xed, 0xf0, 0x54, + 0xb2, 0xcb, 0x53, 0xeb, 0xbc, 0xd3, 0xe3, 0x15, 0xaf, 0x9c, 0x18, 0x58, 0x80, 0x13, 0xbe, 0x7e, + 0xe0, 0xde, 0xfa, 0x68, 0x04, 0x66, 0xda, 0xeb, 0xca, 0x2d, 0x64, 0xa0, 0xc6, 0xdb, 0x4d, 0xe6, + 0x57, 0x43, 0x6f, 0xea, 0x04, 0xd5, 0xc5, 0x29, 0x18, 0xa1, 0x2a, 0xad, 0x63, 0xdb, 0x61, 0xd6, + 0x83, 0x38, 0x0f, 0x63, 0x15, 0x4c, 0x14, 0x43, 0x6d, 0x9a, 0xa0, 0xb6, 0x9b, 0xdc, 0xaf, 0x82, + 0xa3, 0xa1, 0x77, 0x33, 0x97, 0xe4, 0x6d, 0x15, 0x0e, 0x70, 0x33, 0x37, 0x12, 0x0f, 0xb5, 0x63, + 0x33, 0xa7, 0xc0, 0xb4, 0x81, 0xeb, 0x68, 0xcf, 0xc6, 0x25, 0x35, 0x64, 0xd8, 0xe8, 0xa9, 0x58, + 0xe8, 0x93, 0x36, 0xda, 0x3a, 0xc6, 0x25, 0x13, 0x8b, 0x19, 0xf1, 0xd9, 0x65, 0xa5, 0x63, 0x59, + 0xe8, 0x67, 0x97, 0x35, 0x1a, 0xaf, 0x0d, 0x1e, 0xbb, 0x2c, 0xf1, 0x1b, 0x90, 0x22, 0x14, 0xd1, + 0x16, 0x61, 0x3b, 0xf3, 0x43, 0xcb, 0x8b, 0x41, 0x39, 0x6e, 0x05, 0x5c, 0x89, 0xc9, 0xcb, 0xb6, + 0x9e, 0x6b, 0x46, 0xfa, 0xa3, 0x00, 0xd3, 0x05, 0x5b, 0xa7, 0xa0, 0xa1, 0x9d, 0xfa, 0xfe, 0x03, + 0x72, 0x13, 0xc6, 0x1d, 0x16, 0xdb, 0x7b, 0x4d, 0xcc, 0x62, 0x32, 0x84, 0x64, 0xc1, 0x25, 0x2f, + 0x77, 0x68, 0xbb, 0xa8, 0xfe, 0x39, 0x0d, 0x27, 0xd8, 0x44, 0xec, 0x48, 0x17, 0xf5, 0x8a, 0xba, + 0xab, 0x2a, 0x2c, 0xed, 0xf7, 0xcd, 0xfa, 0x27, 0x02, 0xe4, 0x48, 0x53, 0xa7, 0x65, 0x3b, 0x99, + 0x9a, 0x66, 0x8a, 0x96, 0x5b, 0x2c, 0x47, 0xcb, 0x4d, 0x1b, 0x9d, 0x64, 0x13, 0x6c, 0x39, 0x71, + 0x21, 0x6c, 0xaf, 0xe9, 0x9b, 0xe6, 0xf2, 0x2c, 0x09, 0xfa, 0x4c, 0xc4, 0xdf, 0x08, 0xb0, 0x58, + 0xe1, 0xe3, 0x72, 0x08, 0x9b, 0x24, 0x63, 0x73, 0x29, 0xda, 0x18, 0xef, 0xcf, 0xe9, 0x64, 0x25, + 0x5c, 0x88, 0x88, 0x2d, 0x38, 0xee, 0x76, 0x50, 0x9d, 0xed, 0xe0, 0x5d, 0x64, 0x46, 0x18, 0x99, + 0xf3, 0xd1, 0x5c, 0x63, 0xed, 0xff, 0x39, 0x83, 0xa3, 0xc4, 0xe7, 0x0b, 0x11, 0x7f, 0x2c, 0xc0, + 0x89, 0xa6, 0x53, 0xfd, 0xf3, 0x35, 0x9e, 0x0a, 0xef, 0x17, 0xcf, 0x12, 0x62, 0xbb, 0x5f, 0x9a, + 0x41, 0x9f, 0x89, 0xf8, 0x40, 0x80, 0xd3, 0x56, 0x85, 0xac, 0xbc, 0x6b, 0x15, 0x32, 0x7c, 0xb9, + 0xa4, 0x19, 0x97, 0x37, 0x83, 0x03, 0xde, 0xa7, 0x22, 0xc2, 0xf9, 0xe4, 0x70, 0x98, 0x08, 0x11, + 0x3f, 0x12, 0xe0, 0x0c, 0x35, 0x50, 0x45, 0xd5, 0xaa, 0x65, 0x03, 0xbf, 0x8b, 0x8c, 0x4a, 0x59, + 0x41, 0x8d, 0x26, 0x52, 0xab, 0x5a, 0x77, 0xac, 0xb0, 0xf1, 0x27, 0x24, 0x54, 0xb6, 0x2d, 0x28, + 0x99, 0x21, 0xad, 0xda, 0x40, 0x5d, 0xa1, 0xb2, 0x40, 0xc3, 0x85, 0x5c, 0x39, 0xfb, 0x71, 0x12, + 0xb2, 0x7e, 0x9d, 0x1e, 0x3b, 0x55, 0xdb, 0xd5, 0xda, 0x44, 0xc0, 0xd1, 0x56, 0x32, 0xe4, 0x68, + 0x6b, 0x24, 0xea, 0xd1, 0x56, 0x6a, 0xe0, 0x15, 0xb8, 0xf4, 0x81, 0x55, 0xe0, 0x02, 0x8f, 0x5e, + 0x84, 0x81, 0x1c, 0xbd, 0xc4, 0x9e, 0xf0, 0x5d, 0x61, 0xf2, 0x20, 0x0d, 0x33, 0x81, 0xe9, 0x79, + 0xe0, 0xb1, 0x12, 0x7a, 0xce, 0xd9, 0x55, 0xd9, 0x1f, 0x09, 0xad, 0xec, 0xa7, 0x22, 0x1f, 0xbf, + 0xa5, 0x23, 0x1e, 0xbf, 0x8d, 0xc6, 0x3c, 0x09, 0xf0, 0xab, 0x8a, 0x67, 0x9e, 0x4a, 0x55, 0x1c, + 0x0e, 0xb4, 0x2a, 0xde, 0x1b, 0xcf, 0x63, 0x03, 0x39, 0x8d, 0x18, 0x3f, 0x80, 0xd3, 0x88, 0x67, + 0xab, 0x82, 0xff, 0x49, 0x1a, 0x4e, 0x84, 0x4e, 0x53, 0xff, 0xcb, 0xcb, 0x3e, 0xf2, 0xb2, 0x7d, + 0xe2, 0x96, 0xe9, 0x38, 0x71, 0x7b, 0x96, 0x8e, 0xa0, 0x7b, 0xf3, 0x75, 0x7c, 0x20, 0xf9, 0x3a, + 0x31, 0xb8, 0x7c, 0x3d, 0x34, 0xf0, 0x7c, 0x7d, 0x6e, 0x10, 0xf9, 0xfa, 0x9f, 0x51, 0x58, 0x88, + 0xb0, 0xd8, 0x1f, 0x4c, 0x9d, 0xc1, 0x2f, 0x84, 0xe3, 0x55, 0x1b, 0xfa, 0x0d, 0xe1, 0x78, 0xd5, + 0x87, 0xe8, 0x21, 0x9c, 0x1a, 0xc8, 0x12, 0x2a, 0x3d, 0xd0, 0x9a, 0xc9, 0xe8, 0xc0, 0x6b, 0x26, + 0x99, 0x81, 0xd7, 0x4c, 0xe0, 0xe0, 0x6a, 0x26, 0xdf, 0x05, 0xf1, 0xaa, 0xde, 0x32, 0xea, 0x7b, + 0x1b, 0x1a, 0xc5, 0x06, 0x26, 0x54, 0xee, 0x5c, 0x4b, 0xf4, 0x15, 0x9e, 0xbd, 0x48, 0xe2, 0x0e, + 0x4c, 0x59, 0x6f, 0xd7, 0x5b, 0x1a, 0xdb, 0x1f, 0x21, 0x8a, 0x57, 0x51, 0xd3, 0x35, 0xfa, 0xf5, + 0x63, 0xc1, 0x13, 0xcb, 0x55, 0xf7, 0x99, 0x88, 0x57, 0xf7, 0x11, 0x8b, 0x30, 0x61, 0x4f, 0x64, + 0xac, 0xa0, 0x40, 0xd8, 0x58, 0x37, 0x16, 0x0c, 0x64, 0x4d, 0x66, 0x6c, 0x24, 0x21, 0xb2, 0x3d, + 0xb5, 0x5a, 0x4f, 0xae, 0xc1, 0xe7, 0xaf, 0x02, 0x8c, 0xbb, 0x05, 0xbb, 0xa7, 0x69, 0x21, 0x74, + 0x9a, 0x1e, 0x8e, 0x3c, 0x4d, 0x27, 0x22, 0x4e, 0xd3, 0xc9, 0x78, 0xd3, 0x74, 0xee, 0x0f, 0xc3, + 0xb0, 0xe0, 0xb9, 0x15, 0x3e, 0xa0, 0xa5, 0xcf, 0x4d, 0x98, 0xe0, 0xbb, 0x74, 0x55, 0xdb, 0xd5, + 0xed, 0xcb, 0xbd, 0xaf, 0xf6, 0xbd, 0x35, 0xdf, 0xd0, 0x76, 0x75, 0x79, 0x5c, 0x71, 0x3d, 0x89, + 0x3b, 0x70, 0x84, 0x63, 0xdb, 0x15, 0x81, 0xa6, 0xae, 0xf3, 0x4a, 0x51, 0x3e, 0xc8, 0x86, 0x03, + 0x6b, 0x19, 0xd9, 0xd2, 0xf5, 0xba, 0x3c, 0xa9, 0xf4, 0xbc, 0x73, 0xf7, 0xfa, 0x27, 0x09, 0x1f, + 0x4f, 0x1d, 0xd0, 0x94, 0x33, 0x48, 0x4f, 0xb5, 0x60, 0xce, 0xd3, 0x53, 0x65, 0x54, 0xa9, 0xb0, + 0x02, 0x7e, 0x5c, 0x9f, 0x1d, 0xf7, 0xf0, 0xd9, 0x65, 0x07, 0x53, 0xbc, 0x0d, 0x33, 0xde, 0x66, + 0xad, 0x7a, 0x8d, 0x53, 0x45, 0xeb, 0xd7, 0xa8, 0xe4, 0x61, 0xd4, 0xea, 0x04, 0x77, 0x7f, 0x7d, + 0x2c, 0xc0, 0xe4, 0x3a, 0xc6, 0x6b, 0x2a, 0x61, 0x07, 0x24, 0xfb, 0xee, 0x9f, 0xb7, 0x60, 0x94, + 0x28, 0x35, 0x5c, 0x69, 0xd5, 0xb1, 0xdd, 0x35, 0x4b, 0x41, 0xbc, 0x5d, 0xa6, 0x4b, 0xb6, 0x9a, + 0xcc, 0x01, 0xda, 0x34, 0xff, 0xef, 0x2e, 0x8c, 0xbb, 0x0b, 0xc2, 0xe2, 0x32, 0x4c, 0x15, 0xbe, + 0xbd, 0x7a, 0xf5, 0xf2, 0xb5, 0x2b, 0x85, 0xf2, 0xdb, 0xd7, 0x4a, 0x5b, 0x85, 0xd5, 0x8d, 0xf5, + 0x8d, 0xc2, 0xda, 0xe1, 0x21, 0x29, 0x7b, 0xff, 0xe1, 0xbc, 0xe7, 0x37, 0x51, 0x84, 0x64, 0x69, + 0xeb, 0xfa, 0xf6, 0x61, 0x41, 0x1a, 0xbd, 0xff, 0x70, 0x9e, 0xfd, 0x6f, 0x36, 0x68, 0xad, 0x20, + 0x6f, 0xbc, 0x73, 0x79, 0x7b, 0xe3, 0x9d, 0x42, 0xe9, 0xf0, 0xb0, 0xf4, 0xdc, 0xfd, 0x87, 0xf3, + 0xee, 0x57, 0xcb, 0xbf, 0x3f, 0x02, 0x89, 0x22, 0xa9, 0x8a, 0x08, 0xd2, 0xce, 0xcf, 0x0c, 0x4e, + 0x07, 0x0e, 0xb2, 0xfc, 0x07, 0x00, 0x52, 0x3e, 0x9a, 0x1c, 0x3f, 0x2e, 0xae, 0xc0, 0x28, 0xff, + 0x91, 0xc0, 0x99, 0x10, 0x5d, 0x47, 0x50, 0x5a, 0x8a, 0x28, 0xc8, 0xad, 0x3c, 0x10, 0xe0, 0x05, + 0xbf, 0x9b, 0xe3, 0xaf, 0x85, 0x80, 0xf9, 0xe8, 0x49, 0x5f, 0x8f, 0xa7, 0xc7, 0x39, 0x3d, 0x12, + 0xe0, 0x78, 0xe0, 0x55, 0xea, 0x37, 0xa2, 0x19, 0xf0, 0x54, 0x96, 0x56, 0xf7, 0xa1, 0xcc, 0x29, + 0xfe, 0x49, 0x80, 0xf9, 0xd0, 0xcb, 0xa4, 0x97, 0xa2, 0x59, 0xf2, 0x05, 0x90, 0xae, 0xec, 0x13, + 0x80, 0xd3, 0xfd, 0x40, 0x80, 0x29, 0xcf, 0xdf, 0x72, 0xbc, 0x12, 0x62, 0xc1, 0x4b, 0x49, 0x7a, + 0x23, 0x86, 0x12, 0xa7, 0xf2, 0x3b, 0x01, 0xa4, 0x80, 0x5f, 0x62, 0x5c, 0x08, 0xc1, 0xf6, 0x57, + 0x95, 0x2e, 0xc7, 0x56, 0xe5, 0xe4, 0x7e, 0x26, 0xc0, 0x11, 0xef, 0x3b, 0x86, 0xe7, 0x23, 0xb7, + 0xd9, 0xa5, 0x25, 0x7d, 0x2d, 0x8e, 0x16, 0x67, 0xb3, 0x07, 0xcf, 0x75, 0xdf, 0x2c, 0x0b, 0x1b, + 0x44, 0xba, 0xe4, 0xa5, 0xd7, 0xfa, 0x93, 0xef, 0x70, 0x84, 0xf7, 0x15, 0xb1, 0xf3, 0x91, 0xbc, + 0xdc, 0xa5, 0x15, 0xea, 0x88, 0xe0, 0x3b, 0x61, 0x66, 0xcc, 0x04, 0xdc, 0x95, 0xbc, 0x10, 0xc9, + 0xcb, 0x5e, 0xaa, 0xa1, 0x31, 0x13, 0xe1, 0x66, 0xa4, 0x39, 0x14, 0x84, 0xde, 0x76, 0xbc, 0x14, + 0x3d, 0x36, 0x3d, 0x01, 0x42, 0x87, 0x82, 0xc8, 0xf7, 0x1b, 0x1f, 0x0a, 0x70, 0x2c, 0xe8, 0xe2, + 0xdc, 0xc5, 0x3e, 0x3d, 0xe2, 0x0e, 0xf7, 0x95, 0xf8, 0xba, 0x9d, 0x29, 0xe8, 0x79, 0xf7, 0xed, + 0x7c, 0xa4, 0x58, 0xee, 0xd2, 0x0a, 0x4f, 0xc1, 0xa0, 0xcb, 0x6c, 0xcc, 0x5b, 0x41, 0x97, 0xcb, + 0x2e, 0x46, 0x8f, 0xeb, 0x6e, 0xdd, 0x50, 0x6f, 0x45, 0xb9, 0x53, 0xf6, 0x23, 0x01, 0x44, 0x8f, + 0xcb, 0x62, 0xe7, 0x42, 0xa0, 0x7b, 0x55, 0xa4, 0x0b, 0x7d, 0xab, 0x70, 0x12, 0x3f, 0x80, 0xc3, + 0x3d, 0xd7, 0xb6, 0xc2, 0x16, 0x22, 0xdd, 0x0a, 0xd2, 0xeb, 0x7d, 0x2a, 0x70, 0xeb, 0xf7, 0xe0, + 0xf9, 0xde, 0xeb, 0x53, 0x2f, 0x87, 0xa0, 0xf5, 0x68, 0x48, 0xff, 0xdf, 0xaf, 0x06, 0x27, 0xf0, + 0xa1, 0x00, 0xd3, 0x3e, 0x97, 0x9c, 0x5e, 0x0d, 0x9d, 0xc0, 0xbd, 0xd4, 0xa4, 0x37, 0x63, 0xa9, + 0x39, 0x84, 0x56, 0x6a, 0x9f, 0x3e, 0x9e, 0x15, 0x3e, 0x7b, 0x3c, 0x2b, 0xfc, 0xf3, 0xf1, 0xac, + 0xf0, 0xab, 0x27, 0xb3, 0x43, 0x9f, 0x3d, 0x99, 0x1d, 0xfa, 0xc7, 0x93, 0xd9, 0xa1, 0x9b, 0xd7, + 0x5c, 0xe5, 0x85, 0x0d, 0xc7, 0xc4, 0x26, 0xda, 0x21, 0x4b, 0xdc, 0xe0, 0x59, 0x45, 0x37, 0xb0, + 0xfb, 0xb1, 0x86, 0x54, 0x6d, 0xa9, 0xa1, 0x9b, 0x4b, 0x70, 0xd2, 0xfe, 0x89, 0x2e, 0x2b, 0x45, + 0xec, 0xa4, 0xd8, 0x0f, 0x6f, 0x5f, 0xf9, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x6d, 0x01, 0x3d, + 0x9c, 0x43, 0x3c, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -5032,6 +5126,125 @@ func (m *ExchangeEnableProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } +func (m *BatchExchangeModificationProposal) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *BatchExchangeModificationProposal) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *BatchExchangeModificationProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.TradingRewardCampaignUpdateProposal != nil { + { + size, err := m.TradingRewardCampaignUpdateProposal.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } + if len(m.ExpiryFuturesMarketLaunchProposals) > 0 { + for iNdEx := len(m.ExpiryFuturesMarketLaunchProposals) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ExpiryFuturesMarketLaunchProposals[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + } + if len(m.PerpetualMarketLaunchProposals) > 0 { + for iNdEx := len(m.PerpetualMarketLaunchProposals) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PerpetualMarketLaunchProposals[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + } + if len(m.SpotMarketLaunchProposals) > 0 { + for iNdEx := len(m.SpotMarketLaunchProposals) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.SpotMarketLaunchProposals[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if len(m.DerivativeMarketParamUpdateProposals) > 0 { + for iNdEx := len(m.DerivativeMarketParamUpdateProposals) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.DerivativeMarketParamUpdateProposals[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.SpotMarketParamUpdateProposals) > 0 { + for iNdEx := len(m.SpotMarketParamUpdateProposals) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.SpotMarketParamUpdateProposals[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintTx(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if len(m.Title) > 0 { + i -= len(m.Title) + copy(dAtA[i:], m.Title) + i = encodeVarintTx(dAtA, i, uint64(len(m.Title))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *SpotMarketLaunchProposal) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -5052,6 +5265,30 @@ func (m *SpotMarketLaunchProposal) MarshalToSizedBuffer(dAtA []byte) (int, error _ = i var l int _ = l + if m.TakerFeeRate != nil { + { + size := m.TakerFeeRate.Size() + i -= size + if _, err := m.TakerFeeRate.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + } + if m.MakerFeeRate != nil { + { + size := m.MakerFeeRate.Size() + i -= size + if _, err := m.MakerFeeRate.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } { size := m.MinQuantityTickSize.Size() i -= size @@ -5405,6 +5642,18 @@ func (m *DerivativeMarketParamUpdateProposal) MarshalToSizedBuffer(dAtA []byte) _ = i var l int _ = l + if m.OracleParams != nil { + { + size, err := m.OracleParams.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x72 + } if m.Status != 0 { i = encodeVarintTx(dAtA, i, uint64(m.Status)) i-- @@ -5542,7 +5791,7 @@ func (m *DerivativeMarketParamUpdateProposal) MarshalToSizedBuffer(dAtA []byte) return len(dAtA) - i, nil } -func (m *DerivativeMarketBandOraclePromotionProposal) Marshal() (dAtA []byte, err error) { +func (m *OracleParams) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -5552,34 +5801,37 @@ func (m *DerivativeMarketBandOraclePromotionProposal) Marshal() (dAtA []byte, er return dAtA[:n], nil } -func (m *DerivativeMarketBandOraclePromotionProposal) MarshalTo(dAtA []byte) (int, error) { +func (m *OracleParams) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *DerivativeMarketBandOraclePromotionProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *OracleParams) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.MarketId) > 0 { - i -= len(m.MarketId) - copy(dAtA[i:], m.MarketId) - i = encodeVarintTx(dAtA, i, uint64(len(m.MarketId))) + if m.OracleType != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.OracleType)) i-- - dAtA[i] = 0x1a + dAtA[i] = 0x20 } - if len(m.Description) > 0 { - i -= len(m.Description) - copy(dAtA[i:], m.Description) - i = encodeVarintTx(dAtA, i, uint64(len(m.Description))) + if m.OracleScaleFactor != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.OracleScaleFactor)) + i-- + dAtA[i] = 0x18 + } + if len(m.OracleQuote) > 0 { + i -= len(m.OracleQuote) + copy(dAtA[i:], m.OracleQuote) + i = encodeVarintTx(dAtA, i, uint64(len(m.OracleQuote))) i-- dAtA[i] = 0x12 } - if len(m.Title) > 0 { - i -= len(m.Title) - copy(dAtA[i:], m.Title) - i = encodeVarintTx(dAtA, i, uint64(len(m.Title))) + if len(m.OracleBase) > 0 { + i -= len(m.OracleBase) + copy(dAtA[i:], m.OracleBase) + i = encodeVarintTx(dAtA, i, uint64(len(m.OracleBase))) i-- dAtA[i] = 0xa } @@ -6524,7 +6776,7 @@ func (m *ExchangeEnableProposal) Size() (n int) { return n } -func (m *SpotMarketLaunchProposal) Size() (n int) { +func (m *BatchExchangeModificationProposal) Size() (n int) { if m == nil { return 0 } @@ -6538,22 +6790,81 @@ func (m *SpotMarketLaunchProposal) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.Ticker) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if len(m.SpotMarketParamUpdateProposals) > 0 { + for _, e := range m.SpotMarketParamUpdateProposals { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } } - l = len(m.BaseDenom) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if len(m.DerivativeMarketParamUpdateProposals) > 0 { + for _, e := range m.DerivativeMarketParamUpdateProposals { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } } - l = len(m.QuoteDenom) - if l > 0 { + if len(m.SpotMarketLaunchProposals) > 0 { + for _, e := range m.SpotMarketLaunchProposals { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.PerpetualMarketLaunchProposals) > 0 { + for _, e := range m.PerpetualMarketLaunchProposals { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.ExpiryFuturesMarketLaunchProposals) > 0 { + for _, e := range m.ExpiryFuturesMarketLaunchProposals { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if m.TradingRewardCampaignUpdateProposal != nil { + l = m.TradingRewardCampaignUpdateProposal.Size() n += 1 + l + sovTx(uint64(l)) } - l = m.MinPriceTickSize.Size() - n += 1 + l + sovTx(uint64(l)) - l = m.MinQuantityTickSize.Size() + return n +} + +func (m *SpotMarketLaunchProposal) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Title) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Ticker) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.BaseDenom) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.QuoteDenom) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.MinPriceTickSize.Size() + n += 1 + l + sovTx(uint64(l)) + l = m.MinQuantityTickSize.Size() n += 1 + l + sovTx(uint64(l)) + if m.MakerFeeRate != nil { + l = m.MakerFeeRate.Size() + n += 1 + l + sovTx(uint64(l)) + } + if m.TakerFeeRate != nil { + l = m.TakerFeeRate.Size() + n += 1 + l + sovTx(uint64(l)) + } return n } @@ -6719,26 +7030,32 @@ func (m *DerivativeMarketParamUpdateProposal) Size() (n int) { if m.Status != 0 { n += 1 + sovTx(uint64(m.Status)) } + if m.OracleParams != nil { + l = m.OracleParams.Size() + n += 1 + l + sovTx(uint64(l)) + } return n } -func (m *DerivativeMarketBandOraclePromotionProposal) Size() (n int) { +func (m *OracleParams) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.Title) + l = len(m.OracleBase) if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.Description) + l = len(m.OracleQuote) if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.MarketId) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if m.OracleScaleFactor != 0 { + n += 1 + sovTx(uint64(m.OracleScaleFactor)) + } + if m.OracleType != 0 { + n += 1 + sovTx(uint64(m.OracleType)) } return n } @@ -12231,6 +12548,326 @@ func (m *ExchangeEnableProposal) Unmarshal(dAtA []byte) error { } return nil } +func (m *BatchExchangeModificationProposal) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: BatchExchangeModificationProposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: BatchExchangeModificationProposal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SpotMarketParamUpdateProposals", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SpotMarketParamUpdateProposals = append(m.SpotMarketParamUpdateProposals, &SpotMarketParamUpdateProposal{}) + if err := m.SpotMarketParamUpdateProposals[len(m.SpotMarketParamUpdateProposals)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DerivativeMarketParamUpdateProposals", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DerivativeMarketParamUpdateProposals = append(m.DerivativeMarketParamUpdateProposals, &DerivativeMarketParamUpdateProposal{}) + if err := m.DerivativeMarketParamUpdateProposals[len(m.DerivativeMarketParamUpdateProposals)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SpotMarketLaunchProposals", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SpotMarketLaunchProposals = append(m.SpotMarketLaunchProposals, &SpotMarketLaunchProposal{}) + if err := m.SpotMarketLaunchProposals[len(m.SpotMarketLaunchProposals)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PerpetualMarketLaunchProposals", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PerpetualMarketLaunchProposals = append(m.PerpetualMarketLaunchProposals, &PerpetualMarketLaunchProposal{}) + if err := m.PerpetualMarketLaunchProposals[len(m.PerpetualMarketLaunchProposals)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExpiryFuturesMarketLaunchProposals", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ExpiryFuturesMarketLaunchProposals = append(m.ExpiryFuturesMarketLaunchProposals, &ExpiryFuturesMarketLaunchProposal{}) + if err := m.ExpiryFuturesMarketLaunchProposals[len(m.ExpiryFuturesMarketLaunchProposals)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TradingRewardCampaignUpdateProposal", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.TradingRewardCampaignUpdateProposal == nil { + m.TradingRewardCampaignUpdateProposal = &TradingRewardCampaignUpdateProposal{} + } + if err := m.TradingRewardCampaignUpdateProposal.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *SpotMarketLaunchProposal) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -12488,6 +13125,78 @@ func (m *SpotMarketLaunchProposal) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MakerFeeRate", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var v github_com_cosmos_cosmos_sdk_types.Dec + m.MakerFeeRate = &v + if err := m.MakerFeeRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TakerFeeRate", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var v github_com_cosmos_cosmos_sdk_types.Dec + m.TakerFeeRate = &v + if err := m.TakerFeeRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -13964,6 +14673,42 @@ func (m *DerivativeMarketParamUpdateProposal) Unmarshal(dAtA []byte) error { break } } + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OracleParams", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.OracleParams == nil { + m.OracleParams = &OracleParams{} + } + if err := m.OracleParams.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -13985,7 +14730,7 @@ func (m *DerivativeMarketParamUpdateProposal) Unmarshal(dAtA []byte) error { } return nil } -func (m *DerivativeMarketBandOraclePromotionProposal) Unmarshal(dAtA []byte) error { +func (m *OracleParams) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -14008,15 +14753,15 @@ func (m *DerivativeMarketBandOraclePromotionProposal) Unmarshal(dAtA []byte) err fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: DerivativeMarketBandOraclePromotionProposal: wiretype end group for non-group") + return fmt.Errorf("proto: OracleParams: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: DerivativeMarketBandOraclePromotionProposal: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: OracleParams: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field OracleBase", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -14044,11 +14789,11 @@ func (m *DerivativeMarketBandOraclePromotionProposal) Unmarshal(dAtA []byte) err if postIndex > l { return io.ErrUnexpectedEOF } - m.Title = string(dAtA[iNdEx:postIndex]) + m.OracleBase = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field OracleQuote", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -14076,13 +14821,13 @@ func (m *DerivativeMarketBandOraclePromotionProposal) Unmarshal(dAtA []byte) err if postIndex > l { return io.ErrUnexpectedEOF } - m.Description = string(dAtA[iNdEx:postIndex]) + m.OracleQuote = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MarketId", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OracleScaleFactor", wireType) } - var stringLen uint64 + m.OracleScaleFactor = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -14092,24 +14837,30 @@ func (m *DerivativeMarketBandOraclePromotionProposal) Unmarshal(dAtA []byte) err } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.OracleScaleFactor |= uint32(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OracleType", wireType) } - if postIndex > l { - return io.ErrUnexpectedEOF + m.OracleType = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.OracleType |= types1.OracleType(b&0x7F) << shift + if b < 0x80 { + break + } } - m.MarketId = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) diff --git a/chain/oracle/types/expected_keepers.go b/chain/oracle/types/expected_keepers.go index d6965a36..c284e905 100644 --- a/chain/oracle/types/expected_keepers.go +++ b/chain/oracle/types/expected_keepers.go @@ -3,8 +3,8 @@ package types import ( sdk "github.com/cosmos/cosmos-sdk/types" capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" - channeltypes "github.com/cosmos/ibc-go/modules/core/04-channel/types" - ibcexported "github.com/cosmos/ibc-go/modules/core/exported" + channeltypes "github.com/cosmos/ibc-go/v2/modules/core/04-channel/types" + ibcexported "github.com/cosmos/ibc-go/v2/modules/core/exported" ocrtypes "github.com/InjectiveLabs/sdk-go/chain/ocr/types" ) diff --git a/chain/oracle/types/oracle.pb.go b/chain/oracle/types/oracle.pb.go index 93793e05..d3cfca37 100644 --- a/chain/oracle/types/oracle.pb.go +++ b/chain/oracle/types/oracle.pb.go @@ -314,12 +314,12 @@ func (m *SetBandPriceEvent) GetRequestId() uint64 { } type SetBandIBCPriceEvent struct { - Relayer string `protobuf:"bytes,1,opt,name=relayer,proto3" json:"relayer,omitempty"` - Symbol string `protobuf:"bytes,2,opt,name=symbol,proto3" json:"symbol,omitempty"` - Price github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,3,opt,name=price,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"price"` - ResolveTime uint64 `protobuf:"varint,4,opt,name=resolve_time,json=resolveTime,proto3" json:"resolve_time,omitempty"` - RequestId uint64 `protobuf:"varint,5,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` - ClientId int64 `protobuf:"varint,6,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` + Relayer string `protobuf:"bytes,1,opt,name=relayer,proto3" json:"relayer,omitempty"` + Symbols []string `protobuf:"bytes,2,rep,name=symbols,proto3" json:"symbols,omitempty"` + Prices []github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,3,rep,name=prices,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"prices"` + ResolveTime uint64 `protobuf:"varint,4,opt,name=resolve_time,json=resolveTime,proto3" json:"resolve_time,omitempty"` + RequestId uint64 `protobuf:"varint,5,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` + ClientId int64 `protobuf:"varint,6,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` } func (m *SetBandIBCPriceEvent) Reset() { *m = SetBandIBCPriceEvent{} } @@ -362,11 +362,11 @@ func (m *SetBandIBCPriceEvent) GetRelayer() string { return "" } -func (m *SetBandIBCPriceEvent) GetSymbol() string { +func (m *SetBandIBCPriceEvent) GetSymbols() []string { if m != nil { - return m.Symbol + return m.Symbols } - return "" + return nil } func (m *SetBandIBCPriceEvent) GetResolveTime() uint64 { @@ -1510,101 +1510,102 @@ func init() { } var fileDescriptor_1c8fbf1e7a765423 = []byte{ - // 1495 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0xcf, 0x6f, 0x1b, 0xc7, - 0x15, 0xd6, 0x90, 0x14, 0x45, 0x3e, 0x59, 0xd2, 0x6a, 0x2c, 0xbb, 0xac, 0xdd, 0x92, 0x34, 0xd1, - 0xba, 0x84, 0x5b, 0x93, 0xfe, 0x71, 0xaa, 0x6f, 0xa6, 0x24, 0x0b, 0x84, 0x0d, 0x94, 0x5d, 0x5a, - 0x06, 0xda, 0xcb, 0x62, 0xb8, 0xfb, 0x24, 0x4d, 0xb9, 0xdc, 0xa5, 0x77, 0x86, 0x6c, 0xe5, 0x53, - 0x7b, 0xeb, 0xb1, 0x45, 0xcf, 0x05, 0x8c, 0x1c, 0x93, 0x1c, 0x02, 0xe4, 0x98, 0xfc, 0x01, 0x06, - 0x82, 0x00, 0x3e, 0x06, 0x3e, 0x38, 0x89, 0x7c, 0xf1, 0x25, 0x40, 0xee, 0xb9, 0x04, 0xb3, 0x33, - 0x5c, 0x2e, 0x69, 0xcb, 0xb1, 0x21, 0x01, 0x41, 0x72, 0xe2, 0xce, 0x7b, 0x6f, 0xdf, 0x7c, 0xdf, - 0x7b, 0x6f, 0xe6, 0xbd, 0x25, 0xfc, 0x96, 0x07, 0x7f, 0x43, 0x57, 0xf2, 0x31, 0x36, 0xc3, 0x88, - 0xb9, 0x3e, 0x36, 0xc7, 0xd7, 0x7b, 0x28, 0xd9, 0x75, 0xb3, 0x6c, 0x0c, 0xa3, 0x50, 0x86, 0xb4, - 0x94, 0x98, 0x35, 0x8c, 0xdc, 0x98, 0x5d, 0xd8, 0xd8, 0x0f, 0xf7, 0xc3, 0xd8, 0xa8, 0xa9, 0x9e, - 0xb4, 0xfd, 0x85, 0xb2, 0x1b, 0x8a, 0x41, 0x28, 0x9a, 0x3d, 0x26, 0xa6, 0x1e, 0xdd, 0x90, 0x07, - 0x5a, 0x5f, 0x5b, 0x85, 0x7c, 0x87, 0x45, 0x6c, 0x20, 0x6e, 0xe5, 0x5e, 0x3e, 0xae, 0x90, 0xda, - 0xd7, 0x04, 0xce, 0x6e, 0x1e, 0x30, 0x1e, 0xf8, 0x3c, 0xe8, 0x77, 0x22, 0xee, 0x62, 0x57, 0x32, - 0x89, 0xf4, 0x17, 0xb0, 0xb4, 0x87, 0xe8, 0x39, 0xdc, 0x2b, 0x91, 0x2a, 0xa9, 0x17, 0xed, 0xbc, - 0x5a, 0xb6, 0x3d, 0x7a, 0x07, 0xf2, 0x2c, 0x10, 0x7f, 0xc7, 0xa8, 0x94, 0x51, 0xf2, 0x56, 0xe3, - 0xc9, 0xf3, 0xca, 0xc2, 0xb3, 0xe7, 0x95, 0xcb, 0xfb, 0x5c, 0x1e, 0x8c, 0x7a, 0x0d, 0x37, 0x1c, - 0x34, 0x0d, 0x06, 0xfd, 0x73, 0x55, 0x78, 0xfd, 0xa6, 0x3c, 0x1c, 0xa2, 0x68, 0x6c, 0xa1, 0x6b, - 0x9b, 0xb7, 0xe9, 0xaf, 0xa0, 0x28, 0xf9, 0x00, 0x85, 0x64, 0x83, 0x61, 0x29, 0x5b, 0x25, 0xf5, - 0x9c, 0x3d, 0x15, 0xd0, 0xbb, 0xb0, 0x3c, 0x54, 0x60, 0x1c, 0xa1, 0xd0, 0x94, 0x72, 0x55, 0x52, - 0x5f, 0xbe, 0xf1, 0x9b, 0xc6, 0x71, 0xc1, 0x68, 0x4c, 0x91, 0xb7, 0x72, 0x0a, 0x90, 0x0d, 0xc3, - 0x44, 0x52, 0xfb, 0x8e, 0xc0, 0x6a, 0x8b, 0x05, 0x5e, 0x8a, 0xde, 0x79, 0xc8, 0x8b, 0xc3, 0x41, - 0x2f, 0xf4, 0x27, 0xec, 0xf4, 0x8a, 0xb6, 0x20, 0x17, 0xa9, 0x0d, 0xdf, 0x9d, 0x5b, 0x3b, 0x90, - 0x76, 0xfc, 0x2e, 0xbd, 0x04, 0x67, 0x22, 0x14, 0xa1, 0x3f, 0x46, 0x47, 0x11, 0x32, 0xe4, 0x96, - 0x8d, 0xec, 0x3e, 0x1f, 0x20, 0xfd, 0x35, 0x40, 0x84, 0x0f, 0x47, 0x28, 0xa4, 0xd3, 0xde, 0x8a, - 0xd9, 0xe5, 0xec, 0xa2, 0x91, 0xb4, 0xb7, 0xe6, 0xd9, 0x2f, 0x9e, 0x88, 0xfd, 0xe7, 0x04, 0xd6, - 0xbb, 0x28, 0x93, 0x00, 0x6c, 0x8f, 0x31, 0x90, 0xb4, 0x04, 0x4b, 0x11, 0xfa, 0xec, 0x10, 0x23, - 0x13, 0x81, 0xc9, 0x32, 0x15, 0x9a, 0xcc, 0x4c, 0x68, 0xb6, 0x60, 0x31, 0xf6, 0x1a, 0xf3, 0x79, - 0xf7, 0xbc, 0xeb, 0x97, 0x5f, 0x09, 0x4e, 0xee, 0x8d, 0xc1, 0xe1, 0x5e, 0x4c, 0x3e, 0x15, 0x1c, - 0xaf, 0xf6, 0x0d, 0x81, 0x0d, 0xc3, 0xa7, 0xdd, 0xda, 0xfc, 0x39, 0x50, 0xa2, 0x17, 0xa1, 0xe8, - 0xfa, 0x1c, 0x83, 0x58, 0x9b, 0xaf, 0x92, 0x7a, 0xd6, 0x2e, 0x68, 0x41, 0xdb, 0xab, 0xdd, 0x87, - 0xf3, 0x31, 0x3f, 0x43, 0xf8, 0xb6, 0xdb, 0xef, 0x8e, 0x5c, 0x17, 0x85, 0x50, 0x5e, 0x99, 0xdb, - 0x77, 0x22, 0x14, 0x23, 0x5f, 0x1a, 0xce, 0x45, 0xe6, 0xf6, 0xed, 0x58, 0x30, 0xeb, 0x35, 0x33, - 0xe7, 0xb5, 0x03, 0x1b, 0x73, 0x5e, 0xb7, 0xa3, 0x28, 0x8c, 0xd4, 0x4b, 0xca, 0x27, 0xaa, 0x85, - 0x71, 0x59, 0x60, 0x29, 0xe5, 0xf1, 0x1e, 0x6f, 0xc1, 0xc5, 0xb4, 0x47, 0x1b, 0xc5, 0x30, 0x0c, - 0x44, 0xcc, 0x3f, 0x1c, 0xcd, 0xa1, 0x21, 0x73, 0xef, 0x7e, 0x4a, 0xc0, 0xda, 0x41, 0x69, 0xe3, - 0x1e, 0x46, 0x18, 0xb8, 0xb8, 0xc5, 0x24, 0xa3, 0x57, 0x60, 0x5d, 0xdd, 0x62, 0xce, 0xc3, 0x51, - 0x28, 0xd1, 0x99, 0x39, 0xae, 0x6b, 0x4a, 0xf1, 0x67, 0x25, 0xef, 0xea, 0x4c, 0x5e, 0x86, 0xb5, - 0x94, 0xed, 0xf4, 0x08, 0xdb, 0x2b, 0x89, 0xa5, 0xad, 0xce, 0x66, 0x1d, 0x2c, 0x9f, 0x09, 0xe9, - 0x8c, 0x86, 0x1e, 0x93, 0xe8, 0x28, 0xa5, 0x4e, 0xbe, 0xbd, 0xaa, 0xe4, 0xbb, 0xb1, 0xb8, 0xc5, - 0x04, 0xaa, 0xdd, 0xd3, 0x96, 0xb1, 0xe3, 0x38, 0xb5, 0x45, 0x7b, 0x6d, 0x6a, 0x1a, 0x7b, 0xae, - 0xfd, 0x93, 0x40, 0x75, 0x27, 0x62, 0x9a, 0xfb, 0x9f, 0xe2, 0xb3, 0xd9, 0x89, 0xf8, 0x98, 0xfb, - 0xb8, 0x8f, 0x9d, 0x28, 0x1c, 0x86, 0x82, 0xf9, 0x74, 0x03, 0x16, 0x25, 0x97, 0x3e, 0x1a, 0x0a, - 0x7a, 0x41, 0xab, 0xb0, 0xec, 0xa1, 0x70, 0x23, 0x3e, 0x94, 0x3c, 0x0c, 0x0c, 0xe8, 0xb4, 0x88, - 0x5e, 0x80, 0x82, 0xa9, 0x63, 0x51, 0xca, 0x56, 0xb3, 0x2a, 0x21, 0x93, 0xf5, 0xad, 0xc2, 0xbf, - 0x1f, 0x57, 0x16, 0x5e, 0x3e, 0xae, 0x2c, 0xd4, 0xfe, 0x45, 0xe0, 0x92, 0x8d, 0xe3, 0xb0, 0x8f, - 0x3f, 0x1e, 0x86, 0x0f, 0x08, 0x5c, 0x8a, 0xc3, 0x10, 0x1f, 0xca, 0x3b, 0x88, 0x1e, 0x46, 0xa7, - 0x87, 0x81, 0x42, 0x2e, 0x95, 0xae, 0xf8, 0x59, 0xf9, 0x4a, 0x27, 0x46, 0x2f, 0x66, 0xd0, 0x2e, - 0x1e, 0x8b, 0xf6, 0x43, 0x02, 0x35, 0x1d, 0xb1, 0x9f, 0x04, 0xdc, 0xff, 0x13, 0x58, 0x4d, 0x80, - 0xea, 0x26, 0x36, 0xd9, 0x82, 0xbc, 0x6e, 0x8b, 0x4c, 0x7a, 0x8b, 0xed, 0xd9, 0x86, 0x92, 0x7d, - 0xfb, 0x86, 0x92, 0x6e, 0x25, 0x33, 0x48, 0x73, 0xb3, 0x48, 0x6b, 0x7f, 0x84, 0x95, 0x04, 0x5e, - 0x3b, 0xd8, 0x0b, 0xdf, 0x1e, 0x5d, 0xed, 0x41, 0x8a, 0x59, 0xfc, 0x30, 0xbd, 0x98, 0xc9, 0x09, - 0x2e, 0xe6, 0xda, 0x7b, 0x04, 0xce, 0x77, 0x51, 0xce, 0xfa, 0xfe, 0xa1, 0x5e, 0x31, 0x81, 0x9d, - 0x79, 0x1d, 0xec, 0x6c, 0x3a, 0xa8, 0x09, 0xc8, 0xdc, 0x49, 0x40, 0x7e, 0x42, 0x80, 0x6e, 0x86, - 0x3c, 0x50, 0x1b, 0xa5, 0x06, 0x14, 0x0a, 0xb9, 0x3e, 0x0f, 0x26, 0xc3, 0x57, 0xfc, 0x3c, 0x3b, - 0x32, 0x65, 0xe6, 0x47, 0x26, 0x0b, 0xb2, 0x7d, 0x3c, 0x34, 0x10, 0xd5, 0xa3, 0x82, 0x3d, 0x66, - 0xfe, 0x68, 0xd2, 0x91, 0xf4, 0xe2, 0x74, 0x87, 0x8b, 0xff, 0x11, 0x38, 0xd7, 0x45, 0x39, 0x43, - 0x40, 0x47, 0xf8, 0xb8, 0x09, 0x2b, 0x89, 0x5a, 0xe6, 0x24, 0x3d, 0xf7, 0x8d, 0xd3, 0x63, 0xed, - 0x33, 0x02, 0x90, 0x8a, 0xe5, 0xa9, 0x54, 0x13, 0xfd, 0x0b, 0x58, 0xee, 0x68, 0x30, 0xf2, 0x99, - 0x0a, 0x92, 0x73, 0x12, 0x0e, 0x6b, 0x53, 0x3f, 0x9d, 0xd7, 0xb3, 0xc9, 0xa6, 0xd9, 0x7c, 0x4c, - 0xa0, 0x76, 0x7b, 0x24, 0x0f, 0xc2, 0x88, 0x3f, 0x4a, 0xdd, 0xee, 0xb6, 0x1e, 0x1f, 0x4e, 0x7c, - 0x51, 0xdd, 0x55, 0x47, 0x21, 0x76, 0x65, 0xee, 0x85, 0xdf, 0x1f, 0x5f, 0x0b, 0xaf, 0xec, 0x6e, - 0x4a, 0x62, 0xe2, 0x21, 0x75, 0x5f, 0x7d, 0x4b, 0xa0, 0x32, 0x69, 0xa7, 0xa7, 0x0d, 0xf9, 0x0a, - 0xac, 0x7b, 0xe8, 0xa3, 0xea, 0xf4, 0xd3, 0xa9, 0x4a, 0x57, 0xc1, 0x9a, 0x56, 0xd8, 0xc9, 0x6c, - 0xe5, 0xc0, 0x39, 0xd3, 0xc2, 0x35, 0x97, 0xc9, 0x2b, 0xe6, 0x9b, 0xe2, 0x5d, 0xc8, 0xda, 0x67, - 0xb5, 0xa7, 0x19, 0x61, 0x8a, 0xf2, 0x47, 0x04, 0xce, 0x6d, 0x07, 0xac, 0xe7, 0x63, 0x32, 0x9c, - 0x9e, 0x90, 0xe8, 0xae, 0x1a, 0x6b, 0x02, 0xcf, 0xe1, 0x3d, 0xd7, 0x19, 0xc6, 0x9f, 0x6d, 0x26, - 0x47, 0xbf, 0x7b, 0x33, 0x6c, 0xb5, 0x77, 0x6c, 0x6e, 0xf2, 0xb3, 0xa2, 0xbc, 0xb4, 0x7b, 0xae, - 0xf9, 0xf4, 0x9b, 0x42, 0x3e, 0xca, 0xc0, 0xfa, 0x2b, 0x3c, 0xe7, 0xc6, 0x55, 0x32, 0x3f, 0xae, - 0xd6, 0xc1, 0x32, 0xb1, 0xd4, 0x48, 0xa7, 0xd3, 0xe0, 0xaa, 0x96, 0x77, 0x63, 0x71, 0xdb, 0xa3, - 0x65, 0x58, 0xd2, 0xc7, 0xde, 0x8c, 0x0d, 0x93, 0x72, 0x31, 0xc2, 0x78, 0xda, 0x14, 0x7d, 0xc7, - 0x0d, 0x47, 0x81, 0x34, 0xb7, 0x54, 0x81, 0x89, 0xfe, 0xa6, 0x5a, 0x2b, 0xe5, 0x80, 0x07, 0x46, - 0xa9, 0x67, 0xe6, 0xc2, 0x80, 0x07, 0x5a, 0x79, 0x00, 0xc5, 0x3d, 0x44, 0xc7, 0xe7, 0x03, 0x2e, - 0x4b, 0xf9, 0x6a, 0xb6, 0xbe, 0x7c, 0xe3, 0x97, 0x0d, 0x7d, 0xda, 0x1a, 0xea, 0x26, 0x4a, 0xc2, - 0xa1, 0xae, 0xa6, 0xd6, 0x35, 0xb5, 0xed, 0xfb, 0x5f, 0x56, 0xea, 0x6f, 0x71, 0x42, 0xd5, 0x0b, - 0xc2, 0x2e, 0xec, 0x21, 0xde, 0x53, 0xce, 0x69, 0x45, 0xdd, 0x97, 0x38, 0x64, 0x11, 0x3a, 0xfb, - 0x4c, 0x94, 0x96, 0x62, 0x20, 0x60, 0x44, 0x3b, 0x4c, 0x28, 0x03, 0xfc, 0x07, 0xba, 0x23, 0xa9, - 0x0d, 0x0a, 0xda, 0xc0, 0x88, 0x76, 0x98, 0xa8, 0x3d, 0x23, 0xb0, 0x32, 0x93, 0x15, 0x15, 0xc1, - 0x24, 0xaf, 0x18, 0x57, 0x8c, 0x0e, 0x73, 0xc1, 0x5e, 0x35, 0x99, 0xd2, 0x75, 0xe4, 0xd1, 0x6b, - 0xb0, 0xa1, 0x8c, 0x92, 0x74, 0x04, 0x12, 0xa3, 0x31, 0xf3, 0x4d, 0xbc, 0x29, 0xef, 0xb9, 0x93, - 0x52, 0x37, 0x1a, 0xfa, 0x07, 0x50, 0x52, 0x47, 0x84, 0xa3, 0xc8, 0x45, 0xc7, 0x3d, 0x60, 0x41, - 0x80, 0xbe, 0x69, 0x0b, 0x16, 0xef, 0xb9, 0xdd, 0x58, 0xb1, 0xa9, 0xe5, 0x0a, 0xbc, 0xb2, 0x1e, - 0x63, 0x24, 0x54, 0x0d, 0xea, 0xc1, 0x04, 0x78, 0xcf, 0x7d, 0xa0, 0x25, 0xb4, 0xac, 0x0d, 0x86, - 0x61, 0x94, 0x7c, 0xbb, 0x14, 0xed, 0x22, 0xef, 0xb9, 0x9d, 0x30, 0x92, 0x6d, 0xef, 0xca, 0x7f, - 0x09, 0x80, 0xae, 0x9e, 0xfb, 0x87, 0x43, 0xa4, 0x6b, 0xb0, 0xbc, 0x1b, 0x88, 0x21, 0xba, 0x7c, - 0x8f, 0xa3, 0x67, 0x2d, 0xd0, 0x02, 0xe4, 0x14, 0x77, 0x8b, 0xd0, 0x15, 0x28, 0x26, 0xad, 0xd8, - 0xca, 0xd0, 0x33, 0x50, 0x98, 0xb4, 0x0d, 0x2b, 0xab, 0x94, 0xc9, 0xdf, 0x10, 0x56, 0x8e, 0x16, - 0x61, 0xd1, 0x66, 0x8f, 0xc2, 0xc8, 0x5a, 0xa4, 0x4b, 0x90, 0xdd, 0xe2, 0xcc, 0xca, 0x2b, 0x4f, - 0xb7, 0x3b, 0xed, 0x9b, 0xd6, 0x92, 0x12, 0xed, 0x0e, 0x98, 0x55, 0x50, 0xa2, 0xce, 0xa1, 0x3c, - 0xb0, 0x8a, 0x74, 0x19, 0x96, 0x4c, 0x88, 0x2d, 0x68, 0xed, 0x3d, 0x39, 0x2a, 0x93, 0xa7, 0x47, - 0x65, 0xf2, 0xd5, 0x51, 0x99, 0xfc, 0xe7, 0x45, 0x79, 0xe1, 0xe9, 0x8b, 0xf2, 0xc2, 0x17, 0x2f, - 0xca, 0x0b, 0x7f, 0xbd, 0x97, 0x2a, 0x80, 0xf6, 0xe4, 0x04, 0xdd, 0x63, 0x3d, 0xd1, 0x4c, 0xce, - 0xd3, 0x55, 0x37, 0x8c, 0x30, 0xbd, 0x54, 0xb0, 0x9a, 0x83, 0xd0, 0x1b, 0xf9, 0x28, 0x26, 0xff, - 0xd5, 0xc4, 0xa5, 0xd2, 0xcb, 0xc7, 0xff, 0xa9, 0xdc, 0xfc, 0x3e, 0x00, 0x00, 0xff, 0xff, 0x33, - 0xcf, 0x49, 0x9a, 0xcc, 0x11, 0x00, 0x00, + // 1514 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0xbf, 0x6f, 0x1b, 0xc7, + 0x12, 0xd6, 0x92, 0x14, 0x45, 0x8e, 0x2c, 0xe9, 0x74, 0x96, 0xfd, 0xf8, 0xec, 0xf7, 0x48, 0x9a, + 0x78, 0xcf, 0x21, 0x9c, 0x98, 0xf4, 0x8f, 0x2a, 0xee, 0x4c, 0x49, 0x16, 0x08, 0x1b, 0x08, 0x73, + 0xb4, 0x0c, 0x24, 0xcd, 0x61, 0x79, 0x37, 0x92, 0x36, 0x3c, 0xde, 0xd1, 0xb7, 0x4b, 0x26, 0x72, + 0x95, 0x74, 0x29, 0x13, 0xa4, 0x0e, 0x60, 0xa4, 0x4c, 0x52, 0x04, 0x48, 0x99, 0xfc, 0x01, 0x06, + 0x82, 0x00, 0x2e, 0x03, 0x17, 0x4e, 0x22, 0x37, 0x2e, 0x93, 0x3a, 0x4d, 0xb0, 0xb7, 0xcb, 0xe3, + 0x91, 0xb6, 0x1c, 0x09, 0x14, 0x10, 0xa4, 0xe2, 0xee, 0xcc, 0xec, 0xec, 0xf7, 0xcd, 0xce, 0xee, + 0xcc, 0x11, 0xfe, 0xcf, 0xfc, 0xf7, 0xd0, 0x11, 0x6c, 0x88, 0xf5, 0x20, 0xa4, 0x8e, 0x87, 0xf5, + 0xe1, 0xd5, 0x0e, 0x0a, 0x7a, 0x55, 0x4f, 0x6b, 0xfd, 0x30, 0x10, 0x81, 0x59, 0x88, 0xcd, 0x6a, + 0x5a, 0xae, 0xcd, 0xce, 0xad, 0xed, 0x06, 0xbb, 0x41, 0x64, 0x54, 0x97, 0x23, 0x65, 0x7f, 0xae, + 0xe8, 0x04, 0xbc, 0x17, 0xf0, 0x7a, 0x87, 0xf2, 0xb1, 0x47, 0x27, 0x60, 0xbe, 0xd2, 0x57, 0x96, + 0x21, 0xdb, 0xa2, 0x21, 0xed, 0xf1, 0x1b, 0x99, 0xe7, 0x0f, 0x4b, 0xa4, 0xf2, 0x2b, 0x81, 0xd3, + 0xeb, 0x7b, 0x94, 0xf9, 0x1e, 0xf3, 0xbb, 0xad, 0x90, 0x39, 0xd8, 0x16, 0x54, 0xa0, 0xf9, 0x2f, + 0x58, 0xd8, 0x41, 0x74, 0x6d, 0xe6, 0x16, 0x48, 0x99, 0x54, 0xf3, 0x56, 0x56, 0x4e, 0x9b, 0xae, + 0x79, 0x0b, 0xb2, 0xd4, 0xe7, 0xef, 0x63, 0x58, 0x48, 0x49, 0x79, 0xa3, 0xf6, 0xe8, 0x69, 0x69, + 0xee, 0xc9, 0xd3, 0xd2, 0xc5, 0x5d, 0x26, 0xf6, 0x06, 0x9d, 0x9a, 0x13, 0xf4, 0xea, 0x1a, 0x83, + 0xfa, 0xb9, 0xcc, 0xdd, 0x6e, 0x5d, 0xec, 0xf7, 0x91, 0xd7, 0x36, 0xd0, 0xb1, 0xf4, 0x6a, 0xf3, + 0x3f, 0x90, 0x17, 0xac, 0x87, 0x5c, 0xd0, 0x5e, 0xbf, 0x90, 0x2e, 0x93, 0x6a, 0xc6, 0x1a, 0x0b, + 0xcc, 0xdb, 0xb0, 0xd8, 0x97, 0x60, 0x6c, 0x2e, 0xd1, 0x14, 0x32, 0x65, 0x52, 0x5d, 0xbc, 0xf6, + 0xbf, 0xda, 0x61, 0xc1, 0xa8, 0x8d, 0x91, 0x37, 0x32, 0x12, 0x90, 0x05, 0xfd, 0x58, 0x52, 0xf9, + 0x83, 0xc0, 0x72, 0x83, 0xfa, 0x6e, 0x82, 0xde, 0x59, 0xc8, 0xf2, 0xfd, 0x5e, 0x27, 0xf0, 0x46, + 0xec, 0xd4, 0xcc, 0x6c, 0x40, 0x26, 0x94, 0x1b, 0x1e, 0x9f, 0x5b, 0xd3, 0x17, 0x56, 0xb4, 0xd6, + 0xbc, 0x00, 0xa7, 0x42, 0xe4, 0x81, 0x37, 0x44, 0x5b, 0x12, 0xd2, 0xe4, 0x16, 0xb5, 0xec, 0x2e, + 0xeb, 0xa1, 0xf9, 0x5f, 0x80, 0x10, 0xef, 0x0f, 0x90, 0x0b, 0xbb, 0xb9, 0x11, 0xb1, 0xcb, 0x58, + 0x79, 0x2d, 0x69, 0x6e, 0x4c, 0xb3, 0x9f, 0x9f, 0x89, 0xfd, 0x8f, 0x04, 0x56, 0xdb, 0x28, 0xe2, + 0x00, 0x6c, 0x0e, 0xd1, 0x17, 0x66, 0x01, 0x16, 0x42, 0xf4, 0xe8, 0x3e, 0x86, 0x3a, 0x02, 0xa3, + 0x69, 0x22, 0x34, 0xa9, 0x89, 0xd0, 0x6c, 0xc0, 0x7c, 0xe4, 0x35, 0xe2, 0x73, 0xfc, 0x73, 0x57, + 0x8b, 0x5f, 0x08, 0x4e, 0xe6, 0x95, 0xc1, 0x61, 0x6e, 0x44, 0x3e, 0x11, 0x1c, 0xb7, 0xf2, 0x3b, + 0x81, 0x35, 0xcd, 0xa7, 0xd9, 0x58, 0x3f, 0x12, 0xa5, 0x02, 0x2c, 0x28, 0x12, 0xbc, 0x90, 0x2a, + 0xa7, 0xa5, 0x46, 0x4f, 0x65, 0x36, 0x47, 0xb8, 0x78, 0x21, 0x2d, 0x15, 0xc7, 0xcf, 0x66, 0xb5, + 0x7a, 0x76, 0x5a, 0xe6, 0x79, 0xc8, 0x3b, 0x1e, 0x43, 0x3f, 0xd2, 0x66, 0xcb, 0xa4, 0x9a, 0xb6, + 0x72, 0x4a, 0xd0, 0x74, 0x2b, 0x77, 0xe1, 0x6c, 0xc4, 0x51, 0x93, 0xbe, 0xe9, 0x74, 0xdb, 0x03, + 0xc7, 0x41, 0xce, 0xa5, 0x57, 0xea, 0x74, 0xed, 0x10, 0xf9, 0xc0, 0x13, 0x9a, 0x77, 0x9e, 0x3a, + 0x5d, 0x2b, 0x12, 0x4c, 0x7a, 0x4d, 0x4d, 0x79, 0x6d, 0xc1, 0xda, 0x94, 0xd7, 0xcd, 0x30, 0x0c, + 0x42, 0xb9, 0x48, 0xfa, 0x44, 0x39, 0xd1, 0x2e, 0x73, 0x34, 0xa1, 0x3c, 0xdc, 0xe3, 0x0d, 0x38, + 0x9f, 0xf4, 0x68, 0x21, 0xef, 0x07, 0x3e, 0x8f, 0xf8, 0x07, 0x83, 0x29, 0x34, 0x64, 0x6a, 0xed, + 0xf7, 0x04, 0x8c, 0x2d, 0x14, 0x16, 0xee, 0x60, 0x88, 0xbe, 0x83, 0x1b, 0x54, 0x50, 0xf3, 0x12, + 0xac, 0xca, 0x97, 0xcc, 0xbe, 0x3f, 0x08, 0x04, 0xda, 0x13, 0x57, 0x76, 0x45, 0x2a, 0xde, 0x96, + 0xf2, 0xb6, 0x4a, 0xd0, 0x8b, 0xb0, 0x92, 0xb0, 0x1d, 0x5f, 0x63, 0x6b, 0x29, 0xb6, 0xb4, 0xe4, + 0xfd, 0xac, 0x82, 0xe1, 0x51, 0x2e, 0xec, 0x41, 0xdf, 0xa5, 0x02, 0x6d, 0xa9, 0x54, 0x39, 0x6d, + 0x2d, 0x4b, 0xf9, 0x76, 0x24, 0x6e, 0x50, 0x8e, 0x72, 0xf7, 0xa4, 0x65, 0xe4, 0x38, 0x3a, 0xda, + 0xbc, 0xb5, 0x32, 0x36, 0x8d, 0x3c, 0x57, 0x3e, 0x24, 0x50, 0xde, 0x0a, 0xa9, 0xe2, 0xfe, 0x56, + 0x74, 0x3f, 0x5b, 0x21, 0x1b, 0x32, 0x0f, 0x77, 0xb1, 0x15, 0x06, 0xfd, 0x80, 0x53, 0xcf, 0x5c, + 0x83, 0x79, 0xc1, 0x84, 0x87, 0x9a, 0x82, 0x9a, 0x98, 0x65, 0x58, 0x74, 0x91, 0x3b, 0x21, 0xeb, + 0x0b, 0x16, 0xf8, 0x1a, 0x74, 0x52, 0x64, 0x9e, 0x83, 0x9c, 0xce, 0x65, 0x9d, 0xa8, 0x56, 0x3c, + 0xbf, 0x91, 0xfb, 0xf8, 0x61, 0x69, 0xee, 0xf9, 0xc3, 0xd2, 0x5c, 0xe5, 0x23, 0x02, 0x17, 0x2c, + 0x1c, 0x06, 0x5d, 0xfc, 0xfb, 0x30, 0x7c, 0x45, 0xe0, 0x42, 0x14, 0x86, 0xe8, 0x62, 0xde, 0x42, + 0x74, 0x31, 0x3c, 0x39, 0x0c, 0x26, 0x64, 0x12, 0xc7, 0x15, 0x8d, 0xa5, 0xaf, 0xe4, 0xc1, 0xa8, + 0xc9, 0x04, 0xda, 0xf9, 0x43, 0xd1, 0x7e, 0x4d, 0xa0, 0xa2, 0x22, 0xf6, 0x8f, 0x80, 0xfb, 0x39, + 0x81, 0xe5, 0x18, 0xa8, 0x2a, 0x64, 0xa3, 0x2d, 0xc8, 0xcb, 0xb6, 0x48, 0x25, 0xb7, 0xd8, 0x9c, + 0x2c, 0x2a, 0xe9, 0xa3, 0x17, 0x95, 0x64, 0x39, 0x99, 0x40, 0x9a, 0x99, 0x44, 0x5a, 0x79, 0x13, + 0x96, 0x62, 0x78, 0x4d, 0x7f, 0x27, 0x38, 0x3a, 0xba, 0xca, 0xbd, 0x04, 0xb3, 0x68, 0x30, 0xae, + 0x37, 0x64, 0x86, 0x7a, 0x53, 0xf9, 0x82, 0xc0, 0xd9, 0x36, 0x8a, 0x49, 0xdf, 0x7f, 0x55, 0x2f, + 0x46, 0xb0, 0x53, 0x2f, 0x83, 0x9d, 0x4e, 0x06, 0x35, 0x06, 0x99, 0x99, 0x05, 0xe4, 0x77, 0x04, + 0xcc, 0xf5, 0x80, 0xf9, 0x72, 0xa3, 0x44, 0x93, 0x62, 0x42, 0xa6, 0xcb, 0xfc, 0x51, 0x03, 0x16, + 0x8d, 0x27, 0xdb, 0xa6, 0xd4, 0x74, 0xdb, 0x64, 0x40, 0xba, 0x8b, 0xfb, 0x1a, 0xa2, 0x1c, 0x4a, + 0xd8, 0x43, 0xea, 0x0d, 0x46, 0x15, 0x49, 0x4d, 0x4e, 0xb6, 0xc1, 0xf8, 0x8c, 0xc0, 0x99, 0x36, + 0x8a, 0x09, 0x02, 0x2a, 0xc2, 0x87, 0x75, 0x59, 0x71, 0xd4, 0x52, 0xb3, 0xb4, 0x12, 0xaf, 0xec, + 0x20, 0x2b, 0x3f, 0x10, 0x80, 0x44, 0x2c, 0x4f, 0x24, 0x9b, 0xcc, 0x77, 0xc0, 0x70, 0x06, 0xbd, + 0x81, 0x47, 0x65, 0x90, 0xec, 0x59, 0x38, 0xac, 0x8c, 0xfd, 0xb4, 0x5e, 0xce, 0x26, 0x9d, 0x64, + 0xf3, 0x2d, 0x81, 0xca, 0xcd, 0x81, 0xd8, 0x0b, 0x42, 0xf6, 0x20, 0xf1, 0xba, 0x5b, 0xaa, 0x7d, + 0x98, 0xf9, 0xa1, 0xba, 0x2d, 0xaf, 0x42, 0xe4, 0x4a, 0xbf, 0x0b, 0xaf, 0x1f, 0x9e, 0x0b, 0x2f, + 0xec, 0xae, 0x53, 0x62, 0xe4, 0x21, 0xf1, 0x5e, 0xfd, 0x46, 0xa0, 0x34, 0x2a, 0xa7, 0x27, 0x0d, + 0xf9, 0x12, 0xac, 0xba, 0xe8, 0xa1, 0xac, 0xf4, 0xe3, 0xae, 0x4a, 0x65, 0xc1, 0x8a, 0x52, 0x58, + 0x71, 0x6f, 0x65, 0xc3, 0x19, 0x5d, 0xc2, 0x15, 0x97, 0xd1, 0x12, 0xfd, 0x5d, 0x71, 0x1c, 0xb2, + 0xd6, 0x69, 0xe5, 0x69, 0x42, 0x98, 0xa0, 0xfc, 0x0d, 0x81, 0x33, 0x9b, 0x3e, 0xed, 0x78, 0x18, + 0x37, 0xa8, 0x33, 0x12, 0xdd, 0x96, 0x6d, 0x8d, 0xef, 0xda, 0xac, 0xe3, 0xd8, 0xfd, 0xe8, 0xd3, + 0x4d, 0x9f, 0xd1, 0x6b, 0xaf, 0x86, 0x2d, 0xf7, 0x8e, 0xcc, 0xf5, 0xf9, 0x2c, 0x49, 0x2f, 0xcd, + 0x8e, 0xa3, 0x3f, 0xff, 0xc6, 0x90, 0x0f, 0x52, 0xb0, 0xfa, 0x02, 0xcf, 0xa9, 0x76, 0x95, 0x4c, + 0xb7, 0xab, 0x55, 0x30, 0x74, 0x2c, 0x15, 0xd2, 0x71, 0x37, 0xb8, 0xac, 0xe4, 0xed, 0x48, 0xdc, + 0x74, 0xcd, 0xe2, 0xb8, 0xf9, 0x56, 0x3d, 0xb6, 0x4e, 0x97, 0x51, 0x0b, 0x2e, 0xbb, 0x4d, 0xde, + 0xb5, 0x9d, 0x60, 0xe0, 0x0b, 0xfd, 0x4a, 0xe5, 0x28, 0xef, 0xae, 0xcb, 0xb9, 0x54, 0xf6, 0x98, + 0xaf, 0x95, 0xaa, 0x67, 0xce, 0xf5, 0x98, 0xaf, 0x94, 0x7b, 0x90, 0xdf, 0x41, 0xb4, 0x3d, 0xd6, + 0x63, 0xa2, 0x90, 0x2d, 0xa7, 0xab, 0x8b, 0xd7, 0xfe, 0x5d, 0x53, 0xb7, 0xad, 0x26, 0x5f, 0xa2, + 0x38, 0x1c, 0xf2, 0x69, 0x6a, 0x5c, 0x91, 0xdb, 0x7e, 0xf9, 0x73, 0xa9, 0x7a, 0x84, 0x1b, 0x2a, + 0x17, 0x70, 0x2b, 0xb7, 0x83, 0x78, 0x47, 0x3a, 0x37, 0x4b, 0xf2, 0xbd, 0xc4, 0x3e, 0x0d, 0xd1, + 0xde, 0xa5, 0xbc, 0xb0, 0x10, 0x01, 0x01, 0x2d, 0xda, 0xa2, 0x5c, 0x1a, 0xe0, 0x07, 0xe8, 0x0c, + 0x84, 0x32, 0xc8, 0x29, 0x03, 0x2d, 0xda, 0xa2, 0xbc, 0xf2, 0x84, 0xc0, 0xd2, 0xc4, 0xa9, 0xc8, + 0x08, 0xc6, 0xe7, 0x8a, 0x51, 0xc6, 0xa8, 0x30, 0xe7, 0xac, 0x65, 0x7d, 0x52, 0x2a, 0x8f, 0x5c, + 0xf3, 0x0a, 0xac, 0x49, 0xa3, 0xf8, 0x38, 0x7c, 0x81, 0xe1, 0x90, 0x7a, 0x3a, 0xde, 0x26, 0xeb, + 0x38, 0xa3, 0x54, 0xd7, 0x1a, 0xf3, 0x0d, 0x90, 0x52, 0x9b, 0x07, 0x83, 0xd0, 0x41, 0xdb, 0xd9, + 0xa3, 0xbe, 0x8f, 0x9e, 0x2e, 0x0b, 0x06, 0xeb, 0x38, 0xed, 0x48, 0xb1, 0xae, 0xe4, 0x12, 0xbc, + 0xb4, 0x1e, 0x62, 0xc8, 0x65, 0x0e, 0xaa, 0xc6, 0x04, 0x58, 0xc7, 0xb9, 0xa7, 0x24, 0x66, 0x51, + 0x19, 0xf4, 0x83, 0x30, 0xfe, 0x76, 0xc9, 0x5b, 0x79, 0xd6, 0x71, 0x5a, 0x41, 0x28, 0x9a, 0xee, + 0xa5, 0x4f, 0x09, 0x80, 0xca, 0x9e, 0xbb, 0xfb, 0x7d, 0x34, 0x57, 0x60, 0x71, 0xdb, 0xe7, 0x7d, + 0x74, 0xd8, 0x0e, 0x43, 0xd7, 0x98, 0x33, 0x73, 0x90, 0x91, 0xdc, 0x0d, 0x62, 0x2e, 0x41, 0x3e, + 0x2e, 0xc5, 0x46, 0xca, 0x3c, 0x05, 0xb9, 0x51, 0xd9, 0x30, 0xd2, 0x52, 0x19, 0xff, 0x15, 0x61, + 0x64, 0xcc, 0x3c, 0xcc, 0x5b, 0xf4, 0x41, 0x10, 0x1a, 0xf3, 0xe6, 0x02, 0xa4, 0x37, 0x18, 0x35, + 0xb2, 0xd2, 0xd3, 0xcd, 0x56, 0xf3, 0xba, 0xb1, 0x20, 0x45, 0xdb, 0x3d, 0x6a, 0xe4, 0xa4, 0xa8, + 0xb5, 0x2f, 0xf6, 0x8c, 0xbc, 0xb9, 0x08, 0x0b, 0x3a, 0xc4, 0x06, 0x34, 0x76, 0x1e, 0x1d, 0x14, + 0xc9, 0xe3, 0x83, 0x22, 0xf9, 0xe5, 0xa0, 0x48, 0x3e, 0x79, 0x56, 0x9c, 0x7b, 0xfc, 0xac, 0x38, + 0xf7, 0xd3, 0xb3, 0xe2, 0xdc, 0xbb, 0x77, 0x12, 0x09, 0xd0, 0x1c, 0xdd, 0xa0, 0x3b, 0xb4, 0xc3, + 0xeb, 0xf1, 0x7d, 0xba, 0xec, 0x04, 0x21, 0x26, 0xa7, 0x12, 0x56, 0xbd, 0x17, 0xb8, 0x03, 0x0f, + 0xf9, 0xe8, 0xff, 0x9a, 0x28, 0x55, 0x3a, 0xd9, 0xe8, 0x7f, 0x95, 0xeb, 0x7f, 0x06, 0x00, 0x00, + 0xff, 0xff, 0xc6, 0xb5, 0xcd, 0x44, 0xd0, 0x11, 0x00, 0x00, } func (this *Params) Equal(that interface{}) bool { @@ -1858,22 +1859,28 @@ func (m *SetBandIBCPriceEvent) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x20 } - { - size := m.Price.Size() - i -= size - if _, err := m.Price.MarshalTo(dAtA[i:]); err != nil { - return 0, err + if len(m.Prices) > 0 { + for iNdEx := len(m.Prices) - 1; iNdEx >= 0; iNdEx-- { + { + size := m.Prices[iNdEx].Size() + i -= size + if _, err := m.Prices[iNdEx].MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintOracle(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a } - i = encodeVarintOracle(dAtA, i, uint64(size)) } - i-- - dAtA[i] = 0x1a - if len(m.Symbol) > 0 { - i -= len(m.Symbol) - copy(dAtA[i:], m.Symbol) - i = encodeVarintOracle(dAtA, i, uint64(len(m.Symbol))) - i-- - dAtA[i] = 0x12 + if len(m.Symbols) > 0 { + for iNdEx := len(m.Symbols) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Symbols[iNdEx]) + copy(dAtA[i:], m.Symbols[iNdEx]) + i = encodeVarintOracle(dAtA, i, uint64(len(m.Symbols[iNdEx]))) + i-- + dAtA[i] = 0x12 + } } if len(m.Relayer) > 0 { i -= len(m.Relayer) @@ -2959,12 +2966,18 @@ func (m *SetBandIBCPriceEvent) Size() (n int) { if l > 0 { n += 1 + l + sovOracle(uint64(l)) } - l = len(m.Symbol) - if l > 0 { - n += 1 + l + sovOracle(uint64(l)) + if len(m.Symbols) > 0 { + for _, s := range m.Symbols { + l = len(s) + n += 1 + l + sovOracle(uint64(l)) + } + } + if len(m.Prices) > 0 { + for _, e := range m.Prices { + l = e.Size() + n += 1 + l + sovOracle(uint64(l)) + } } - l = m.Price.Size() - n += 1 + l + sovOracle(uint64(l)) if m.ResolveTime != 0 { n += 1 + sovOracle(uint64(m.ResolveTime)) } @@ -4079,7 +4092,7 @@ func (m *SetBandIBCPriceEvent) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Symbol", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Symbols", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -4107,11 +4120,11 @@ func (m *SetBandIBCPriceEvent) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Symbol = string(dAtA[iNdEx:postIndex]) + m.Symbols = append(m.Symbols, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Price", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Prices", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -4139,7 +4152,9 @@ func (m *SetBandIBCPriceEvent) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Price.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + var v github_com_cosmos_cosmos_sdk_types.Dec + m.Prices = append(m.Prices, v) + if err := m.Prices[len(m.Prices)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex diff --git a/go.mod b/go.mod index a088b18a..60adc476 100644 --- a/go.mod +++ b/go.mod @@ -11,8 +11,9 @@ require ( github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce github.com/bugsnag/panicwrap v1.2.0 // indirect github.com/cespare/cp v1.1.1 // indirect - github.com/cosmos/cosmos-sdk v0.44.2 - github.com/cosmos/ibc-go v1.2.0 + github.com/cosmos/cosmos-sdk v0.44.3 + github.com/cosmos/ibc-go v1.0.0 + github.com/cosmos/ibc-go/v2 v2.0.0-rc0 github.com/deckarep/golang-set v1.7.1 // indirect github.com/ethereum/go-ethereum v1.9.25 github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 // indirect @@ -24,17 +25,14 @@ require ( github.com/jackpal/go-nat-pmp v1.0.2 // indirect github.com/karalabe/usb v0.0.0-20191104083709-911d15fe12a9 // indirect github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect - github.com/olekukonko/tablewriter v0.0.5 - github.com/pborman/uuid v1.2.0 // indirect github.com/pkg/errors v0.9.1 github.com/prometheus/tsdb v0.10.0 // indirect github.com/regen-network/cosmos-proto v0.3.1 github.com/rjeczalik/notify v0.9.2 // indirect github.com/shopspring/decimal v1.2.0 - github.com/sirupsen/logrus v1.8.1 // indirect github.com/spf13/cobra v1.2.1 github.com/status-im/keycard-go v0.0.0-20200402102358-957c09536969 // indirect - github.com/tendermint/tendermint v0.34.13 + github.com/tendermint/tendermint v0.34.14 github.com/tyler-smith/go-bip39 v1.0.2 github.com/xlab/suplog v1.3.0 golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a diff --git a/go.sum b/go.sum index 759b69b9..d4020433 100644 --- a/go.sum +++ b/go.sum @@ -88,8 +88,8 @@ github.com/OpenPeeDeeP/depguard v1.0.1/go.mod h1:xsIw86fROiiwelg+jB2uM9PiKihMMmU github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/sarama v1.26.1/go.mod h1:NbSGBSSndYaIhRcBtY9V0U7AyH+x71bG668AuWys/yU= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIOA6tDi6QXUemppXK3P9BI7mr2hd6gx8= github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= +github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/VictoriaMetrics/fastcache v1.5.7 h1:4y6y0G8PRzszQUYIQHHssv/jgPHAb5qQuuDNdCbyAgw= github.com/VictoriaMetrics/fastcache v1.5.7/go.mod h1:ptDBkNMQI4RtmVo8VS/XwRY6RoTu1dAWCbrk+6WsEM8= @@ -137,8 +137,6 @@ github.com/aws/aws-sdk-go v1.25.16/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpi github.com/aws/aws-sdk-go v1.25.37/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.25.48/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.29.15 h1:0ms/213murpsujhsnxnNKNeVouW60aJqSd992Ks3mxs= -github.com/aws/aws-sdk-go v1.29.15/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg= github.com/aws/aws-sdk-go v1.36.30 h1:hAwyfe7eZa7sM+S5mIJZFiNFwJMia9Whz6CYblioLoU= github.com/aws/aws-sdk-go v1.36.30/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= @@ -225,24 +223,22 @@ github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/cosmos-sdk v0.43.0/go.mod h1:ctcrTEAhei9s8O3KSNvL0dxe+fVQGp07QyRb/7H9JYE= -github.com/cosmos/cosmos-sdk v0.44.0 h1:eOSjACNtTnThEJ62IsS+pMm3OIU6hgMVqrp4TZClLZo= -github.com/cosmos/cosmos-sdk v0.44.0/go.mod h1:orG0jzFJ2KsDfzLd/X0JSOMzF4Oxc/BQz2GkcYF4gRE= -github.com/cosmos/cosmos-sdk v0.44.2 h1:EWoj9h9Q9t7uqS3LyqzZWWwnSEodUJlYDMloDoPBD3Y= -github.com/cosmos/cosmos-sdk v0.44.2/go.mod h1:fwQJdw+aECatpTvQTo1tSfHEsxACdZYU80QCZUPnHr4= +github.com/cosmos/cosmos-sdk v0.44.1/go.mod h1:fwQJdw+aECatpTvQTo1tSfHEsxACdZYU80QCZUPnHr4= +github.com/cosmos/cosmos-sdk v0.44.3 h1:F71n1jCqPi4F0wXg8AU4AUdUF8llw0x3D3o6aLt/j2A= +github.com/cosmos/cosmos-sdk v0.44.3/go.mod h1:bA3+VenaR/l/vDiYzaiwbWvRPWHMBX2jG0ygiFtiBp0= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= github.com/cosmos/iavl v0.15.0-rc3.0.20201009144442-230e9bdf52cd/go.mod h1:3xOIaNNX19p0QrX0VqWa6voPRoJRGGYtny+DH8NEPvE= github.com/cosmos/iavl v0.15.0-rc5/go.mod h1:WqoPL9yPTQ85QBMT45OOUzPxG/U/JcJoN7uMjgxke/I= github.com/cosmos/iavl v0.15.3/go.mod h1:OLjQiAQ4fGD2KDZooyJG9yz+p2ao2IAYSbke8mVvSA4= -github.com/cosmos/iavl v0.16.0 h1:ICIOB8xysirTX27GmVAaoeSpeozzgSu9d49w36xkVJA= github.com/cosmos/iavl v0.16.0/go.mod h1:2A8O/Jz9YwtjqXMO0CjnnbTYEEaovE8jWcwrakH3PoE= github.com/cosmos/iavl v0.17.1 h1:b/Cl8h1PRMvsu24+TYNlKchIu7W6tmxIBGe6E9u2Ybw= github.com/cosmos/iavl v0.17.1/go.mod h1:7aisPZK8yCpQdy3PMvKeO+bhq1NwDjUwjzxwwROUxFk= github.com/cosmos/ibc-go v1.0.0 h1:RtIRERSENyApp6WK7Germ3/wq8xvHxfsqfW/Xh+CJ2o= github.com/cosmos/ibc-go v1.0.0/go.mod h1:2wHKQUa+BLJMEyN635KrHfmTTwSNHBtXcqdY8JWGuXA= -github.com/cosmos/ibc-go v1.2.0 h1:0RgxmKzCzIH9SwDp4ckL5VrzlO1KJ5hO0AsOAzOiWE4= -github.com/cosmos/ibc-go v1.2.0/go.mod h1:wGjeNd+T4kpGrt0OC8DTiE/qXLrlmTPNpdoYsBZUjKI= +github.com/cosmos/ibc-go/v2 v2.0.0-rc0 h1:1oANKRcR8dIZCsCYCKIcMEG9VZgnXMdUvpD39lh0TQ4= +github.com/cosmos/ibc-go/v2 v2.0.0-rc0/go.mod h1:z1LmpWwZF8YBeA3w2ibYG53R4HkhQGWjdUew/EfTSDw= github.com/cosmos/ledger-cosmos-go v0.11.1 h1:9JIYsGnXP613pb2vPjFeMMjBI5lEDsEaF6oYorTy6J4= github.com/cosmos/ledger-cosmos-go v0.11.1/go.mod h1:J8//BsAGTo3OC/vDLjMRFLW6q0WAaXvHnVc7ZmE8iUY= github.com/cosmos/ledger-go v0.9.2 h1:Nnao/dLwaVTk1Q5U9THldpUMMXU94BOTWPddSmVB6pI= @@ -354,8 +350,8 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9 github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-ole/go-ole v1.2.1 h1:2lOsA72HgjxAuMlKpFiCbHTvu44PIVkZ5hqm3RSdI/E= github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= +github.com/go-ole/go-ole v1.2.5 h1:t4MGB5xEDZvXI+0rMjjsfBsD7yAgp/s9ZDkL1JndXwY= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= @@ -483,7 +479,6 @@ github.com/google/trillian v1.3.11/go.mod h1:0tPraVHrSDkA3BO6vKX67zgLXs6SsOAbHEi github.com/google/uuid v0.0.0-20161128191214-064e2069ce9c/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -587,8 +582,8 @@ github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1: github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.4/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/improbable-eng/grpc-web v0.14.0 h1:GdoK+cXABdB+1keuqsV1drSFO2XLYIxqt/4Rj8SWGBk= github.com/improbable-eng/grpc-web v0.14.0/go.mod h1:6hRR09jOEG81ADP5wCQju1z71g6OL4eEvELdran/3cs= +github.com/improbable-eng/grpc-web v0.14.1 h1:NrN4PY71A6tAz2sKDvC5JCauENWp0ykG8Oq1H3cpFvw= github.com/improbable-eng/grpc-web v0.14.1/go.mod h1:zEjGHa8DAlkoOXmswrNvhUGEYQA9UI7DhrGeHR1DMGU= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= @@ -607,10 +602,10 @@ github.com/jhump/protoreflect v1.8.2/go.mod h1:7GcYQDdMU/O/BBrl/cX6PNHpXh6cenjd8 github.com/jhump/protoreflect v1.9.0/go.mod h1:7GcYQDdMU/O/BBrl/cX6PNHpXh6cenjd8pneu5yW7Tg= github.com/jingyugao/rowserrcheck v1.1.0/go.mod h1:TOQpc2SLx6huPfoFGK3UOnEG+u02D3C1GeosjupAKCA= github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= @@ -649,10 +644,10 @@ github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6 github.com/kkdai/bstream v1.0.0/go.mod h1:FDnDOHt5Yx4p3FaHcioFT0QjDOtgUpvjeZqAs+NVZZA= github.com/klauspost/compress v1.9.8/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.10.1/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.10.3 h1:OP96hzwJVBIHYU52pVTI6CczrxPvrGfgqF9N5eTO0Q8= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.10.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.0/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.7 h1:0hzRabrMN4tSTvMfnL3SCv1ZGeAP23ynzodBgaHeMeg= github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/reedsolomon v1.9.3/go.mod h1:CwCi+NUr9pqSVktrkN+Ondf06rkhYZ/pcNv7fu+8Un4= @@ -680,6 +675,7 @@ github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.9.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.2 h1:AqzbZs4ZoCBp+GtejcpCpcxM3zlSMx29dXbUSeVtJb8= github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.0.2 h1:QNK2iAFa8gjAe1SPz6mHSMuCcjs+X1wlHzeOSqcmlfs= github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= @@ -707,7 +703,6 @@ github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.13 h1:qdl+GuBjcsKKDco5BsxPJlId98mSWNKqYA+Co0SC1yA= github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= @@ -802,16 +797,15 @@ github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+ github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.15.1 h1:DsXNrKujDlkMS9Rsxmd+Fg7S6Kc5lhE+qX8tY6laOxc= -github.com/onsi/ginkgo v1.15.1/go.mod h1:Dd6YFfwBW84ETqqtL0CPyPXillHgY6XhQH3uuCCTr/o= github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= +github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.13.0 h1:7lLHu94wT9Ij0o6EWWclhu0aOh32VxhkwEJvzuWPeak= github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/openconfig/gnmi v0.0.0-20190823184014-89b2bf29312c/go.mod h1:t+O9It+LKzfOAhKTT5O0ehDix+MTqbtT0T9t+7zzOvc= @@ -996,13 +990,13 @@ github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= +github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= -github.com/spf13/cobra v1.1.3 h1:xghbfqPkxzxP3C/f3n5DdpAbdKLj4ZE4BWQI362l53M= github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw= github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= @@ -1017,7 +1011,6 @@ github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DM github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.8.0 h1:QRwDgoG8xX+kp69di68D+YYTCWfYEckbZRfUlEIAal0= github.com/spf13/viper v1.8.0/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/spf13/viper v1.8.1 h1:Kq1fyeebqsBfbjZj4EL7gj2IO0mMaiyjYUWcUsl2O44= github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= @@ -1066,10 +1059,9 @@ github.com/tendermint/tendermint v0.34.0-rc6/go.mod h1:ugzyZO5foutZImv0Iyx/gOFCX github.com/tendermint/tendermint v0.34.0/go.mod h1:Aj3PIipBFSNO21r+Lq3TtzQ+uKESxkbA3yo/INM4QwQ= github.com/tendermint/tendermint v0.34.10/go.mod h1:aeHL7alPh4uTBIJQ8mgFEE8VwJLXI1VD3rVOmH2Mcy0= github.com/tendermint/tendermint v0.34.11/go.mod h1:aeHL7alPh4uTBIJQ8mgFEE8VwJLXI1VD3rVOmH2Mcy0= -github.com/tendermint/tendermint v0.34.12 h1:m+kUYNhONedhJfHmHG8lqsdZvbR5t6vmhaok1yXjpKg= -github.com/tendermint/tendermint v0.34.12/go.mod h1:aeHL7alPh4uTBIJQ8mgFEE8VwJLXI1VD3rVOmH2Mcy0= -github.com/tendermint/tendermint v0.34.13 h1:fu+tsHudbOr5PvepjH0q47Jae59hQAvn3IqAHv2EbC8= github.com/tendermint/tendermint v0.34.13/go.mod h1:6RVVRBqwtKhA+H59APKumO+B7Nye4QXSFc6+TYxAxCI= +github.com/tendermint/tendermint v0.34.14 h1:GCXmlS8Bqd2Ix3TQCpwYLUNHe+Y+QyJsm5YE+S/FkPo= +github.com/tendermint/tendermint v0.34.14/go.mod h1:FrwVm3TvsVicI9Z7FlucHV6Znfd5KBc/Lpp69cCwtk0= github.com/tendermint/tm-db v0.6.2/go.mod h1:GYtQ67SUvATOcoY8/+x6ylk8Qo02BQyLrAs+yAcLvGI= github.com/tendermint/tm-db v0.6.3/go.mod h1:lfA1dL9/Y/Y8wwyPp2NMLyn5P5Ptr/gvDFNWtrCWSf8= github.com/tendermint/tm-db v0.6.4 h1:3N2jlnYQkXNQclQwd/eKV/NzlqPlfK21cpRRIx80XXQ= @@ -1193,7 +1185,6 @@ golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201117144127-c1f2f97bffc9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad h1:DN0cp81fZ3njFcrLCytUHRSUkqBjfTo4Tx9RJTWs0EY= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a h1:kr2P4QFmQr29mSLA43kwrOcgcReGTfbE9N577tCTuBc= golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= @@ -1289,7 +1280,6 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5 h1:wjuX4b5yYQnEQHzd+CBcrcC6OVR2J1CN6mUy0oSxIPo= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210903162142-ad29c8ab022f h1:w6wWR0H+nyVpbSAQbzVEIACVyr/h8l/BEkY6Sokc7Eg= golang.org/x/net v0.0.0-20210903162142-ad29c8ab022f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -1396,7 +1386,6 @@ golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40 h1:JWgyZ1qgdTaF3N3oxC+MdTV7qvEEgHo3otj+HB5CM7Q= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1417,8 +1406,8 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1 h1:NusfzzA6yGQ+ua51ck7E3omNUX/JuqbFSaRGqU8CcLI= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1624,7 +1613,6 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.25.1-0.20200805231151-a709e31e5d12/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=