From f1f3a3c16acc5cd883d12d897e281854617f29ab Mon Sep 17 00:00:00 2001 From: Pratik Date: Tue, 7 Feb 2023 05:34:50 +0530 Subject: [PATCH 01/12] upgrade code for increasing consenus version of lend module & rewards module --- app/app.go | 10 +- app/upgrades/testnet/v8_0_0/constants.go | 15 +++ app/upgrades/testnet/v8_0_0/upgrades.go | 20 ++++ x/lend/keeper/migrate.go | 123 +++++++++++++++++++++++ x/lend/module.go | 9 +- x/rewards/keeper/migrate.go | 54 ++++++++++ x/rewards/module.go | 8 +- 7 files changed, 234 insertions(+), 5 deletions(-) create mode 100644 app/upgrades/testnet/v8_0_0/constants.go create mode 100644 app/upgrades/testnet/v8_0_0/upgrades.go create mode 100644 x/lend/keeper/migrate.go create mode 100644 x/rewards/keeper/migrate.go diff --git a/app/app.go b/app/app.go index d14e4ad48..166871929 100644 --- a/app/app.go +++ b/app/app.go @@ -169,6 +169,7 @@ import ( mv6 "github.com/comdex-official/comdex/app/upgrades/mainnet/v6" mv7 "github.com/comdex-official/comdex/app/upgrades/mainnet/v7" mv8 "github.com/comdex-official/comdex/app/upgrades/mainnet/v8" + tv8 "github.com/comdex-official/comdex/app/upgrades/testnet/v8_0_0" ) const ( @@ -1211,8 +1212,8 @@ func (a *App) ModuleAccountsPermissions() map[string][]string { func (a *App) registerUpgradeHandlers() { a.UpgradeKeeper.SetUpgradeHandler( - mv8.UpgradeName811, - mv8.CreateUpgradeHandler811(a.mm, a.configurator, a.AssetKeeper, a.LendKeeper, a.AuctionKeeper), + tv8.UpgradeName820Beta, + tv8.CreateUpgradeHandlerV820Beta(a.mm, a.configurator), ) // When a planned update height is reached, the old binary will panic // writing on disk the height and name of the update that triggered it @@ -1271,9 +1272,12 @@ func upgradeHandlers(upgradeInfo storetypes.UpgradeInfo, a *App, storeUpgrades * case upgradeInfo.Name == mv8.UpgradeName810 && !a.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height): storeUpgrades = &storetypes.StoreUpgrades{} - + case upgradeInfo.Name == mv8.UpgradeName811 && !a.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height): storeUpgrades = &storetypes.StoreUpgrades{} + + case upgradeInfo.Name == tv8.UpgradeName820Beta && !a.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height): + storeUpgrades = &storetypes.StoreUpgrades{} } return storeUpgrades diff --git a/app/upgrades/testnet/v8_0_0/constants.go b/app/upgrades/testnet/v8_0_0/constants.go new file mode 100644 index 000000000..01c05e63c --- /dev/null +++ b/app/upgrades/testnet/v8_0_0/constants.go @@ -0,0 +1,15 @@ +package v8_0_0 //nolint:revive,stylecheck + +const ( + UpgradeName820Beta = "v8.2.0.beta" + UpgradeHeight = "" + UpgradeInfo = `'{ + "binaries": { + "darwin/arm64":"", + "darwin/x86_64":"", + "linux/arm64":"", + "linux/x86_64":"", + "windows/x86_64":"" + } + }'` +) diff --git a/app/upgrades/testnet/v8_0_0/upgrades.go b/app/upgrades/testnet/v8_0_0/upgrades.go new file mode 100644 index 000000000..f0f836d64 --- /dev/null +++ b/app/upgrades/testnet/v8_0_0/upgrades.go @@ -0,0 +1,20 @@ +package v8_0_0 //nolint:revive,stylecheck + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" +) + +func CreateUpgradeHandlerV820Beta( + mm *module.Manager, + configurator module.Configurator, +) upgradetypes.UpgradeHandler { + return func(ctx sdk.Context, _ upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) { + vm, err := mm.RunMigrations(ctx, configurator, fromVM) + if err != nil { + return nil, err + } + return vm, err + } +} diff --git a/x/lend/keeper/migrate.go b/x/lend/keeper/migrate.go new file mode 100644 index 000000000..ac4eccdb8 --- /dev/null +++ b/x/lend/keeper/migrate.go @@ -0,0 +1,123 @@ +package keeper + +import ( + "github.com/comdex-official/comdex/x/lend/types" + "github.com/cosmos/cosmos-sdk/codec" + storetypes "github.com/cosmos/cosmos-sdk/store/types" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +type Migrator struct { + keeper Keeper +} + +// NewMigrator returns a new Migrator. +func NewMigrator(keeper Keeper) Migrator { + return Migrator{keeper: keeper} +} + +// Migrate1to2 migrates from version 1 to 2. +func (m Migrator) Migrate1to2(ctx sdk.Context) error { + return MigrateStore(ctx, m.keeper.storeKey, m.keeper.cdc) +} + +func MigrateStore(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.BinaryCodec) error { + // Migrate these 3 for their store: (export fix) + // FundModBal + // FundReserveBal + // TotalReserveStatsByAssetID + + store := ctx.KVStore(storeKey) + err := MigrateModBal(store, cdc) + if err != nil { + return err + } + + err = MigrateResBal(store, cdc) + if err != nil { + return err + } + + err = MigrateResStats(store, cdc) + if err != nil { + return err + } + + return err +} + +func MigrateModBal(store sdk.KVStore, cdc codec.BinaryCodec) error { + key := types.KeyFundModBal + value := store.Get(key) + var modBal types.ModBal + cdc.MustUnmarshal(value, &modBal) + + store.Delete(key) + SetModBal(store, cdc, modBal) + + return nil +} + +func SetModBal(store sdk.KVStore, cdc codec.BinaryCodec, modBal types.ModBal) { + var ( + key = types.KeyFundModBal + value = cdc.MustMarshal(&modBal) + ) + + store.Set(key, value) +} + +func MigrateResBal(store sdk.KVStore, cdc codec.BinaryCodec) error { + key := types.KeyFundReserveBal + value := store.Get(key) + var resBal types.ReserveBal + cdc.MustUnmarshal(value, &resBal) + + store.Delete(key) + SetResBal(store, cdc, resBal) + + return nil +} + +func SetResBal(store sdk.KVStore, cdc codec.BinaryCodec, resBal types.ReserveBal) { + var ( + key = types.KeyFundReserveBal + value = cdc.MustMarshal(&resBal) + ) + + store.Set(key, value) +} + +func MigrateResStats(store sdk.KVStore, cdc codec.BinaryCodec) error { + key1 := types.AllReserveStatsKey(1) + value1 := store.Get(key1) + var allReserveStats1 types.AllReserveStats + cdc.MustUnmarshal(value1, &allReserveStats1) + store.Delete(key1) + SetResStats(store, cdc, allReserveStats1) + + key2 := types.AllReserveStatsKey(2) + value2 := store.Get(key2) + var allReserveStats2 types.AllReserveStats + cdc.MustUnmarshal(value2, &allReserveStats2) + store.Delete(key2) + SetResStats(store, cdc, allReserveStats2) + + key3 := types.AllReserveStatsKey(3) + value3 := store.Get(key3) + var allReserveStats3 types.AllReserveStats + cdc.MustUnmarshal(value3, &allReserveStats3) + store.Delete(key3) + SetResStats(store, cdc, allReserveStats3) + + return nil +} + +func SetResStats(store sdk.KVStore, cdc codec.BinaryCodec, allReserveStats types.AllReserveStats) { + var ( + key = types.AllReserveStatsKey(allReserveStats.AssetID) + value = cdc.MustMarshal(&allReserveStats) + ) + + store.Set(key, value) +} diff --git a/x/lend/module.go b/x/lend/module.go index 951183a16..5c9eed2ce 100644 --- a/x/lend/module.go +++ b/x/lend/module.go @@ -139,6 +139,13 @@ func (am AppModule) LegacyQuerierHandler(legacyQuerierCdc *codec.LegacyAmino) sd // RegisterServices registers a GRPC query service to respond to the // module-specific GRPC queries. func (am AppModule) RegisterServices(cfg module.Configurator) { + migrator := keeper.NewMigrator(am.keeper) + + // register v1 -> v2 migration + if err := cfg.RegisterMigration(types.ModuleName, 1, migrator.Migrate1to2); err != nil { + panic(fmt.Errorf("failed to migrate %s to v2: %w", types.ModuleName, err)) + } + types.RegisterQueryServer(cfg.QueryServer(), keeper.NewQueryServer(am.keeper)) } @@ -164,7 +171,7 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw } // ConsensusVersion implements ConsensusVersion. -func (AppModule) ConsensusVersion() uint64 { return 1 } +func (AppModule) ConsensusVersion() uint64 { return 2 } // BeginBlock executes all ABCI BeginBlock logic respective to the capability module. func (am AppModule) BeginBlock(ctx sdk.Context, req abci.RequestBeginBlock) {} diff --git a/x/rewards/keeper/migrate.go b/x/rewards/keeper/migrate.go new file mode 100644 index 000000000..723f88077 --- /dev/null +++ b/x/rewards/keeper/migrate.go @@ -0,0 +1,54 @@ +package keeper + +import ( + "github.com/comdex-official/comdex/x/rewards/types" + "github.com/cosmos/cosmos-sdk/codec" + storetypes "github.com/cosmos/cosmos-sdk/store/types" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +type Migrator struct { + keeper Keeper +} + +// NewMigrator returns a new Migrator. +func NewMigrator(keeper Keeper) Migrator { + return Migrator{keeper: keeper} +} + +// Migrate2to3 migrates from version 2 to 3. +func (m Migrator) Migrate2to3(ctx sdk.Context) error { + return MigrateStore(ctx, m.keeper.storeKey, m.keeper.cdc) +} + +func MigrateStore(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.BinaryCodec) error { + // Migrate these 3 for their store: (export fix) + // FundModBal + + store := ctx.KVStore(storeKey) + err := MigrateExternalRewardLends(store, cdc) + if err != nil { + return err + } + return err +} +func MigrateExternalRewardLends(store sdk.KVStore, cdc codec.BinaryCodec) error { + key := types.ExternalRewardsLendMappingKey(3) + value := store.Get(key) + var extRew types.LendExternalRewards + cdc.MustUnmarshal(value, &extRew) + + store.Delete(key) + SetExternalRewardLends(store, cdc, extRew) + + return nil +} + +func SetExternalRewardLends(store sdk.KVStore, cdc codec.BinaryCodec, extRew types.LendExternalRewards) { + var ( + key = types.ExternalRewardsLendMappingKey(extRew.AppMappingId) + value = cdc.MustMarshal(&extRew) + ) + + store.Set(key, value) +} diff --git a/x/rewards/module.go b/x/rewards/module.go index b92242426..3018cd60f 100644 --- a/x/rewards/module.go +++ b/x/rewards/module.go @@ -137,6 +137,12 @@ func (am AppModule) LegacyQuerierHandler(legacyQuerierCdc *codec.LegacyAmino) sd // RegisterServices registers a GRPC query service to respond to the // module-specific GRPC queries. func (am AppModule) RegisterServices(cfg module.Configurator) { + migrator := keeper.NewMigrator(am.keeper) + + // register v2 -> v3 migration + if err := cfg.RegisterMigration(types.ModuleName, 2, migrator.Migrate2to3); err != nil { + panic(fmt.Errorf("failed to migrate %s to v3: %w", types.ModuleName, err)) + } types.RegisterMsgServer(cfg.MsgServer(), keeper.NewMsgServerImpl(am.keeper)) types.RegisterQueryServer(cfg.QueryServer(), &am.keeper) } @@ -163,7 +169,7 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw } // ConsensusVersion implements ConsensusVersion. -func (AppModule) ConsensusVersion() uint64 { return 2 } +func (AppModule) ConsensusVersion() uint64 { return 3 } // BeginBlock executes all ABCI BeginBlock logic respective to the capability module. func (am AppModule) BeginBlock(ctx sdk.Context, request abci.RequestBeginBlock) { From dda8ace69710fbe75658f8d33d08cf5e7afa0fd5 Mon Sep 17 00:00:00 2001 From: Chandragupta Singh Date: Thu, 9 Feb 2023 02:43:15 +0530 Subject: [PATCH 02/12] stability fee correction tx cmd removed --- proto/comdex/vault/v1beta1/tx.proto | 7 - x/vault/client/cli/tx.go | 27 -- x/vault/expected/keeper.go | 3 - x/vault/handler.go | 3 - x/vault/keeper/msg_server.go | 56 ---- x/vault/types/codec.go | 2 - x/vault/types/keys.go | 1 - x/vault/types/msg.go | 42 --- x/vault/types/tx.pb.go | 436 ++++------------------------ 9 files changed, 57 insertions(+), 520 deletions(-) diff --git a/proto/comdex/vault/v1beta1/tx.proto b/proto/comdex/vault/v1beta1/tx.proto index 4aab8af47..c9cdca40f 100644 --- a/proto/comdex/vault/v1beta1/tx.proto +++ b/proto/comdex/vault/v1beta1/tx.proto @@ -189,12 +189,6 @@ message MsgVaultInterestCalcRequest { } message MsgVaultInterestCalcResponse{} -// need to remove later -message MsgCorrectStabilityFeesRequest { - string from = 1 [ (gogoproto.moretags) = "yaml:\"from\"" ]; -} - -message MsgCorrectStabilityFeesResponse{} service Msg { rpc MsgCreate(MsgCreateRequest) returns (MsgCreateResponse); @@ -208,5 +202,4 @@ service Msg { rpc MsgDepositStableMint(MsgDepositStableMintRequest) returns (MsgDepositStableMintResponse); rpc MsgWithdrawStableMint(MsgWithdrawStableMintRequest) returns (MsgWithdrawStableMintResponse); rpc MsgVaultInterestCalc(MsgVaultInterestCalcRequest) returns (MsgVaultInterestCalcResponse); - rpc MsgCorrectStabilityFees(MsgCorrectStabilityFeesRequest) returns (MsgCorrectStabilityFeesResponse); // need to remove later } diff --git a/x/vault/client/cli/tx.go b/x/vault/client/cli/tx.go index 51d8bb55b..f71f0c89a 100644 --- a/x/vault/client/cli/tx.go +++ b/x/vault/client/cli/tx.go @@ -36,7 +36,6 @@ func GetTxCmd() *cobra.Command { DepositStableMint(), WithdrawStableMint(), CalculateInterest(), - CorrectStabilityFees(), ) return cmd @@ -501,29 +500,3 @@ func CalculateInterest() *cobra.Command { flags.AddTxFlagsToCmd(cmd) return cmd } - -// need to remove later -func CorrectStabilityFees() *cobra.Command { - cmd := &cobra.Command{ - Use: "correct-fees", - Short: "correct stability fees", - Args: cobra.ExactArgs(0), - RunE: func(cmd *cobra.Command, args []string) error { - ctx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgCorrectStabilityFeesRequest(ctx.FromAddress) - - if err := msg.ValidateBasic(); err != nil { - return err - } - - return tx.GenerateOrBroadcastTxCLI(ctx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - return cmd -} \ No newline at end of file diff --git a/x/vault/expected/keeper.go b/x/vault/expected/keeper.go index 29e12cd6a..b0ba1b0d8 100644 --- a/x/vault/expected/keeper.go +++ b/x/vault/expected/keeper.go @@ -3,7 +3,6 @@ package expected import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/comdex-official/comdex/app/wasm/bindings" assettypes "github.com/comdex-official/comdex/x/asset/types" esmtypes "github.com/comdex-official/comdex/x/esm/types" rewardstypes "github.com/comdex-official/comdex/x/rewards/types" @@ -27,8 +26,6 @@ type AssetKeeper interface { GetPair(ctx sdk.Context, id uint64) (assettypes.Pair, bool) GetApp(ctx sdk.Context, id uint64) (assettypes.AppData, bool) GetPairsVault(ctx sdk.Context, pairID uint64) (assettypes.ExtendedPairVault, bool) - SetPairsVault(ctx sdk.Context, app assettypes.ExtendedPairVault) - WasmUpdatePairsVault(ctx sdk.Context, updatePairVault *bindings.MsgUpdatePairsVault) error } type MarketKeeper interface { diff --git a/x/vault/handler.go b/x/vault/handler.go index 19eb20f3d..9838f7164 100644 --- a/x/vault/handler.go +++ b/x/vault/handler.go @@ -48,9 +48,6 @@ func NewHandler(k keeper.Keeper) sdk.Handler { case *types.MsgVaultInterestCalcRequest: res, err := server.MsgVaultInterestCalc(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) - case *types.MsgCorrectStabilityFeesRequest: // need to remove later - res, err := server.MsgCorrectStabilityFees(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) default: return nil, errors.Wrapf(types.ErrorUnknownMsgType, "%T", msg) } diff --git a/x/vault/keeper/msg_server.go b/x/vault/keeper/msg_server.go index 775927a38..bdefa6d30 100644 --- a/x/vault/keeper/msg_server.go +++ b/x/vault/keeper/msg_server.go @@ -2,12 +2,10 @@ package keeper import ( "context" - "fmt" "strconv" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/comdex-official/comdex/app/wasm/bindings" collectortypes "github.com/comdex-official/comdex/x/collector/types" esmtypes "github.com/comdex-official/comdex/x/esm/types" rewardstypes "github.com/comdex-official/comdex/x/rewards/types" @@ -1453,57 +1451,3 @@ func (k msgServer) MsgVaultInterestCalc(c context.Context, msg *types.MsgVaultIn return &types.MsgVaultInterestCalcResponse{}, nil } - -// need to remove later -func (k msgServer) MsgCorrectStabilityFees(c context.Context, msg *types.MsgCorrectStabilityFeesRequest) (*types.MsgCorrectStabilityFeesResponse, error) { - ctx := sdk.UnwrapSDKContext(c) - if msg.From == "comdex1ma05aft9x20xjx2jd4spms03rcuewk5r0elvx7" { - extPairs := []*bindings.MsgUpdatePairsVault{ - { - AppID: 2, ExtPairID: 2, StabilityFee: sdk.MustNewDecFromStr("0.01"), ClosingFee: sdk.ZeroDec(), LiquidationPenalty: sdk.MustNewDecFromStr("0.15"), - DrawDownFee: sdk.MustNewDecFromStr("0.005"), IsVaultActive: true, DebtCeiling: sdk.NewInt(250000000000), DebtFloor: sdk.NewInt(50000000), MinCr: sdk.MustNewDecFromStr("1.4"), - MinUsdValueLeft: 100000, - }, - { - AppID: 2, ExtPairID: 3, StabilityFee: sdk.MustNewDecFromStr("0.005"), ClosingFee: sdk.ZeroDec(), LiquidationPenalty: sdk.MustNewDecFromStr("0.15"), - DrawDownFee: sdk.MustNewDecFromStr("0.005"), IsVaultActive: true, DebtCeiling: sdk.NewInt(350000000000), DebtFloor: sdk.NewInt(50000000), MinCr: sdk.MustNewDecFromStr("1.7"), - MinUsdValueLeft: 100000, - }, - { - AppID: 2, ExtPairID: 4, StabilityFee: sdk.MustNewDecFromStr("0.0025"), ClosingFee: sdk.ZeroDec(), LiquidationPenalty: sdk.MustNewDecFromStr("0.15"), - DrawDownFee: sdk.MustNewDecFromStr("0.005"), IsVaultActive: true, DebtCeiling: sdk.NewInt(400000000000), DebtFloor: sdk.NewInt(50000000), MinCr: sdk.MustNewDecFromStr("2"), - MinUsdValueLeft: 100000, - }, - { - AppID: 2, ExtPairID: 5, StabilityFee: sdk.MustNewDecFromStr("0.01"), ClosingFee: sdk.ZeroDec(), LiquidationPenalty: sdk.MustNewDecFromStr("0.15"), - DrawDownFee: sdk.MustNewDecFromStr("0.005"), IsVaultActive: true, DebtCeiling: sdk.NewInt(250000000000), DebtFloor: sdk.NewInt(50000000), MinCr: sdk.MustNewDecFromStr("1.5"), - MinUsdValueLeft: 100000, - }, - { - AppID: 2, ExtPairID: 6, StabilityFee: sdk.MustNewDecFromStr("0.005"), ClosingFee: sdk.ZeroDec(), LiquidationPenalty: sdk.MustNewDecFromStr("0.15"), - DrawDownFee: sdk.MustNewDecFromStr("0.005"), IsVaultActive: true, DebtCeiling: sdk.NewInt(350000000000), DebtFloor: sdk.NewInt(50000000), MinCr: sdk.MustNewDecFromStr("1.8"), - MinUsdValueLeft: 100000, - }, - { - AppID: 2, ExtPairID: 7, StabilityFee: sdk.MustNewDecFromStr("0.0025"), ClosingFee: sdk.ZeroDec(), LiquidationPenalty: sdk.MustNewDecFromStr("0.15"), - DrawDownFee: sdk.MustNewDecFromStr("0.005"), IsVaultActive: true, DebtCeiling: sdk.NewInt(400000000000), DebtFloor: sdk.NewInt(50000000), MinCr: sdk.MustNewDecFromStr("2.1"), - MinUsdValueLeft: 100000, - }, - } - for _, extPair := range extPairs { - err := k.asset.WasmUpdatePairsVault(ctx, extPair) - if err != nil { - fmt.Println("err in updating extended pair ", extPair.ExtPairID) - } - } - stAtomPair, found := k.asset.GetPairsVault(ctx, 11) - if found { - stAtomPair.PairId = 9 - k.asset.SetPairsVault(ctx, stAtomPair) - } - } else { - return &types.MsgCorrectStabilityFeesResponse{}, types.ErrorInvalidFrom - } - - return &types.MsgCorrectStabilityFeesResponse{}, nil -} diff --git a/x/vault/types/codec.go b/x/vault/types/codec.go index 52a907a24..2375c26cb 100644 --- a/x/vault/types/codec.go +++ b/x/vault/types/codec.go @@ -21,7 +21,6 @@ func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&MsgDepositStableMintRequest{}, "comdex/vault/MsgDepositStableMintRequest", nil) cdc.RegisterConcrete(&MsgWithdrawStableMintRequest{}, "comdex/vault/MsgWithdrawStableMintRequest", nil) cdc.RegisterConcrete(&MsgVaultInterestCalcRequest{}, "comdex/vault/MsgVaultInterestCalcRequest", nil) - cdc.RegisterConcrete(&MsgCorrectStabilityFeesRequest{}, "comdex/vault/MsgCorrectStabilityFeesRequest", nil) // need to remove later } func RegisterInterfaces(registry codectypes.InterfaceRegistry) { @@ -38,7 +37,6 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) { &MsgDepositStableMintRequest{}, &MsgWithdrawStableMintRequest{}, &MsgVaultInterestCalcRequest{}, - &MsgCorrectStabilityFeesRequest{}, // need to remove later ) msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) diff --git a/x/vault/types/keys.go b/x/vault/types/keys.go index f82e1fed6..fcc9090f8 100644 --- a/x/vault/types/keys.go +++ b/x/vault/types/keys.go @@ -23,7 +23,6 @@ var ( TypeMsgDepositStableMintRequest = ModuleName + ":deposit_stablemint" TypeMsgWithdrawStableMintRequest = ModuleName + ":withdraw_stablemint" TypeMsgVaultInterestCalcRequest = ModuleName + ":calculate_interest" - TypeMsgCorrectStabilityFeesRequest = ModuleName + ":correct-fees" // need to remove later ) var ( diff --git a/x/vault/types/msg.go b/x/vault/types/msg.go index 32ff1d0e7..8709aa9c4 100644 --- a/x/vault/types/msg.go +++ b/x/vault/types/msg.go @@ -16,7 +16,6 @@ var ( _ sdk.Msg = (*MsgDepositStableMintRequest)(nil) _ sdk.Msg = (*MsgWithdrawStableMintRequest)(nil) _ sdk.Msg = (*MsgVaultInterestCalcRequest)(nil) - _ sdk.Msg = (*MsgCorrectStabilityFeesRequest)(nil) ) func NewMsgCreateRequest( @@ -617,44 +616,3 @@ func (m *MsgVaultInterestCalcRequest) GetSigners() []sdk.AccAddress { return []sdk.AccAddress{from} } - -// need to remove later -func NewMsgCorrectStabilityFeesRequest( - from sdk.AccAddress, -) *MsgCorrectStabilityFeesRequest { - return &MsgCorrectStabilityFeesRequest{ - From: from.String(), - } -} - -func (m *MsgCorrectStabilityFeesRequest) Route() string { - return RouterKey -} - -func (m *MsgCorrectStabilityFeesRequest) Type() string { - return TypeMsgCorrectStabilityFeesRequest -} - -func (m *MsgCorrectStabilityFeesRequest) ValidateBasic() error { - if m.From == "" { - return errors.Wrap(ErrorInvalidFrom, "from cannot be empty") - } - if _, err := sdk.AccAddressFromBech32(m.From); err != nil { - return errors.Wrapf(ErrorInvalidFrom, "%s", err) - } - - return nil -} - -func (m *MsgCorrectStabilityFeesRequest) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(m)) -} - -func (m *MsgCorrectStabilityFeesRequest) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(m.From) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{from} -} diff --git a/x/vault/types/tx.pb.go b/x/vault/types/tx.pb.go index cb5f1112c..846478ccc 100644 --- a/x/vault/types/tx.pb.go +++ b/x/vault/types/tx.pb.go @@ -872,80 +872,6 @@ func (m *MsgVaultInterestCalcResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgVaultInterestCalcResponse proto.InternalMessageInfo -// need to remove later -type MsgCorrectStabilityFeesRequest struct { - From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty" yaml:"from"` -} - -func (m *MsgCorrectStabilityFeesRequest) Reset() { *m = MsgCorrectStabilityFeesRequest{} } -func (m *MsgCorrectStabilityFeesRequest) String() string { return proto.CompactTextString(m) } -func (*MsgCorrectStabilityFeesRequest) ProtoMessage() {} -func (*MsgCorrectStabilityFeesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_4b7a3c3b9b1a607e, []int{22} -} -func (m *MsgCorrectStabilityFeesRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgCorrectStabilityFeesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgCorrectStabilityFeesRequest.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 *MsgCorrectStabilityFeesRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgCorrectStabilityFeesRequest.Merge(m, src) -} -func (m *MsgCorrectStabilityFeesRequest) XXX_Size() int { - return m.Size() -} -func (m *MsgCorrectStabilityFeesRequest) XXX_DiscardUnknown() { - xxx_messageInfo_MsgCorrectStabilityFeesRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgCorrectStabilityFeesRequest proto.InternalMessageInfo - -type MsgCorrectStabilityFeesResponse struct { -} - -func (m *MsgCorrectStabilityFeesResponse) Reset() { *m = MsgCorrectStabilityFeesResponse{} } -func (m *MsgCorrectStabilityFeesResponse) String() string { return proto.CompactTextString(m) } -func (*MsgCorrectStabilityFeesResponse) ProtoMessage() {} -func (*MsgCorrectStabilityFeesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_4b7a3c3b9b1a607e, []int{23} -} -func (m *MsgCorrectStabilityFeesResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgCorrectStabilityFeesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgCorrectStabilityFeesResponse.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 *MsgCorrectStabilityFeesResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgCorrectStabilityFeesResponse.Merge(m, src) -} -func (m *MsgCorrectStabilityFeesResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgCorrectStabilityFeesResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgCorrectStabilityFeesResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgCorrectStabilityFeesResponse proto.InternalMessageInfo - func init() { proto.RegisterType((*MsgCreateRequest)(nil), "comdex.vault.v1beta1.MsgCreateRequest") proto.RegisterType((*MsgCreateResponse)(nil), "comdex.vault.v1beta1.MsgCreateResponse") @@ -969,73 +895,68 @@ func init() { proto.RegisterType((*MsgWithdrawStableMintResponse)(nil), "comdex.vault.v1beta1.MsgWithdrawStableMintResponse") proto.RegisterType((*MsgVaultInterestCalcRequest)(nil), "comdex.vault.v1beta1.MsgVaultInterestCalcRequest") proto.RegisterType((*MsgVaultInterestCalcResponse)(nil), "comdex.vault.v1beta1.MsgVaultInterestCalcResponse") - proto.RegisterType((*MsgCorrectStabilityFeesRequest)(nil), "comdex.vault.v1beta1.MsgCorrectStabilityFeesRequest") - proto.RegisterType((*MsgCorrectStabilityFeesResponse)(nil), "comdex.vault.v1beta1.MsgCorrectStabilityFeesResponse") } func init() { proto.RegisterFile("comdex/vault/v1beta1/tx.proto", fileDescriptor_4b7a3c3b9b1a607e) } var fileDescriptor_4b7a3c3b9b1a607e = []byte{ - // 943 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x98, 0x4f, 0x6f, 0xe3, 0x44, - 0x14, 0xc0, 0x63, 0x37, 0x2d, 0xdb, 0x57, 0x95, 0x6e, 0xa7, 0xd9, 0x25, 0x78, 0xa9, 0xbd, 0x6b, - 0xa0, 0x94, 0xc3, 0xda, 0xb4, 0x0b, 0x17, 0x84, 0x84, 0x36, 0x05, 0xa4, 0x1c, 0x2a, 0xc0, 0x48, - 0x5d, 0x81, 0x90, 0x22, 0x27, 0x9e, 0x66, 0x2d, 0x12, 0x8f, 0xb1, 0xc7, 0x4b, 0x83, 0x84, 0xc4, - 0x89, 0x33, 0x1f, 0x80, 0x0f, 0x80, 0x38, 0xf2, 0x29, 0x7a, 0x82, 0x85, 0xd3, 0x8a, 0x83, 0xc5, - 0xa6, 0xdf, 0x20, 0x07, 0x8e, 0x08, 0x79, 0x3c, 0x69, 0xec, 0xc4, 0x8e, 0xd7, 0x22, 0x7b, 0x58, - 0x6d, 0x4e, 0x49, 0xde, 0xbc, 0x7f, 0xfe, 0xbd, 0xf1, 0x9b, 0x37, 0x81, 0xdd, 0x0e, 0xe9, 0x5b, - 0xf8, 0x4c, 0x7f, 0x60, 0x06, 0x3d, 0xaa, 0x3f, 0x38, 0x68, 0x63, 0x6a, 0x1e, 0xe8, 0xf4, 0x4c, - 0x73, 0x3d, 0x42, 0x09, 0xaa, 0xc5, 0xcb, 0x1a, 0x5b, 0xd6, 0xf8, 0xb2, 0x54, 0xeb, 0x92, 0x2e, - 0x61, 0x0a, 0x7a, 0xf4, 0x2d, 0xd6, 0x55, 0xff, 0x15, 0xe1, 0xea, 0xb1, 0xdf, 0x3d, 0xf2, 0xb0, - 0x49, 0xb1, 0x81, 0xbf, 0x0e, 0xb0, 0x4f, 0xd1, 0xab, 0x50, 0x3d, 0xf5, 0x48, 0xbf, 0x2e, 0xdc, - 0x14, 0xf6, 0xd7, 0x1b, 0x5b, 0xa3, 0x50, 0xd9, 0x18, 0x98, 0xfd, 0xde, 0xbb, 0x6a, 0x24, 0x55, - 0x0d, 0xb6, 0x88, 0xf6, 0x61, 0xcd, 0x74, 0xdd, 0x96, 0x6d, 0xd5, 0xc5, 0x9b, 0xc2, 0x7e, 0xb5, - 0xb1, 0x3d, 0x0a, 0x95, 0xcd, 0x58, 0x2d, 0x96, 0xab, 0xc6, 0xaa, 0xe9, 0xba, 0x4d, 0x0b, 0x9d, - 0xc0, 0x75, 0x7c, 0x46, 0xb1, 0x63, 0x61, 0xab, 0xe5, 0x9a, 0xb6, 0xd7, 0x62, 0x89, 0x45, 0x96, - 0x2b, 0xcc, 0xf2, 0xd6, 0x28, 0x54, 0x76, 0x63, 0xcb, 0x6c, 0x3d, 0xd5, 0xd8, 0x19, 0x2f, 0x7c, - 0x62, 0xda, 0xde, 0x49, 0x24, 0x6e, 0x5a, 0xa8, 0x05, 0xeb, 0x66, 0x9f, 0x04, 0x0e, 0x6d, 0xd9, - 0x4e, 0xbd, 0xca, 0x72, 0x6d, 0x9c, 0x87, 0x4a, 0xe5, 0xaf, 0x50, 0xd9, 0xeb, 0xda, 0xf4, 0x7e, - 0xd0, 0xd6, 0x3a, 0xa4, 0xaf, 0x77, 0x88, 0xdf, 0x27, 0x3e, 0xff, 0xb8, 0xed, 0x5b, 0x5f, 0xe9, - 0x74, 0xe0, 0x62, 0x5f, 0x6b, 0x3a, 0x74, 0x14, 0x2a, 0x57, 0x79, 0xca, 0x63, 0x47, 0xaa, 0x71, - 0x25, 0xfe, 0xde, 0x74, 0x50, 0x1b, 0x80, 0xcb, 0x49, 0x40, 0xeb, 0xab, 0x2c, 0xc2, 0x51, 0xe9, - 0x08, 0xdb, 0xa9, 0x08, 0x24, 0xa0, 0xaa, 0xc1, 0xf3, 0xfe, 0x38, 0xa0, 0xea, 0x0e, 0x6c, 0x27, - 0xf8, 0xfb, 0x2e, 0x71, 0x7c, 0xac, 0xfe, 0x21, 0x32, 0xe9, 0x07, 0xd8, 0x25, 0xbe, 0x4d, 0x9f, - 0xb1, 0xb2, 0xbc, 0x07, 0x9b, 0x81, 0x8f, 0x13, 0xee, 0xaa, 0xcc, 0x5d, 0x7d, 0x14, 0x2a, 0xb5, - 0xd8, 0x5d, 0x6a, 0x59, 0x35, 0x36, 0xa2, 0xdf, 0x63, 0xeb, 0x7b, 0xb0, 0x16, 0xc3, 0xe1, 0xbc, - 0xdf, 0x2f, 0xcd, 0x7b, 0x33, 0xc9, 0x5b, 0x35, 0xb8, 0x3b, 0xb5, 0x06, 0x28, 0x89, 0x94, 0x93, - 0xfe, 0x53, 0x64, 0xe2, 0x7b, 0x36, 0xbd, 0x6f, 0x79, 0xe6, 0x37, 0x4b, 0xd4, 0x8b, 0x40, 0x7d, - 0x0d, 0x76, 0x52, 0x4c, 0x39, 0xeb, 0xdf, 0x44, 0x78, 0x31, 0x2a, 0xc1, 0x92, 0xf3, 0x82, 0x38, - 0x6f, 0xc3, 0xd6, 0x25, 0x4f, 0xce, 0xf8, 0x77, 0x91, 0xc9, 0x0c, 0xec, 0x9a, 0x83, 0x25, 0xe4, - 0x45, 0x40, 0x46, 0xec, 0x80, 0xe4, 0x40, 0x39, 0xe5, 0x7f, 0x04, 0x46, 0xf9, 0xa8, 0x47, 0x7c, - 0xfc, 0x3c, 0x51, 0xe6, 0x30, 0xf8, 0x73, 0x73, 0x18, 0x8f, 0x44, 0xa8, 0x4f, 0x3a, 0xeb, 0x5d, - 0xc7, 0x5a, 0xbe, 0xe0, 0x8b, 0xda, 0x7b, 0x37, 0xe0, 0xe5, 0x0c, 0xb2, 0x9c, 0xfb, 0x4f, 0x22, - 0x48, 0x97, 0xa3, 0xc3, 0x67, 0xd4, 0x6c, 0xf7, 0xf0, 0xb1, 0xed, 0x3c, 0x6b, 0xd3, 0xc2, 0x84, - 0x5d, 0xf5, 0xff, 0xb1, 0xbb, 0x3b, 0xc5, 0x6e, 0x17, 0x6e, 0x64, 0xd2, 0xe1, 0xf4, 0x1e, 0x8b, - 0x6c, 0x9d, 0xb3, 0x5d, 0xe2, 0x9b, 0xda, 0x7a, 0xa8, 0x01, 0x5b, 0x3e, 0x83, 0x32, 0xc9, 0x74, - 0x95, 0x65, 0x2a, 0x8d, 0x42, 0xe5, 0x7a, 0x6c, 0x33, 0xa5, 0xa0, 0x1a, 0x9b, 0xb1, 0x64, 0xdc, - 0x2d, 0x64, 0x78, 0x25, 0x1b, 0x31, 0xaf, 0xc1, 0x50, 0x64, 0x0a, 0xe3, 0x41, 0x61, 0x59, 0x84, - 0xa7, 0x51, 0x04, 0x05, 0x76, 0x73, 0x18, 0xf3, 0x2a, 0xfc, 0x22, 0xb0, 0x37, 0x21, 0xd6, 0x77, - 0x28, 0xf6, 0xb0, 0x4f, 0x8f, 0xcc, 0x5e, 0xe7, 0x29, 0x15, 0x61, 0xa6, 0xd5, 0xae, 0x94, 0x39, - 0x80, 0xe2, 0x2d, 0x95, 0x91, 0x2b, 0x7f, 0x98, 0x0f, 0x41, 0x8e, 0xde, 0x7a, 0xe2, 0x79, 0xb8, - 0xc3, 0xb6, 0x9c, 0xdd, 0xb3, 0xe9, 0xe0, 0x23, 0x8c, 0xfd, 0x32, 0x8f, 0xa3, 0xde, 0x02, 0x25, - 0xd7, 0x4d, 0x1c, 0xe9, 0xf0, 0x57, 0x80, 0x95, 0x63, 0xbf, 0x8b, 0xbe, 0x84, 0xf5, 0xcb, 0x3e, - 0x83, 0xf6, 0xb4, 0xac, 0xbb, 0xb7, 0x36, 0x7d, 0xc3, 0x96, 0xde, 0x28, 0xd4, 0x8b, 0xa3, 0xa0, - 0x16, 0xc0, 0xe4, 0x15, 0x42, 0xf9, 0x66, 0xe9, 0xab, 0xa2, 0xb4, 0x5f, 0xac, 0xc8, 0x03, 0xb4, - 0x61, 0x23, 0xb1, 0x3d, 0x50, 0xbe, 0xe1, 0xd4, 0x15, 0x49, 0x7a, 0xf3, 0x09, 0x34, 0x79, 0x8c, - 0x13, 0x78, 0x81, 0xcf, 0xa9, 0xe8, 0xb5, 0xfc, 0xc4, 0x12, 0xbe, 0x5f, 0x2f, 0xd0, 0xe2, 0x7e, - 0x3f, 0x87, 0x2b, 0xe3, 0xd1, 0x0c, 0xe5, 0x9b, 0x24, 0x67, 0x61, 0x69, 0xaf, 0x48, 0x2d, 0xe5, - 0x9a, 0x0d, 0x3a, 0x73, 0x5c, 0x27, 0x07, 0xc0, 0x39, 0xae, 0x53, 0xf3, 0x12, 0xa2, 0xc9, 0xbb, - 0x3d, 0x3f, 0xd4, 0x91, 0x56, 0x54, 0xb0, 0xf4, 0x5c, 0x25, 0xe9, 0x4f, 0xac, 0xcf, 0xa3, 0x7e, - 0xcb, 0xee, 0x64, 0xd3, 0xc7, 0x21, 0x7a, 0xab, 0x60, 0x23, 0xce, 0xf4, 0x64, 0xe9, 0xa0, 0x84, - 0x05, 0x8f, 0xfd, 0x1d, 0xd4, 0xb2, 0xce, 0x01, 0x74, 0x50, 0xf4, 0x10, 0xb3, 0xd1, 0x0f, 0xcb, - 0x98, 0xf0, 0xf0, 0xdf, 0x0b, 0x70, 0x2d, 0xb3, 0x05, 0xa2, 0xc3, 0xc2, 0x3d, 0x3c, 0x9b, 0xc1, - 0x9d, 0x52, 0x36, 0x29, 0x02, 0x33, 0x6d, 0x6b, 0x0e, 0x81, 0xbc, 0x76, 0x3c, 0x87, 0x40, 0x6e, - 0x57, 0x44, 0x3f, 0x08, 0xf0, 0x52, 0x4e, 0x3f, 0x43, 0x6f, 0xe7, 0xd7, 0x33, 0xbf, 0x8b, 0x4a, - 0xef, 0x94, 0xb4, 0x8a, 0x13, 0x69, 0x7c, 0x7a, 0xfe, 0x58, 0xae, 0xfc, 0x3c, 0x94, 0x2b, 0xe7, - 0x43, 0x59, 0x78, 0x38, 0x94, 0x85, 0xbf, 0x87, 0xb2, 0xf0, 0xe3, 0x85, 0x5c, 0x79, 0x78, 0x21, - 0x57, 0x1e, 0x5d, 0xc8, 0x95, 0x2f, 0xf4, 0xd4, 0x99, 0x19, 0x85, 0xb8, 0x4d, 0x4e, 0x4f, 0xed, - 0x8e, 0x6d, 0xf6, 0xf8, 0x6f, 0x7d, 0xfc, 0xc7, 0x27, 0x3b, 0x40, 0xdb, 0x6b, 0xec, 0x8f, 0xcc, - 0x3b, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xe5, 0x2e, 0xc8, 0x4c, 0x15, 0x15, 0x00, 0x00, + // 891 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x98, 0xcf, 0x6e, 0xe2, 0x46, + 0x18, 0xc0, 0xb1, 0x43, 0xd2, 0x30, 0x11, 0x4d, 0x98, 0x90, 0x88, 0x3a, 0xc5, 0x4e, 0xdd, 0x36, + 0xa5, 0x87, 0xd8, 0x25, 0xb9, 0x55, 0x95, 0xaa, 0x40, 0x2f, 0x1c, 0xa2, 0xb6, 0xae, 0x94, 0xa8, + 0x55, 0x25, 0x64, 0xf0, 0x84, 0x58, 0x05, 0x8f, 0x8b, 0xc7, 0x69, 0x52, 0xa9, 0x52, 0x1f, 0xa1, + 0x0f, 0xd0, 0x07, 0x68, 0xf7, 0x49, 0x72, 0xda, 0xcd, 0xee, 0x29, 0xda, 0x83, 0xb5, 0x21, 0x6f, + 0xc0, 0x61, 0x8f, 0xab, 0x15, 0xe3, 0x21, 0xd8, 0x60, 0x70, 0xd0, 0x92, 0x43, 0xb4, 0x9c, 0x80, + 0x6f, 0xbe, 0x7f, 0xfe, 0x7d, 0xe3, 0x6f, 0xbe, 0x01, 0xe4, 0xeb, 0xb8, 0x65, 0xa0, 0x73, 0xf5, + 0x4c, 0x77, 0x9b, 0x44, 0x3d, 0x2b, 0xd6, 0x10, 0xd1, 0x8b, 0x2a, 0x39, 0x57, 0xec, 0x36, 0x26, + 0x18, 0x66, 0xfd, 0x65, 0x85, 0x2e, 0x2b, 0x6c, 0x59, 0xc8, 0x36, 0x70, 0x03, 0x53, 0x05, 0xb5, + 0xf7, 0xcd, 0xd7, 0x95, 0xdf, 0xf0, 0x60, 0xed, 0xd0, 0x69, 0x94, 0xdb, 0x48, 0x27, 0x48, 0x43, + 0xbf, 0xbb, 0xc8, 0x21, 0xf0, 0x53, 0x90, 0x3c, 0x69, 0xe3, 0x56, 0x8e, 0xdb, 0xe6, 0x0a, 0xa9, + 0xd2, 0x6a, 0xd7, 0x93, 0x56, 0x2e, 0xf4, 0x56, 0xf3, 0x6b, 0xb9, 0x27, 0x95, 0x35, 0xba, 0x08, + 0x0b, 0x60, 0x49, 0xb7, 0xed, 0xaa, 0x69, 0xe4, 0xf8, 0x6d, 0xae, 0x90, 0x2c, 0x65, 0xba, 0x9e, + 0x94, 0xf6, 0xd5, 0x7c, 0xb9, 0xac, 0x2d, 0xea, 0xb6, 0x5d, 0x31, 0xe0, 0x11, 0xd8, 0x44, 0xe7, + 0x04, 0x59, 0x06, 0x32, 0xaa, 0xb6, 0x6e, 0xb6, 0xab, 0x34, 0xb1, 0x9e, 0xe5, 0x02, 0xb5, 0xfc, + 0xa4, 0xeb, 0x49, 0x79, 0xdf, 0x32, 0x5a, 0x4f, 0xd6, 0xd6, 0xfb, 0x0b, 0x3f, 0xe8, 0x66, 0xfb, + 0xa8, 0x27, 0xae, 0x18, 0xb0, 0x0a, 0x52, 0x7a, 0x0b, 0xbb, 0x16, 0xa9, 0x9a, 0x56, 0x2e, 0x49, + 0x73, 0x2d, 0x5d, 0x7a, 0x52, 0xe2, 0xa5, 0x27, 0xed, 0x34, 0x4c, 0x72, 0xea, 0xd6, 0x94, 0x3a, + 0x6e, 0xa9, 0x75, 0xec, 0xb4, 0xb0, 0xc3, 0x3e, 0x76, 0x1d, 0xe3, 0x37, 0x95, 0x5c, 0xd8, 0xc8, + 0x51, 0x2a, 0x16, 0xe9, 0x7a, 0xd2, 0x1a, 0x4b, 0xb9, 0xef, 0x48, 0xd6, 0x96, 0xfd, 0xef, 0x15, + 0x0b, 0xd6, 0x00, 0x60, 0x72, 0xec, 0x92, 0xdc, 0x22, 0x8d, 0x50, 0x9e, 0x3a, 0x42, 0x26, 0x14, + 0x01, 0xbb, 0x44, 0xd6, 0x58, 0xde, 0xdf, 0xbb, 0x44, 0x5e, 0x07, 0x99, 0x00, 0x7f, 0xc7, 0xc6, + 0x96, 0x83, 0xe4, 0xe7, 0x3c, 0x95, 0x7e, 0x87, 0x6c, 0xec, 0x98, 0xe4, 0x91, 0x95, 0xe5, 0x1b, + 0x90, 0x76, 0x1d, 0x14, 0x70, 0x97, 0xa4, 0xee, 0x72, 0x5d, 0x4f, 0xca, 0xfa, 0xee, 0x42, 0xcb, + 0xb2, 0xb6, 0xd2, 0xfb, 0xdd, 0xb7, 0x3e, 0x06, 0x4b, 0x3e, 0x1c, 0xc6, 0xfb, 0xdb, 0xa9, 0x79, + 0xa7, 0x83, 0xbc, 0x65, 0x8d, 0xb9, 0x93, 0xb3, 0x00, 0x06, 0x91, 0x32, 0xd2, 0x2f, 0x78, 0x2a, + 0x3e, 0x36, 0xc9, 0xa9, 0xd1, 0xd6, 0xff, 0x98, 0xa3, 0x9e, 0x05, 0xea, 0x0d, 0xb0, 0x1e, 0x62, + 0xca, 0x58, 0x3f, 0xe5, 0xc1, 0x87, 0xbd, 0x12, 0xcc, 0x39, 0xcf, 0x88, 0x73, 0x06, 0xac, 0xde, + 0xf1, 0x64, 0x8c, 0x9f, 0xf1, 0x54, 0xa6, 0x21, 0x5b, 0xbf, 0x98, 0x43, 0x9e, 0x05, 0x64, 0x48, + 0x0f, 0x48, 0x06, 0x94, 0x51, 0x7e, 0xcd, 0x51, 0xca, 0xe5, 0x26, 0x76, 0xd0, 0xfb, 0x44, 0x99, + 0xc1, 0x60, 0xcf, 0xcd, 0x60, 0x5c, 0xf3, 0x20, 0x37, 0xe8, 0xac, 0x07, 0x96, 0x31, 0x7f, 0xc1, + 0x67, 0xb5, 0xf7, 0xb6, 0xc0, 0x47, 0x11, 0x64, 0x19, 0xf7, 0x7f, 0x79, 0x20, 0xdc, 0x8d, 0x0e, + 0x3f, 0x11, 0xbd, 0xd6, 0x44, 0x87, 0xa6, 0xf5, 0xd8, 0xa6, 0x85, 0x01, 0xbb, 0xe4, 0xbb, 0xb1, + 0x3b, 0x18, 0x62, 0x97, 0x07, 0x5b, 0x91, 0x74, 0x18, 0xbd, 0x1b, 0x9e, 0xae, 0x33, 0xb6, 0x73, + 0x7c, 0x43, 0x5b, 0x0f, 0x96, 0xc0, 0xaa, 0x43, 0xa1, 0x0c, 0x32, 0x5d, 0xa4, 0x99, 0x0a, 0x5d, + 0x4f, 0xda, 0xf4, 0x6d, 0x86, 0x14, 0x64, 0x2d, 0xed, 0x4b, 0xfa, 0xdd, 0x42, 0x04, 0x1f, 0x47, + 0x23, 0x66, 0x35, 0xe8, 0xf0, 0x54, 0xa1, 0x3f, 0x28, 0xcc, 0x8b, 0xf0, 0x10, 0x45, 0x90, 0x40, + 0x7e, 0x0c, 0x63, 0x56, 0x85, 0x27, 0x1c, 0x7d, 0x13, 0x7c, 0x7d, 0x8b, 0xa0, 0x36, 0x72, 0x48, + 0x59, 0x6f, 0xd6, 0x1f, 0xa8, 0x08, 0x23, 0xad, 0x76, 0x61, 0x9a, 0x03, 0xc8, 0xdf, 0x52, 0x11, + 0xb9, 0xfa, 0x0f, 0xb3, 0xf7, 0x7f, 0x0a, 0x2c, 0x1c, 0x3a, 0x0d, 0xf8, 0x2b, 0x48, 0xdd, 0xbd, + 0xfd, 0x70, 0x47, 0x89, 0xba, 0x11, 0x2b, 0xc3, 0xf7, 0x5e, 0xe1, 0x8b, 0x58, 0x3d, 0x3f, 0x0a, + 0xac, 0x02, 0x30, 0xd8, 0xd8, 0x70, 0xbc, 0x59, 0xf8, 0x02, 0x27, 0x14, 0xe2, 0x15, 0x59, 0x80, + 0x1a, 0x58, 0x09, 0x14, 0x0d, 0x8e, 0x37, 0x1c, 0xba, 0xb8, 0x08, 0x5f, 0xde, 0x43, 0x93, 0xc5, + 0x38, 0x02, 0x1f, 0xb0, 0xe9, 0x11, 0x7e, 0x36, 0x3e, 0xb1, 0x80, 0xef, 0xcf, 0x63, 0xb4, 0x98, + 0xdf, 0x9f, 0xc1, 0x72, 0x7f, 0x60, 0x82, 0xe3, 0x4d, 0x82, 0x13, 0xaa, 0xb0, 0x13, 0xa7, 0x16, + 0x72, 0x4d, 0xc7, 0x8f, 0x09, 0xae, 0x83, 0x63, 0xd9, 0x04, 0xd7, 0xa1, 0x29, 0x06, 0x92, 0xe0, + 0x8d, 0x9b, 0x1d, 0xb5, 0x50, 0x89, 0x2b, 0x58, 0x78, 0xda, 0x11, 0xd4, 0x7b, 0xeb, 0xb3, 0xa8, + 0x7f, 0xd2, 0x9b, 0xd2, 0xf0, 0x21, 0x05, 0xbf, 0x8a, 0xd9, 0x88, 0x23, 0x9d, 0x52, 0x28, 0x4e, + 0x61, 0xc1, 0x62, 0xff, 0x05, 0xb2, 0x51, 0xdd, 0x19, 0x16, 0xe3, 0x1e, 0x62, 0x34, 0xfa, 0xde, + 0x34, 0x26, 0x2c, 0xfc, 0xdf, 0x1c, 0xd8, 0x88, 0x6c, 0x4c, 0x70, 0x2f, 0x76, 0x0f, 0x8f, 0x66, + 0xb0, 0x3f, 0x95, 0x4d, 0x88, 0xc0, 0x48, 0x33, 0x99, 0x40, 0x60, 0x5c, 0x93, 0x9c, 0x40, 0x60, + 0x6c, 0xaf, 0x2a, 0xfd, 0x78, 0x79, 0x23, 0x26, 0xfe, 0xeb, 0x88, 0x89, 0xcb, 0x8e, 0xc8, 0x5d, + 0x75, 0x44, 0xee, 0x55, 0x47, 0xe4, 0xfe, 0xb9, 0x15, 0x13, 0x57, 0xb7, 0x62, 0xe2, 0xfa, 0x56, + 0x4c, 0xfc, 0xa2, 0x86, 0x0e, 0x90, 0x9e, 0xff, 0x5d, 0x7c, 0x72, 0x62, 0xd6, 0x4d, 0xbd, 0xc9, + 0x7e, 0xab, 0xfd, 0x7f, 0x01, 0xe9, 0x69, 0x52, 0x5b, 0xa2, 0xff, 0xea, 0xed, 0xbf, 0x0d, 0x00, + 0x00, 0xff, 0xff, 0x50, 0x76, 0xdc, 0x27, 0x22, 0x14, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1061,7 +982,6 @@ type MsgClient interface { MsgDepositStableMint(ctx context.Context, in *MsgDepositStableMintRequest, opts ...grpc.CallOption) (*MsgDepositStableMintResponse, error) MsgWithdrawStableMint(ctx context.Context, in *MsgWithdrawStableMintRequest, opts ...grpc.CallOption) (*MsgWithdrawStableMintResponse, error) MsgVaultInterestCalc(ctx context.Context, in *MsgVaultInterestCalcRequest, opts ...grpc.CallOption) (*MsgVaultInterestCalcResponse, error) - MsgCorrectStabilityFees(ctx context.Context, in *MsgCorrectStabilityFeesRequest, opts ...grpc.CallOption) (*MsgCorrectStabilityFeesResponse, error) } type msgClient struct { @@ -1171,15 +1091,6 @@ func (c *msgClient) MsgVaultInterestCalc(ctx context.Context, in *MsgVaultIntere return out, nil } -func (c *msgClient) MsgCorrectStabilityFees(ctx context.Context, in *MsgCorrectStabilityFeesRequest, opts ...grpc.CallOption) (*MsgCorrectStabilityFeesResponse, error) { - out := new(MsgCorrectStabilityFeesResponse) - err := c.cc.Invoke(ctx, "/comdex.vault.v1beta1.Msg/MsgCorrectStabilityFees", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - // MsgServer is the server API for Msg service. type MsgServer interface { MsgCreate(context.Context, *MsgCreateRequest) (*MsgCreateResponse, error) @@ -1193,7 +1104,6 @@ type MsgServer interface { MsgDepositStableMint(context.Context, *MsgDepositStableMintRequest) (*MsgDepositStableMintResponse, error) MsgWithdrawStableMint(context.Context, *MsgWithdrawStableMintRequest) (*MsgWithdrawStableMintResponse, error) MsgVaultInterestCalc(context.Context, *MsgVaultInterestCalcRequest) (*MsgVaultInterestCalcResponse, error) - MsgCorrectStabilityFees(context.Context, *MsgCorrectStabilityFeesRequest) (*MsgCorrectStabilityFeesResponse, error) } // UnimplementedMsgServer can be embedded to have forward compatible implementations. @@ -1233,9 +1143,6 @@ func (*UnimplementedMsgServer) MsgWithdrawStableMint(ctx context.Context, req *M func (*UnimplementedMsgServer) MsgVaultInterestCalc(ctx context.Context, req *MsgVaultInterestCalcRequest) (*MsgVaultInterestCalcResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method MsgVaultInterestCalc not implemented") } -func (*UnimplementedMsgServer) MsgCorrectStabilityFees(ctx context.Context, req *MsgCorrectStabilityFeesRequest) (*MsgCorrectStabilityFeesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method MsgCorrectStabilityFees not implemented") -} func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) @@ -1439,24 +1346,6 @@ func _Msg_MsgVaultInterestCalc_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } -func _Msg_MsgCorrectStabilityFees_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgCorrectStabilityFeesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).MsgCorrectStabilityFees(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/comdex.vault.v1beta1.Msg/MsgCorrectStabilityFees", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).MsgCorrectStabilityFees(ctx, req.(*MsgCorrectStabilityFeesRequest)) - } - return interceptor(ctx, in, info, handler) -} - var _Msg_serviceDesc = grpc.ServiceDesc{ ServiceName: "comdex.vault.v1beta1.Msg", HandlerType: (*MsgServer)(nil), @@ -1505,10 +1394,6 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "MsgVaultInterestCalc", Handler: _Msg_MsgVaultInterestCalc_Handler, }, - { - MethodName: "MsgCorrectStabilityFees", - Handler: _Msg_MsgCorrectStabilityFees_Handler, - }, }, Streams: []grpc.StreamDesc{}, Metadata: "comdex/vault/v1beta1/tx.proto", @@ -2347,59 +2232,6 @@ func (m *MsgVaultInterestCalcResponse) MarshalToSizedBuffer(dAtA []byte) (int, e return len(dAtA) - i, nil } -func (m *MsgCorrectStabilityFeesRequest) 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 *MsgCorrectStabilityFeesRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgCorrectStabilityFeesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.From) > 0 { - i -= len(m.From) - copy(dAtA[i:], m.From) - i = encodeVarintTx(dAtA, i, uint64(len(m.From))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgCorrectStabilityFeesResponse) 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 *MsgCorrectStabilityFeesResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgCorrectStabilityFeesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - func encodeVarintTx(dAtA []byte, offset int, v uint64) int { offset -= sovTx(v) base := offset @@ -2763,28 +2595,6 @@ func (m *MsgVaultInterestCalcResponse) Size() (n int) { return n } -func (m *MsgCorrectStabilityFeesRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.From) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - return n -} - -func (m *MsgCorrectStabilityFeesResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - func sovTx(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -5153,138 +4963,6 @@ func (m *MsgVaultInterestCalcResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgCorrectStabilityFeesRequest) 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: MsgCorrectStabilityFeesRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgCorrectStabilityFeesRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field From", 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.From = string(dAtA[iNdEx:postIndex]) - 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 *MsgCorrectStabilityFeesResponse) 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: MsgCorrectStabilityFeesResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgCorrectStabilityFeesResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - 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 skipTx(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 From 929d9e0d782fbcfedb74a8137db6c71114b67d47 Mon Sep 17 00:00:00 2001 From: Pratik Date: Tue, 14 Feb 2023 01:04:45 +0530 Subject: [PATCH 03/12] adding new proposal type - combined multiple proposals --- app/app.go | 5 +- proto/comdex/asset/v1beta1/gov.proto | 6 + proto/comdex/asset/v1beta1/pair.proto | 14 + proto/comdex/lend/v1beta1/gov.proto | 6 + proto/comdex/lend/v1beta1/lend.proto | 25 + x/asset/client/cli/flags.go | 25 +- x/asset/client/cli/parse.go | 45 +- x/asset/client/cli/tx.go | 123 +++++ x/asset/client/proposal_handler.go | 1 + x/asset/client/rest/tx.go | 18 + x/asset/handler.go | 6 + x/asset/keeper/asset.go | 77 +++ x/asset/keeper/gov.go | 4 + x/asset/types/asset.go | 17 + x/asset/types/codec.go | 2 + x/asset/types/gov.go | 60 ++- x/asset/types/gov.pb.go | 324 ++++++++++-- x/asset/types/pair.pb.go | 468 ++++++++++++++++- x/lend/client/cli/flags.go | 20 + x/lend/client/cli/parse.go | 42 ++ x/lend/client/cli/tx.go | 90 ++++ x/lend/client/proposal_handler.go | 1 + x/lend/client/rest/tx.go | 7 + x/lend/handler.go | 6 + x/lend/keeper/gov.go | 4 + x/lend/keeper/msg_server_test.go | 2 +- x/lend/keeper/pair.go | 168 ++++++ x/lend/types/codec.go | 2 + x/lend/types/gov.go | 34 ++ x/lend/types/gov.pb.go | 338 ++++++++++-- x/lend/types/lend.pb.go | 706 +++++++++++++++++++------- x/lend/types/pair.go | 10 + x/liquidity/types/liquidity.pb.go | 2 +- x/liquidity/types/params.pb.go | 2 +- x/liquidity/types/query.pb.go | 4 +- x/liquidity/types/tx.pb.go | 2 +- x/vault/types/vault.pb.go | 2 +- 37 files changed, 2388 insertions(+), 280 deletions(-) diff --git a/app/app.go b/app/app.go index d14e4ad48..ce20ca620 100644 --- a/app/app.go +++ b/app/app.go @@ -2,6 +2,7 @@ package app import ( "fmt" + paramsclient "github.com/cosmos/cosmos-sdk/x/params/client" "io" "net/http" "os" @@ -72,7 +73,6 @@ import ( mintkeeper "github.com/cosmos/cosmos-sdk/x/mint/keeper" minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" "github.com/cosmos/cosmos-sdk/x/params" - paramsclient "github.com/cosmos/cosmos-sdk/x/params/client" paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper" paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" paramproposal "github.com/cosmos/cosmos-sdk/x/params/types/proposal" @@ -203,6 +203,7 @@ func GetGovProposalHandlers() []govclient.ProposalHandler { lendclient.AddAuctionParamsHandler, lendclient.AddMultipleAssetToPairHandler, lendclient.AddMultipleLendPairsHandler, + lendclient.AddPoolPairsHandler, paramsclient.ProposalHandler, distrclient.ProposalHandler, upgradeclient.ProposalHandler, @@ -1271,7 +1272,7 @@ func upgradeHandlers(upgradeInfo storetypes.UpgradeInfo, a *App, storeUpgrades * case upgradeInfo.Name == mv8.UpgradeName810 && !a.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height): storeUpgrades = &storetypes.StoreUpgrades{} - + case upgradeInfo.Name == mv8.UpgradeName811 && !a.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height): storeUpgrades = &storetypes.StoreUpgrades{} } diff --git a/proto/comdex/asset/v1beta1/gov.proto b/proto/comdex/asset/v1beta1/gov.proto index 7c26c823f..1308d8965 100644 --- a/proto/comdex/asset/v1beta1/gov.proto +++ b/proto/comdex/asset/v1beta1/gov.proto @@ -62,4 +62,10 @@ message AddAssetInAppProposal { string title = 1 [(gogoproto.moretags) = "yaml:\"title\""]; string description = 2 [(gogoproto.moretags) = "yaml:\"description\""]; AppData app = 3 [(gogoproto.nullable) = false]; +} + +message AddMultipleAssetsPairsProposal { + string title = 1 [(gogoproto.moretags) = "yaml:\"title\""]; + string description = 2 [(gogoproto.moretags) = "yaml:\"description\""]; + repeated AssetPair assetsPair = 3 [(gogoproto.nullable) = false]; } \ No newline at end of file diff --git a/proto/comdex/asset/v1beta1/pair.proto b/proto/comdex/asset/v1beta1/pair.proto index 8f30f0b77..53cba04d5 100644 --- a/proto/comdex/asset/v1beta1/pair.proto +++ b/proto/comdex/asset/v1beta1/pair.proto @@ -19,4 +19,18 @@ message PairInfo{ string denom_in = 3 [(gogoproto.moretags) = "yaml:\"denom\""]; uint64 asset_out = 4 [(gogoproto.moretags) = "yaml:\"asset_out\""]; string denom_out = 5 [(gogoproto.moretags) = "yaml:\"denom\""]; +} + +message AssetPair { + uint64 id = 1; + string name = 2 [(gogoproto.moretags) = "yaml:\"name\""]; + string denom = 3 [(gogoproto.moretags) = "yaml:\"denom\""]; + string decimals = 4 [ + (gogoproto.moretags) = "yaml:\"decimals\"", + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.nullable) = false]; + bool is_on_chain = 5 [(gogoproto.moretags) = "yaml:\"is_on_chain\""]; + bool is_oracle_price_required = 6 [(gogoproto.moretags) = "yaml:\"is_oracle_price_required\""]; + bool is_cdp_mintable = 7 [(gogoproto.moretags) = "yaml:\"is_cdp_mintable\""]; + uint64 asset_out = 8 [(gogoproto.moretags) = "yaml:\"asset_out\""]; } \ No newline at end of file diff --git a/proto/comdex/lend/v1beta1/gov.proto b/proto/comdex/lend/v1beta1/gov.proto index 9103a84f1..70bf77690 100644 --- a/proto/comdex/lend/v1beta1/gov.proto +++ b/proto/comdex/lend/v1beta1/gov.proto @@ -48,3 +48,9 @@ message AddAuctionParamsProposal { string description = 2 [(gogoproto.moretags) = "yaml:\"description\""]; AuctionParams AuctionParams = 3 [(gogoproto.nullable) = false]; } + +message AddPoolPairsProposal { + string title = 1 [(gogoproto.moretags) = "yaml:\"title\""]; + string description = 2 [(gogoproto.moretags) = "yaml:\"description\""]; + PoolPairs PoolPairs = 3 [(gogoproto.nullable) = false]; +} \ No newline at end of file diff --git a/proto/comdex/lend/v1beta1/lend.proto b/proto/comdex/lend/v1beta1/lend.proto index 7bc83f1ef..4c7ff64a8 100644 --- a/proto/comdex/lend/v1beta1/lend.proto +++ b/proto/comdex/lend/v1beta1/lend.proto @@ -577,4 +577,29 @@ message AssetToPairSingleMapping{ (gogoproto.customname) = "PairID", (gogoproto.moretags) = "yaml:\"pair_id\"" ]; +} + +message PoolPairs { + uint64 pool_id = 1 [ + (gogoproto.customname) = "PoolID", + (gogoproto.moretags) = "yaml:\"pool_id\"" + ]; + + string module_name = 2 [ + (gogoproto.customname) = "ModuleName", + (gogoproto.moretags) = "yaml:\"module_name\"" + ]; + + string cpool_name = 3 [ + (gogoproto.customname) = "CPoolName", + (gogoproto.moretags) = "yaml:\"cpool_name\"" + ]; + + repeated AssetDataPoolMapping asset_data = 4 [ + (gogoproto.customname) = "AssetData", + (gogoproto.moretags) = "yaml:\"asset_data\"" + ]; + + uint64 min_usd_value_left = 5 [ + (gogoproto.moretags) = "yaml:\"min_usd_value_left\""]; } \ No newline at end of file diff --git a/x/asset/client/cli/flags.go b/x/asset/client/cli/flags.go index 77811c076..17a11b521 100644 --- a/x/asset/client/cli/flags.go +++ b/x/asset/client/cli/flags.go @@ -8,8 +8,9 @@ import ( ) const ( - FlagAddAssetMappingFile = "add-asset-mapping-file" - FlagAddAssetsMappingFile = "add-assets-file" + FlagAddAssetMappingFile = "add-asset-mapping-file" + FlagAddAssetsMappingFile = "add-assets-file" + FlagAddAssetsPairsMappingFile = "add-assets-pairs-file" ) func ParseBoolFromString(s string) bool { @@ -59,6 +60,13 @@ func FlagSetCreateAssetsMapping() *flag.FlagSet { return fs } +func FlagSetCreateAssetsPairsMapping() *flag.FlagSet { + fs := flag.NewFlagSet("", flag.ContinueOnError) + + fs.String(FlagAddAssetsPairsMappingFile, "", "add assets pairs json file path") + return fs +} + type createAddAssetMappingInputs struct { AppID string `json:"app_id"` AssetID string `json:"asset_id"` @@ -81,3 +89,16 @@ type createAddAssetsMappingInputs struct { Description string Deposit string } + +type createAddAssetsPairsMappingInputs struct { + Name string `json:"name"` + Denom string `json:"denom"` + Decimals string `json:"decimals"` + IsOnChain string `json:"is_on_chain"` + AssetOraclePrice string `json:"asset_oracle_price"` + IsCdpMintable string `json:"is_cdp_mintable"` + AssetOut string `json:"asset_out"` + Title string + Description string + Deposit string +} diff --git a/x/asset/client/cli/parse.go b/x/asset/client/cli/parse.go index 1ab8b82a7..1b4d5ca7d 100644 --- a/x/asset/client/cli/parse.go +++ b/x/asset/client/cli/parse.go @@ -10,8 +10,9 @@ import ( ) type ( - XCreateAddAssetMappingInputs createAddAssetMappingInputs - XCreateAddAssetsMappingInputs createAddAssetsMappingInputs + XCreateAddAssetMappingInputs createAddAssetMappingInputs + XCreateAddAssetsMappingInputs createAddAssetsMappingInputs + XCreateAddAssetsPairsMappingInputs createAddAssetsPairsMappingInputs ) type XCreateAddAssetMappingInputsExceptions struct { @@ -24,6 +25,11 @@ type XCreateAddAssetsMappingInputsExceptions struct { Other *string // Other won't raise an error } +type XCreateAddAssetsPairsMappingInputsExceptions struct { + XCreateAddAssetsPairsMappingInputs + Other *string // Other won't raise an error +} + // UnmarshalJSON should error if there are fields unexpected. func (release *createAddAssetMappingInputs) UnmarshalJSON(data []byte) error { @@ -95,3 +101,38 @@ func parseAssetsMappingFlags(fs *pflag.FlagSet) (*createAddAssetsMappingInputs, return assetsMapping, nil } + +func (release *createAddAssetsPairsMappingInputs) UnmarshalJSON(data []byte) error { + var createAddAssetsMappingInputsE XCreateAddAssetsPairsMappingInputsExceptions + dec := json.NewDecoder(bytes.NewReader(data)) + dec.DisallowUnknownFields() // Force + + if err := dec.Decode(&createAddAssetsMappingInputsE); err != nil { + return err + } + + *release = createAddAssetsPairsMappingInputs(createAddAssetsMappingInputsE.XCreateAddAssetsPairsMappingInputs) + return nil +} + +func parseAssetsPairsMappingFlags(fs *pflag.FlagSet) (*createAddAssetsPairsMappingInputs, error) { + assetsPairsMapping := &createAddAssetsPairsMappingInputs{} + addAssetsPairsMappingFile, _ := fs.GetString(FlagAddAssetsPairsMappingFile) + + if addAssetsPairsMappingFile == "" { + return nil, fmt.Errorf("must pass in add asset mapping json using the --%s flag", FlagAddAssetMappingFile) + } + + contents, err := os.ReadFile(addAssetsPairsMappingFile) + if err != nil { + return nil, err + } + + // make exception if unknown field exists + err = assetsPairsMapping.UnmarshalJSON(contents) + if err != nil { + return nil, err + } + + return assetsPairsMapping, nil +} diff --git a/x/asset/client/cli/tx.go b/x/asset/client/cli/tx.go index 03a881a9c..6c365677c 100644 --- a/x/asset/client/cli/tx.go +++ b/x/asset/client/cli/tx.go @@ -810,3 +810,126 @@ func NewCreateAssetInAppMsg(clientCtx client.Context, txf tx.Factory, fs *flag.F } return txf, msg, nil } + +func NewCmdSubmitAddMultipleAssetsPairsProposal() *cobra.Command { + cmd := &cobra.Command{ + Use: "add-multiple-assets-pairs [flags]", + Args: cobra.ExactArgs(0), + Short: "Submit multiple assets and pairs", + Long: `Must provide path to a add assets in JSON file (--add-assets) describing the asset in app to be created +Sample json content +{ + "name" :"ATOM,CMDX,CMST,OSMO,cATOM,cCMDX,cCMST,cOSMO,HARBOR", + "denom" :"uatom,ucmdx,ucmst,uosmo,ucatom,uccmdx,uccmst,ucosmo,uharbor", + "decimals" :"1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000", + "is_on_chain" :"0,0,0,0,0,0,0,0,1", + "asset_oracle_price" :"1,1,0,1,0,0,0,0,0", + "asset_out" :"3,3,3,3,3,3,3,3,3", + "title" :"Add assets and pairs for applications to be deployed on comdex testnet", + "description" :"This proposal it to add following assets ATOM,CMDX,CMST,OSMO,cATOM,cCMDX,cCMST,cOSMO,HARBOR to be then used on harbor, commodo and cswap apps", + "deposit" :"1000000000ucmdx" +}`, + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + txf := tx.NewFactoryCLI(clientCtx, cmd.Flags()).WithTxConfig(clientCtx.TxConfig).WithAccountRetriever(clientCtx.AccountRetriever) + + txf, msg, err := NewCreateMultipleAssetsPairs(clientCtx, txf, cmd.Flags()) + if err != nil { + return err + } + + return tx.GenerateOrBroadcastTxWithFactory(clientCtx, txf, msg) + }, + } + + cmd.Flags().AddFlagSet(FlagSetCreateAssetsPairsMapping()) + cmd.Flags().String(cli.FlagProposal, "", "Proposal file path (if this path is given, other proposal flags are ignored)") + + return cmd +} + +func NewCreateMultipleAssetsPairs(clientCtx client.Context, txf tx.Factory, fs *flag.FlagSet) (tx.Factory, sdk.Msg, error) { + assetsPairsMapping, err := parseAssetsPairsMappingFlags(fs) + if err != nil { + return txf, nil, fmt.Errorf("failed to parse assetsMapping: %w", err) + } + + names, err := ParseStringFromString(assetsPairsMapping.Name, ",") + if err != nil { + return txf, nil, err + } + denoms, err := ParseStringFromString(assetsPairsMapping.Denom, ",") + if err != nil { + return txf, nil, err + } + + decimals, err := ParseStringFromString(assetsPairsMapping.Decimals, ",") + if err != nil { + return txf, nil, err + } + + isOnChain, err := ParseStringFromString(assetsPairsMapping.IsOnChain, ",") + if err != nil { + return txf, nil, err + } + + assetOraclePrice, err := ParseStringFromString(assetsPairsMapping.AssetOraclePrice, ",") + if err != nil { + return txf, nil, err + } + isCdpMintable, err := ParseStringFromString(assetsPairsMapping.IsCdpMintable, ",") + if err != nil { + return txf, nil, err + } + + assetOut, err := ParseStringFromString(assetsPairsMapping.AssetOut, ",") + if err != nil { + return txf, nil, err + } + + from := clientCtx.GetFromAddress() + + var assets []types.AssetPair + for i := range names { + newIsOnChain := ParseBoolFromString(isOnChain[i]) + newAssetOraclePrice := ParseBoolFromString(assetOraclePrice[i]) + newIsCdpMintable := ParseBoolFromString(isCdpMintable[i]) + newDecimals, ok := sdk.NewIntFromString(decimals[i]) + if !ok { + return txf, nil, types.ErrorInvalidDecimals + } + newAssetOut, ok := sdk.NewIntFromString(assetOut[i]) + + assets = append(assets, types.AssetPair{ + Name: names[i], + Denom: denoms[i], + Decimals: newDecimals, + IsOnChain: newIsOnChain, + IsOraclePriceRequired: newAssetOraclePrice, + IsCdpMintable: newIsCdpMintable, + AssetOut: newAssetOut.Uint64(), + }) + } + + deposit, err := sdk.ParseCoinsNormalized(assetsPairsMapping.Deposit) + if err != nil { + return txf, nil, err + } + + content := types.NewAddMultipleAssetsPairsProposal(assetsPairsMapping.Title, assetsPairsMapping.Description, assets) + + msg, err := govtypes.NewMsgSubmitProposal(content, deposit, from) + if err != nil { + return txf, nil, err + } + + if err = msg.ValidateBasic(); err != nil { + return txf, nil, err + } + + return txf, msg, nil +} diff --git a/x/asset/client/proposal_handler.go b/x/asset/client/proposal_handler.go index c82a7d5d0..3b1162b19 100644 --- a/x/asset/client/proposal_handler.go +++ b/x/asset/client/proposal_handler.go @@ -17,4 +17,5 @@ var AddAssetsHandler = []govclient.ProposalHandler{ govclient.NewProposalHandler(cli.NewCmdSubmitUpdateGovTimeInAppProposal, rest.UpdateNewGovTimeInAppProposalRESTHandler), govclient.NewProposalHandler(cli.NewCmdSubmitAddMultipleAssetsProposal, rest.AddNewAssetsProposalRESTHandler), govclient.NewProposalHandler(cli.NewCmdSubmitAddMultiplePairsProposal, rest.AddNewPairsProposalRESTHandler), + govclient.NewProposalHandler(cli.NewCmdSubmitAddMultipleAssetsPairsProposal, rest.AddNewAssetsPairsProposalRESTHandler), } diff --git a/x/asset/client/rest/tx.go b/x/asset/client/rest/tx.go index 592fdb27c..cbc057862 100644 --- a/x/asset/client/rest/tx.go +++ b/x/asset/client/rest/tx.go @@ -12,6 +12,7 @@ type ( UpdateNewAssetRequest struct{} AddNewPairsRequest struct{} UpdateNewPairRequest struct{} + AddNewAssetsPairs struct{} ) func AddNewAssetsProposalRESTHandler(clientCtx client.Context) govrest.ProposalRESTHandler { @@ -21,6 +22,13 @@ func AddNewAssetsProposalRESTHandler(clientCtx client.Context) govrest.ProposalR } } +func AddNewAssetsPairsProposalRESTHandler(clientCtx client.Context) govrest.ProposalRESTHandler { + return govrest.ProposalRESTHandler{ + SubRoute: "add-new-assets-pairs", + Handler: AddNewAssetsPairsRESTHandler(clientCtx), + } +} + func UpdateNewAssetProposalRESTHandler(clientCtx client.Context) govrest.ProposalRESTHandler { return govrest.ProposalRESTHandler{ SubRoute: "update-new-asset", @@ -59,6 +67,16 @@ func AddNewAssetsRESTHandler(clientCtx client.Context) http.HandlerFunc { } } +func AddNewAssetsPairsRESTHandler(clientCtx client.Context) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req AddNewAssetsPairs + + if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { + return + } + } +} + func UpdateNewAssetRESTHandler(clientCtx client.Context) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { var req UpdateNewAssetRequest diff --git a/x/asset/handler.go b/x/asset/handler.go index 25aa9e4b2..b3ef598da 100644 --- a/x/asset/handler.go +++ b/x/asset/handler.go @@ -46,6 +46,8 @@ func NewUpdateAssetProposalHandler(k keeper.Keeper) govtypes.Handler { return handleAddAppProposal(ctx, k, c) case *types.AddAssetInAppProposal: return handleAddAssetInAppProposal(ctx, k, c) + case *types.AddMultipleAssetsPairsProposal: + return handleMultipleAssetsPairsProposal(ctx, k, c) default: return sdkerrors.Wrapf(types.ErrorUnknownProposalType, "%T", c) @@ -88,3 +90,7 @@ func handleAddAppProposal(ctx sdk.Context, k keeper.Keeper, p *types.AddAppPropo func handleAddAssetInAppProposal(ctx sdk.Context, k keeper.Keeper, p *types.AddAssetInAppProposal) error { return k.HandleAddAssetInAppRecords(ctx, p) } + +func handleMultipleAssetsPairsProposal(ctx sdk.Context, k keeper.Keeper, p *types.AddMultipleAssetsPairsProposal) error { + return k.HandleProposalAddMultipleAssetPair(ctx, p) +} diff --git a/x/asset/keeper/asset.go b/x/asset/keeper/asset.go index 75a750782..6de178eee 100644 --- a/x/asset/keeper/asset.go +++ b/x/asset/keeper/asset.go @@ -267,3 +267,80 @@ func (k Keeper) UpdateAssetRecords(ctx sdk.Context, msg types.Asset) error { k.SetAsset(ctx, asset) return nil } + +func (k *Keeper) AddMultipleAssetPairRecords(ctx sdk.Context, records ...types.AssetPair) error { + for _, record := range records { + err := k.AddAssetPairRecords(ctx, record) + if err != nil { + return err + } + } + return nil +} + +func (k Keeper) AddAssetPairRecords(ctx sdk.Context, msg types.AssetPair) error { + if k.HasAssetForDenom(ctx, msg.Denom) || k.HasAssetForName(ctx, msg.Name) { + return types.ErrorDuplicateAsset + } + + IsLetter := regexp.MustCompile(`^[A-Z]+$`).MatchString + + if !IsLetter(msg.Name) || len(msg.Name) > 10 { + return types.ErrorNameDidNotMeetCriterion + } + if !msg.IsOnChain && msg.IsCdpMintable { + return types.ErrorOffChainAssetCannotBeMintable + } + + var ( + assetID = k.GetAssetID(ctx) + asset = types.Asset{ + Id: assetID + 1, + Name: msg.Name, + Denom: msg.Denom, + Decimals: msg.Decimals, + IsOnChain: msg.IsOnChain, + IsOraclePriceRequired: msg.IsOraclePriceRequired, + IsCdpMintable: msg.IsCdpMintable, + } + ) + if msg.IsOraclePriceRequired { + k.bandoracle.SetCheckFlag(ctx, false) + } + + k.SetAssetID(ctx, asset.Id) + k.SetAsset(ctx, asset) + k.SetAssetForDenom(ctx, asset.Denom, asset.Id) + k.SetAssetForName(ctx, asset.Name, asset.Id) + + if !k.HasAsset(ctx, asset.Id) { + return types.ErrorAssetDoesNotExist + } + if !k.HasAsset(ctx, msg.AssetOut) { + return types.ErrorAssetDoesNotExist + } + if asset.Id == msg.AssetOut { + return types.ErrorDuplicateAsset + } + pairs := k.GetPairs(ctx) + for _, data := range pairs { + if data.AssetIn == asset.Id && data.AssetOut == msg.AssetOut { + return types.ErrorDuplicatePair + } else if (data.AssetIn == msg.AssetOut) && (data.AssetOut == asset.Id) { + return types.ErrorReversePairAlreadyExist + } + } + var ( + id = k.GetPairID(ctx) + pair = types.Pair{ + Id: id + 1, + AssetIn: asset.Id, + AssetOut: msg.AssetOut, + } + ) + + k.SetPairID(ctx, pair.Id) + k.SetPair(ctx, pair) + + return nil +} diff --git a/x/asset/keeper/gov.go b/x/asset/keeper/gov.go index 7051c779c..0a515e49d 100644 --- a/x/asset/keeper/gov.go +++ b/x/asset/keeper/gov.go @@ -41,3 +41,7 @@ func (k Keeper) HandleAddAppRecords(ctx sdk.Context, p *types.AddAppProposal) er func (k Keeper) HandleAddAssetInAppRecords(ctx sdk.Context, p *types.AddAssetInAppProposal) error { return k.AddAssetInAppRecords(ctx, p.App) } + +func (k Keeper) HandleProposalAddMultipleAssetPair(ctx sdk.Context, p *types.AddMultipleAssetsPairsProposal) error { + return k.AddMultipleAssetPairRecords(ctx, p.AssetsPair...) +} diff --git a/x/asset/types/asset.go b/x/asset/types/asset.go index da798039d..44a366e81 100644 --- a/x/asset/types/asset.go +++ b/x/asset/types/asset.go @@ -27,3 +27,20 @@ func (m *Asset) Validate() error { return nil } + +func (m *AssetPair) Validate() error { + if m.Name == "" { + return fmt.Errorf("name cannot be empty") + } + if len(m.Name) > MaxAssetNameLength { + return fmt.Errorf("name length cannot be greater than %d", MaxAssetNameLength) + } + if err := sdk.ValidateDenom(m.Denom); err != nil { + return errors.Wrapf(err, "invalid denom %s", m.Denom) + } + if m.Decimals.LTE(sdk.ZeroInt()) { + return fmt.Errorf("decimals cannot be less than or equal to zero") + } + + return nil +} diff --git a/x/asset/types/codec.go b/x/asset/types/codec.go index f19e3e294..138cf59b4 100644 --- a/x/asset/types/codec.go +++ b/x/asset/types/codec.go @@ -18,6 +18,7 @@ func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&AddAppProposal{}, "comdex/asset/AddAppProposal", nil) cdc.RegisterConcrete(&AddAssetInAppProposal{}, "comdex/asset/AddAssetInAppProposal", nil) cdc.RegisterConcrete(&UpdateGovTimeInAppProposal{}, "comdex/asset/UpdateGovTimeInAppProposal", nil) + cdc.RegisterConcrete(&AddMultipleAssetsPairsProposal{}, "comdex/asset/AddMultipleAssetsPairsProposal", nil) } func RegisterInterfaces(registry types.InterfaceRegistry) { @@ -32,6 +33,7 @@ func RegisterInterfaces(registry types.InterfaceRegistry) { &AddAppProposal{}, &AddAssetInAppProposal{}, &UpdateGovTimeInAppProposal{}, + &AddMultipleAssetsPairsProposal{}, ) registry.RegisterImplementations( diff --git a/x/asset/types/gov.go b/x/asset/types/gov.go index 04ce8f52c..a533b061e 100644 --- a/x/asset/types/gov.go +++ b/x/asset/types/gov.go @@ -5,15 +5,16 @@ import ( ) const ( - ProposalAddAssets = "AddAssets" - ProposalAddMultipleAssets = "AddMultipleAssets" - ProposalUpdateAsset = "UpdateAsset" - ProposalAddPairs = "AddPairs" - ProposalAddMultiplePairs = "AddMultiplePairs" - ProposalUpdatePair = "UpdatePair" - ProposalAddApp = "AddApp" - ProposalAddAssetInApp = "AddAssetInApp" - ProposalUpdateGovTimeInApp = "UpdateGovTimeInApp" + ProposalAddAssets = "AddAssets" + ProposalAddMultipleAssets = "AddMultipleAssets" + ProposalUpdateAsset = "UpdateAsset" + ProposalAddPairs = "AddPairs" + ProposalAddMultiplePairs = "AddMultiplePairs" + ProposalUpdatePair = "UpdatePair" + ProposalAddApp = "AddApp" + ProposalAddAssetInApp = "AddAssetInApp" + ProposalUpdateGovTimeInApp = "UpdateGovTimeInApp" + ProposalAddMultipleAssetsPairs = "AddMultipleAssetsPairs" ) func init() { @@ -43,6 +44,9 @@ func init() { govtypes.RegisterProposalType(ProposalAddAssetInApp) govtypes.RegisterProposalTypeCodec(&AddAssetInAppProposal{}, "comdex/AddAssetInAppProposal") + + govtypes.RegisterProposalType(ProposalAddMultipleAssetsPairs) + govtypes.RegisterProposalTypeCodec(&AddMultipleAssetsPairsProposal{}, "comdex/AddMultipleAssetsPairsProposal") } var ( @@ -55,6 +59,7 @@ var ( _ govtypes.Content = &UpdateGovTimeInAppProposal{} _ govtypes.Content = &AddAppProposal{} _ govtypes.Content = &AddAssetInAppProposal{} + _ govtypes.Content = &AddMultipleAssetsPairsProposal{} ) func NewAddAssetsProposal(title, description string, assets Asset) govtypes.Content { @@ -350,3 +355,40 @@ func (p *AddAssetInAppProposal) ValidateBasic() error { return nil } + +func NewAddMultipleAssetsPairsProposal(title, description string, assets []AssetPair) govtypes.Content { + return &AddMultipleAssetsPairsProposal{ + Title: title, + Description: description, + AssetsPair: assets, + } +} + +func (p *AddMultipleAssetsPairsProposal) GetTitle() string { + return p.Title +} + +func (p *AddMultipleAssetsPairsProposal) GetDescription() string { + return p.Description +} +func (p *AddMultipleAssetsPairsProposal) ProposalRoute() string { return RouterKey } + +func (p *AddMultipleAssetsPairsProposal) ProposalType() string { return ProposalAddMultipleAssetsPairs } + +func (p *AddMultipleAssetsPairsProposal) ValidateBasic() error { + err := govtypes.ValidateAbstract(p) + if err != nil { + return err + } + if len(p.AssetsPair) == 0 { + return ErrorEmptyProposalAssets + } + + for _, asset := range p.AssetsPair { + if err := asset.Validate(); err != nil { + return err + } + } + + return nil +} diff --git a/x/asset/types/gov.pb.go b/x/asset/types/gov.pb.go index b18f301d0..bb7b38fa5 100644 --- a/x/asset/types/gov.pb.go +++ b/x/asset/types/gov.pb.go @@ -374,6 +374,45 @@ func (m *AddAssetInAppProposal) XXX_DiscardUnknown() { var xxx_messageInfo_AddAssetInAppProposal proto.InternalMessageInfo +type AddMultipleAssetsPairsProposal struct { + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty" yaml:"title"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description"` + AssetsPair []AssetPair `protobuf:"bytes,3,rep,name=assetsPair,proto3" json:"assetsPair"` +} + +func (m *AddMultipleAssetsPairsProposal) Reset() { *m = AddMultipleAssetsPairsProposal{} } +func (m *AddMultipleAssetsPairsProposal) String() string { return proto.CompactTextString(m) } +func (*AddMultipleAssetsPairsProposal) ProtoMessage() {} +func (*AddMultipleAssetsPairsProposal) Descriptor() ([]byte, []int) { + return fileDescriptor_31c5aab0360b917f, []int{9} +} +func (m *AddMultipleAssetsPairsProposal) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AddMultipleAssetsPairsProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AddMultipleAssetsPairsProposal.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 *AddMultipleAssetsPairsProposal) XXX_Merge(src proto.Message) { + xxx_messageInfo_AddMultipleAssetsPairsProposal.Merge(m, src) +} +func (m *AddMultipleAssetsPairsProposal) XXX_Size() int { + return m.Size() +} +func (m *AddMultipleAssetsPairsProposal) XXX_DiscardUnknown() { + xxx_messageInfo_AddMultipleAssetsPairsProposal.DiscardUnknown(m) +} + +var xxx_messageInfo_AddMultipleAssetsPairsProposal proto.InternalMessageInfo + func init() { proto.RegisterType((*AddAssetsProposal)(nil), "comdex.asset.v1beta1.AddAssetsProposal") proto.RegisterType((*AddMultipleAssetsProposal)(nil), "comdex.asset.v1beta1.AddMultipleAssetsProposal") @@ -384,42 +423,45 @@ func init() { proto.RegisterType((*AddAppProposal)(nil), "comdex.asset.v1beta1.AddAppProposal") proto.RegisterType((*UpdateGovTimeInAppProposal)(nil), "comdex.asset.v1beta1.UpdateGovTimeInAppProposal") proto.RegisterType((*AddAssetInAppProposal)(nil), "comdex.asset.v1beta1.AddAssetInAppProposal") + proto.RegisterType((*AddMultipleAssetsPairsProposal)(nil), "comdex.asset.v1beta1.AddMultipleAssetsPairsProposal") } func init() { proto.RegisterFile("comdex/asset/v1beta1/gov.proto", fileDescriptor_31c5aab0360b917f) } var fileDescriptor_31c5aab0360b917f = []byte{ - // 474 bytes of a gzipped FileDescriptorProto + // 500 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x95, 0x4f, 0x8b, 0xd3, 0x40, - 0x18, 0xc6, 0x33, 0xd6, 0xae, 0x38, 0x2b, 0xb2, 0xc6, 0x55, 0x62, 0xc4, 0x49, 0x89, 0x20, 0x7b, - 0x31, 0x61, 0x15, 0xff, 0xde, 0x52, 0x05, 0xf1, 0x20, 0xac, 0x45, 0x2f, 0xde, 0xa6, 0x9d, 0xd9, - 0x38, 0x90, 0x76, 0x86, 0x64, 0x5a, 0xec, 0xb7, 0xf0, 0x63, 0x28, 0x88, 0x78, 0xf0, 0xe0, 0xdd, - 0x4b, 0x8f, 0x3d, 0x7a, 0x2a, 0x9a, 0x7e, 0x83, 0x7e, 0x02, 0x99, 0x3f, 0x81, 0x1e, 0x52, 0xb0, - 0x1e, 0x52, 0xf6, 0x96, 0xe4, 0x79, 0xde, 0x37, 0xbf, 0x79, 0x78, 0x67, 0x06, 0xa2, 0x01, 0x1f, - 0x12, 0xfa, 0x21, 0xc6, 0x45, 0x41, 0x65, 0x3c, 0x39, 0xee, 0x53, 0x89, 0x8f, 0xe3, 0x94, 0x4f, - 0x22, 0x91, 0x73, 0xc9, 0xdd, 0x43, 0xa3, 0x47, 0x5a, 0x8f, 0xac, 0xee, 0x1f, 0xa6, 0x3c, 0xe5, - 0xda, 0x10, 0xab, 0x27, 0xe3, 0xf5, 0x3b, 0xb5, 0xbd, 0x4c, 0xa5, 0x71, 0x04, 0xb5, 0x0e, 0x81, - 0x59, 0x6e, 0x0d, 0xf5, 0x38, 0x58, 0x08, 0xa3, 0x87, 0xdf, 0x00, 0xbc, 0x92, 0x10, 0x92, 0x28, - 0xb9, 0x38, 0xc9, 0xb9, 0xe0, 0x05, 0xce, 0xdc, 0x3b, 0xb0, 0x2d, 0x99, 0xcc, 0xa8, 0x07, 0x3a, - 0xe0, 0xe8, 0x62, 0xf7, 0x60, 0xb5, 0x08, 0x2e, 0x4d, 0xf1, 0x30, 0x7b, 0x1a, 0xea, 0xcf, 0x61, - 0xcf, 0xc8, 0xee, 0x63, 0xb8, 0x4f, 0x68, 0x31, 0xc8, 0x99, 0x90, 0x8c, 0x8f, 0xbc, 0x73, 0xda, - 0x7d, 0x7d, 0xb5, 0x08, 0x5c, 0xe3, 0x5e, 0x13, 0xc3, 0xde, 0xba, 0xd5, 0x7d, 0x02, 0xf7, 0x34, - 0x52, 0xe1, 0xb5, 0x3a, 0xe0, 0x68, 0xff, 0xde, 0xcd, 0xa8, 0x2e, 0x97, 0x48, 0x73, 0x75, 0xcf, - 0xcf, 0x16, 0x81, 0xd3, 0xb3, 0x05, 0xe1, 0x0f, 0x00, 0x6f, 0x24, 0x84, 0xbc, 0x1a, 0x67, 0x92, - 0x89, 0x8c, 0xee, 0x14, 0xbd, 0xb5, 0x1d, 0xfa, 0x77, 0x00, 0xbd, 0x35, 0xf4, 0x13, 0xcc, 0xf2, - 0x26, 0xc9, 0x1f, 0xc2, 0xb6, 0x1a, 0x8d, 0x0a, 0xdc, 0xaf, 0x07, 0x57, 0x54, 0x96, 0xdb, 0xd8, - 0xd5, 0x90, 0x5c, 0x7d, 0x2b, 0x08, 0x96, 0x26, 0xec, 0x06, 0x89, 0x1f, 0xc1, 0xb6, 0x86, 0xfb, - 0xf7, 0x29, 0x31, 0xfe, 0xf0, 0x0b, 0x80, 0x07, 0x09, 0x21, 0x3b, 0x4c, 0x18, 0x6c, 0x93, 0xf0, - 0x57, 0x00, 0x5d, 0x93, 0xb0, 0xd2, 0xce, 0x00, 0xf0, 0x67, 0x00, 0x2f, 0xab, 0x73, 0x43, 0x88, - 0x06, 0x61, 0x1f, 0xc0, 0x16, 0x16, 0xc2, 0xa2, 0xde, 0xda, 0x30, 0x0b, 0x42, 0x3c, 0xc7, 0x12, - 0x5b, 0x5a, 0xe5, 0x0f, 0x7f, 0x02, 0xe8, 0x9b, 0x70, 0x5f, 0xf0, 0xc9, 0x1b, 0x36, 0xa4, 0x2f, - 0x47, 0xcd, 0x72, 0x3f, 0x83, 0x17, 0x52, 0xf3, 0x67, 0xcb, 0x7e, 0x7b, 0x23, 0x7b, 0x32, 0x22, - 0x16, 0xd2, 0xae, 0xa0, 0xaa, 0x54, 0x9b, 0xf0, 0x5a, 0x75, 0x52, 0x37, 0xbd, 0x80, 0xff, 0x0b, - 0xbe, 0xfb, 0x7a, 0xf6, 0x07, 0x39, 0x9f, 0x4a, 0xe4, 0xcc, 0x4a, 0x04, 0xe6, 0x25, 0x02, 0xbf, - 0x4b, 0x04, 0x3e, 0x2e, 0x91, 0x33, 0x5f, 0x22, 0xe7, 0xd7, 0x12, 0x39, 0xef, 0xe2, 0x94, 0xc9, - 0xf7, 0xe3, 0xbe, 0xea, 0x18, 0x9b, 0xae, 0x77, 0xf9, 0xe9, 0x29, 0x1b, 0x30, 0x9c, 0xd9, 0xf7, - 0xb8, 0xba, 0xbb, 0xe4, 0x54, 0xd0, 0xa2, 0xbf, 0xa7, 0xaf, 0xad, 0xfb, 0x7f, 0x03, 0x00, 0x00, - 0xff, 0xff, 0xd1, 0x82, 0xcb, 0xa3, 0x67, 0x07, 0x00, 0x00, + 0x18, 0xc6, 0x33, 0xd6, 0xae, 0xf8, 0xae, 0xc8, 0x1a, 0x57, 0xa9, 0x15, 0x27, 0x25, 0x82, 0xec, + 0xc5, 0x84, 0x55, 0xfc, 0x7b, 0x4b, 0x55, 0xc4, 0x83, 0xb0, 0x16, 0xbd, 0x78, 0x9b, 0x76, 0x66, + 0xe3, 0x40, 0xda, 0x19, 0x92, 0xd9, 0xe2, 0x7e, 0x0b, 0x3f, 0x86, 0x82, 0x88, 0x07, 0x0f, 0xde, + 0xbd, 0xd4, 0xdb, 0x1e, 0x3d, 0x15, 0x6d, 0xbf, 0xc1, 0x7e, 0x02, 0x99, 0x3f, 0x91, 0x80, 0x59, + 0x71, 0x3d, 0xa4, 0x78, 0x6b, 0xf3, 0x3c, 0xef, 0xcc, 0x6f, 0x1e, 0xde, 0x79, 0x07, 0xf0, 0x48, + 0x8c, 0x29, 0x7b, 0x1d, 0x93, 0xa2, 0x60, 0x2a, 0x9e, 0x6e, 0x0f, 0x99, 0x22, 0xdb, 0x71, 0x2a, + 0xa6, 0x91, 0xcc, 0x85, 0x12, 0xfe, 0xa6, 0xd5, 0x23, 0xa3, 0x47, 0x4e, 0xef, 0x6e, 0xa6, 0x22, + 0x15, 0xc6, 0x10, 0xeb, 0x5f, 0xd6, 0xdb, 0xed, 0xd5, 0xae, 0x65, 0x2b, 0xad, 0x23, 0xa8, 0x75, + 0x48, 0xc2, 0x73, 0x67, 0xa8, 0xc7, 0x21, 0x52, 0x5a, 0x3d, 0xfc, 0x88, 0xe0, 0x5c, 0x42, 0x69, + 0xa2, 0xe5, 0x62, 0x27, 0x17, 0x52, 0x14, 0x24, 0xf3, 0xaf, 0x41, 0x5b, 0x71, 0x95, 0xb1, 0x0e, + 0xea, 0xa1, 0xad, 0xd3, 0xfd, 0x8d, 0xc3, 0x79, 0x70, 0x66, 0x9f, 0x8c, 0xb3, 0xfb, 0xa1, 0xf9, + 0x1c, 0x0e, 0xac, 0xec, 0xdf, 0x85, 0x75, 0xca, 0x8a, 0x51, 0xce, 0xa5, 0xe2, 0x62, 0xd2, 0x39, + 0x61, 0xdc, 0x17, 0x0f, 0xe7, 0x81, 0x6f, 0xdd, 0x15, 0x31, 0x1c, 0x54, 0xad, 0xfe, 0x3d, 0x58, + 0x33, 0x48, 0x45, 0xa7, 0xd5, 0x43, 0x5b, 0xeb, 0x37, 0x2e, 0x47, 0x75, 0xb9, 0x44, 0x86, 0xab, + 0x7f, 0x72, 0x36, 0x0f, 0xbc, 0x81, 0x2b, 0x08, 0x3f, 0x23, 0xb8, 0x94, 0x50, 0xfa, 0x74, 0x2f, + 0x53, 0x5c, 0x66, 0x6c, 0xa5, 0xe8, 0xad, 0xe3, 0xa1, 0x7f, 0x42, 0xd0, 0xa9, 0xa0, 0xef, 0x10, + 0x9e, 0x37, 0x49, 0x7e, 0x1b, 0xda, 0xba, 0x35, 0x4a, 0xf0, 0x6e, 0x3d, 0xb8, 0xa6, 0x72, 0xdc, + 0xd6, 0xae, 0x9b, 0xe4, 0xfc, 0x0b, 0x49, 0x89, 0xb2, 0x61, 0x37, 0x48, 0x7c, 0x07, 0xda, 0x06, + 0xee, 0xef, 0xbb, 0xc4, 0xfa, 0xc3, 0xf7, 0x08, 0x36, 0x12, 0x4a, 0x57, 0x98, 0x30, 0x3a, 0x4e, + 0xc2, 0x1f, 0x10, 0xf8, 0x36, 0x61, 0xad, 0xfd, 0x07, 0xc0, 0xef, 0x10, 0x9c, 0xd5, 0x73, 0x43, + 0xca, 0x06, 0x61, 0x6f, 0x41, 0x8b, 0x48, 0xe9, 0x50, 0xaf, 0x1c, 0xd1, 0x0b, 0x52, 0x3e, 0x24, + 0x8a, 0x38, 0x5a, 0xed, 0x0f, 0xbf, 0x20, 0xe8, 0xda, 0x70, 0x1f, 0x8b, 0xe9, 0x73, 0x3e, 0x66, + 0x4f, 0x26, 0xcd, 0x72, 0x3f, 0x80, 0x53, 0xa9, 0xdd, 0xd9, 0xb1, 0x5f, 0x3d, 0x92, 0x3d, 0x99, + 0x50, 0x07, 0xe9, 0x4e, 0x50, 0x56, 0xea, 0x4b, 0x78, 0xa1, 0x9c, 0xd4, 0x4d, 0x1f, 0xe0, 0x1f, + 0x83, 0xff, 0x8a, 0x00, 0xff, 0x3e, 0xa9, 0x1b, 0xbe, 0x92, 0x8f, 0x00, 0xc8, 0xaf, 0x8d, 0xdd, + 0xe4, 0x0b, 0xfe, 0x30, 0x47, 0x2a, 0xbd, 0x5e, 0x29, 0xec, 0x3f, 0x9b, 0xfd, 0xc0, 0xde, 0xdb, + 0x05, 0xf6, 0x66, 0x0b, 0x8c, 0x0e, 0x16, 0x18, 0x7d, 0x5f, 0x60, 0xf4, 0x66, 0x89, 0xbd, 0x83, + 0x25, 0xf6, 0xbe, 0x2d, 0xb1, 0xf7, 0x32, 0x4e, 0xb9, 0x7a, 0xb5, 0x37, 0xd4, 0x4b, 0xc7, 0x76, + 0xf9, 0xeb, 0x62, 0x77, 0x97, 0x8f, 0x38, 0xc9, 0xdc, 0xff, 0xb8, 0x7c, 0x87, 0xd5, 0xbe, 0x64, + 0xc5, 0x70, 0xcd, 0x3c, 0xc1, 0x37, 0x7f, 0x06, 0x00, 0x00, 0xff, 0xff, 0x44, 0x27, 0xbf, 0x14, + 0x33, 0x08, 0x00, 0x00, } func (m *AddAssetsProposal) Marshal() (dAtA []byte, err error) { @@ -853,6 +895,57 @@ func (m *AddAssetInAppProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *AddMultipleAssetsPairsProposal) 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 *AddMultipleAssetsPairsProposal) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AddMultipleAssetsPairsProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.AssetsPair) > 0 { + for iNdEx := len(m.AssetsPair) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AssetsPair[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGov(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintGov(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 = encodeVarintGov(dAtA, i, uint64(len(m.Title))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func encodeVarintGov(dAtA []byte, offset int, v uint64) int { offset -= sovGov(v) base := offset @@ -1043,6 +1136,29 @@ func (m *AddAssetInAppProposal) Size() (n int) { return n } +func (m *AddMultipleAssetsPairsProposal) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Title) + if l > 0 { + n += 1 + l + sovGov(uint64(l)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovGov(uint64(l)) + } + if len(m.AssetsPair) > 0 { + for _, e := range m.AssetsPair { + l = e.Size() + n += 1 + l + sovGov(uint64(l)) + } + } + return n +} + func sovGov(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -2374,6 +2490,154 @@ func (m *AddAssetInAppProposal) Unmarshal(dAtA []byte) error { } return nil } +func (m *AddMultipleAssetsPairsProposal) 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 ErrIntOverflowGov + } + 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: AddMultipleAssetsPairsProposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AddMultipleAssetsPairsProposal: 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 ErrIntOverflowGov + } + 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 ErrInvalidLengthGov + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGov + } + 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 ErrIntOverflowGov + } + 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 ErrInvalidLengthGov + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGov + } + 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 AssetsPair", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGov + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGov + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGov + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AssetsPair = append(m.AssetsPair, AssetPair{}) + if err := m.AssetsPair[len(m.AssetsPair)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGov(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGov + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipGov(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/asset/types/pair.pb.go b/x/asset/types/pair.pb.go index 87d3b37c4..45c132d80 100644 --- a/x/asset/types/pair.pb.go +++ b/x/asset/types/pair.pb.go @@ -5,6 +5,7 @@ package types import ( fmt "fmt" + github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" _ "github.com/gogo/protobuf/gogoproto" proto "github.com/gogo/protobuf/proto" io "io" @@ -103,35 +104,93 @@ func (m *PairInfo) XXX_DiscardUnknown() { var xxx_messageInfo_PairInfo proto.InternalMessageInfo +type AssetPair struct { + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty" yaml:"name"` + Denom string `protobuf:"bytes,3,opt,name=denom,proto3" json:"denom,omitempty" yaml:"denom"` + Decimals github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,4,opt,name=decimals,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"decimals" yaml:"decimals"` + IsOnChain bool `protobuf:"varint,5,opt,name=is_on_chain,json=isOnChain,proto3" json:"is_on_chain,omitempty" yaml:"is_on_chain"` + IsOraclePriceRequired bool `protobuf:"varint,6,opt,name=is_oracle_price_required,json=isOraclePriceRequired,proto3" json:"is_oracle_price_required,omitempty" yaml:"is_oracle_price_required"` + IsCdpMintable bool `protobuf:"varint,7,opt,name=is_cdp_mintable,json=isCdpMintable,proto3" json:"is_cdp_mintable,omitempty" yaml:"is_cdp_mintable"` + AssetOut uint64 `protobuf:"varint,8,opt,name=asset_out,json=assetOut,proto3" json:"asset_out,omitempty" yaml:"asset_out"` +} + +func (m *AssetPair) Reset() { *m = AssetPair{} } +func (m *AssetPair) String() string { return proto.CompactTextString(m) } +func (*AssetPair) ProtoMessage() {} +func (*AssetPair) Descriptor() ([]byte, []int) { + return fileDescriptor_65bd24918e5ac160, []int{2} +} +func (m *AssetPair) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AssetPair) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AssetPair.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 *AssetPair) XXX_Merge(src proto.Message) { + xxx_messageInfo_AssetPair.Merge(m, src) +} +func (m *AssetPair) XXX_Size() int { + return m.Size() +} +func (m *AssetPair) XXX_DiscardUnknown() { + xxx_messageInfo_AssetPair.DiscardUnknown(m) +} + +var xxx_messageInfo_AssetPair proto.InternalMessageInfo + func init() { proto.RegisterType((*Pair)(nil), "comdex.asset.v1beta1.Pair") proto.RegisterType((*PairInfo)(nil), "comdex.asset.v1beta1.PairInfo") + proto.RegisterType((*AssetPair)(nil), "comdex.asset.v1beta1.AssetPair") } func init() { proto.RegisterFile("comdex/asset/v1beta1/pair.proto", fileDescriptor_65bd24918e5ac160) } var fileDescriptor_65bd24918e5ac160 = []byte{ - // 308 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4f, 0xce, 0xcf, 0x4d, - 0x49, 0xad, 0xd0, 0x4f, 0x2c, 0x2e, 0x4e, 0x2d, 0xd1, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, - 0xd4, 0x2f, 0x48, 0xcc, 0x2c, 0xd2, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x81, 0x28, 0xd0, - 0x03, 0x2b, 0xd0, 0x83, 0x2a, 0x90, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, 0x2b, 0xd0, 0x07, 0xb1, - 0x20, 0x6a, 0x95, 0x2a, 0xb9, 0x58, 0x02, 0x12, 0x33, 0x8b, 0x84, 0xf8, 0xb8, 0x98, 0x32, 0x53, - 0x24, 0x18, 0x15, 0x18, 0x35, 0x58, 0x82, 0x98, 0x32, 0x53, 0x84, 0xf4, 0xb8, 0x38, 0xc0, 0xda, - 0xe3, 0x33, 0xf3, 0x24, 0x98, 0x40, 0xa2, 0x4e, 0xc2, 0x9f, 0xee, 0xc9, 0xf3, 0x57, 0x26, 0xe6, - 0xe6, 0x58, 0x29, 0xc1, 0x64, 0x94, 0x82, 0xd8, 0xc1, 0x4c, 0xcf, 0x3c, 0x21, 0x43, 0x2e, 0x4e, - 0x88, 0x68, 0x7e, 0x69, 0x89, 0x04, 0x33, 0x58, 0x83, 0xc8, 0xa7, 0x7b, 0xf2, 0x02, 0xc8, 0x1a, - 0xf2, 0x4b, 0x4b, 0x94, 0x82, 0x20, 0xc6, 0xfa, 0x97, 0x96, 0x28, 0xdd, 0x64, 0xe4, 0xe2, 0x00, - 0xd9, 0xed, 0x99, 0x97, 0x96, 0x4f, 0xb1, 0xfd, 0xda, 0x5c, 0x1c, 0x29, 0xa9, 0x79, 0xf9, 0xb9, - 0x20, 0xf5, 0x20, 0xeb, 0x39, 0x9d, 0x04, 0x3e, 0xdd, 0x93, 0xe7, 0x81, 0xa8, 0x07, 0xcb, 0x28, - 0x05, 0xb1, 0x83, 0x69, 0x74, 0xc7, 0xb2, 0x10, 0xe3, 0x58, 0x21, 0x5d, 0x2e, 0x4e, 0x88, 0xf9, - 0x20, 0x2d, 0xac, 0x38, 0x2c, 0x80, 0x38, 0xc1, 0xbf, 0xb4, 0xc4, 0x29, 0xf0, 0xc4, 0x43, 0x39, - 0x86, 0x15, 0x8f, 0xe4, 0x18, 0x4e, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, - 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0x4a, - 0x3f, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x1f, 0x12, 0x5f, 0xba, 0xf9, - 0x69, 0x69, 0x99, 0xc9, 0x99, 0x89, 0x39, 0x50, 0xbe, 0x3e, 0x2c, 0x8a, 0x4b, 0x2a, 0x0b, 0x52, - 0x8b, 0x93, 0xd8, 0xc0, 0x11, 0x66, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xb1, 0xe6, 0xaf, 0xf4, - 0xff, 0x01, 0x00, 0x00, + // 517 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x53, 0xcf, 0x6e, 0xd3, 0x30, + 0x18, 0x4f, 0xb6, 0x6e, 0x6d, 0x3c, 0xa0, 0x93, 0x29, 0x53, 0xb4, 0x43, 0x8c, 0x32, 0x69, 0x42, + 0x42, 0x4d, 0x54, 0x21, 0x71, 0xe0, 0xb6, 0xec, 0xd4, 0x03, 0xea, 0xc8, 0x11, 0x81, 0x22, 0x37, + 0x71, 0x3b, 0x8b, 0xc6, 0x0e, 0xb1, 0x8b, 0xe8, 0x5b, 0xf0, 0x18, 0x3c, 0x4a, 0x8f, 0x3b, 0x70, + 0x00, 0x0e, 0x11, 0xb4, 0x6f, 0x90, 0x27, 0x40, 0xb6, 0x53, 0xd6, 0xa1, 0x4d, 0x9a, 0xc4, 0x29, + 0x9f, 0xbf, 0xdf, 0x9f, 0xcf, 0x3f, 0xc7, 0x06, 0x28, 0xe5, 0x79, 0x46, 0x3e, 0x87, 0x58, 0x08, + 0x22, 0xc3, 0x4f, 0x83, 0x31, 0x91, 0x78, 0x10, 0x16, 0x98, 0x96, 0x41, 0x51, 0x72, 0xc9, 0x61, + 0xcf, 0x10, 0x02, 0x4d, 0x08, 0x1a, 0xc2, 0x71, 0x6f, 0xca, 0xa7, 0x5c, 0x13, 0x42, 0x55, 0x19, + 0xae, 0xbf, 0x00, 0xad, 0x0b, 0x4c, 0x4b, 0xf8, 0x08, 0xec, 0xd0, 0xcc, 0xb5, 0x9f, 0xda, 0xcf, + 0x5a, 0xf1, 0x0e, 0xcd, 0x60, 0x00, 0x3a, 0x5a, 0x9e, 0x50, 0xe6, 0xee, 0xa8, 0x6e, 0xf4, 0xb8, + 0xae, 0x50, 0x77, 0x81, 0xf3, 0xd9, 0x2b, 0x7f, 0x83, 0xf8, 0x71, 0x5b, 0x97, 0x43, 0x06, 0x07, + 0xc0, 0x31, 0x5d, 0x3e, 0x97, 0xee, 0xae, 0x16, 0xf4, 0xea, 0x0a, 0x1d, 0x6e, 0x0b, 0xf8, 0x5c, + 0xfa, 0xb1, 0xb1, 0x1d, 0xcd, 0xa5, 0xff, 0xc3, 0x06, 0x1d, 0x35, 0x7b, 0xc8, 0x26, 0xfc, 0xbf, + 0xe7, 0x3f, 0x07, 0x9d, 0x8c, 0x30, 0x9e, 0x2b, 0xbe, 0x1a, 0xef, 0x44, 0x87, 0x75, 0x85, 0x1e, + 0x18, 0xbe, 0x46, 0xfc, 0xb8, 0xad, 0xbf, 0xff, 0x6e, 0xb6, 0x75, 0x9f, 0xcd, 0xc2, 0x3e, 0x70, + 0x8c, 0xbf, 0x92, 0xec, 0xdd, 0x31, 0xc0, 0x6c, 0x41, 0x65, 0xfb, 0xb6, 0x0b, 0x9c, 0x33, 0xa5, + 0xbd, 0xf5, 0x70, 0x4f, 0x40, 0x8b, 0xe1, 0x9c, 0xe8, 0x60, 0x4e, 0xd4, 0xad, 0x2b, 0x74, 0x60, + 0x7c, 0x54, 0xd7, 0x8f, 0x35, 0x08, 0x4f, 0xc1, 0x9e, 0xb6, 0xbb, 0x33, 0x8e, 0x81, 0xe1, 0x7b, + 0x95, 0x3c, 0xa5, 0x39, 0x9e, 0x09, 0x9d, 0xc5, 0x89, 0xce, 0x96, 0x15, 0xb2, 0x7e, 0x56, 0xe8, + 0x74, 0x4a, 0xe5, 0xe5, 0x7c, 0x1c, 0xa4, 0x3c, 0x0f, 0x53, 0x2e, 0x72, 0x2e, 0x9a, 0x4f, 0x5f, + 0x64, 0x1f, 0x42, 0xb9, 0x28, 0x88, 0x08, 0x86, 0x4c, 0x5e, 0x9f, 0xeb, 0xc6, 0x47, 0x27, 0x31, + 0x25, 0x7c, 0x09, 0x0e, 0xa8, 0x48, 0x38, 0x4b, 0xd2, 0x4b, 0x4c, 0x99, 0x8e, 0xde, 0x89, 0x8e, + 0xea, 0x0a, 0x41, 0xa3, 0xd9, 0x02, 0xfd, 0xd8, 0xa1, 0x62, 0xc4, 0xce, 0x55, 0x0d, 0xdf, 0x01, + 0x57, 0x41, 0x25, 0x4e, 0x67, 0x24, 0x29, 0x4a, 0x9a, 0x92, 0xa4, 0x24, 0x1f, 0xe7, 0xb4, 0x24, + 0x99, 0xbb, 0xaf, 0x4d, 0x4e, 0xea, 0x0a, 0xa1, 0x6b, 0x93, 0xdb, 0x98, 0x7e, 0xfc, 0x84, 0x8a, + 0x91, 0x46, 0x2e, 0x14, 0x10, 0x37, 0x7d, 0x18, 0x81, 0x2e, 0x15, 0x49, 0x9a, 0x15, 0x49, 0x4e, + 0x99, 0xc4, 0xe3, 0x19, 0x71, 0xdb, 0xda, 0xf4, 0xb8, 0xae, 0xd0, 0xd1, 0x5f, 0xd3, 0x6d, 0x82, + 0x1f, 0x3f, 0xa4, 0xe2, 0x3c, 0x2b, 0x5e, 0x37, 0xeb, 0x9b, 0xb7, 0xa0, 0x73, 0x9f, 0x5b, 0x10, + 0xbd, 0x59, 0xfe, 0xf6, 0xac, 0xaf, 0x2b, 0xcf, 0x5a, 0xae, 0x3c, 0xfb, 0x6a, 0xe5, 0xd9, 0xbf, + 0x56, 0x9e, 0xfd, 0x65, 0xed, 0x59, 0x57, 0x6b, 0xcf, 0xfa, 0xbe, 0xf6, 0xac, 0xb7, 0xe1, 0x8d, + 0x33, 0x57, 0xcf, 0xb0, 0xcf, 0x27, 0x13, 0x9a, 0x52, 0x3c, 0x6b, 0xd6, 0xe1, 0xe6, 0xe5, 0xea, + 0x1f, 0x30, 0xde, 0xd7, 0xef, 0xf0, 0xc5, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc9, 0xbe, 0x85, + 0x72, 0xd6, 0x03, 0x00, 0x00, } func (m *Pair) Marshal() (dAtA []byte, err error) { @@ -224,6 +283,93 @@ func (m *PairInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *AssetPair) 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 *AssetPair) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AssetPair) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.AssetOut != 0 { + i = encodeVarintPair(dAtA, i, uint64(m.AssetOut)) + i-- + dAtA[i] = 0x40 + } + if m.IsCdpMintable { + i-- + if m.IsCdpMintable { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x38 + } + if m.IsOraclePriceRequired { + i-- + if m.IsOraclePriceRequired { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x30 + } + if m.IsOnChain { + i-- + if m.IsOnChain { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x28 + } + { + size := m.Decimals.Size() + i -= size + if _, err := m.Decimals.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintPair(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintPair(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0x1a + } + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintPair(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0x12 + } + if m.Id != 0 { + i = encodeVarintPair(dAtA, i, uint64(m.Id)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func encodeVarintPair(dAtA []byte, offset int, v uint64) int { offset -= sovPair(v) base := offset @@ -279,6 +425,40 @@ func (m *PairInfo) Size() (n int) { return n } +func (m *AssetPair) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Id != 0 { + n += 1 + sovPair(uint64(m.Id)) + } + l = len(m.Name) + if l > 0 { + n += 1 + l + sovPair(uint64(l)) + } + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovPair(uint64(l)) + } + l = m.Decimals.Size() + n += 1 + l + sovPair(uint64(l)) + if m.IsOnChain { + n += 2 + } + if m.IsOraclePriceRequired { + n += 2 + } + if m.IsCdpMintable { + n += 2 + } + if m.AssetOut != 0 { + n += 1 + sovPair(uint64(m.AssetOut)) + } + return n +} + func sovPair(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -563,6 +743,252 @@ func (m *PairInfo) Unmarshal(dAtA []byte) error { } return nil } +func (m *AssetPair) 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 ErrIntOverflowPair + } + 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: AssetPair: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AssetPair: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + m.Id = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPair + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Id |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPair + } + 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 ErrInvalidLengthPair + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPair + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPair + } + 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 ErrInvalidLengthPair + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPair + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Decimals", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPair + } + 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 ErrInvalidLengthPair + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPair + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Decimals.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsOnChain", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPair + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.IsOnChain = bool(v != 0) + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsOraclePriceRequired", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPair + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.IsOraclePriceRequired = bool(v != 0) + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsCdpMintable", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPair + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.IsCdpMintable = bool(v != 0) + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AssetOut", wireType) + } + m.AssetOut = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPair + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AssetOut |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipPair(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPair + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipPair(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/lend/client/cli/flags.go b/x/lend/client/cli/flags.go index 61787379a..1e8986afb 100644 --- a/x/lend/client/cli/flags.go +++ b/x/lend/client/cli/flags.go @@ -14,6 +14,7 @@ const ( FlagAddLendPoolFile = "add-lend-pool-file" FlagAddAssetRatesParamsFile = "add-asset-rates-params-file" FlagSetAuctionParamsFile = "add-auction-params-file" + FlagAddLendPoolPairsFile = "add-lend-pool-pairs-file" ) func ParseUint64SliceFromString(s string, separator string) ([]uint64, error) { @@ -68,6 +69,13 @@ func FlagSetAddLendPoolMapping() *flag.FlagSet { return fs } +func FlagSetAddLendPoolPairsMapping() *flag.FlagSet { + fs := flag.NewFlagSet("", flag.ContinueOnError) + + fs.String(FlagAddLendPoolPairsFile, "", "add new lend pool pairs json file path") + return fs +} + func FlagSetAddAssetRatesParamsMapping() *flag.FlagSet { fs := flag.NewFlagSet("", flag.ContinueOnError) @@ -104,6 +112,18 @@ type addLendPoolInputs struct { Deposit string } +type addLendPoolPairsInputs struct { + ModuleName string `json:"module_name"` + AssetID string `json:"asset_id"` + AssetTransitType string `json:"asset_transit_type"` + SupplyCap string `json:"supply_cap"` + CPoolName string `json:"c_pool_name"` + MinUSDValueLeft string `json:"min_usd_value_left"` + Title string + Description string + Deposit string +} + type addAssetRatesParamsInputs struct { AssetID string `json:"asset_id"` UOptimal string `json:"u_optimal"` diff --git a/x/lend/client/cli/parse.go b/x/lend/client/cli/parse.go index e44673ba4..bc4ed60b0 100644 --- a/x/lend/client/cli/parse.go +++ b/x/lend/client/cli/parse.go @@ -14,6 +14,7 @@ type ( XAddLendPoolInputs addLendPoolInputs XAddAssetRatesParamsInputs addAssetRatesParamsInputs XSetAuctionParamsInputs addNewAuctionParamsInputs + XAddLendPoolPairsInputs addLendPoolPairsInputs ) type XAddNewLendPairsInputsExceptions struct { @@ -25,6 +26,12 @@ type XAddPoolInputsExceptions struct { XAddLendPoolInputs Other *string // Other won't raise an error } + +type XAddPoolPairsInputsExceptions struct { + XAddLendPoolPairsInputs + Other *string // Other won't raise an error +} + type XAddAssetRatesParamsInputsExceptions struct { XAddAssetRatesParamsInputs Other *string // Other won't raise an error @@ -63,6 +70,19 @@ func (release *addLendPoolInputs) UnmarshalJSON(data []byte) error { return nil } +func (release *addLendPoolPairsInputs) UnmarshalJSON(data []byte) error { + var addPoolParamsE XAddPoolPairsInputsExceptions + dec := json.NewDecoder(bytes.NewReader(data)) + dec.DisallowUnknownFields() // Force + + if err := dec.Decode(&addPoolParamsE); err != nil { + return err + } + + *release = addLendPoolPairsInputs(addPoolParamsE.XAddLendPoolPairsInputs) + return nil +} + func (release *addAssetRatesParamsInputs) UnmarshalJSON(data []byte) error { var addAssetRatesParamsE XAddAssetRatesParamsInputsExceptions dec := json.NewDecoder(bytes.NewReader(data)) @@ -134,6 +154,28 @@ func parseAddPoolFlags(fs *pflag.FlagSet) (*addLendPoolInputs, error) { return addPoolParams, nil } +func parseAddPoolPairsFlags(fs *pflag.FlagSet) (*addLendPoolPairsInputs, error) { + addPoolPairsParams := &addLendPoolPairsInputs{} + addPoolPairsParamsFile, _ := fs.GetString(FlagAddLendPoolPairsFile) + + if addPoolPairsParamsFile == "" { + return nil, fmt.Errorf("must pass in a add new pool json using the --%s flag", FlagAddLendPoolFile) + } + + contents, err := os.ReadFile(addPoolPairsParamsFile) + if err != nil { + return nil, err + } + + // make exception if unknown field exists + err = addPoolPairsParams.UnmarshalJSON(contents) + if err != nil { + return nil, err + } + + return addPoolPairsParams, nil +} + func parseAssetRateStatsFlags(fs *pflag.FlagSet) (*addAssetRatesParamsInputs, error) { addAssetRatesParams := &addAssetRatesParamsInputs{} addAssetRatesParamsFile, _ := fs.GetString(FlagAddAssetRatesParamsFile) diff --git a/x/lend/client/cli/tx.go b/x/lend/client/cli/tx.go index d0e514287..11695f8bd 100644 --- a/x/lend/client/cli/tx.go +++ b/x/lend/client/cli/tx.go @@ -1115,3 +1115,93 @@ func txFundReserveAccounts() *cobra.Command { flags.AddTxFlagsToCmd(cmd) return cmd } + +func CmdAddPoolPairsProposal() *cobra.Command { + cmd := &cobra.Command{ + Use: "add-lend-pool-pairs [flag] ", + Short: "Add lend pool and pairs ", + Args: cobra.ExactArgs(0), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + txf := tx.NewFactoryCLI(clientCtx, cmd.Flags()).WithTxConfig(clientCtx.TxConfig).WithAccountRetriever(clientCtx.AccountRetriever) + + txf, msg, err := NewCreateLendPoolPairs(clientCtx, txf, cmd.Flags()) + if err != nil { + return err + } + + return tx.GenerateOrBroadcastTxWithFactory(clientCtx, txf, msg) + }, + } + + cmd.Flags().AddFlagSet(FlagSetAddLendPoolPairsMapping()) + cmd.Flags().String(cli.FlagProposal, "", "Proposal file path (if this path is given, other proposal flags are ignored)") + return cmd +} + +func NewCreateLendPoolPairs(clientCtx client.Context, txf tx.Factory, fs *flag.FlagSet) (tx.Factory, sdk.Msg, error) { + newLendPool, err := parseAddPoolPairsFlags(fs) + if err != nil { + return txf, nil, fmt.Errorf("failed to parse add lend pool : %w", err) + } + + moduleName := newLendPool.ModuleName + cPoolName := newLendPool.CPoolName + + assetID, err := ParseUint64SliceFromString(newLendPool.AssetID, ",") + if err != nil { + return txf, nil, err + } + + //minUSDValue, err := ParseUint64SliceFromString(newLendPool.MinUSDValueLeft, ",") + //if err != nil { + // return txf, nil, err + //} + + supplyCap, err := ParseDecSliceFromString(newLendPool.SupplyCap, ",") + if err != nil { + return txf, nil, err + } + + assetTransitType, err := ParseUint64SliceFromString(newLendPool.AssetTransitType, ",") + if err != nil { + return txf, nil, err + } + var pool types.PoolPairs + var assetData []*types.AssetDataPoolMapping + + for i := range assetID { + assetDataNew := types.AssetDataPoolMapping{ + AssetID: assetID[i], + AssetTransitType: assetTransitType[i], + SupplyCap: supplyCap[i], + } + assetData = append(assetData, &assetDataNew) + } + minUSDValue := sdk.NewUintFromString(newLendPool.MinUSDValueLeft) + pool = types.PoolPairs{ + ModuleName: moduleName, + CPoolName: cPoolName, + AssetData: assetData, + MinUsdValueLeft: minUSDValue.Uint64(), + } + + from := clientCtx.GetFromAddress() + + deposit, err := sdk.ParseCoinsNormalized(newLendPool.Deposit) + if err != nil { + return txf, nil, err + } + + content := types.NewAddPoolPairsProposal(newLendPool.Title, newLendPool.Description, pool) + + msg, err := govtypes.NewMsgSubmitProposal(content, deposit, from) + if err != nil { + return txf, nil, err + } + + return txf, msg, nil +} diff --git a/x/lend/client/proposal_handler.go b/x/lend/client/proposal_handler.go index 1442a3c3b..52180d910 100644 --- a/x/lend/client/proposal_handler.go +++ b/x/lend/client/proposal_handler.go @@ -15,4 +15,5 @@ var ( AddAssetRatesParamsHandler = govclient.NewProposalHandler(cli.CmdAddNewAssetRatesParamsProposal, rest.AddNewAssetRatesParamsProposalRESTHandler) AddAuctionParamsHandler = govclient.NewProposalHandler(cli.CmdAddNewAuctionParamsProposal, rest.AddNewAuctionParamsProposalRESTHandler) AddMultipleLendPairsHandler = govclient.NewProposalHandler(cli.CmdAddNewMultipleLendPairsProposal, rest.AddNewPairsProposalRESTHandler) + AddPoolPairsHandler = govclient.NewProposalHandler(cli.CmdAddPoolPairsProposal, rest.AddPoolPairsProposalRESTHandler) ) diff --git a/x/lend/client/rest/tx.go b/x/lend/client/rest/tx.go index f7d6a430c..1629193c2 100644 --- a/x/lend/client/rest/tx.go +++ b/x/lend/client/rest/tx.go @@ -49,6 +49,13 @@ func AddPoolProposalRESTHandler(clientCtx client.Context) govrest.ProposalRESTHa } } +func AddPoolPairsProposalRESTHandler(clientCtx client.Context) govrest.ProposalRESTHandler { + return govrest.ProposalRESTHandler{ + SubRoute: "add-lend-pool-pairs", + Handler: AddpoolRESTHandler(clientCtx), + } +} + func AddAssetToPairProposalRESTHandler(clientCtx client.Context) govrest.ProposalRESTHandler { return govrest.ProposalRESTHandler{ SubRoute: "add-asset-to-pair", diff --git a/x/lend/handler.go b/x/lend/handler.go index 7ca46ea6c..f543990ed 100644 --- a/x/lend/handler.go +++ b/x/lend/handler.go @@ -97,6 +97,8 @@ func NewLendHandler(k keeper.Keeper) govtypes.Handler { return handleAddAssetRatesParamsProposal(ctx, k, c) case *types.AddAuctionParamsProposal: return HandleAddAuctionParamsProposal(ctx, k, c) + case *types.AddPoolPairsProposal: + return handleAddPoolPairsProposal(ctx, k, c) default: return errors.Wrapf(types.ErrorUnknownProposalType, "%T", c) @@ -131,3 +133,7 @@ func handleAddAssetRatesParamsProposal(ctx sdk.Context, k keeper.Keeper, p *type func HandleAddAuctionParamsProposal(ctx sdk.Context, k keeper.Keeper, p *types.AddAuctionParamsProposal) error { return k.HandleAddAuctionParamsRecords(ctx, p) } + +func handleAddPoolPairsProposal(ctx sdk.Context, k keeper.Keeper, p *types.AddPoolPairsProposal) error { + return k.HandleAddPoolPairsRecords(ctx, p) +} diff --git a/x/lend/keeper/gov.go b/x/lend/keeper/gov.go index ef4e62632..4b50805ae 100644 --- a/x/lend/keeper/gov.go +++ b/x/lend/keeper/gov.go @@ -33,3 +33,7 @@ func (k Keeper) HandleAddAuctionParamsRecords(ctx sdk.Context, p *types.AddAucti func (k Keeper) HandleMultipleAddWhitelistedPairsRecords(ctx sdk.Context, p *types.MultipleLendPairsProposal) error { return k.AddLendPairsRecords(ctx, p.Pairs...) } + +func (k Keeper) HandleAddPoolPairsRecords(ctx sdk.Context, p *types.AddPoolPairsProposal) error { + return k.AddPoolsPairsRecords(ctx, p.PoolPairs) +} diff --git a/x/lend/keeper/msg_server_test.go b/x/lend/keeper/msg_server_test.go index dc5133b82..cc3ea21cb 100644 --- a/x/lend/keeper/msg_server_test.go +++ b/x/lend/keeper/msg_server_test.go @@ -46,7 +46,7 @@ func (s *KeeperTestSuite) TestMsgLend() { SupplyCap: sdk.NewDec(3000000000000000000), } assetDataPoolOne = append(assetDataPoolOne, assetDataPoolOneAssetOne, assetDataPoolOneAssetTwo, assetDataPoolOneAssetThree) - assetDataPoolTwo = append(assetDataPoolOne, assetDataPoolTwoAssetFour, assetDataPoolOneAssetTwo, assetDataPoolOneAssetThree) + assetDataPoolTwo = append(assetDataPoolTwo, assetDataPoolTwoAssetFour, assetDataPoolOneAssetOne, assetDataPoolOneAssetThree) poolOneID := s.CreateNewPool("cmdx", "CMDX-ATOM-CMST", assetDataPoolOne) poolTwoID := s.CreateNewPool("osmo", "OSMO-ATOM-CMST", assetDataPoolTwo) diff --git a/x/lend/keeper/pair.go b/x/lend/keeper/pair.go index ca67a7ba6..e4cd26ff6 100644 --- a/x/lend/keeper/pair.go +++ b/x/lend/keeper/pair.go @@ -83,6 +83,174 @@ func (k Keeper) AddPoolRecords(ctx sdk.Context, pool types.Pool) error { return nil } +func (k Keeper) AddPoolsPairsRecords(ctx sdk.Context, pool types.PoolPairs) error { + for _, v := range pool.AssetData { + _, found := k.Asset.GetAsset(ctx, v.AssetID) + if !found { + return types.ErrorAssetDoesNotExist + } + } + + poolID := k.GetPoolID(ctx) + newPool := types.Pool{ + PoolID: poolID + 1, + ModuleName: pool.ModuleName, + CPoolName: pool.CPoolName, + AssetData: pool.AssetData, + } + var assetIDPair []uint64 + var mainAssetCurrentPool uint64 + for _, v := range pool.AssetData { + var assetStats types.PoolAssetLBMapping + assetStats.PoolID = newPool.PoolID + assetStats.AssetID = v.AssetID + assetStats.TotalBorrowed = sdk.ZeroInt() + assetStats.TotalStableBorrowed = sdk.ZeroInt() + assetStats.TotalLend = sdk.ZeroInt() + assetStats.TotalInterestAccumulated = sdk.ZeroInt() + k.SetAssetStatsByPoolIDAndAssetID(ctx, assetStats) + k.UpdateAPR(ctx, newPool.PoolID, v.AssetID) + reserveBuybackStats, found := k.GetReserveBuybackAssetData(ctx, v.AssetID) + if !found { + reserveBuybackStats.AssetID = v.AssetID + reserveBuybackStats.ReserveAmount = sdk.ZeroInt() + reserveBuybackStats.BuybackAmount = sdk.ZeroInt() + k.SetReserveBuybackAssetData(ctx, reserveBuybackStats) + reserveStat := types.AllReserveStats{ + AssetID: v.AssetID, + AmountOutFromReserveToLenders: sdk.ZeroInt(), + AmountOutFromReserveForAuction: sdk.ZeroInt(), + AmountInFromLiqPenalty: sdk.ZeroInt(), + AmountInFromRepayments: reserveBuybackStats.BuybackAmount.Add(reserveBuybackStats.ReserveAmount), + TotalAmountOutToLenders: sdk.ZeroInt(), + } + k.SetAllReserveStatsByAssetID(ctx, reserveStat) + } + assetIDPair = append(assetIDPair, v.AssetID) + if v.AssetTransitType == 1 { + mainAssetCurrentPool = v.AssetID + } + } + + k.SetPool(ctx, newPool) + k.SetPoolID(ctx, newPool.PoolID) + // Add same pool pairs for the specific pool + // Add inter-pool pairs by fetching all the previous pools + // create pair mapping for individual pairs + + intraPoolPairs := CreatePairs(assetIDPair) // returns {{1,2},{2,1}} + for _, pairs := range intraPoolPairs { + + id := k.GetLendPairID(ctx) + pair := types.Extended_Pair{ + Id: id + 1, + AssetIn: pairs[0], + AssetOut: pairs[1], + IsInterPool: false, + AssetOutPoolID: poolID + 1, + MinUsdValueLeft: pool.MinUsdValueLeft, + } + k.SetLendPairID(ctx, pair.Id) + k.SetLendPair(ctx, pair) + + //var assetToPair types.AssetToPairMapping + assetToPair, found := k.GetAssetToPair(ctx, pair.AssetIn, poolID+1) + if !found { + assetToPair.AssetID = pair.AssetIn + assetToPair.PoolID = poolID + 1 // here asset IN and Out Pool are same + assetToPair.PairID = append(assetToPair.PairID, pair.Id) + } else { + assetToPair.PairID = append(assetToPair.PairID, pair.Id) + } + k.SetAssetToPair(ctx, assetToPair) + } + + // Plan: + // first call all previous pools and get their transit asset type == 1 + // store data and, first create pair as current cPool main asset as assetIn and other {{poolID, mainAssetID}} as assetOut + // In second step reverse the pair + + pools := k.GetPools(ctx) + var diffPoolID, mainAssetID []uint64 + if len(pools) > 1 { + for _, cPool := range pools { + if cPool.PoolID == poolID+1 { + continue + } + for _, ad := range cPool.AssetData { + if ad.AssetTransitType == 1 { + diffPoolID = append(diffPoolID, cPool.PoolID) + mainAssetID = append(mainAssetID, ad.AssetID) + break + } + } + } + + // here we have different cPoolID and their main assetID + for i := range diffPoolID { + // first creating pair with different cPool as asset In + id := k.GetLendPairID(ctx) + pair := types.Extended_Pair{ + Id: id + 1, + AssetIn: mainAssetID[i], + AssetOut: mainAssetCurrentPool, + IsInterPool: true, + AssetOutPoolID: poolID + 1, + MinUsdValueLeft: pool.MinUsdValueLeft, + } + k.SetLendPairID(ctx, pair.Id) + k.SetLendPair(ctx, pair) + + assetToPair, found := k.GetAssetToPair(ctx, pair.AssetIn, diffPoolID[i]) + if !found { + assetToPair.AssetID = pair.AssetIn + assetToPair.PoolID = diffPoolID[i] // here asset IN and Out Pool are same + assetToPair.PairID = append(assetToPair.PairID, pair.Id) + } else { + assetToPair.PairID = append(assetToPair.PairID, pair.Id) + } + k.SetAssetToPair(ctx, assetToPair) + } + + for i := range diffPoolID { + // Second creating pair with current cPool as asset In + id := k.GetLendPairID(ctx) + pair := types.Extended_Pair{ + Id: id + 1, + AssetIn: mainAssetCurrentPool, + AssetOut: mainAssetID[i], + IsInterPool: true, + AssetOutPoolID: diffPoolID[i], + MinUsdValueLeft: pool.MinUsdValueLeft, + } + k.SetLendPairID(ctx, pair.Id) + k.SetLendPair(ctx, pair) + + assetToPair, found := k.GetAssetToPair(ctx, pair.AssetIn, poolID+1) + if !found { + assetToPair.AssetID = pair.AssetIn + assetToPair.PoolID = poolID + 1 // here asset IN and Out Pool are same + assetToPair.PairID = append(assetToPair.PairID, pair.Id) + } else { + assetToPair.PairID = append(assetToPair.PairID, pair.Id) + } + k.SetAssetToPair(ctx, assetToPair) + } + } + return nil +} + +func CreatePairs(numbers []uint64) [][2]uint64 { + var result [][2]uint64 + for i := 0; i < len(numbers); i++ { + for j := i + 1; j < len(numbers); j++ { + result = append(result, [2]uint64{numbers[i], numbers[j]}) + result = append(result, [2]uint64{numbers[j], numbers[i]}) + } + } + return result +} + func (k Keeper) AddAssetToPair(ctx sdk.Context, assetToPair types.AssetToPairMapping) error { _, found := k.Asset.GetAsset(ctx, assetToPair.AssetID) if !found { diff --git a/x/lend/types/codec.go b/x/lend/types/codec.go index 43118bbc7..14b424e56 100644 --- a/x/lend/types/codec.go +++ b/x/lend/types/codec.go @@ -30,6 +30,7 @@ func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&AddAuctionParamsProposal{}, "comdex/lend/AddAuctionParamsProposal", nil) cdc.RegisterConcrete(&MsgCalculateInterestAndRewards{}, "comdex/lend/MsgCalculateInterestAndRewards", nil) cdc.RegisterConcrete(&MsgFundReserveAccounts{}, "comdex/lend/MsgFundReserveAccounts", nil) + cdc.RegisterConcrete(&AddPoolPairsProposal{}, "comdex/lend/AddPoolPairsProposal", nil) } func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { @@ -42,6 +43,7 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { &AddAuctionParamsProposal{}, &MultipleLendPairsProposal{}, &AddMultipleAssetToPairProposal{}, + &AddPoolPairsProposal{}, ) registry.RegisterImplementations( (*sdk.Msg)(nil), diff --git a/x/lend/types/gov.go b/x/lend/types/gov.go index 098846f1f..66fd27f7b 100644 --- a/x/lend/types/gov.go +++ b/x/lend/types/gov.go @@ -12,6 +12,7 @@ var ( ProposalAddAssetRatesParams = "ProposalAddAssetRatesParams" ProposalAddAuctionParams = "ProposalAddAuctionParams" ProposalAddMultipleAssetToPair = "ProposalAddMultipleAssetToPair" + ProposalAddPoolPairs = "ProposalAddPoolPairs" ) func init() { @@ -29,6 +30,8 @@ func init() { govtypes.RegisterProposalTypeCodec(&AddAssetRatesParams{}, "comdex/AddAssetRatesParams") govtypes.RegisterProposalType(ProposalAddAuctionParams) govtypes.RegisterProposalTypeCodec(&AddAuctionParamsProposal{}, "comdex/AddAuctionParamsProposal") + govtypes.RegisterProposalType(ProposalAddPoolPairs) + govtypes.RegisterProposalTypeCodec(&AddPoolPairsProposal{}, "comdex/AddPoolPairsProposal") } var ( @@ -39,6 +42,7 @@ var ( _ govtypes.Content = &AddAuctionParamsProposal{} _ govtypes.Content = &MultipleLendPairsProposal{} _ govtypes.Content = &AddMultipleAssetToPairProposal{} + _ govtypes.Content = &AddPoolPairsProposal{} ) func NewAddLendPairsProposal(title, description string, pairs Extended_Pair) govtypes.Content { @@ -242,3 +246,33 @@ func (p *AddAuctionParamsProposal) ValidateBasic() error { return nil } + +func NewAddPoolPairsProposal(title, description string, pool PoolPairs) govtypes.Content { + return &AddPoolPairsProposal{ + Title: title, + Description: description, + PoolPairs: pool, + } +} + +func (p *AddPoolPairsProposal) ProposalRoute() string { + return RouterKey +} + +func (p *AddPoolPairsProposal) ProposalType() string { + return ProposalAddPool +} + +func (p *AddPoolPairsProposal) ValidateBasic() error { + err := govtypes.ValidateAbstract(p) + if err != nil { + return err + } + + pool := p.PoolPairs + if err := pool.Validate(); err != nil { + return err + } + + return nil +} diff --git a/x/lend/types/gov.pb.go b/x/lend/types/gov.pb.go index 3f2c81277..f0b081d9f 100644 --- a/x/lend/types/gov.pb.go +++ b/x/lend/types/gov.pb.go @@ -443,6 +443,66 @@ func (m *AddAuctionParamsProposal) GetAuctionParams() AuctionParams { return AuctionParams{} } +type AddPoolPairsProposal struct { + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty" yaml:"title"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description"` + PoolPairs PoolPairs `protobuf:"bytes,3,opt,name=PoolPairs,proto3" json:"PoolPairs"` +} + +func (m *AddPoolPairsProposal) Reset() { *m = AddPoolPairsProposal{} } +func (m *AddPoolPairsProposal) String() string { return proto.CompactTextString(m) } +func (*AddPoolPairsProposal) ProtoMessage() {} +func (*AddPoolPairsProposal) Descriptor() ([]byte, []int) { + return fileDescriptor_4c877ba3eefc3a22, []int{7} +} +func (m *AddPoolPairsProposal) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AddPoolPairsProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AddPoolPairsProposal.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 *AddPoolPairsProposal) XXX_Merge(src proto.Message) { + xxx_messageInfo_AddPoolPairsProposal.Merge(m, src) +} +func (m *AddPoolPairsProposal) XXX_Size() int { + return m.Size() +} +func (m *AddPoolPairsProposal) XXX_DiscardUnknown() { + xxx_messageInfo_AddPoolPairsProposal.DiscardUnknown(m) +} + +var xxx_messageInfo_AddPoolPairsProposal proto.InternalMessageInfo + +func (m *AddPoolPairsProposal) GetTitle() string { + if m != nil { + return m.Title + } + return "" +} + +func (m *AddPoolPairsProposal) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *AddPoolPairsProposal) GetPoolPairs() PoolPairs { + if m != nil { + return m.PoolPairs + } + return PoolPairs{} +} + func init() { proto.RegisterType((*LendPairsProposal)(nil), "comdex.lend.v1beta1.LendPairsProposal") proto.RegisterType((*MultipleLendPairsProposal)(nil), "comdex.lend.v1beta1.MultipleLendPairsProposal") @@ -451,42 +511,45 @@ func init() { proto.RegisterType((*AddMultipleAssetToPairProposal)(nil), "comdex.lend.v1beta1.AddMultipleAssetToPairProposal") proto.RegisterType((*AddAssetRatesParams)(nil), "comdex.lend.v1beta1.AddAssetRatesParams") proto.RegisterType((*AddAuctionParamsProposal)(nil), "comdex.lend.v1beta1.AddAuctionParamsProposal") + proto.RegisterType((*AddPoolPairsProposal)(nil), "comdex.lend.v1beta1.AddPoolPairsProposal") } func init() { proto.RegisterFile("comdex/lend/v1beta1/gov.proto", fileDescriptor_4c877ba3eefc3a22) } var fileDescriptor_4c877ba3eefc3a22 = []byte{ - // 476 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x54, 0xcf, 0x6a, 0x13, 0x41, - 0x18, 0xcf, 0xd8, 0x56, 0xf0, 0xab, 0x42, 0xdc, 0x4a, 0xd9, 0x16, 0x9c, 0x94, 0x01, 0xb5, 0x97, - 0xee, 0x52, 0x7b, 0x11, 0x0f, 0x42, 0x02, 0x82, 0x07, 0x2b, 0x21, 0x0a, 0x82, 0x20, 0x32, 0xc9, - 0x4c, 0xd7, 0x81, 0xc9, 0xce, 0xb0, 0x33, 0x29, 0xed, 0x5b, 0xf8, 0x1a, 0x3e, 0x80, 0x47, 0xef, - 0x3d, 0x78, 0xc8, 0x51, 0x2f, 0x41, 0x92, 0x37, 0xa8, 0x2f, 0x20, 0xb3, 0x3b, 0xc5, 0x5d, 0xbb, - 0x55, 0xe8, 0x61, 0x73, 0x4b, 0xe6, 0xf7, 0xfb, 0x7e, 0x7f, 0x76, 0x86, 0x0f, 0xee, 0x8f, 0xd4, - 0x98, 0xf1, 0x93, 0x58, 0xf2, 0x94, 0xc5, 0xc7, 0xfb, 0x43, 0x6e, 0xe9, 0x7e, 0x9c, 0xa8, 0xe3, - 0x48, 0x67, 0xca, 0xaa, 0x60, 0xa3, 0x80, 0x23, 0x07, 0x47, 0x1e, 0xde, 0xbe, 0x97, 0xa8, 0x44, - 0xe5, 0x78, 0xec, 0x7e, 0x15, 0xd4, 0x6d, 0x5c, 0xa7, 0x94, 0xcf, 0xe5, 0x38, 0xf9, 0x82, 0xe0, - 0xee, 0x4b, 0x9e, 0xb2, 0x3e, 0x15, 0x99, 0xe9, 0x67, 0x4a, 0x2b, 0x43, 0x65, 0xf0, 0x10, 0xd6, - 0xac, 0xb0, 0x92, 0x87, 0x68, 0x07, 0xed, 0xde, 0xea, 0xb5, 0xcf, 0x67, 0x9d, 0xdb, 0xa7, 0x74, - 0x2c, 0x9f, 0x92, 0xfc, 0x98, 0x0c, 0x0a, 0x38, 0x78, 0x02, 0xeb, 0x8c, 0x9b, 0x51, 0x26, 0xb4, - 0x15, 0x2a, 0x0d, 0x6f, 0xe4, 0xec, 0xcd, 0xf3, 0x59, 0x27, 0x28, 0xd8, 0x25, 0x90, 0x0c, 0xca, - 0xd4, 0xe0, 0x19, 0xac, 0x69, 0x67, 0x19, 0xae, 0xec, 0xa0, 0xdd, 0xf5, 0xc7, 0x24, 0xaa, 0xa9, - 0x14, 0x3d, 0x3f, 0xb1, 0x3c, 0x65, 0x9c, 0x7d, 0x70, 0xe9, 0x7a, 0xab, 0x67, 0xb3, 0x4e, 0x6b, - 0x50, 0x8c, 0x91, 0xaf, 0x08, 0xb6, 0x0e, 0x27, 0xd2, 0x0a, 0x2d, 0xf9, 0x92, 0xf3, 0xaf, 0x5c, - 0x27, 0xff, 0x67, 0x04, 0xed, 0x2e, 0x63, 0x7d, 0xa5, 0x64, 0x93, 0xb1, 0x0f, 0x60, 0xd5, 0x59, - 0xfa, 0xaf, 0xbe, 0x55, 0x9b, 0xda, 0x11, 0x7c, 0xd8, 0x9c, 0x4c, 0x7e, 0x20, 0xd8, 0xec, 0x32, - 0xd6, 0x35, 0x86, 0xdb, 0x37, 0xca, 0x75, 0x69, 0x30, 0xf1, 0x7b, 0x08, 0x4a, 0xc6, 0x87, 0x54, - 0x6b, 0x91, 0x26, 0x3e, 0xff, 0xa3, 0xda, 0xfc, 0x97, 0xe9, 0xbe, 0x4d, 0x8d, 0x10, 0xf9, 0x85, - 0x00, 0x77, 0x19, 0xbb, 0x78, 0x4a, 0xcb, 0xe9, 0xa8, 0x20, 0x2c, 0x19, 0xbf, 0x16, 0x69, 0x22, - 0xf9, 0x9f, 0xa6, 0xee, 0x7d, 0xed, 0xfd, 0xaf, 0x69, 0x65, 0xc8, 0xf7, 0xbd, 0x52, 0x94, 0x4c, - 0x11, 0x6c, 0x5c, 0xdc, 0xe8, 0x80, 0x5a, 0x6e, 0xfa, 0x34, 0xa3, 0x63, 0xd3, 0x40, 0xd5, 0xb7, - 0xd0, 0xfe, 0xdb, 0xd5, 0x5f, 0xe6, 0x83, 0xab, 0x2b, 0x96, 0xc8, 0xbe, 0xda, 0x25, 0x11, 0xf2, - 0x0d, 0x41, 0xe8, 0x2a, 0x4d, 0x46, 0xce, 0xa7, 0x38, 0x6c, 0xf0, 0x0a, 0x5f, 0xc1, 0x9d, 0x8a, - 0xf5, 0x3f, 0xf7, 0x5a, 0x85, 0xe9, 0x1b, 0x55, 0xc7, 0x7b, 0x2f, 0xce, 0xe6, 0x18, 0x4d, 0xe7, - 0x18, 0xfd, 0x9c, 0x63, 0xf4, 0x69, 0x81, 0x5b, 0xd3, 0x05, 0x6e, 0x7d, 0x5f, 0xe0, 0xd6, 0xbb, - 0x28, 0x11, 0xf6, 0xe3, 0x64, 0xe8, 0x84, 0xe3, 0x42, 0x7c, 0x4f, 0x1d, 0x1d, 0x89, 0x91, 0xa0, - 0xd2, 0xff, 0x8f, 0xfd, 0xba, 0xb7, 0xa7, 0x9a, 0x9b, 0xe1, 0xcd, 0x7c, 0xd1, 0x1f, 0xfc, 0x0e, - 0x00, 0x00, 0xff, 0xff, 0x85, 0xe5, 0x00, 0xb3, 0x54, 0x06, 0x00, 0x00, + // 504 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x95, 0xc1, 0x6a, 0x13, 0x41, + 0x18, 0xc7, 0x33, 0xb6, 0x15, 0xfa, 0x55, 0x21, 0x6e, 0x4b, 0xd9, 0x16, 0x9c, 0x94, 0x01, 0xb5, + 0x97, 0xee, 0x52, 0x7b, 0x11, 0x0f, 0x42, 0x02, 0x82, 0x07, 0x2b, 0x21, 0x0a, 0x82, 0x20, 0x32, + 0xc9, 0x4c, 0xd7, 0x81, 0xc9, 0xce, 0xb2, 0x33, 0x29, 0xed, 0x5b, 0xf8, 0x1a, 0x3e, 0x80, 0x37, + 0xbd, 0xf7, 0xe0, 0x21, 0x47, 0xbd, 0x04, 0x49, 0xde, 0xa0, 0xbe, 0x80, 0xcc, 0xec, 0xd4, 0x6e, + 0xec, 0x46, 0xc1, 0xc3, 0xf6, 0x96, 0xec, 0xf7, 0xff, 0xbe, 0xff, 0xff, 0xb7, 0xb3, 0x7c, 0x03, + 0x77, 0x07, 0x6a, 0xc8, 0xf8, 0x49, 0x2c, 0x79, 0xca, 0xe2, 0xe3, 0xfd, 0x3e, 0x37, 0x74, 0x3f, + 0x4e, 0xd4, 0x71, 0x94, 0xe5, 0xca, 0xa8, 0x60, 0xbd, 0x28, 0x47, 0xb6, 0x1c, 0xf9, 0xf2, 0xf6, + 0x46, 0xa2, 0x12, 0xe5, 0xea, 0xb1, 0xfd, 0x55, 0x48, 0xb7, 0x71, 0xd5, 0x24, 0xd7, 0xe7, 0xea, + 0xe4, 0x13, 0x82, 0x3b, 0xcf, 0x79, 0xca, 0xba, 0x54, 0xe4, 0xba, 0x9b, 0xab, 0x4c, 0x69, 0x2a, + 0x83, 0xfb, 0xb0, 0x62, 0x84, 0x91, 0x3c, 0x44, 0x3b, 0x68, 0x77, 0xb5, 0xd3, 0x3c, 0x9f, 0xb4, + 0x6e, 0x9d, 0xd2, 0xa1, 0x7c, 0x4c, 0xdc, 0x63, 0xd2, 0x2b, 0xca, 0xc1, 0x23, 0x58, 0x63, 0x5c, + 0x0f, 0x72, 0x91, 0x19, 0xa1, 0xd2, 0xf0, 0x86, 0x53, 0x6f, 0x9e, 0x4f, 0x5a, 0x41, 0xa1, 0x2e, + 0x15, 0x49, 0xaf, 0x2c, 0x0d, 0x9e, 0xc0, 0x4a, 0x66, 0x2d, 0xc3, 0xa5, 0x1d, 0xb4, 0xbb, 0xf6, + 0x90, 0x44, 0x15, 0x48, 0xd1, 0xd3, 0x13, 0xc3, 0x53, 0xc6, 0xd9, 0x3b, 0x9b, 0xae, 0xb3, 0x7c, + 0x36, 0x69, 0x35, 0x7a, 0x45, 0x1b, 0xf9, 0x82, 0x60, 0xeb, 0x70, 0x24, 0x8d, 0xc8, 0x24, 0xbf, + 0xe6, 0xfc, 0x4b, 0xff, 0x93, 0xff, 0x23, 0x82, 0x66, 0x9b, 0xb1, 0xae, 0x52, 0xb2, 0xce, 0xd8, + 0x07, 0xb0, 0x6c, 0x2d, 0xfd, 0x5b, 0xdf, 0xaa, 0x4c, 0x6d, 0x05, 0x3e, 0xac, 0x13, 0x93, 0xef, + 0x08, 0x36, 0xdb, 0x8c, 0xb5, 0xb5, 0xe6, 0xe6, 0x95, 0xb2, 0x2c, 0x35, 0x26, 0x7e, 0x0b, 0x41, + 0xc9, 0xf8, 0x90, 0x66, 0x99, 0x48, 0x13, 0x9f, 0xff, 0x41, 0x65, 0xfe, 0xab, 0x72, 0x4f, 0x53, + 0x31, 0x88, 0xfc, 0x44, 0x80, 0xdb, 0x8c, 0x5d, 0x7c, 0x4a, 0xd7, 0xc3, 0xa8, 0x20, 0x2c, 0x19, + 0xbf, 0x14, 0x69, 0x22, 0xf9, 0x25, 0xa9, 0xfd, 0xbe, 0xf6, 0xfe, 0x45, 0x3a, 0xd7, 0xe4, 0x79, + 0x17, 0x0e, 0x25, 0x63, 0x04, 0xeb, 0x17, 0x27, 0xda, 0xa3, 0x86, 0xeb, 0x2e, 0xcd, 0xe9, 0x50, + 0xd7, 0x80, 0xfa, 0x1a, 0x9a, 0x7f, 0xba, 0xfa, 0xc3, 0xbc, 0xb7, 0x18, 0xb1, 0x24, 0xf6, 0x68, + 0x57, 0x86, 0x90, 0xaf, 0x08, 0x42, 0x8b, 0x34, 0x1a, 0x58, 0x9f, 0xe2, 0x61, 0x8d, 0x47, 0xf8, + 0x02, 0x6e, 0xcf, 0x59, 0xff, 0x75, 0xaf, 0xcd, 0x29, 0x3d, 0xd1, 0x7c, 0x3b, 0xf9, 0x8c, 0x60, + 0xc3, 0xef, 0x87, 0xba, 0x57, 0x5b, 0x07, 0x56, 0x7f, 0xdb, 0x7a, 0x0c, 0xbc, 0x70, 0x51, 0x38, + 0x95, 0x47, 0xb8, 0x6c, 0xeb, 0x3c, 0x3b, 0x9b, 0x62, 0x34, 0x9e, 0x62, 0xf4, 0x63, 0x8a, 0xd1, + 0x87, 0x19, 0x6e, 0x8c, 0x67, 0xb8, 0xf1, 0x6d, 0x86, 0x1b, 0x6f, 0xa2, 0x44, 0x98, 0xf7, 0xa3, + 0xbe, 0x1d, 0x18, 0x17, 0x43, 0xf7, 0xd4, 0xd1, 0x91, 0x18, 0x08, 0x2a, 0xfd, 0xff, 0xd8, 0xdf, + 0x56, 0xe6, 0x34, 0xe3, 0xba, 0x7f, 0xd3, 0xdd, 0x53, 0x07, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, + 0xb5, 0xb2, 0x44, 0xc9, 0x13, 0x07, 0x00, 0x00, } func (m *LendPairsProposal) Marshal() (dAtA []byte, err error) { @@ -826,6 +889,53 @@ func (m *AddAuctionParamsProposal) MarshalToSizedBuffer(dAtA []byte) (int, error return len(dAtA) - i, nil } +func (m *AddPoolPairsProposal) 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 *AddPoolPairsProposal) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AddPoolPairsProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.PoolPairs.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGov(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintGov(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 = encodeVarintGov(dAtA, i, uint64(len(m.Title))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func encodeVarintGov(dAtA []byte, offset int, v uint64) int { offset -= sovGov(v) base := offset @@ -978,6 +1088,25 @@ func (m *AddAuctionParamsProposal) Size() (n int) { return n } +func (m *AddPoolPairsProposal) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Title) + if l > 0 { + n += 1 + l + sovGov(uint64(l)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovGov(uint64(l)) + } + l = m.PoolPairs.Size() + n += 1 + l + sovGov(uint64(l)) + return n +} + func sovGov(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -2015,6 +2144,153 @@ func (m *AddAuctionParamsProposal) Unmarshal(dAtA []byte) error { } return nil } +func (m *AddPoolPairsProposal) 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 ErrIntOverflowGov + } + 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: AddPoolPairsProposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AddPoolPairsProposal: 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 ErrIntOverflowGov + } + 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 ErrInvalidLengthGov + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGov + } + 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 ErrIntOverflowGov + } + 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 ErrInvalidLengthGov + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGov + } + 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 PoolPairs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGov + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGov + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGov + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.PoolPairs.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGov(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGov + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipGov(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/lend/types/lend.pb.go b/x/lend/types/lend.pb.go index cb5ae4038..c2cfd85de 100644 --- a/x/lend/types/lend.pb.go +++ b/x/lend/types/lend.pb.go @@ -338,7 +338,7 @@ func (m *Pool) GetAssetData() []*AssetDataPoolMapping { type UserAssetLendBorrowMapping struct { Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty" yaml:"owner"` - // to check if poool id is needed + //to check if poool id is needed LendId uint64 `protobuf:"varint,2,opt,name=lend_id,json=lendId,proto3" json:"lend_id,omitempty" yaml:"lend_id"` PoolId uint64 `protobuf:"varint,3,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty" yaml:"pool_id"` BorrowId []uint64 `protobuf:"varint,4,rep,packed,name=borrow_id,json=borrowId,proto3" json:"borrow_id,omitempty" yaml:"borrow_id"` @@ -1411,6 +1411,82 @@ func (m *AssetToPairSingleMapping) GetPairID() uint64 { return 0 } +type PoolPairs struct { + PoolID uint64 `protobuf:"varint,1,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty" yaml:"pool_id"` + ModuleName string `protobuf:"bytes,2,opt,name=module_name,json=moduleName,proto3" json:"module_name,omitempty" yaml:"module_name"` + CPoolName string `protobuf:"bytes,3,opt,name=cpool_name,json=cpoolName,proto3" json:"cpool_name,omitempty" yaml:"cpool_name"` + AssetData []*AssetDataPoolMapping `protobuf:"bytes,4,rep,name=asset_data,json=assetData,proto3" json:"asset_data,omitempty" yaml:"asset_data"` + MinUsdValueLeft uint64 `protobuf:"varint,5,opt,name=min_usd_value_left,json=minUsdValueLeft,proto3" json:"min_usd_value_left,omitempty" yaml:"min_usd_value_left"` +} + +func (m *PoolPairs) Reset() { *m = PoolPairs{} } +func (m *PoolPairs) String() string { return proto.CompactTextString(m) } +func (*PoolPairs) ProtoMessage() {} +func (*PoolPairs) Descriptor() ([]byte, []int) { + return fileDescriptor_b87bb4bef8334ddd, []int{21} +} +func (m *PoolPairs) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PoolPairs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PoolPairs.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 *PoolPairs) XXX_Merge(src proto.Message) { + xxx_messageInfo_PoolPairs.Merge(m, src) +} +func (m *PoolPairs) XXX_Size() int { + return m.Size() +} +func (m *PoolPairs) XXX_DiscardUnknown() { + xxx_messageInfo_PoolPairs.DiscardUnknown(m) +} + +var xxx_messageInfo_PoolPairs proto.InternalMessageInfo + +func (m *PoolPairs) GetPoolID() uint64 { + if m != nil { + return m.PoolID + } + return 0 +} + +func (m *PoolPairs) GetModuleName() string { + if m != nil { + return m.ModuleName + } + return "" +} + +func (m *PoolPairs) GetCPoolName() string { + if m != nil { + return m.CPoolName + } + return "" +} + +func (m *PoolPairs) GetAssetData() []*AssetDataPoolMapping { + if m != nil { + return m.AssetData + } + return nil +} + +func (m *PoolPairs) GetMinUsdValueLeft() uint64 { + if m != nil { + return m.MinUsdValueLeft + } + return 0 +} + func init() { proto.RegisterType((*LendAsset)(nil), "comdex.lend.v1beta1.LendAsset") proto.RegisterType((*BorrowAsset)(nil), "comdex.lend.v1beta1.BorrowAsset") @@ -1433,186 +1509,188 @@ func init() { proto.RegisterType((*FundReserveBal)(nil), "comdex.lend.v1beta1.FundReserveBal") proto.RegisterType((*AllReserveStats)(nil), "comdex.lend.v1beta1.AllReserveStats") proto.RegisterType((*AssetToPairSingleMapping)(nil), "comdex.lend.v1beta1.AssetToPairSingleMapping") + proto.RegisterType((*PoolPairs)(nil), "comdex.lend.v1beta1.PoolPairs") } func init() { proto.RegisterFile("comdex/lend/v1beta1/lend.proto", fileDescriptor_b87bb4bef8334ddd) } var fileDescriptor_b87bb4bef8334ddd = []byte{ - // 2774 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x4d, 0x6c, 0x24, 0x47, - 0x15, 0xde, 0x1e, 0x7b, 0xed, 0x99, 0x37, 0xb6, 0xd7, 0x2e, 0x8f, 0xd9, 0x89, 0x37, 0xf1, 0x6c, - 0x6a, 0x51, 0xe2, 0x80, 0x32, 0xd6, 0x9a, 0x70, 0x20, 0x4a, 0x14, 0x3c, 0xfb, 0x13, 0x26, 0xf1, - 0x6e, 0x92, 0x5a, 0x07, 0x04, 0x04, 0x5a, 0x35, 0xd3, 0x35, 0xde, 0xd6, 0xf6, 0x74, 0x77, 0xfa, - 0xc7, 0xbb, 0x06, 0x12, 0x50, 0x22, 0x21, 0x0e, 0x20, 0x02, 0x57, 0xee, 0x48, 0xdc, 0xe1, 0xc8, - 0x09, 0x29, 0xe4, 0xc0, 0x21, 0x88, 0x4b, 0x94, 0xc3, 0x80, 0x9c, 0x03, 0x12, 0xc7, 0x3d, 0x70, - 0xe0, 0x84, 0xaa, 0xea, 0xf5, 0xdf, 0x78, 0xf6, 0xa7, 0x3d, 0x24, 0xe1, 0xe4, 0xa9, 0x57, 0x55, - 0xdf, 0xab, 0x7e, 0xef, 0xd5, 0xf7, 0x5e, 0x55, 0x19, 0x36, 0xfa, 0xde, 0xd0, 0x12, 0x77, 0xb6, - 0x1c, 0xe1, 0x5a, 0x5b, 0x07, 0x17, 0x7b, 0x22, 0xe2, 0x17, 0x55, 0xa3, 0xed, 0x07, 0x5e, 0xe4, - 0x91, 0x55, 0xdd, 0xdf, 0x56, 0x22, 0xec, 0x5f, 0x6f, 0xec, 0x7b, 0xfb, 0x9e, 0xea, 0xdf, 0x92, - 0xbf, 0xf4, 0xd0, 0xf5, 0xd6, 0xbe, 0xe7, 0xed, 0x3b, 0x62, 0x4b, 0xb5, 0x7a, 0xf1, 0x60, 0x2b, - 0xb2, 0x87, 0x22, 0x8c, 0xf8, 0xd0, 0xc7, 0x01, 0x1b, 0x7d, 0x2f, 0x1c, 0x7a, 0xe1, 0x56, 0x8f, - 0x87, 0x22, 0xd5, 0xd5, 0xf7, 0x6c, 0x57, 0xf7, 0xd3, 0x77, 0xab, 0x50, 0xdb, 0x15, 0xae, 0xb5, - 0x13, 0x86, 0x22, 0x22, 0xcf, 0x02, 0x48, 0xa5, 0xb6, 0xbb, 0x6f, 0xda, 0x56, 0xd3, 0x38, 0x6f, - 0x6c, 0xce, 0x76, 0xce, 0x1d, 0x8d, 0x5a, 0x95, 0xee, 0xe5, 0xbb, 0xa3, 0xd6, 0xca, 0x21, 0x1f, - 0x3a, 0xcf, 0xd2, 0x6c, 0x04, 0x65, 0x35, 0x6c, 0x74, 0x2d, 0xf2, 0x35, 0xa8, 0x72, 0x09, 0x22, - 0x67, 0x56, 0xd4, 0xcc, 0x8d, 0xa3, 0x51, 0x6b, 0x5e, 0x01, 0xab, 0xe9, 0x67, 0xf4, 0xf4, 0x64, - 0x10, 0x65, 0xf3, 0xea, 0x67, 0xd7, 0x22, 0x5f, 0x85, 0x79, 0xdf, 0xf3, 0x1c, 0x39, 0x73, 0x46, - 0xcd, 0x7c, 0xf4, 0x68, 0xd4, 0x9a, 0x7b, 0xd5, 0xf3, 0x1c, 0x35, 0x71, 0x49, 0x4f, 0xc4, 0x21, - 0x94, 0xcd, 0xc9, 0x5f, 0x5d, 0x8b, 0x3c, 0x01, 0xa7, 0xbd, 0xdb, 0xae, 0x08, 0x9a, 0xb3, 0xe7, - 0x8d, 0xcd, 0x5a, 0x67, 0xf9, 0xee, 0xa8, 0xb5, 0xa0, 0x87, 0x2a, 0x31, 0x65, 0xba, 0x9b, 0xfc, - 0x10, 0x6a, 0x7c, 0xe8, 0xc5, 0x6e, 0x64, 0xda, 0x6e, 0xf3, 0xf4, 0x79, 0x63, 0xb3, 0xbe, 0xfd, - 0x48, 0x5b, 0xdb, 0xa5, 0x2d, 0xed, 0x92, 0xd8, 0xb8, 0x7d, 0xc9, 0xb3, 0xdd, 0xce, 0xa5, 0x0f, - 0x46, 0xad, 0x53, 0x77, 0x47, 0xad, 0x65, 0x5c, 0x6e, 0x32, 0x93, 0xfe, 0x67, 0xd4, 0x7a, 0x72, - 0xdf, 0x8e, 0x6e, 0xc6, 0xbd, 0x76, 0xdf, 0x1b, 0x6e, 0xa1, 0x61, 0xf5, 0x9f, 0xa7, 0x43, 0xeb, - 0xd6, 0x56, 0x74, 0xe8, 0x8b, 0x50, 0x81, 0xb0, 0xaa, 0x9e, 0xd6, 0x75, 0xc9, 0xf7, 0x61, 0x21, - 0x31, 0x98, 0xf4, 0x4d, 0x73, 0x4e, 0xe9, 0x5f, 0x6f, 0x6b, 0xc7, 0xb5, 0x13, 0xc7, 0xb5, 0xf7, - 0x12, 0xc7, 0x75, 0x5a, 0xb8, 0x80, 0xd5, 0xa2, 0xb9, 0xe5, 0x6c, 0xfa, 0xde, 0xdf, 0x5b, 0x06, - 0xab, 0xa3, 0x48, 0x4e, 0x21, 0x3f, 0x82, 0x55, 0x7e, 0xc0, 0x6d, 0x87, 0xf7, 0x1c, 0x61, 0x46, - 0x9e, 0xd9, 0xf3, 0x82, 0xc0, 0xbb, 0xdd, 0x9c, 0x57, 0x26, 0xd9, 0x95, 0x50, 0x1f, 0x8f, 0x5a, - 0x4f, 0x3c, 0xc4, 0xba, 0xbb, 0x6e, 0x74, 0x77, 0xd4, 0x5a, 0xc7, 0xaf, 0x3e, 0x0e, 0x49, 0xd9, - 0x4a, 0x2a, 0xdd, 0xf3, 0x3a, 0x4a, 0x46, 0x2e, 0xc2, 0x1c, 0xf7, 0x7d, 0xe9, 0xb8, 0xaa, 0x72, - 0xdc, 0xfa, 0xd1, 0xa8, 0x75, 0x7a, 0xc7, 0xf7, 0x95, 0xdf, 0x16, 0x11, 0x4b, 0x0d, 0xa0, 0xec, - 0x34, 0xf7, 0xfd, 0xae, 0x45, 0x6e, 0xc2, 0xc2, 0xbe, 0xe3, 0xf5, 0xb8, 0x63, 0xda, 0xae, 0x25, - 0xee, 0x34, 0x6b, 0x6a, 0xa5, 0x57, 0x4a, 0xac, 0xf4, 0xb2, 0xe8, 0x67, 0xe6, 0xc9, 0x63, 0x51, - 0x56, 0xd7, 0xcd, 0xae, 0x6c, 0x91, 0x3b, 0xb0, 0xe6, 0xf0, 0x50, 0xfa, 0x2e, 0x12, 0x01, 0xef, - 0x47, 0xb6, 0xe7, 0x6a, 0x1f, 0xc0, 0x03, 0x7d, 0xb0, 0x89, 0x3e, 0x78, 0x14, 0x7d, 0x30, 0x09, - 0x46, 0x3b, 0x63, 0x55, 0xf6, 0x75, 0xb3, 0x2e, 0xe5, 0x94, 0x1d, 0x80, 0xbe, 0x0a, 0x57, 0x97, - 0x0f, 0x45, 0xb3, 0xae, 0xbe, 0x90, 0x1e, 0x8d, 0x5a, 0xb5, 0x4b, 0x32, 0xa8, 0xaf, 0xf3, 0xa1, - 0xc8, 0xb6, 0x53, 0x36, 0x90, 0xb2, 0x9a, 0x6a, 0xc8, 0x7e, 0x72, 0x0b, 0x16, 0x23, 0x2f, 0xe2, - 0x8e, 0x19, 0x88, 0xdb, 0x3c, 0xb0, 0xc2, 0xe6, 0x82, 0x42, 0xb9, 0x5a, 0xda, 0xa3, 0x0d, 0xad, - 0xa6, 0x00, 0x46, 0xd9, 0x82, 0x6a, 0x33, 0x6c, 0xfe, 0xbb, 0x0e, 0x75, 0xed, 0x51, 0xcd, 0x03, - 0x5f, 0x87, 0x05, 0xed, 0xf4, 0x02, 0x13, 0x3c, 0x96, 0x32, 0x01, 0xda, 0x3e, 0x3f, 0x86, 0xb2, - 0x7a, 0xda, 0xec, 0x5a, 0xd2, 0x02, 0x39, 0x26, 0xd1, 0x7c, 0xa0, 0x2c, 0xb0, 0x8b, 0x84, 0xf1, - 0x60, 0x42, 0xb9, 0x02, 0xcb, 0x76, 0x68, 0x86, 0x91, 0x0a, 0x43, 0x0c, 0x6b, 0x49, 0x0f, 0xd5, - 0xce, 0xb9, 0xbb, 0xa3, 0xd6, 0x59, 0x3d, 0x77, 0x7c, 0x04, 0x65, 0x4b, 0x76, 0x78, 0x43, 0x49, - 0x30, 0x44, 0x25, 0xb9, 0x70, 0x3b, 0x90, 0xcb, 0x98, 0xcd, 0x91, 0x0b, 0xb7, 0x83, 0x02, 0xb9, - 0xe8, 0x21, 0x92, 0x5c, 0x64, 0x8f, 0xf5, 0xf9, 0x92, 0xc6, 0xdb, 0x00, 0x08, 0xe1, 0xc5, 0x11, - 0x52, 0xc6, 0x7d, 0xb4, 0x5f, 0x46, 0xed, 0x2b, 0x05, 0xed, 0x5e, 0x1c, 0x95, 0x52, 0x8f, 0xdf, - 0xfb, 0x4a, 0x1c, 0x91, 0xdf, 0x18, 0xd0, 0xe8, 0x05, 0xb6, 0xb5, 0x2f, 0x2c, 0x53, 0xf3, 0xb5, - 0xee, 0x53, 0xb4, 0x72, 0xdf, 0xa5, 0x5c, 0xc7, 0xa5, 0x9c, 0xc3, 0x08, 0x99, 0x00, 0x52, 0x6a, - 0x51, 0x04, 0x11, 0x54, 0x5c, 0xee, 0xa8, 0xf9, 0xc4, 0x82, 0xa5, 0x2c, 0xf2, 0xd4, 0x86, 0xae, - 0x3e, 0x70, 0x43, 0x3f, 0x8e, 0xeb, 0x5a, 0x1b, 0x8f, 0xdc, 0x6c, 0x27, 0x2f, 0xa6, 0x42, 0xb5, - 0x87, 0x0f, 0x81, 0x14, 0x22, 0xcb, 0x0c, 0x78, 0x24, 0x90, 0xad, 0x5e, 0x2e, 0xcd, 0x56, 0x8f, - 0x68, 0xbd, 0xc7, 0x11, 0x29, 0x5b, 0x0e, 0x73, 0xe1, 0xca, 0x78, 0x24, 0xc8, 0x4f, 0x0c, 0x68, - 0x28, 0xb6, 0x11, 0x61, 0x64, 0xf2, 0x7e, 0x3f, 0x1e, 0xc6, 0x0e, 0x8f, 0x84, 0xa5, 0x88, 0xab, - 0xd6, 0xb9, 0x56, 0x5a, 0x3b, 0x7a, 0x63, 0x12, 0x26, 0x65, 0xab, 0x89, 0x78, 0x27, 0x93, 0x1e, - 0x63, 0xe9, 0xfa, 0xa7, 0xc6, 0xd2, 0x3f, 0x86, 0x46, 0x20, 0x42, 0x11, 0x1c, 0x08, 0xb3, 0xa0, - 0x71, 0x61, 0xba, 0x6f, 0x9d, 0x84, 0x49, 0x19, 0x41, 0xf1, 0x8b, 0x0f, 0x93, 0x26, 0x16, 0x3f, - 0xdb, 0x34, 0xb1, 0x74, 0x92, 0x34, 0xf1, 0x3c, 0x2c, 0xda, 0xa1, 0xe9, 0xd8, 0x6f, 0xc6, 0xb6, - 0xa5, 0x42, 0xe4, 0x8c, 0x62, 0xc8, 0x66, 0x46, 0xfc, 0x85, 0x6e, 0xca, 0x16, 0xec, 0x70, 0x37, - 0x6b, 0xfe, 0xa1, 0x02, 0xb3, 0x52, 0x57, 0xbe, 0x04, 0x33, 0x4a, 0x94, 0x60, 0x57, 0xa0, 0x3e, - 0xf4, 0xac, 0xd8, 0x11, 0xfa, 0x13, 0x2a, 0xea, 0x13, 0xbe, 0x78, 0x34, 0x6a, 0xc1, 0x35, 0x25, - 0xc6, 0x6f, 0x20, 0x7a, 0x7a, 0x6e, 0x28, 0x65, 0x30, 0x4c, 0x47, 0x8c, 0x19, 0x62, 0xe6, 0x24, - 0x86, 0x70, 0x00, 0x34, 0xc9, 0x58, 0x3c, 0xe2, 0xcd, 0xd9, 0xf3, 0x33, 0x9b, 0xf5, 0xed, 0xa7, - 0xda, 0x13, 0x2a, 0xe9, 0xb6, 0xa2, 0x92, 0xcb, 0x3c, 0xe2, 0x12, 0xfb, 0x1a, 0xf7, 0x7d, 0xdb, - 0xdd, 0xd7, 0xda, 0xd2, 0x9e, 0x1c, 0x97, 0xa6, 0x98, 0x94, 0xd5, 0x78, 0xd2, 0x4f, 0xff, 0x6a, - 0xc0, 0xfa, 0xeb, 0xa1, 0x08, 0xd4, 0x0c, 0x99, 0xd2, 0xf4, 0xee, 0x45, 0xb4, 0xac, 0x32, 0x35, - 0xee, 0x5f, 0x99, 0x7e, 0x19, 0xe6, 0xe5, 0xd2, 0xb2, 0x14, 0x49, 0x32, 0x5b, 0x63, 0x07, 0x65, - 0x73, 0xf2, 0x57, 0xd7, 0x92, 0x83, 0x8b, 0x55, 0x32, 0xb9, 0x8f, 0x63, 0x2e, 0x42, 0x0d, 0x49, - 0x46, 0xe5, 0xbd, 0x99, 0xcd, 0xd9, 0x4e, 0x23, 0xcb, 0x4f, 0x69, 0x17, 0x65, 0x55, 0xfd, 0xbb, - 0x6b, 0xd1, 0x77, 0x2a, 0xd0, 0x98, 0x64, 0x9b, 0x42, 0x65, 0x6f, 0x94, 0xab, 0xec, 0x5f, 0x06, - 0xa2, 0xa5, 0x51, 0xc0, 0xdd, 0xd0, 0x8e, 0x4c, 0xb9, 0x53, 0xf1, 0x5b, 0x1f, 0xcb, 0x68, 0xf1, - 0xf8, 0x18, 0xca, 0x96, 0x95, 0x70, 0x4f, 0xcb, 0xf6, 0x0e, 0x7d, 0x41, 0x7a, 0x00, 0x61, 0xec, - 0xfb, 0xce, 0xa1, 0xd9, 0xe7, 0x3e, 0x46, 0xc9, 0xa5, 0xd2, 0xfc, 0x80, 0x8e, 0xcd, 0x90, 0x28, - 0xab, 0xe9, 0xc6, 0x25, 0xee, 0xd3, 0x7f, 0x56, 0x60, 0xf1, 0xca, 0x9d, 0x48, 0xb8, 0x96, 0xb0, - 0x4c, 0x59, 0x24, 0x90, 0x25, 0xa8, 0x24, 0xdf, 0xcd, 0x2a, 0xb6, 0x45, 0xda, 0xa9, 0x35, 0x5c, - 0xfc, 0x90, 0xd5, 0x63, 0x26, 0x70, 0x53, 0x13, 0xb8, 0xd2, 0x13, 0x5a, 0x2a, 0x53, 0xb9, 0x76, - 0x5c, 0xce, 0x13, 0x69, 0x17, 0x65, 0x1a, 0x56, 0xa6, 0xdf, 0xe7, 0xd4, 0xa6, 0x56, 0x44, 0x62, - 0x4a, 0x7f, 0xaa, 0xc2, 0x65, 0x7c, 0x53, 0x67, 0xdd, 0x94, 0xd5, 0xed, 0x50, 0x71, 0x8b, 0xda, - 0xca, 0xdf, 0x86, 0x95, 0x14, 0xd5, 0x4c, 0x22, 0xe6, 0xb4, 0x52, 0xdc, 0x3e, 0x1a, 0xb5, 0x96, - 0x76, 0x50, 0x4d, 0xba, 0xb9, 0x9b, 0x63, 0x4b, 0x31, 0xd3, 0x68, 0x5a, 0xe2, 0xf9, 0xb1, 0x16, - 0x79, 0x09, 0xc8, 0xd0, 0x76, 0xcd, 0x38, 0xb4, 0xcc, 0x03, 0xee, 0xc4, 0xc2, 0x74, 0xc4, 0x40, - 0xd7, 0x27, 0x05, 0x77, 0x1e, 0x1f, 0x43, 0xd9, 0x99, 0xa1, 0xed, 0xbe, 0x1e, 0x5a, 0xdf, 0x94, - 0xa2, 0x5d, 0x29, 0xf9, 0xa3, 0x01, 0x44, 0x2d, 0x65, 0xcf, 0x93, 0x76, 0x4e, 0x82, 0xed, 0x84, - 0x44, 0x34, 0xe5, 0xe9, 0x13, 0x0b, 0xc4, 0x19, 0xb5, 0x51, 0x1e, 0xaa, 0x40, 0xa4, 0x3f, 0xaf, - 0x01, 0x91, 0xcb, 0xd2, 0x14, 0xd0, 0xf9, 0xfc, 0xd6, 0xdf, 0x86, 0x2a, 0x72, 0x45, 0x88, 0x1f, - 0x90, 0x0b, 0xc8, 0xa4, 0x87, 0xb2, 0x79, 0x4d, 0x23, 0x21, 0x79, 0x06, 0x20, 0xdd, 0xff, 0x21, - 0x72, 0xc3, 0x5a, 0xb6, 0x31, 0xb2, 0x3e, 0xca, 0x6a, 0x09, 0x39, 0x84, 0xc4, 0x85, 0x25, 0x7d, - 0x84, 0xd0, 0x22, 0xa1, 0x43, 0xaa, 0xd6, 0x79, 0xb1, 0xf4, 0x81, 0x64, 0x2d, 0x7f, 0x20, 0x49, - 0xd0, 0x28, 0xd3, 0xc7, 0x9d, 0x0e, 0xb6, 0xc9, 0x3b, 0x06, 0xac, 0xe9, 0x21, 0x85, 0x9a, 0x49, - 0x58, 0x2a, 0xdc, 0x6a, 0xba, 0xd0, 0x2c, 0xa5, 0xf7, 0xd1, 0xbc, 0xde, 0x31, 0x50, 0xca, 0x56, - 0x95, 0x3c, 0x7f, 0x72, 0x10, 0x96, 0x64, 0x1c, 0x3d, 0x5c, 0xda, 0x0e, 0xcf, 0xd4, 0x97, 0x4a, - 0x2b, 0x5e, 0xc9, 0x2b, 0x96, 0x48, 0x94, 0xd5, 0x54, 0x43, 0x26, 0x0e, 0xf2, 0x2b, 0x03, 0xd6, - 0x75, 0xd7, 0xc4, 0x92, 0xaf, 0xaa, 0x94, 0xde, 0x28, 0xad, 0xf4, 0xf1, 0xbc, 0xd2, 0xc9, 0x85, - 0x5f, 0x53, 0x75, 0x76, 0x27, 0x54, 0x7f, 0x6f, 0x60, 0x48, 0x71, 0x3f, 0xc0, 0x8a, 0x77, 0xa7, - 0x34, 0xcf, 0xe6, 0x03, 0x90, 0xfb, 0x01, 0x06, 0xe0, 0x8e, 0x1f, 0x48, 0xab, 0x62, 0x90, 0x49, - 0x7c, 0x98, 0x8e, 0xc7, 0x33, 0xa4, 0x34, 0x5c, 0xa5, 0x8e, 0x03, 0x58, 0x29, 0xd6, 0xda, 0x52, - 0x95, 0x2e, 0x62, 0x5f, 0x2a, 0xad, 0xaa, 0x39, 0xa9, 0x78, 0x57, 0x1a, 0xcf, 0xe4, 0x6b, 0x77, - 0xa9, 0xf7, 0x36, 0xac, 0xc4, 0x91, 0xed, 0xd8, 0x21, 0x57, 0x05, 0x60, 0x20, 0xff, 0x60, 0x29, - 0x7b, 0x62, 0xbd, 0xc7, 0x00, 0x29, 0x5b, 0xce, 0xc9, 0x98, 0x12, 0xbd, 0x5f, 0x87, 0x65, 0xc5, - 0x16, 0xf2, 0x04, 0x11, 0xbe, 0xca, 0x03, 0x3e, 0x0c, 0xa7, 0xc9, 0xdc, 0x26, 0xd4, 0x62, 0xd3, - 0xf3, 0x23, 0x7b, 0xc8, 0x1d, 0xac, 0xeb, 0x3a, 0xa5, 0x3f, 0x00, 0x93, 0x5c, 0x0a, 0x44, 0x59, - 0x35, 0x7e, 0x45, 0xff, 0x24, 0xaf, 0xc1, 0xac, 0x3c, 0x3e, 0x62, 0x1e, 0x7f, 0xbe, 0x34, 0x76, - 0x1d, 0xfd, 0xcf, 0x43, 0x41, 0x99, 0x82, 0x22, 0xdf, 0x82, 0xb9, 0xd0, 0xf1, 0x7c, 0x71, 0x11, - 0x6f, 0x04, 0x5f, 0x28, 0x0d, 0x8a, 0x57, 0x56, 0x1a, 0x85, 0x32, 0x84, 0x4b, 0x81, 0xb7, 0x91, - 0xf4, 0xa6, 0x03, 0xde, 0x4e, 0x80, 0xb7, 0xc9, 0x6b, 0xd0, 0x10, 0xae, 0x8a, 0xaa, 0xe2, 0x3d, - 0xc7, 0x9c, 0x4a, 0xf8, 0xad, 0xec, 0x38, 0x33, 0x69, 0x14, 0x65, 0x44, 0x8b, 0x0b, 0xf7, 0x1d, - 0x02, 0xea, 0xc9, 0x28, 0x69, 0x5e, 0x4d, 0x5a, 0x97, 0x4b, 0x2f, 0x98, 0x14, 0x63, 0x5e, 0x59, - 0x19, 0x30, 0xda, 0xa5, 0xad, 0x6f, 0xc1, 0x22, 0xf6, 0xa1, 0xc9, 0xab, 0xa5, 0xef, 0xa7, 0xb4, - 0xa2, 0x46, 0x41, 0x51, 0x62, 0xf9, 0x05, 0xdd, 0xbe, 0xa1, 0xed, 0x3f, 0xa6, 0x6c, 0x1b, 0x49, - 0xe9, 0x7f, 0xa2, 0x6c, 0xbb, 0xa8, 0x6c, 0x9b, 0x5c, 0x87, 0x19, 0x27, 0x3a, 0x40, 0x5e, 0x7a, - 0xae, 0xb4, 0x0a, 0x40, 0xde, 0x8b, 0x0e, 0x28, 0x93, 0x40, 0xe4, 0x5d, 0x03, 0xd6, 0x92, 0x13, - 0x98, 0x3a, 0x14, 0xde, 0x0c, 0x44, 0x78, 0xd3, 0x73, 0x2c, 0xe4, 0xa3, 0xeb, 0xa5, 0x55, 0x24, - 0xc7, 0xcd, 0x49, 0xa0, 0x94, 0x35, 0x72, 0xf2, 0xbd, 0x44, 0x4c, 0xde, 0x82, 0xd5, 0xfc, 0x78, - 0x5f, 0xb8, 0xdc, 0x89, 0x0e, 0x91, 0x9a, 0x76, 0x4b, 0x2f, 0x61, 0xfd, 0xf8, 0x12, 0x10, 0x92, - 0x32, 0x92, 0x93, 0xbe, 0xaa, 0x85, 0x92, 0x17, 0xf3, 0x63, 0x7b, 0x9e, 0x1b, 0x87, 0xea, 0x80, - 0x3d, 0x05, 0x2f, 0x1e, 0x03, 0xa4, 0x6c, 0x39, 0x27, 0xeb, 0x48, 0x91, 0xac, 0x5b, 0x92, 0xab, - 0x80, 0x01, 0xef, 0x47, 0x5e, 0x80, 0xe7, 0xec, 0x17, 0x4b, 0x6b, 0x5d, 0x2b, 0x5e, 0x2c, 0x68, - 0x34, 0xca, 0x16, 0x51, 0x70, 0x55, 0xb5, 0xc9, 0x0b, 0x00, 0x7d, 0x33, 0x25, 0xdd, 0x33, 0x8a, - 0x74, 0x1f, 0x3f, 0x1a, 0xb5, 0xaa, 0x97, 0x32, 0xd6, 0x4d, 0x4e, 0xb2, 0x66, 0xc6, 0xbb, 0xd5, - 0xbe, 0xee, 0xb6, 0xe8, 0xef, 0x2b, 0x70, 0x96, 0x69, 0xc8, 0x4e, 0x7c, 0xd8, 0xe3, 0xfd, 0x5b, - 0xe9, 0xa1, 0x6c, 0x1a, 0x3e, 0xcf, 0xd9, 0x01, 0xef, 0xf2, 0x2a, 0xd3, 0xd5, 0x6f, 0x45, 0xb4, - 0xcc, 0x0e, 0x78, 0x49, 0xe7, 0xc2, 0x52, 0x4f, 0x2f, 0x3f, 0xd1, 0x37, 0x33, 0x9d, 0xbe, 0x22, - 0x1a, 0x65, 0x8b, 0x28, 0xd0, 0xfa, 0xe8, 0xbf, 0x66, 0x61, 0x71, 0x27, 0x56, 0x77, 0x2b, 0x98, - 0xfc, 0x36, 0xd3, 0xb7, 0x09, 0x6d, 0xaa, 0x95, 0x7b, 0x3e, 0x49, 0x7c, 0x0f, 0x9a, 0x5c, 0x4f, - 0x35, 0xad, 0x38, 0xd0, 0x01, 0x15, 0x8a, 0xbe, 0xe7, 0x5a, 0x21, 0x16, 0xe3, 0x17, 0xee, 0x8e, - 0x5a, 0x2d, 0x9c, 0x7b, 0x8f, 0x91, 0x94, 0x7d, 0x01, 0xbb, 0x2e, 0x63, 0xcf, 0x0d, 0xdd, 0x21, - 0xb3, 0x47, 0x2f, 0x1e, 0x0c, 0x44, 0x80, 0x26, 0x38, 0x71, 0xf6, 0xd0, 0x28, 0x94, 0x21, 0x9c, - 0x4c, 0xa1, 0xfd, 0x38, 0xf4, 0x31, 0xdb, 0x9d, 0x38, 0x85, 0x4a, 0x0c, 0xca, 0x14, 0x94, 0x84, - 0x0c, 0x23, 0xe1, 0x63, 0x9e, 0x7b, 0xbe, 0xb4, 0xb3, 0xea, 0x09, 0xc1, 0x0a, 0x09, 0x29, 0xff, - 0x90, 0xeb, 0xb0, 0xea, 0x07, 0x76, 0x5f, 0x98, 0x83, 0xd8, 0xc5, 0x6b, 0xb1, 0x43, 0x5f, 0xe0, - 0xa9, 0x71, 0x23, 0xe3, 0x92, 0x09, 0x83, 0x28, 0x5b, 0x51, 0xd2, 0xab, 0x28, 0x54, 0xd7, 0x00, - 0x6d, 0xa8, 0x5a, 0x71, 0xd4, 0xbf, 0x29, 0x3d, 0x3b, 0x3f, 0x7e, 0x00, 0x4f, 0x7a, 0x28, 0x9b, - 0x57, 0x3f, 0xbb, 0x96, 0xcc, 0xb1, 0x3d, 0xdb, 0x3a, 0xee, 0x59, 0xfd, 0x62, 0x95, 0xcb, 0xb1, - 0x93, 0x46, 0x51, 0x46, 0x7a, 0xb6, 0x35, 0xe6, 0x51, 0xfa, 0xb1, 0x01, 0x67, 0x3b, 0x78, 0x4e, - 0x4a, 0x4a, 0xeb, 0x28, 0xe0, 0xfd, 0x5b, 0x22, 0x20, 0xcf, 0x4e, 0x7c, 0x3b, 0x39, 0xfb, 0x50, - 0xaf, 0x26, 0xf2, 0xd0, 0x93, 0xec, 0x2b, 0x7d, 0x44, 0x44, 0x74, 0x8c, 0x9c, 0x13, 0xa7, 0x8a, - 0x89, 0xa0, 0x94, 0xad, 0xa2, 0x5c, 0x1d, 0x4f, 0x13, 0xe9, 0x5f, 0x0c, 0x68, 0xc8, 0x93, 0x49, - 0xf2, 0x58, 0x94, 0x7e, 0xd9, 0x33, 0x13, 0x5e, 0x87, 0xd7, 0x1e, 0xf8, 0x8c, 0xf3, 0x36, 0xac, - 0x26, 0x40, 0xf9, 0x73, 0x4d, 0xe5, 0xd3, 0xb8, 0xca, 0x26, 0xa8, 0x29, 0x77, 0x96, 0xa1, 0xef, - 0x1b, 0xb0, 0xa8, 0x2f, 0x23, 0x3b, 0xdc, 0xe1, 0x6e, 0x5f, 0x9c, 0xf4, 0x88, 0xfe, 0x36, 0x34, - 0xf0, 0x02, 0xb3, 0xa7, 0x81, 0x64, 0x35, 0x16, 0x49, 0x86, 0x98, 0xd9, 0xac, 0x6f, 0x3f, 0x39, - 0xf1, 0xae, 0xb1, 0xa0, 0xf8, 0x86, 0x1c, 0xde, 0xb9, 0x50, 0x7c, 0x21, 0x99, 0x04, 0x49, 0x19, - 0x19, 0x1e, 0x9b, 0x48, 0xff, 0x6c, 0x00, 0x39, 0x8e, 0x37, 0x4d, 0x4e, 0x38, 0x80, 0x79, 0xd4, - 0xab, 0xdc, 0x71, 0xdf, 0x87, 0x9d, 0x1d, 0x5c, 0xf6, 0x52, 0x52, 0x76, 0xab, 0x79, 0xa5, 0xde, - 0x72, 0x12, 0x65, 0xf4, 0x2d, 0x98, 0xbb, 0xe6, 0x59, 0x1d, 0xee, 0x90, 0x10, 0x56, 0x07, 0xb1, - 0x6b, 0x99, 0x45, 0x2b, 0x34, 0x0d, 0x65, 0xd2, 0xd6, 0x44, 0x93, 0x5e, 0x8d, 0x5d, 0x4b, 0xcf, - 0xee, 0x50, 0x5c, 0x13, 0x12, 0xc8, 0x04, 0x24, 0xca, 0x56, 0x06, 0x7a, 0x7c, 0x66, 0x36, 0xfa, - 0x33, 0x03, 0x20, 0xc9, 0xb0, 0xdc, 0x21, 0x3f, 0x80, 0x86, 0x9a, 0x99, 0xec, 0x91, 0xe2, 0x22, - 0x2e, 0xdc, 0x73, 0x11, 0x19, 0xc4, 0xb8, 0x4f, 0x27, 0xc1, 0x51, 0x46, 0x06, 0x85, 0x49, 0x4a, - 0xf8, 0xd3, 0x19, 0x80, 0xec, 0x83, 0xa6, 0xf1, 0x65, 0x2e, 0xa8, 0x2b, 0x25, 0x82, 0xba, 0xf0, - 0xcc, 0x39, 0xf3, 0xd9, 0xff, 0x6f, 0x84, 0x25, 0x7c, 0x4f, 0xdd, 0xf9, 0xda, 0x43, 0xa1, 0xf2, - 0x58, 0xa9, 0xff, 0x8d, 0xc8, 0xcf, 0xc6, 0xff, 0x8d, 0x40, 0x91, 0x7a, 0x5f, 0x79, 0x0a, 0xe6, - 0xa4, 0xcd, 0x45, 0x80, 0xe9, 0x2c, 0x57, 0x01, 0x68, 0x39, 0x65, 0x38, 0x80, 0xfe, 0xad, 0x02, - 0x4b, 0x45, 0xa7, 0x4e, 0xe3, 0x8c, 0x82, 0x55, 0x2b, 0x9f, 0xb3, 0x55, 0x67, 0x3e, 0x35, 0xab, - 0xce, 0x3e, 0xc8, 0xaa, 0x1f, 0xcd, 0xc1, 0x99, 0x1d, 0xc7, 0x41, 0xa3, 0x4e, 0xcd, 0x57, 0xbf, - 0x35, 0x20, 0xf7, 0xb8, 0x6d, 0x0e, 0x02, 0x6f, 0x98, 0x6e, 0xb3, 0xc8, 0x53, 0x57, 0x6b, 0x22, - 0x08, 0x31, 0xb5, 0x7c, 0xb7, 0x74, 0xed, 0xf2, 0xd4, 0xf8, 0xf3, 0xf9, 0xbd, 0x34, 0x50, 0xf6, - 0x58, 0xfa, 0x56, 0x7e, 0x35, 0xf0, 0x86, 0xf8, 0x7d, 0x7b, 0xde, 0xae, 0xee, 0x27, 0xbf, 0x33, - 0xe0, 0xc2, 0xbd, 0x60, 0x06, 0x5e, 0x60, 0x62, 0xa1, 0x88, 0x59, 0xfd, 0x8d, 0xd2, 0x2b, 0xfd, - 0xd2, 0xfd, 0x57, 0x9a, 0x53, 0x41, 0xd9, 0xc6, 0xa4, 0xa5, 0x5e, 0xf5, 0x02, 0x2c, 0x96, 0xc9, - 0x2f, 0x0d, 0x58, 0x4f, 0x43, 0x4e, 0xe3, 0x38, 0xf6, 0x9b, 0xe9, 0x01, 0x71, 0x76, 0xba, 0xfb, - 0xc7, 0x7b, 0x23, 0xcb, 0x7a, 0x19, 0x43, 0x56, 0x2e, 0x6c, 0xd7, 0x7e, 0x33, 0x39, 0x2b, 0xfe, - 0xc2, 0x80, 0x47, 0xc6, 0xe6, 0x05, 0xc2, 0xe7, 0x87, 0x43, 0xe1, 0x46, 0x21, 0x6e, 0x65, 0x56, - 0x7a, 0x41, 0xe7, 0x27, 0x2e, 0x28, 0x03, 0x1e, 0x5b, 0x0f, 0x4b, 0x3b, 0xc8, 0xaf, 0x0d, 0x38, - 0xa7, 0xef, 0x51, 0x73, 0x06, 0xcf, 0xc5, 0x9b, 0xbe, 0x90, 0xde, 0x2b, 0xbd, 0x22, 0x9a, 0xbf, - 0xa2, 0x9d, 0x08, 0x4d, 0xd9, 0x59, 0xd5, 0xbb, 0x93, 0xb8, 0x30, 0x0d, 0x31, 0xfa, 0x27, 0x03, - 0x9a, 0xb9, 0xe7, 0x93, 0x1b, 0xb6, 0xbb, 0xef, 0x88, 0xff, 0x93, 0x47, 0x94, 0x87, 0xfe, 0x2f, - 0x9b, 0xce, 0x37, 0x3e, 0x38, 0xda, 0x30, 0x3e, 0x3c, 0xda, 0x30, 0xfe, 0x71, 0xb4, 0x61, 0xbc, - 0xf7, 0xc9, 0xc6, 0xa9, 0x0f, 0x3f, 0xd9, 0x38, 0xf5, 0xd1, 0x27, 0x1b, 0xa7, 0xbe, 0xd3, 0x2e, - 0x98, 0x51, 0x66, 0xe0, 0xa7, 0xbd, 0xc1, 0xc0, 0xee, 0xdb, 0xdc, 0xc1, 0xf6, 0x16, 0xfe, 0x07, - 0xa5, 0x32, 0x69, 0x6f, 0x4e, 0xf1, 0xda, 0x57, 0xfe, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x38, 0xb2, - 0xde, 0xfe, 0x5d, 0x29, 0x00, 0x00, + // 2800 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0x4d, 0x6c, 0x24, 0x47, + 0xf5, 0xdf, 0x1e, 0x7b, 0xed, 0x99, 0x37, 0xb6, 0xd7, 0x2e, 0xdb, 0xff, 0x9d, 0x78, 0x13, 0xcf, + 0xa6, 0xf6, 0xaf, 0xc4, 0x01, 0x65, 0xac, 0x35, 0xe1, 0x40, 0x94, 0x28, 0x78, 0xbc, 0xbb, 0x61, + 0x12, 0xef, 0x26, 0xa9, 0x75, 0x40, 0x40, 0xa0, 0x55, 0x33, 0x5d, 0xe3, 0x6d, 0x6d, 0x4f, 0x77, + 0xa7, 0x3f, 0xbc, 0x6b, 0x20, 0x01, 0x25, 0x12, 0xe2, 0x00, 0x22, 0x70, 0xe5, 0x8e, 0xc4, 0x1d, + 0x8e, 0x9c, 0x90, 0x42, 0x0e, 0x1c, 0x82, 0xb8, 0x44, 0x39, 0x0c, 0xc8, 0x39, 0x20, 0x71, 0xdc, + 0x03, 0x07, 0x4e, 0xa8, 0xaa, 0x5e, 0x7f, 0x8d, 0xc7, 0xbb, 0xdb, 0x1e, 0x92, 0x70, 0xe0, 0x34, + 0x5d, 0xaf, 0xaa, 0x7e, 0xef, 0xd5, 0x7b, 0xaf, 0xde, 0x7b, 0x55, 0x35, 0xb0, 0xde, 0xf3, 0x06, + 0x96, 0xb8, 0xbb, 0xe9, 0x08, 0xd7, 0xda, 0x3c, 0xb8, 0xdc, 0x15, 0x11, 0xbf, 0xac, 0x1a, 0x2d, + 0x3f, 0xf0, 0x22, 0x8f, 0x2c, 0xeb, 0xfe, 0x96, 0x22, 0x61, 0xff, 0xda, 0xca, 0xbe, 0xb7, 0xef, + 0xa9, 0xfe, 0x4d, 0xf9, 0xa5, 0x87, 0xae, 0x35, 0xf7, 0x3d, 0x6f, 0xdf, 0x11, 0x9b, 0xaa, 0xd5, + 0x8d, 0xfb, 0x9b, 0x91, 0x3d, 0x10, 0x61, 0xc4, 0x07, 0x3e, 0x0e, 0x58, 0xef, 0x79, 0xe1, 0xc0, + 0x0b, 0x37, 0xbb, 0x3c, 0x14, 0x29, 0xaf, 0x9e, 0x67, 0xbb, 0xba, 0x9f, 0xbe, 0x5b, 0x85, 0xda, + 0xae, 0x70, 0xad, 0xed, 0x30, 0x14, 0x11, 0x79, 0x16, 0x40, 0x32, 0xb5, 0xdd, 0x7d, 0xd3, 0xb6, + 0x1a, 0xc6, 0x45, 0x63, 0x63, 0xba, 0x7d, 0xe1, 0x68, 0xd8, 0xac, 0x74, 0xae, 0xdc, 0x1b, 0x36, + 0x97, 0x0e, 0xf9, 0xc0, 0x79, 0x96, 0x66, 0x23, 0x28, 0xab, 0x61, 0xa3, 0x63, 0x91, 0xaf, 0x40, + 0x95, 0x4b, 0x10, 0x39, 0xb3, 0xa2, 0x66, 0xae, 0x1f, 0x0d, 0x9b, 0xb3, 0x0a, 0x58, 0x4d, 0x3f, + 0xa7, 0xa7, 0x27, 0x83, 0x28, 0x9b, 0x55, 0x9f, 0x1d, 0x8b, 0x7c, 0x19, 0x66, 0x7d, 0xcf, 0x73, + 0xe4, 0xcc, 0x29, 0x35, 0xf3, 0xd1, 0xa3, 0x61, 0x73, 0xe6, 0x55, 0xcf, 0x73, 0xd4, 0xc4, 0x05, + 0x3d, 0x11, 0x87, 0x50, 0x36, 0x23, 0xbf, 0x3a, 0x16, 0x79, 0x02, 0xce, 0x7a, 0x77, 0x5c, 0x11, + 0x34, 0xa6, 0x2f, 0x1a, 0x1b, 0xb5, 0xf6, 0xe2, 0xbd, 0x61, 0x73, 0x4e, 0x0f, 0x55, 0x64, 0xca, + 0x74, 0x37, 0xf9, 0x3e, 0xd4, 0xf8, 0xc0, 0x8b, 0xdd, 0xc8, 0xb4, 0xdd, 0xc6, 0xd9, 0x8b, 0xc6, + 0x46, 0x7d, 0xeb, 0x91, 0x96, 0xd6, 0x4b, 0x4b, 0xea, 0x25, 0xd1, 0x71, 0x6b, 0xc7, 0xb3, 0xdd, + 0xf6, 0xce, 0x07, 0xc3, 0xe6, 0x99, 0x7b, 0xc3, 0xe6, 0x22, 0x8a, 0x9b, 0xcc, 0xa4, 0xff, 0x1a, + 0x36, 0x9f, 0xdc, 0xb7, 0xa3, 0x5b, 0x71, 0xb7, 0xd5, 0xf3, 0x06, 0x9b, 0xa8, 0x58, 0xfd, 0xf3, + 0x74, 0x68, 0xdd, 0xde, 0x8c, 0x0e, 0x7d, 0x11, 0x2a, 0x10, 0x56, 0xd5, 0xd3, 0x3a, 0x2e, 0xf9, + 0x2e, 0xcc, 0x25, 0x0a, 0x93, 0xb6, 0x69, 0xcc, 0x28, 0xfe, 0x6b, 0x2d, 0x6d, 0xb8, 0x56, 0x62, + 0xb8, 0xd6, 0x5e, 0x62, 0xb8, 0x76, 0x13, 0x05, 0x58, 0x2e, 0xaa, 0x5b, 0xce, 0xa6, 0xef, 0xfd, + 0xb5, 0x69, 0xb0, 0x3a, 0x92, 0xe4, 0x14, 0xf2, 0x03, 0x58, 0xe6, 0x07, 0xdc, 0x76, 0x78, 0xd7, + 0x11, 0x66, 0xe4, 0x99, 0x5d, 0x2f, 0x08, 0xbc, 0x3b, 0x8d, 0x59, 0xa5, 0x92, 0x5d, 0x09, 0xf5, + 0xf1, 0xb0, 0xf9, 0xc4, 0x43, 0xc8, 0xdd, 0x71, 0xa3, 0x7b, 0xc3, 0xe6, 0x1a, 0xae, 0xfa, 0x38, + 0x24, 0x65, 0x4b, 0x29, 0x75, 0xcf, 0x6b, 0x2b, 0x1a, 0xb9, 0x0c, 0x33, 0xdc, 0xf7, 0xa5, 0xe1, + 0xaa, 0xca, 0x70, 0x6b, 0x47, 0xc3, 0xe6, 0xd9, 0x6d, 0xdf, 0x57, 0x76, 0x9b, 0x47, 0x2c, 0x35, + 0x80, 0xb2, 0xb3, 0xdc, 0xf7, 0x3b, 0x16, 0xb9, 0x05, 0x73, 0xfb, 0x8e, 0xd7, 0xe5, 0x8e, 0x69, + 0xbb, 0x96, 0xb8, 0xdb, 0xa8, 0x29, 0x49, 0xaf, 0x96, 0x90, 0xf4, 0x8a, 0xe8, 0x65, 0xea, 0xc9, + 0x63, 0x51, 0x56, 0xd7, 0xcd, 0x8e, 0x6c, 0x91, 0xbb, 0xb0, 0xea, 0xf0, 0x50, 0xda, 0x2e, 0x12, + 0x01, 0xef, 0x45, 0xb6, 0xe7, 0x6a, 0x1b, 0xc0, 0x03, 0x6d, 0xb0, 0x81, 0x36, 0x78, 0x14, 0x6d, + 0x30, 0x0e, 0x46, 0x1b, 0x63, 0x59, 0xf6, 0x75, 0xb2, 0x2e, 0x65, 0x94, 0x6d, 0x80, 0x9e, 0x72, + 0x57, 0x97, 0x0f, 0x44, 0xa3, 0xae, 0x56, 0x48, 0x8f, 0x86, 0xcd, 0xda, 0x8e, 0x74, 0xea, 0x1b, + 0x7c, 0x20, 0xb2, 0xed, 0x94, 0x0d, 0xa4, 0xac, 0xa6, 0x1a, 0xb2, 0x9f, 0xdc, 0x86, 0xf9, 0xc8, + 0x8b, 0xb8, 0x63, 0x06, 0xe2, 0x0e, 0x0f, 0xac, 0xb0, 0x31, 0xa7, 0x50, 0xae, 0x95, 0xb6, 0xe8, + 0x8a, 0x66, 0x53, 0x00, 0xa3, 0x6c, 0x4e, 0xb5, 0x19, 0x36, 0xff, 0x59, 0x87, 0xba, 0xb6, 0xa8, + 0x8e, 0x03, 0x5f, 0x85, 0x39, 0x6d, 0xf4, 0x42, 0x24, 0x78, 0x2c, 0x8d, 0x04, 0xa8, 0xfb, 0xfc, + 0x18, 0xca, 0xea, 0x69, 0xb3, 0x63, 0x49, 0x0d, 0xe4, 0x22, 0x89, 0x8e, 0x07, 0x4a, 0x03, 0xbb, + 0x18, 0x30, 0x1e, 0x1c, 0x50, 0xae, 0xc2, 0xa2, 0x1d, 0x9a, 0x61, 0xa4, 0xdc, 0x10, 0xdd, 0x5a, + 0x86, 0x87, 0x6a, 0xfb, 0xc2, 0xbd, 0x61, 0xf3, 0xbc, 0x9e, 0x3b, 0x3a, 0x82, 0xb2, 0x05, 0x3b, + 0xbc, 0xa9, 0x28, 0xe8, 0xa2, 0x32, 0xb8, 0x70, 0x3b, 0x90, 0x62, 0x4c, 0xe7, 0x82, 0x0b, 0xb7, + 0x83, 0x42, 0x70, 0xd1, 0x43, 0x64, 0x70, 0x91, 0x3d, 0xd6, 0xe7, 0x1b, 0x34, 0xde, 0x06, 0x40, + 0x08, 0x2f, 0x8e, 0x30, 0x64, 0xdc, 0x87, 0xfb, 0x15, 0xe4, 0xbe, 0x54, 0xe0, 0xee, 0xc5, 0x51, + 0x29, 0xf6, 0xb8, 0xde, 0x57, 0xe2, 0x88, 0xfc, 0xca, 0x80, 0x95, 0x6e, 0x60, 0x5b, 0xfb, 0xc2, + 0x32, 0x75, 0xbc, 0xd6, 0x7d, 0x2a, 0xac, 0xdc, 0x57, 0x94, 0x1b, 0x28, 0xca, 0x05, 0xf4, 0x90, + 0x31, 0x20, 0xa5, 0x84, 0x22, 0x88, 0xa0, 0xfc, 0x72, 0x5b, 0xcd, 0x27, 0x16, 0x2c, 0x64, 0x9e, + 0xa7, 0x36, 0x74, 0xf5, 0x81, 0x1b, 0xfa, 0x71, 0x94, 0x6b, 0x75, 0xd4, 0x73, 0xb3, 0x9d, 0x3c, + 0x9f, 0x12, 0xd5, 0x1e, 0x3e, 0x04, 0x52, 0xf0, 0x2c, 0x33, 0xe0, 0x91, 0xc0, 0x68, 0xf5, 0x72, + 0xe9, 0x68, 0xf5, 0x88, 0xe6, 0x7b, 0x1c, 0x91, 0xb2, 0xc5, 0x30, 0xe7, 0xae, 0x8c, 0x47, 0x82, + 0xfc, 0xc8, 0x80, 0x15, 0x15, 0x6d, 0x44, 0x18, 0x99, 0xbc, 0xd7, 0x8b, 0x07, 0xb1, 0xc3, 0x23, + 0x61, 0xa9, 0xc0, 0x55, 0x6b, 0x5f, 0x2f, 0xcd, 0x1d, 0xad, 0x31, 0x0e, 0x93, 0xb2, 0xe5, 0x84, + 0xbc, 0x9d, 0x51, 0x8f, 0x45, 0xe9, 0xfa, 0xa7, 0x16, 0xa5, 0x7f, 0x08, 0x2b, 0x81, 0x08, 0x45, + 0x70, 0x20, 0xcc, 0x02, 0xc7, 0xb9, 0xc9, 0xd6, 0x3a, 0x0e, 0x93, 0x32, 0x82, 0xe4, 0x17, 0x1f, + 0x26, 0x4d, 0xcc, 0x7f, 0xb6, 0x69, 0x62, 0xe1, 0x34, 0x69, 0xe2, 0x79, 0x98, 0xb7, 0x43, 0xd3, + 0xb1, 0xdf, 0x8c, 0x6d, 0x4b, 0xb9, 0xc8, 0x39, 0x15, 0x21, 0x1b, 0x59, 0xe0, 0x2f, 0x74, 0x53, + 0x36, 0x67, 0x87, 0xbb, 0x59, 0xf3, 0x77, 0x15, 0x98, 0x96, 0xbc, 0xf2, 0x25, 0x98, 0x51, 0xa2, + 0x04, 0xbb, 0x0a, 0xf5, 0x81, 0x67, 0xc5, 0x8e, 0xd0, 0x4b, 0xa8, 0xa8, 0x25, 0xfc, 0xff, 0xd1, + 0xb0, 0x09, 0xd7, 0x15, 0x19, 0xd7, 0x40, 0xf4, 0xf4, 0xdc, 0x50, 0xca, 0x60, 0x90, 0x8e, 0x18, + 0x51, 0xc4, 0xd4, 0x69, 0x14, 0xe1, 0x00, 0xe8, 0x20, 0x63, 0xf1, 0x88, 0x37, 0xa6, 0x2f, 0x4e, + 0x6d, 0xd4, 0xb7, 0x9e, 0x6a, 0x8d, 0xa9, 0xa4, 0x5b, 0x2a, 0x94, 0x5c, 0xe1, 0x11, 0x97, 0xd8, + 0xd7, 0xb9, 0xef, 0xdb, 0xee, 0xbe, 0xe6, 0x96, 0xf6, 0xe4, 0x62, 0x69, 0x8a, 0x49, 0x59, 0x8d, + 0x27, 0xfd, 0xf4, 0xcf, 0x06, 0xac, 0xbd, 0x1e, 0x8a, 0x40, 0xcd, 0x90, 0x29, 0x4d, 0xef, 0x5e, + 0x44, 0xcb, 0x2a, 0x53, 0xe3, 0xfe, 0x95, 0xe9, 0x17, 0x61, 0x56, 0x8a, 0x96, 0xa5, 0x48, 0x92, + 0xe9, 0x1a, 0x3b, 0x28, 0x9b, 0x91, 0x5f, 0x1d, 0x4b, 0x0e, 0x2e, 0x56, 0xc9, 0xe4, 0x3e, 0x86, + 0xb9, 0x0c, 0x35, 0x0c, 0x32, 0x2a, 0xef, 0x4d, 0x6d, 0x4c, 0xb7, 0x57, 0xb2, 0xfc, 0x94, 0x76, + 0x51, 0x56, 0xd5, 0xdf, 0x1d, 0x8b, 0xbe, 0x53, 0x81, 0x95, 0x71, 0xba, 0x29, 0x54, 0xf6, 0x46, + 0xb9, 0xca, 0xfe, 0x65, 0x20, 0x9a, 0x1a, 0x05, 0xdc, 0x0d, 0xed, 0xc8, 0x94, 0x3b, 0x15, 0xd7, + 0xfa, 0x58, 0x16, 0x16, 0x8f, 0x8f, 0xa1, 0x6c, 0x51, 0x11, 0xf7, 0x34, 0x6d, 0xef, 0xd0, 0x17, + 0xa4, 0x0b, 0x10, 0xc6, 0xbe, 0xef, 0x1c, 0x9a, 0x3d, 0xee, 0xa3, 0x97, 0xec, 0x94, 0x8e, 0x0f, + 0x68, 0xd8, 0x0c, 0x89, 0xb2, 0x9a, 0x6e, 0xec, 0x70, 0x9f, 0xfe, 0xbd, 0x02, 0xf3, 0x57, 0xef, + 0x46, 0xc2, 0xb5, 0x84, 0x65, 0xca, 0x22, 0x81, 0x2c, 0x40, 0x25, 0x59, 0x37, 0xab, 0xd8, 0x16, + 0x69, 0xa5, 0xda, 0x70, 0x71, 0x21, 0xcb, 0xc7, 0x54, 0xe0, 0xa6, 0x2a, 0x70, 0xa5, 0x25, 0x34, + 0x55, 0xa6, 0x72, 0x6d, 0xb8, 0x9c, 0x25, 0xd2, 0x2e, 0xca, 0x34, 0xac, 0x4c, 0xbf, 0xcf, 0xa9, + 0x4d, 0xad, 0x02, 0x89, 0x29, 0xed, 0xa9, 0x0a, 0x97, 0xd1, 0x4d, 0x9d, 0x75, 0x53, 0x56, 0xb7, + 0x43, 0x15, 0x5b, 0xd4, 0x56, 0xfe, 0x26, 0x2c, 0xa5, 0xa8, 0x66, 0xe2, 0x31, 0x67, 0x15, 0xe3, + 0xd6, 0xd1, 0xb0, 0xb9, 0xb0, 0x8d, 0x6c, 0xd2, 0xcd, 0xdd, 0x18, 0x11, 0xc5, 0x4c, 0xbd, 0x69, + 0x81, 0xe7, 0xc7, 0x5a, 0xe4, 0x25, 0x20, 0x03, 0xdb, 0x35, 0xe3, 0xd0, 0x32, 0x0f, 0xb8, 0x13, + 0x0b, 0xd3, 0x11, 0x7d, 0x5d, 0x9f, 0x14, 0xcc, 0x79, 0x7c, 0x0c, 0x65, 0xe7, 0x06, 0xb6, 0xfb, + 0x7a, 0x68, 0x7d, 0x5d, 0x92, 0x76, 0x25, 0xe5, 0xf7, 0x06, 0x10, 0x25, 0xca, 0x9e, 0x27, 0xf5, + 0x9c, 0x38, 0xdb, 0x29, 0x03, 0xd1, 0x84, 0xa7, 0x4f, 0x2c, 0x10, 0xa7, 0xd4, 0x46, 0x79, 0xa8, + 0x02, 0x91, 0xfe, 0xb4, 0x06, 0x44, 0x8a, 0xa5, 0x43, 0x40, 0xfb, 0xf3, 0x93, 0xbf, 0x05, 0x55, + 0x8c, 0x15, 0x21, 0x2e, 0x20, 0xe7, 0x90, 0x49, 0x0f, 0x65, 0xb3, 0x3a, 0x8c, 0x84, 0xe4, 0x19, + 0x80, 0x74, 0xff, 0x87, 0x18, 0x1b, 0x56, 0xb3, 0x8d, 0x91, 0xf5, 0x51, 0x56, 0x4b, 0x82, 0x43, + 0x48, 0x5c, 0x58, 0xd0, 0x47, 0x08, 0x4d, 0x12, 0xda, 0xa5, 0x6a, 0xed, 0x17, 0x4b, 0x1f, 0x48, + 0x56, 0xf3, 0x07, 0x92, 0x04, 0x8d, 0x32, 0x7d, 0xdc, 0x69, 0x63, 0x9b, 0xbc, 0x63, 0xc0, 0xaa, + 0x1e, 0x52, 0xa8, 0x99, 0x84, 0xa5, 0xdc, 0xad, 0xa6, 0x0b, 0xcd, 0x52, 0x7c, 0x1f, 0xcd, 0xf3, + 0x1d, 0x01, 0xa5, 0x6c, 0x59, 0xd1, 0xf3, 0x27, 0x07, 0x61, 0xc9, 0x88, 0xa3, 0x87, 0x4b, 0xdd, + 0xe1, 0x99, 0x7a, 0xa7, 0x34, 0xe3, 0xa5, 0x3c, 0x63, 0x89, 0x44, 0x59, 0x4d, 0x35, 0x64, 0xe2, + 0x20, 0xbf, 0x30, 0x60, 0x4d, 0x77, 0x8d, 0x2d, 0xf9, 0xaa, 0x8a, 0xe9, 0xcd, 0xd2, 0x4c, 0x1f, + 0xcf, 0x33, 0x1d, 0x5f, 0xf8, 0x35, 0x54, 0x67, 0x67, 0x4c, 0xf5, 0xf7, 0x06, 0xba, 0x14, 0xf7, + 0x03, 0xac, 0x78, 0xb7, 0x4b, 0xc7, 0xd9, 0xbc, 0x03, 0x72, 0x3f, 0x40, 0x07, 0xdc, 0xf6, 0x03, + 0xa9, 0x55, 0x74, 0x32, 0x89, 0x0f, 0x93, 0xc5, 0xf1, 0x0c, 0x29, 0x75, 0x57, 0xc9, 0xe3, 0x00, + 0x96, 0x8a, 0xb5, 0xb6, 0x64, 0xa5, 0x8b, 0xd8, 0x97, 0x4a, 0xb3, 0x6a, 0x8c, 0x2b, 0xde, 0x15, + 0xc7, 0x73, 0xf9, 0xda, 0x5d, 0xf2, 0xbd, 0x03, 0x4b, 0x71, 0x64, 0x3b, 0x76, 0xc8, 0x55, 0x01, + 0x18, 0xc8, 0x1f, 0x2c, 0x65, 0x4f, 0xcd, 0xf7, 0x18, 0x20, 0x65, 0x8b, 0x39, 0x1a, 0x53, 0xa4, + 0xf7, 0xeb, 0xb0, 0xa8, 0xa2, 0x85, 0x3c, 0x41, 0x84, 0xaf, 0xf2, 0x80, 0x0f, 0xc2, 0x49, 0x32, + 0xb7, 0x09, 0xb5, 0xd8, 0xf4, 0xfc, 0xc8, 0x1e, 0x70, 0x07, 0xeb, 0xba, 0x76, 0xe9, 0x05, 0x60, + 0x92, 0x4b, 0x81, 0x28, 0xab, 0xc6, 0xaf, 0xe8, 0x4f, 0xf2, 0x1a, 0x4c, 0xcb, 0xe3, 0x23, 0xe6, + 0xf1, 0xe7, 0x4b, 0x63, 0xd7, 0xd1, 0xfe, 0x3c, 0x14, 0x94, 0x29, 0x28, 0xf2, 0x0d, 0x98, 0x09, + 0x1d, 0xcf, 0x17, 0x97, 0xf1, 0x46, 0xf0, 0x85, 0xd2, 0xa0, 0x78, 0x65, 0xa5, 0x51, 0x28, 0x43, + 0xb8, 0x14, 0x78, 0x0b, 0x83, 0xde, 0x64, 0xc0, 0x5b, 0x09, 0xf0, 0x16, 0x79, 0x0d, 0x56, 0x84, + 0xab, 0xbc, 0xaa, 0x78, 0xcf, 0x31, 0xa3, 0x12, 0x7e, 0x33, 0x3b, 0xce, 0x8c, 0x1b, 0x45, 0x19, + 0xd1, 0xe4, 0xc2, 0x7d, 0x87, 0x80, 0x7a, 0x32, 0x4a, 0xaa, 0x57, 0x07, 0xad, 0x2b, 0xa5, 0x05, + 0x26, 0x45, 0x9f, 0x57, 0x5a, 0x06, 0xf4, 0x76, 0xa9, 0xeb, 0xdb, 0x30, 0x8f, 0x7d, 0xa8, 0xf2, + 0x6a, 0xe9, 0xfb, 0x29, 0xcd, 0x68, 0xa5, 0xc0, 0x28, 0xd1, 0xfc, 0x9c, 0x6e, 0xdf, 0xd4, 0xfa, + 0x1f, 0x61, 0xb6, 0x85, 0x41, 0xe9, 0x3f, 0xc2, 0x6c, 0xab, 0xc8, 0x6c, 0x8b, 0xdc, 0x80, 0x29, + 0x27, 0x3a, 0xc0, 0xb8, 0xf4, 0x5c, 0x69, 0x16, 0x80, 0x71, 0x2f, 0x3a, 0xa0, 0x4c, 0x02, 0x91, + 0x77, 0x0d, 0x58, 0x4d, 0x4e, 0x60, 0xea, 0x50, 0x78, 0x2b, 0x10, 0xe1, 0x2d, 0xcf, 0xb1, 0x30, + 0x1e, 0xdd, 0x28, 0xcd, 0x22, 0x39, 0x6e, 0x8e, 0x03, 0xa5, 0x6c, 0x25, 0x47, 0xdf, 0x4b, 0xc8, + 0xe4, 0x2d, 0x58, 0xce, 0x8f, 0xf7, 0x85, 0xcb, 0x9d, 0xe8, 0x10, 0x43, 0xd3, 0x6e, 0x69, 0x11, + 0xd6, 0x8e, 0x8b, 0x80, 0x90, 0x94, 0x91, 0x1c, 0xf5, 0x55, 0x4d, 0x94, 0x71, 0x31, 0x3f, 0xb6, + 0xeb, 0xb9, 0x71, 0xa8, 0x0e, 0xd8, 0x13, 0xc4, 0xc5, 0x63, 0x80, 0x94, 0x2d, 0xe6, 0x68, 0x6d, + 0x49, 0x92, 0x75, 0x4b, 0x72, 0x15, 0xd0, 0xe7, 0xbd, 0xc8, 0x0b, 0xf0, 0x9c, 0xfd, 0x62, 0x69, + 0xae, 0xab, 0xc5, 0x8b, 0x05, 0x8d, 0x46, 0xd9, 0x3c, 0x12, 0xae, 0xa9, 0x36, 0x79, 0x01, 0xa0, + 0x67, 0xa6, 0x41, 0xf7, 0x9c, 0x0a, 0xba, 0x8f, 0x1f, 0x0d, 0x9b, 0xd5, 0x9d, 0x2c, 0xea, 0x26, + 0x27, 0x59, 0x33, 0x8b, 0xbb, 0xd5, 0x9e, 0xee, 0xb6, 0xe8, 0x6f, 0x2b, 0x70, 0x9e, 0x69, 0xc8, + 0x76, 0x7c, 0xd8, 0xe5, 0xbd, 0xdb, 0xe9, 0xa1, 0x6c, 0x92, 0x78, 0x9e, 0xd3, 0x03, 0xde, 0xe5, + 0x55, 0x26, 0xab, 0xdf, 0x8a, 0x68, 0x99, 0x1e, 0xf0, 0x92, 0xce, 0x85, 0x85, 0xae, 0x16, 0x3f, + 0xe1, 0x37, 0x35, 0x19, 0xbf, 0x22, 0x1a, 0x65, 0xf3, 0x48, 0xd0, 0xfc, 0xe8, 0x3f, 0xa6, 0x61, + 0x7e, 0x3b, 0x56, 0x77, 0x2b, 0x98, 0xfc, 0x36, 0xd2, 0xb7, 0x09, 0xad, 0xaa, 0xa5, 0x13, 0x9f, + 0x24, 0xbe, 0x03, 0x0d, 0xae, 0xa7, 0x9a, 0x56, 0x1c, 0x68, 0x87, 0x0a, 0x45, 0xcf, 0x73, 0xad, + 0x10, 0x8b, 0xf1, 0x4b, 0xf7, 0x86, 0xcd, 0x26, 0xce, 0x3d, 0x61, 0x24, 0x65, 0xff, 0x87, 0x5d, + 0x57, 0xb0, 0xe7, 0xa6, 0xee, 0x90, 0xd9, 0xa3, 0x1b, 0xf7, 0xfb, 0x22, 0x40, 0x15, 0x9c, 0x3a, + 0x7b, 0x68, 0x14, 0xca, 0x10, 0x4e, 0xa6, 0xd0, 0x5e, 0x1c, 0xfa, 0x98, 0xed, 0x4e, 0x9d, 0x42, + 0x25, 0x06, 0x65, 0x0a, 0x4a, 0x42, 0x86, 0x91, 0xf0, 0x31, 0xcf, 0x3d, 0x5f, 0xda, 0x58, 0xf5, + 0x24, 0xc0, 0x0a, 0x09, 0x29, 0x7f, 0xc8, 0x0d, 0x58, 0xf6, 0x03, 0xbb, 0x27, 0xcc, 0x7e, 0xec, + 0xe2, 0xb5, 0xd8, 0xa1, 0x2f, 0xf0, 0xd4, 0xb8, 0x9e, 0xc5, 0x92, 0x31, 0x83, 0x28, 0x5b, 0x52, + 0xd4, 0x6b, 0x48, 0x54, 0xd7, 0x00, 0x2d, 0xa8, 0x5a, 0x71, 0xd4, 0xbb, 0x25, 0x2d, 0x3b, 0x3b, + 0x7a, 0x00, 0x4f, 0x7a, 0x28, 0x9b, 0x55, 0x9f, 0x1d, 0x4b, 0xe6, 0xd8, 0xae, 0x6d, 0x1d, 0xb7, + 0xac, 0x7e, 0xb1, 0xca, 0xe5, 0xd8, 0x71, 0xa3, 0x28, 0x23, 0x5d, 0xdb, 0x1a, 0xb1, 0x28, 0xfd, + 0xd8, 0x80, 0xf3, 0x6d, 0x3c, 0x27, 0x25, 0xa5, 0x75, 0x14, 0xf0, 0xde, 0x6d, 0x11, 0x90, 0x67, + 0xc7, 0xbe, 0x9d, 0x9c, 0x7f, 0xa8, 0x57, 0x13, 0x79, 0xe8, 0x49, 0xf6, 0x95, 0x3e, 0x22, 0x22, + 0x3a, 0x7a, 0xce, 0xa9, 0x53, 0xc5, 0x58, 0x50, 0xca, 0x96, 0x91, 0xae, 0x8e, 0xa7, 0x09, 0xf5, + 0x4f, 0x06, 0xac, 0xc8, 0x93, 0x49, 0xf2, 0x58, 0x94, 0xae, 0xec, 0x99, 0x31, 0xaf, 0xc3, 0xab, + 0x0f, 0x7c, 0xc6, 0x79, 0x1b, 0x96, 0x13, 0xa0, 0xfc, 0xb9, 0xa6, 0xf2, 0x69, 0x5c, 0x65, 0x13, + 0xe4, 0x94, 0x3b, 0xcb, 0xd0, 0xf7, 0x0d, 0x98, 0xd7, 0x97, 0x91, 0x6d, 0xee, 0x70, 0xb7, 0x27, + 0x4e, 0x7b, 0x44, 0x7f, 0x1b, 0x56, 0xf0, 0x02, 0xb3, 0xab, 0x81, 0x64, 0x35, 0x16, 0xc9, 0x08, + 0x31, 0xb5, 0x51, 0xdf, 0x7a, 0x72, 0xec, 0x5d, 0x63, 0x81, 0xf1, 0x4d, 0x39, 0xbc, 0x7d, 0xa9, + 0xf8, 0x42, 0x32, 0x0e, 0x92, 0x32, 0x32, 0x38, 0x36, 0x91, 0xfe, 0xd1, 0x00, 0x72, 0x1c, 0x6f, + 0x92, 0x9c, 0x70, 0x00, 0xb3, 0xc8, 0x57, 0x99, 0xe3, 0xbe, 0x0f, 0x3b, 0xdb, 0x28, 0xf6, 0x42, + 0x52, 0x76, 0xab, 0x79, 0xa5, 0xde, 0x72, 0x12, 0x66, 0xf4, 0x2d, 0x98, 0xb9, 0xee, 0x59, 0x6d, + 0xee, 0x90, 0x10, 0x96, 0xfb, 0xb1, 0x6b, 0x99, 0x45, 0x2d, 0x34, 0x0c, 0xa5, 0xd2, 0xe6, 0x58, + 0x95, 0x5e, 0x8b, 0x5d, 0x4b, 0xcf, 0x6e, 0x53, 0x94, 0x09, 0x03, 0xc8, 0x18, 0x24, 0xca, 0x96, + 0xfa, 0x7a, 0x7c, 0xa6, 0x36, 0xfa, 0x13, 0x03, 0x20, 0xc9, 0xb0, 0xdc, 0x21, 0xdf, 0x83, 0x15, + 0x35, 0x33, 0xd9, 0x23, 0x45, 0x21, 0x2e, 0x9d, 0x28, 0x44, 0x06, 0x31, 0x6a, 0xd3, 0x71, 0x70, + 0x94, 0x91, 0x7e, 0x61, 0x92, 0x22, 0xfe, 0x78, 0x0a, 0x20, 0x5b, 0xd0, 0x24, 0xb6, 0xcc, 0x39, + 0x75, 0xa5, 0x84, 0x53, 0x17, 0x9e, 0x39, 0xa7, 0x3e, 0xfb, 0xff, 0x46, 0x58, 0xc2, 0xf7, 0xd4, + 0x9d, 0xaf, 0x3d, 0x10, 0x2a, 0x8f, 0x95, 0xfa, 0x6f, 0x44, 0x7e, 0x36, 0xfe, 0x37, 0x02, 0x49, + 0xea, 0x7d, 0xe5, 0x29, 0x98, 0x91, 0x3a, 0x17, 0x01, 0xa6, 0xb3, 0x5c, 0x05, 0xa0, 0xe9, 0x94, + 0xe1, 0x00, 0xfa, 0x97, 0x0a, 0x2c, 0x14, 0x8d, 0x3a, 0x89, 0x31, 0x0a, 0x5a, 0xad, 0x7c, 0xce, + 0x5a, 0x9d, 0xfa, 0xd4, 0xb4, 0x3a, 0xfd, 0x20, 0xad, 0x7e, 0x34, 0x03, 0xe7, 0xb6, 0x1d, 0x07, + 0x95, 0x3a, 0x71, 0xbc, 0xfa, 0xb5, 0x01, 0xb9, 0xc7, 0x6d, 0xb3, 0x1f, 0x78, 0x83, 0x74, 0x9b, + 0x45, 0x9e, 0xba, 0x5a, 0x13, 0x41, 0x88, 0xa9, 0xe5, 0xdb, 0xa5, 0x6b, 0x97, 0xa7, 0x46, 0x9f, + 0xcf, 0x4f, 0xe2, 0x40, 0xd9, 0x63, 0xe9, 0x5b, 0xf9, 0xb5, 0xc0, 0x1b, 0xe0, 0xfa, 0xf6, 0xbc, + 0x5d, 0xdd, 0x4f, 0x7e, 0x63, 0xc0, 0xa5, 0x93, 0x60, 0xfa, 0x5e, 0x60, 0x62, 0xa1, 0x88, 0x59, + 0xfd, 0x8d, 0xd2, 0x92, 0x7e, 0xe1, 0xfe, 0x92, 0xe6, 0x58, 0x50, 0xb6, 0x3e, 0x4e, 0xd4, 0x6b, + 0x5e, 0x80, 0xc5, 0x32, 0xf9, 0xb9, 0x01, 0x6b, 0xa9, 0xcb, 0x69, 0x1c, 0xc7, 0x7e, 0x33, 0x3d, + 0x20, 0x4e, 0x4f, 0x76, 0xff, 0x78, 0x32, 0xb2, 0xac, 0x97, 0xd1, 0x65, 0xa5, 0x60, 0xbb, 0xf6, + 0x9b, 0xc9, 0x59, 0xf1, 0x67, 0x06, 0x3c, 0x32, 0x32, 0x2f, 0x10, 0x3e, 0x3f, 0x1c, 0x08, 0x37, + 0x0a, 0x71, 0x2b, 0xb3, 0xd2, 0x02, 0x5d, 0x1c, 0x2b, 0x50, 0x06, 0x3c, 0x22, 0x0f, 0x4b, 0x3b, + 0xc8, 0x2f, 0x0d, 0xb8, 0xa0, 0xef, 0x51, 0x73, 0x0a, 0xcf, 0xf9, 0x9b, 0xbe, 0x90, 0xde, 0x2b, + 0x2d, 0x11, 0xcd, 0x5f, 0xd1, 0x8e, 0x85, 0xa6, 0xec, 0xbc, 0xea, 0xdd, 0x4e, 0x4c, 0x98, 0xba, + 0x18, 0xfd, 0x83, 0x01, 0x8d, 0xdc, 0xf3, 0xc9, 0x4d, 0xdb, 0xdd, 0x77, 0xc4, 0x7f, 0xc9, 0x23, + 0xca, 0x43, 0xff, 0xcb, 0x46, 0xe6, 0xbf, 0x9a, 0x14, 0x4b, 0x0e, 0x0c, 0xff, 0xf7, 0x08, 0x5d, + 0xea, 0x11, 0xfa, 0x84, 0xd7, 0xb8, 0xb3, 0xa7, 0x79, 0x8d, 0x6b, 0x7f, 0xed, 0x83, 0xa3, 0x75, + 0xe3, 0xc3, 0xa3, 0x75, 0xe3, 0x6f, 0x47, 0xeb, 0xc6, 0x7b, 0x9f, 0xac, 0x9f, 0xf9, 0xf0, 0x93, + 0xf5, 0x33, 0x1f, 0x7d, 0xb2, 0x7e, 0xe6, 0x5b, 0xad, 0x82, 0x3f, 0xcb, 0x95, 0x3c, 0xed, 0xf5, + 0xfb, 0x76, 0xcf, 0xe6, 0x0e, 0xb6, 0x37, 0xf1, 0xaf, 0xac, 0xca, 0xb7, 0xbb, 0x33, 0x2a, 0xc1, + 0x7c, 0xe9, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xc1, 0x28, 0x6e, 0x27, 0xe6, 0x2a, 0x00, 0x00, } func (m *LendAsset) Marshal() (dAtA []byte, err error) { @@ -3040,6 +3118,67 @@ func (m *AssetToPairSingleMapping) MarshalToSizedBuffer(dAtA []byte) (int, error return len(dAtA) - i, nil } +func (m *PoolPairs) 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 *PoolPairs) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PoolPairs) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.MinUsdValueLeft != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.MinUsdValueLeft)) + i-- + dAtA[i] = 0x28 + } + if len(m.AssetData) > 0 { + for iNdEx := len(m.AssetData) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AssetData[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintLend(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.CPoolName) > 0 { + i -= len(m.CPoolName) + copy(dAtA[i:], m.CPoolName) + i = encodeVarintLend(dAtA, i, uint64(len(m.CPoolName))) + i-- + dAtA[i] = 0x1a + } + if len(m.ModuleName) > 0 { + i -= len(m.ModuleName) + copy(dAtA[i:], m.ModuleName) + i = encodeVarintLend(dAtA, i, uint64(len(m.ModuleName))) + i-- + dAtA[i] = 0x12 + } + if m.PoolID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.PoolID)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func encodeVarintLend(dAtA []byte, offset int, v uint64) int { offset -= sovLend(v) base := offset @@ -3562,6 +3701,35 @@ func (m *AssetToPairSingleMapping) Size() (n int) { return n } +func (m *PoolPairs) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.PoolID != 0 { + n += 1 + sovLend(uint64(m.PoolID)) + } + l = len(m.ModuleName) + if l > 0 { + n += 1 + l + sovLend(uint64(l)) + } + l = len(m.CPoolName) + if l > 0 { + n += 1 + l + sovLend(uint64(l)) + } + if len(m.AssetData) > 0 { + for _, e := range m.AssetData { + l = e.Size() + n += 1 + l + sovLend(uint64(l)) + } + } + if m.MinUsdValueLeft != 0 { + n += 1 + sovLend(uint64(m.MinUsdValueLeft)) + } + return n +} + func sovLend(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -7943,6 +8111,192 @@ func (m *AssetToPairSingleMapping) Unmarshal(dAtA []byte) error { } return nil } +func (m *PoolPairs) 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 ErrIntOverflowLend + } + 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: PoolPairs: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PoolPairs: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) + } + m.PoolID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PoolID |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ModuleName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + 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 ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ModuleName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CPoolName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + 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 ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CPoolName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AssetData", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AssetData = append(m.AssetData, &AssetDataPoolMapping{}) + if err := m.AssetData[len(m.AssetData)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MinUsdValueLeft", wireType) + } + m.MinUsdValueLeft = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.MinUsdValueLeft |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipLend(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthLend + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipLend(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/lend/types/pair.go b/x/lend/types/pair.go index b35cbe22c..8d08bcc8f 100644 --- a/x/lend/types/pair.go +++ b/x/lend/types/pair.go @@ -101,3 +101,13 @@ func (m *AssetRatesParams) Validate() error { } return nil } + +func (m *PoolPairs) Validate() error { + if len(m.CPoolName) >= 20 { + return ErrInvalidLengthCPoolName + } + if m.AssetData == nil { + return fmt.Errorf("AssetData cannot be nil") + } + return nil +} diff --git a/x/liquidity/types/liquidity.pb.go b/x/liquidity/types/liquidity.pb.go index 4b74e687d..fb267252b 100644 --- a/x/liquidity/types/liquidity.pb.go +++ b/x/liquidity/types/liquidity.pb.go @@ -10,7 +10,7 @@ import ( _ "github.com/gogo/protobuf/gogoproto" proto "github.com/gogo/protobuf/proto" github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" - _ "google.golang.org/protobuf/types/known/timestamppb" + _ "github.com/golang/protobuf/ptypes/timestamp" io "io" math "math" math_bits "math/bits" diff --git a/x/liquidity/types/params.pb.go b/x/liquidity/types/params.pb.go index 1ce9f40e2..b81de407b 100644 --- a/x/liquidity/types/params.pb.go +++ b/x/liquidity/types/params.pb.go @@ -10,7 +10,7 @@ import ( _ "github.com/gogo/protobuf/gogoproto" proto "github.com/gogo/protobuf/proto" github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" - _ "google.golang.org/protobuf/types/known/durationpb" + _ "github.com/golang/protobuf/ptypes/duration" io "io" math "math" math_bits "math/bits" diff --git a/x/liquidity/types/query.pb.go b/x/liquidity/types/query.pb.go index 7117fe68a..7a88f1d56 100644 --- a/x/liquidity/types/query.pb.go +++ b/x/liquidity/types/query.pb.go @@ -13,12 +13,12 @@ import ( grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/proto" github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" + _ "github.com/golang/protobuf/ptypes/duration" + _ "github.com/golang/protobuf/ptypes/timestamp" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" - _ "google.golang.org/protobuf/types/known/durationpb" - _ "google.golang.org/protobuf/types/known/timestamppb" io "io" math "math" math_bits "math/bits" diff --git a/x/liquidity/types/tx.pb.go b/x/liquidity/types/tx.pb.go index 7d5522762..fa4276e34 100644 --- a/x/liquidity/types/tx.pb.go +++ b/x/liquidity/types/tx.pb.go @@ -12,10 +12,10 @@ import ( grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/proto" github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" + _ "github.com/golang/protobuf/ptypes/duration" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" - _ "google.golang.org/protobuf/types/known/durationpb" io "io" math "math" math_bits "math/bits" diff --git a/x/vault/types/vault.pb.go b/x/vault/types/vault.pb.go index 06e24f432..4f2cc36e0 100644 --- a/x/vault/types/vault.pb.go +++ b/x/vault/types/vault.pb.go @@ -28,7 +28,7 @@ var _ = time.Kitchen // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -// app_vault_type_id will be the key for the KVStore for this value. +//app_vault_type_id will be the key for the KVStore for this value. type Vault struct { Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` AppId uint64 `protobuf:"varint,2,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty" yaml:"app_id"` From 7772eff030ea3bb32abb0b77b7921d3d30b89611 Mon Sep 17 00:00:00 2001 From: Pratik Date: Tue, 14 Feb 2023 12:43:13 +0530 Subject: [PATCH 04/12] adding lend interest queries --- proto/comdex/lend/v1beta1/lend.proto | 26 +- proto/comdex/lend/v1beta1/query.proto | 13 + x/lend/client/cli/query.go | 32 ++ x/lend/keeper/grpc_query.go | 9 + x/lend/keeper/iter.go | 31 ++ x/lend/types/lend.pb.go | 772 ++++++++++++++++++++------ x/lend/types/query.pb.go | 611 +++++++++++++++----- x/lend/types/query.pb.gw.go | 65 +++ 8 files changed, 1244 insertions(+), 315 deletions(-) diff --git a/proto/comdex/lend/v1beta1/lend.proto b/proto/comdex/lend/v1beta1/lend.proto index 4c7ff64a8..ae3808309 100644 --- a/proto/comdex/lend/v1beta1/lend.proto +++ b/proto/comdex/lend/v1beta1/lend.proto @@ -602,4 +602,28 @@ message PoolPairs { uint64 min_usd_value_left = 5 [ (gogoproto.moretags) = "yaml:\"min_usd_value_left\""]; -} \ No newline at end of file +} + +message PoolInterestData { + uint64 asset_id = 1 [ + (gogoproto.customname) = "AssetID", + (gogoproto.moretags) = "yaml:\"asset_id\"" + ]; + string lend_interest = 2 [ + (gogoproto.nullable) = false, + (gogoproto.moretags) = "yaml:\"lend_interest\"", + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int" + ]; +} + +message PoolInterest { + uint64 pool_id = 1 [ + (gogoproto.customname) = "PoolID", + (gogoproto.moretags) = "yaml:\"pool_id\"" + ]; + repeated PoolInterestData pool_interest_data = 2 [ + (gogoproto.nullable) = false, + (gogoproto.customname) = "PoolInterestData", + (gogoproto.moretags) = "yaml:\"pool_interest_data\"" + ]; +} diff --git a/proto/comdex/lend/v1beta1/query.proto b/proto/comdex/lend/v1beta1/query.proto index ac6a5afa8..bcb4f4f85 100644 --- a/proto/comdex/lend/v1beta1/query.proto +++ b/proto/comdex/lend/v1beta1/query.proto @@ -299,6 +299,15 @@ message QueryFundModBalByAssetPoolResponse { ]; } +message QueryLendInterestRequest {} + +message QueryLendInterestResponse { + repeated PoolInterest pool_interest = 1 [ + (gogoproto.nullable) = false, + (gogoproto.moretags) = "yaml:\"pool_interest\"" + ]; +} + service Query { rpc QueryLends(QueryLendsRequest) returns (QueryLendsResponse) { option (google.api.http).get = "/comdex/lend/v1beta1/lends"; @@ -392,5 +401,9 @@ service Query { rpc QueryFundModBalByAssetPool(QueryFundModBalByAssetPoolRequest) returns (QueryFundModBalByAssetPoolResponse) { option (google.api.http).get = "/comdex/lend/v1beta1/fund_mod_bal_by_asset_pool/{asset_id}/{pool_id}"; }; + + rpc QueryLendInterest(QueryLendInterestRequest) returns (QueryLendInterestResponse) { + option (google.api.http).get = "/comdex/lend/v1beta1/lend_interest"; + }; } diff --git a/x/lend/client/cli/query.go b/x/lend/client/cli/query.go index d38f7fbd3..49a33debe 100644 --- a/x/lend/client/cli/query.go +++ b/x/lend/client/cli/query.go @@ -50,6 +50,7 @@ func GetQueryCmd() *cobra.Command { QueryFundReserveBalance(), QueryAllReserveStats(), QueryFundModBalByAssetPool(), + queryLendIntereest(), ) return cmd @@ -903,3 +904,34 @@ func QueryFundModBalByAssetPool() *cobra.Command { flags.AddQueryFlagsToCmd(cmd) return cmd } + +func queryLendIntereest() *cobra.Command { + cmd := &cobra.Command{ + Use: "lend_interest", + Short: "Query lends", + RunE: func(cmd *cobra.Command, args []string) error { + ctx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + if err != nil { + return err + } + queryClient := types.NewQueryClient(ctx) + res, err := queryClient.QueryLendInterest( + context.Background(), + &types.QueryLendInterestRequest{}, + ) + if err != nil { + return err + } + + return ctx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + flags.AddPaginationFlagsToCmd(cmd, "lend_interest") + + return cmd +} diff --git a/x/lend/keeper/grpc_query.go b/x/lend/keeper/grpc_query.go index 50b6aa287..c1da7f42d 100644 --- a/x/lend/keeper/grpc_query.go +++ b/x/lend/keeper/grpc_query.go @@ -599,3 +599,12 @@ func (q QueryServer) QueryFundModBalByAssetPool(c context.Context, req *types.Qu return &types.QueryFundModBalByAssetPoolResponse{Amount: modBal}, nil } + +func (q QueryServer) QueryLendInterest(c context.Context, req *types.QueryLendInterestRequest) (*types.QueryLendInterestResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "request cannot be empty") + } + ctx := sdk.UnwrapSDKContext(c) + lendInterest, _ := q.IterateLendsForQuery(ctx) + return &types.QueryLendInterestResponse{PoolInterest: lendInterest}, nil +} diff --git a/x/lend/keeper/iter.go b/x/lend/keeper/iter.go index 538754715..47658ccef 100644 --- a/x/lend/keeper/iter.go +++ b/x/lend/keeper/iter.go @@ -286,3 +286,34 @@ func (k Keeper) ReBalanceStableRates(ctx sdk.Context, borrowPos types.BorrowAsse return borrowPos, nil } + +func (k Keeper) IterateLendsForQuery(ctx sdk.Context) ([]types.PoolInterest, error) { + var ( + poolInterest types.PoolInterest + poolInterestData types.PoolInterestData + ) + + pools := k.GetPools(ctx) + var allPoolInterest []types.PoolInterest + for _, pool := range pools { + var v []types.PoolInterestData + poolInterest.PoolID = pool.PoolID + for _, data := range pool.AssetData { + lbMap, _ := k.GetAssetStatsByPoolIDAndAssetID(ctx, pool.PoolID, data.AssetID) + totalInt := sdk.ZeroDec() + for _, ID := range lbMap.LendIds { + lend, _ := k.GetLend(ctx, ID) + lendAPR, _ := k.GetLendAPRByAssetIDAndPoolID(ctx, lend.PoolID, lend.AssetID) + interestPerBlock, _, _ := k.CalculateLendReward(ctx, lend.AmountIn.Amount.String(), lendAPR, lend) + totalInt = totalInt.Add(interestPerBlock) + } + poolInterestData.LendInterest = totalInt.TruncateInt() + poolInterestData.AssetID = data.AssetID + v = append(v, poolInterestData) + } + poolInterest.PoolInterestData = v + allPoolInterest = append(allPoolInterest, poolInterest) + } + + return allPoolInterest, nil +} diff --git a/x/lend/types/lend.pb.go b/x/lend/types/lend.pb.go index c2cfd85de..d8591c693 100644 --- a/x/lend/types/lend.pb.go +++ b/x/lend/types/lend.pb.go @@ -1487,6 +1487,103 @@ func (m *PoolPairs) GetMinUsdValueLeft() uint64 { return 0 } +type PoolInterestData struct { + AssetID uint64 `protobuf:"varint,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty" yaml:"asset_id"` + LendInterest github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=lend_interest,json=lendInterest,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"lend_interest" yaml:"lend_interest"` +} + +func (m *PoolInterestData) Reset() { *m = PoolInterestData{} } +func (m *PoolInterestData) String() string { return proto.CompactTextString(m) } +func (*PoolInterestData) ProtoMessage() {} +func (*PoolInterestData) Descriptor() ([]byte, []int) { + return fileDescriptor_b87bb4bef8334ddd, []int{22} +} +func (m *PoolInterestData) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PoolInterestData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PoolInterestData.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 *PoolInterestData) XXX_Merge(src proto.Message) { + xxx_messageInfo_PoolInterestData.Merge(m, src) +} +func (m *PoolInterestData) XXX_Size() int { + return m.Size() +} +func (m *PoolInterestData) XXX_DiscardUnknown() { + xxx_messageInfo_PoolInterestData.DiscardUnknown(m) +} + +var xxx_messageInfo_PoolInterestData proto.InternalMessageInfo + +func (m *PoolInterestData) GetAssetID() uint64 { + if m != nil { + return m.AssetID + } + return 0 +} + +type PoolInterest struct { + PoolID uint64 `protobuf:"varint,1,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty" yaml:"pool_id"` + PoolInterestData []PoolInterestData `protobuf:"bytes,2,rep,name=pool_interest_data,json=poolInterestData,proto3" json:"pool_interest_data" yaml:"pool_interest_data"` +} + +func (m *PoolInterest) Reset() { *m = PoolInterest{} } +func (m *PoolInterest) String() string { return proto.CompactTextString(m) } +func (*PoolInterest) ProtoMessage() {} +func (*PoolInterest) Descriptor() ([]byte, []int) { + return fileDescriptor_b87bb4bef8334ddd, []int{23} +} +func (m *PoolInterest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PoolInterest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PoolInterest.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 *PoolInterest) XXX_Merge(src proto.Message) { + xxx_messageInfo_PoolInterest.Merge(m, src) +} +func (m *PoolInterest) XXX_Size() int { + return m.Size() +} +func (m *PoolInterest) XXX_DiscardUnknown() { + xxx_messageInfo_PoolInterest.DiscardUnknown(m) +} + +var xxx_messageInfo_PoolInterest proto.InternalMessageInfo + +func (m *PoolInterest) GetPoolID() uint64 { + if m != nil { + return m.PoolID + } + return 0 +} + +func (m *PoolInterest) GetPoolInterestData() []PoolInterestData { + if m != nil { + return m.PoolInterestData + } + return nil +} + func init() { proto.RegisterType((*LendAsset)(nil), "comdex.lend.v1beta1.LendAsset") proto.RegisterType((*BorrowAsset)(nil), "comdex.lend.v1beta1.BorrowAsset") @@ -1510,187 +1607,194 @@ func init() { proto.RegisterType((*AllReserveStats)(nil), "comdex.lend.v1beta1.AllReserveStats") proto.RegisterType((*AssetToPairSingleMapping)(nil), "comdex.lend.v1beta1.AssetToPairSingleMapping") proto.RegisterType((*PoolPairs)(nil), "comdex.lend.v1beta1.PoolPairs") + proto.RegisterType((*PoolInterestData)(nil), "comdex.lend.v1beta1.PoolInterestData") + proto.RegisterType((*PoolInterest)(nil), "comdex.lend.v1beta1.PoolInterest") } func init() { proto.RegisterFile("comdex/lend/v1beta1/lend.proto", fileDescriptor_b87bb4bef8334ddd) } var fileDescriptor_b87bb4bef8334ddd = []byte{ - // 2800 bytes of a gzipped FileDescriptorProto + // 2874 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0x4d, 0x6c, 0x24, 0x47, - 0xf5, 0xdf, 0x1e, 0x7b, 0xed, 0x99, 0x37, 0xb6, 0xd7, 0x2e, 0xdb, 0xff, 0x9d, 0x78, 0x13, 0xcf, - 0xa6, 0xf6, 0xaf, 0xc4, 0x01, 0x65, 0xac, 0x35, 0xe1, 0x40, 0x94, 0x28, 0x78, 0xbc, 0xbb, 0x61, - 0x12, 0xef, 0x26, 0xa9, 0x75, 0x40, 0x40, 0xa0, 0x55, 0x33, 0x5d, 0xe3, 0x6d, 0x6d, 0x4f, 0x77, - 0xa7, 0x3f, 0xbc, 0x6b, 0x20, 0x01, 0x25, 0x12, 0xe2, 0x00, 0x22, 0x70, 0xe5, 0x8e, 0xc4, 0x1d, - 0x8e, 0x9c, 0x90, 0x42, 0x0e, 0x1c, 0x82, 0xb8, 0x44, 0x39, 0x0c, 0xc8, 0x39, 0x20, 0x71, 0xdc, - 0x03, 0x07, 0x4e, 0xa8, 0xaa, 0x5e, 0x7f, 0x8d, 0xc7, 0xbb, 0xdb, 0x1e, 0x92, 0x70, 0xe0, 0x34, - 0x5d, 0xaf, 0xaa, 0x7e, 0xef, 0xd5, 0x7b, 0xaf, 0xde, 0x7b, 0x55, 0x35, 0xb0, 0xde, 0xf3, 0x06, - 0x96, 0xb8, 0xbb, 0xe9, 0x08, 0xd7, 0xda, 0x3c, 0xb8, 0xdc, 0x15, 0x11, 0xbf, 0xac, 0x1a, 0x2d, - 0x3f, 0xf0, 0x22, 0x8f, 0x2c, 0xeb, 0xfe, 0x96, 0x22, 0x61, 0xff, 0xda, 0xca, 0xbe, 0xb7, 0xef, - 0xa9, 0xfe, 0x4d, 0xf9, 0xa5, 0x87, 0xae, 0x35, 0xf7, 0x3d, 0x6f, 0xdf, 0x11, 0x9b, 0xaa, 0xd5, - 0x8d, 0xfb, 0x9b, 0x91, 0x3d, 0x10, 0x61, 0xc4, 0x07, 0x3e, 0x0e, 0x58, 0xef, 0x79, 0xe1, 0xc0, - 0x0b, 0x37, 0xbb, 0x3c, 0x14, 0x29, 0xaf, 0x9e, 0x67, 0xbb, 0xba, 0x9f, 0xbe, 0x5b, 0x85, 0xda, - 0xae, 0x70, 0xad, 0xed, 0x30, 0x14, 0x11, 0x79, 0x16, 0x40, 0x32, 0xb5, 0xdd, 0x7d, 0xd3, 0xb6, - 0x1a, 0xc6, 0x45, 0x63, 0x63, 0xba, 0x7d, 0xe1, 0x68, 0xd8, 0xac, 0x74, 0xae, 0xdc, 0x1b, 0x36, - 0x97, 0x0e, 0xf9, 0xc0, 0x79, 0x96, 0x66, 0x23, 0x28, 0xab, 0x61, 0xa3, 0x63, 0x91, 0xaf, 0x40, - 0x95, 0x4b, 0x10, 0x39, 0xb3, 0xa2, 0x66, 0xae, 0x1f, 0x0d, 0x9b, 0xb3, 0x0a, 0x58, 0x4d, 0x3f, - 0xa7, 0xa7, 0x27, 0x83, 0x28, 0x9b, 0x55, 0x9f, 0x1d, 0x8b, 0x7c, 0x19, 0x66, 0x7d, 0xcf, 0x73, - 0xe4, 0xcc, 0x29, 0x35, 0xf3, 0xd1, 0xa3, 0x61, 0x73, 0xe6, 0x55, 0xcf, 0x73, 0xd4, 0xc4, 0x05, - 0x3d, 0x11, 0x87, 0x50, 0x36, 0x23, 0xbf, 0x3a, 0x16, 0x79, 0x02, 0xce, 0x7a, 0x77, 0x5c, 0x11, - 0x34, 0xa6, 0x2f, 0x1a, 0x1b, 0xb5, 0xf6, 0xe2, 0xbd, 0x61, 0x73, 0x4e, 0x0f, 0x55, 0x64, 0xca, - 0x74, 0x37, 0xf9, 0x3e, 0xd4, 0xf8, 0xc0, 0x8b, 0xdd, 0xc8, 0xb4, 0xdd, 0xc6, 0xd9, 0x8b, 0xc6, - 0x46, 0x7d, 0xeb, 0x91, 0x96, 0xd6, 0x4b, 0x4b, 0xea, 0x25, 0xd1, 0x71, 0x6b, 0xc7, 0xb3, 0xdd, - 0xf6, 0xce, 0x07, 0xc3, 0xe6, 0x99, 0x7b, 0xc3, 0xe6, 0x22, 0x8a, 0x9b, 0xcc, 0xa4, 0xff, 0x1a, - 0x36, 0x9f, 0xdc, 0xb7, 0xa3, 0x5b, 0x71, 0xb7, 0xd5, 0xf3, 0x06, 0x9b, 0xa8, 0x58, 0xfd, 0xf3, - 0x74, 0x68, 0xdd, 0xde, 0x8c, 0x0e, 0x7d, 0x11, 0x2a, 0x10, 0x56, 0xd5, 0xd3, 0x3a, 0x2e, 0xf9, - 0x2e, 0xcc, 0x25, 0x0a, 0x93, 0xb6, 0x69, 0xcc, 0x28, 0xfe, 0x6b, 0x2d, 0x6d, 0xb8, 0x56, 0x62, - 0xb8, 0xd6, 0x5e, 0x62, 0xb8, 0x76, 0x13, 0x05, 0x58, 0x2e, 0xaa, 0x5b, 0xce, 0xa6, 0xef, 0xfd, - 0xb5, 0x69, 0xb0, 0x3a, 0x92, 0xe4, 0x14, 0xf2, 0x03, 0x58, 0xe6, 0x07, 0xdc, 0x76, 0x78, 0xd7, - 0x11, 0x66, 0xe4, 0x99, 0x5d, 0x2f, 0x08, 0xbc, 0x3b, 0x8d, 0x59, 0xa5, 0x92, 0x5d, 0x09, 0xf5, - 0xf1, 0xb0, 0xf9, 0xc4, 0x43, 0xc8, 0xdd, 0x71, 0xa3, 0x7b, 0xc3, 0xe6, 0x1a, 0xae, 0xfa, 0x38, - 0x24, 0x65, 0x4b, 0x29, 0x75, 0xcf, 0x6b, 0x2b, 0x1a, 0xb9, 0x0c, 0x33, 0xdc, 0xf7, 0xa5, 0xe1, - 0xaa, 0xca, 0x70, 0x6b, 0x47, 0xc3, 0xe6, 0xd9, 0x6d, 0xdf, 0x57, 0x76, 0x9b, 0x47, 0x2c, 0x35, - 0x80, 0xb2, 0xb3, 0xdc, 0xf7, 0x3b, 0x16, 0xb9, 0x05, 0x73, 0xfb, 0x8e, 0xd7, 0xe5, 0x8e, 0x69, - 0xbb, 0x96, 0xb8, 0xdb, 0xa8, 0x29, 0x49, 0xaf, 0x96, 0x90, 0xf4, 0x8a, 0xe8, 0x65, 0xea, 0xc9, - 0x63, 0x51, 0x56, 0xd7, 0xcd, 0x8e, 0x6c, 0x91, 0xbb, 0xb0, 0xea, 0xf0, 0x50, 0xda, 0x2e, 0x12, - 0x01, 0xef, 0x45, 0xb6, 0xe7, 0x6a, 0x1b, 0xc0, 0x03, 0x6d, 0xb0, 0x81, 0x36, 0x78, 0x14, 0x6d, - 0x30, 0x0e, 0x46, 0x1b, 0x63, 0x59, 0xf6, 0x75, 0xb2, 0x2e, 0x65, 0x94, 0x6d, 0x80, 0x9e, 0x72, - 0x57, 0x97, 0x0f, 0x44, 0xa3, 0xae, 0x56, 0x48, 0x8f, 0x86, 0xcd, 0xda, 0x8e, 0x74, 0xea, 0x1b, - 0x7c, 0x20, 0xb2, 0xed, 0x94, 0x0d, 0xa4, 0xac, 0xa6, 0x1a, 0xb2, 0x9f, 0xdc, 0x86, 0xf9, 0xc8, - 0x8b, 0xb8, 0x63, 0x06, 0xe2, 0x0e, 0x0f, 0xac, 0xb0, 0x31, 0xa7, 0x50, 0xae, 0x95, 0xb6, 0xe8, - 0x8a, 0x66, 0x53, 0x00, 0xa3, 0x6c, 0x4e, 0xb5, 0x19, 0x36, 0xff, 0x59, 0x87, 0xba, 0xb6, 0xa8, - 0x8e, 0x03, 0x5f, 0x85, 0x39, 0x6d, 0xf4, 0x42, 0x24, 0x78, 0x2c, 0x8d, 0x04, 0xa8, 0xfb, 0xfc, - 0x18, 0xca, 0xea, 0x69, 0xb3, 0x63, 0x49, 0x0d, 0xe4, 0x22, 0x89, 0x8e, 0x07, 0x4a, 0x03, 0xbb, - 0x18, 0x30, 0x1e, 0x1c, 0x50, 0xae, 0xc2, 0xa2, 0x1d, 0x9a, 0x61, 0xa4, 0xdc, 0x10, 0xdd, 0x5a, - 0x86, 0x87, 0x6a, 0xfb, 0xc2, 0xbd, 0x61, 0xf3, 0xbc, 0x9e, 0x3b, 0x3a, 0x82, 0xb2, 0x05, 0x3b, - 0xbc, 0xa9, 0x28, 0xe8, 0xa2, 0x32, 0xb8, 0x70, 0x3b, 0x90, 0x62, 0x4c, 0xe7, 0x82, 0x0b, 0xb7, - 0x83, 0x42, 0x70, 0xd1, 0x43, 0x64, 0x70, 0x91, 0x3d, 0xd6, 0xe7, 0x1b, 0x34, 0xde, 0x06, 0x40, - 0x08, 0x2f, 0x8e, 0x30, 0x64, 0xdc, 0x87, 0xfb, 0x15, 0xe4, 0xbe, 0x54, 0xe0, 0xee, 0xc5, 0x51, - 0x29, 0xf6, 0xb8, 0xde, 0x57, 0xe2, 0x88, 0xfc, 0xca, 0x80, 0x95, 0x6e, 0x60, 0x5b, 0xfb, 0xc2, - 0x32, 0x75, 0xbc, 0xd6, 0x7d, 0x2a, 0xac, 0xdc, 0x57, 0x94, 0x1b, 0x28, 0xca, 0x05, 0xf4, 0x90, - 0x31, 0x20, 0xa5, 0x84, 0x22, 0x88, 0xa0, 0xfc, 0x72, 0x5b, 0xcd, 0x27, 0x16, 0x2c, 0x64, 0x9e, - 0xa7, 0x36, 0x74, 0xf5, 0x81, 0x1b, 0xfa, 0x71, 0x94, 0x6b, 0x75, 0xd4, 0x73, 0xb3, 0x9d, 0x3c, - 0x9f, 0x12, 0xd5, 0x1e, 0x3e, 0x04, 0x52, 0xf0, 0x2c, 0x33, 0xe0, 0x91, 0xc0, 0x68, 0xf5, 0x72, - 0xe9, 0x68, 0xf5, 0x88, 0xe6, 0x7b, 0x1c, 0x91, 0xb2, 0xc5, 0x30, 0xe7, 0xae, 0x8c, 0x47, 0x82, - 0xfc, 0xc8, 0x80, 0x15, 0x15, 0x6d, 0x44, 0x18, 0x99, 0xbc, 0xd7, 0x8b, 0x07, 0xb1, 0xc3, 0x23, - 0x61, 0xa9, 0xc0, 0x55, 0x6b, 0x5f, 0x2f, 0xcd, 0x1d, 0xad, 0x31, 0x0e, 0x93, 0xb2, 0xe5, 0x84, - 0xbc, 0x9d, 0x51, 0x8f, 0x45, 0xe9, 0xfa, 0xa7, 0x16, 0xa5, 0x7f, 0x08, 0x2b, 0x81, 0x08, 0x45, - 0x70, 0x20, 0xcc, 0x02, 0xc7, 0xb9, 0xc9, 0xd6, 0x3a, 0x0e, 0x93, 0x32, 0x82, 0xe4, 0x17, 0x1f, - 0x26, 0x4d, 0xcc, 0x7f, 0xb6, 0x69, 0x62, 0xe1, 0x34, 0x69, 0xe2, 0x79, 0x98, 0xb7, 0x43, 0xd3, - 0xb1, 0xdf, 0x8c, 0x6d, 0x4b, 0xb9, 0xc8, 0x39, 0x15, 0x21, 0x1b, 0x59, 0xe0, 0x2f, 0x74, 0x53, - 0x36, 0x67, 0x87, 0xbb, 0x59, 0xf3, 0x77, 0x15, 0x98, 0x96, 0xbc, 0xf2, 0x25, 0x98, 0x51, 0xa2, - 0x04, 0xbb, 0x0a, 0xf5, 0x81, 0x67, 0xc5, 0x8e, 0xd0, 0x4b, 0xa8, 0xa8, 0x25, 0xfc, 0xff, 0xd1, - 0xb0, 0x09, 0xd7, 0x15, 0x19, 0xd7, 0x40, 0xf4, 0xf4, 0xdc, 0x50, 0xca, 0x60, 0x90, 0x8e, 0x18, - 0x51, 0xc4, 0xd4, 0x69, 0x14, 0xe1, 0x00, 0xe8, 0x20, 0x63, 0xf1, 0x88, 0x37, 0xa6, 0x2f, 0x4e, - 0x6d, 0xd4, 0xb7, 0x9e, 0x6a, 0x8d, 0xa9, 0xa4, 0x5b, 0x2a, 0x94, 0x5c, 0xe1, 0x11, 0x97, 0xd8, - 0xd7, 0xb9, 0xef, 0xdb, 0xee, 0xbe, 0xe6, 0x96, 0xf6, 0xe4, 0x62, 0x69, 0x8a, 0x49, 0x59, 0x8d, - 0x27, 0xfd, 0xf4, 0xcf, 0x06, 0xac, 0xbd, 0x1e, 0x8a, 0x40, 0xcd, 0x90, 0x29, 0x4d, 0xef, 0x5e, - 0x44, 0xcb, 0x2a, 0x53, 0xe3, 0xfe, 0x95, 0xe9, 0x17, 0x61, 0x56, 0x8a, 0x96, 0xa5, 0x48, 0x92, - 0xe9, 0x1a, 0x3b, 0x28, 0x9b, 0x91, 0x5f, 0x1d, 0x4b, 0x0e, 0x2e, 0x56, 0xc9, 0xe4, 0x3e, 0x86, - 0xb9, 0x0c, 0x35, 0x0c, 0x32, 0x2a, 0xef, 0x4d, 0x6d, 0x4c, 0xb7, 0x57, 0xb2, 0xfc, 0x94, 0x76, - 0x51, 0x56, 0xd5, 0xdf, 0x1d, 0x8b, 0xbe, 0x53, 0x81, 0x95, 0x71, 0xba, 0x29, 0x54, 0xf6, 0x46, - 0xb9, 0xca, 0xfe, 0x65, 0x20, 0x9a, 0x1a, 0x05, 0xdc, 0x0d, 0xed, 0xc8, 0x94, 0x3b, 0x15, 0xd7, - 0xfa, 0x58, 0x16, 0x16, 0x8f, 0x8f, 0xa1, 0x6c, 0x51, 0x11, 0xf7, 0x34, 0x6d, 0xef, 0xd0, 0x17, - 0xa4, 0x0b, 0x10, 0xc6, 0xbe, 0xef, 0x1c, 0x9a, 0x3d, 0xee, 0xa3, 0x97, 0xec, 0x94, 0x8e, 0x0f, - 0x68, 0xd8, 0x0c, 0x89, 0xb2, 0x9a, 0x6e, 0xec, 0x70, 0x9f, 0xfe, 0xbd, 0x02, 0xf3, 0x57, 0xef, - 0x46, 0xc2, 0xb5, 0x84, 0x65, 0xca, 0x22, 0x81, 0x2c, 0x40, 0x25, 0x59, 0x37, 0xab, 0xd8, 0x16, - 0x69, 0xa5, 0xda, 0x70, 0x71, 0x21, 0xcb, 0xc7, 0x54, 0xe0, 0xa6, 0x2a, 0x70, 0xa5, 0x25, 0x34, - 0x55, 0xa6, 0x72, 0x6d, 0xb8, 0x9c, 0x25, 0xd2, 0x2e, 0xca, 0x34, 0xac, 0x4c, 0xbf, 0xcf, 0xa9, - 0x4d, 0xad, 0x02, 0x89, 0x29, 0xed, 0xa9, 0x0a, 0x97, 0xd1, 0x4d, 0x9d, 0x75, 0x53, 0x56, 0xb7, - 0x43, 0x15, 0x5b, 0xd4, 0x56, 0xfe, 0x26, 0x2c, 0xa5, 0xa8, 0x66, 0xe2, 0x31, 0x67, 0x15, 0xe3, - 0xd6, 0xd1, 0xb0, 0xb9, 0xb0, 0x8d, 0x6c, 0xd2, 0xcd, 0xdd, 0x18, 0x11, 0xc5, 0x4c, 0xbd, 0x69, - 0x81, 0xe7, 0xc7, 0x5a, 0xe4, 0x25, 0x20, 0x03, 0xdb, 0x35, 0xe3, 0xd0, 0x32, 0x0f, 0xb8, 0x13, - 0x0b, 0xd3, 0x11, 0x7d, 0x5d, 0x9f, 0x14, 0xcc, 0x79, 0x7c, 0x0c, 0x65, 0xe7, 0x06, 0xb6, 0xfb, - 0x7a, 0x68, 0x7d, 0x5d, 0x92, 0x76, 0x25, 0xe5, 0xf7, 0x06, 0x10, 0x25, 0xca, 0x9e, 0x27, 0xf5, - 0x9c, 0x38, 0xdb, 0x29, 0x03, 0xd1, 0x84, 0xa7, 0x4f, 0x2c, 0x10, 0xa7, 0xd4, 0x46, 0x79, 0xa8, - 0x02, 0x91, 0xfe, 0xb4, 0x06, 0x44, 0x8a, 0xa5, 0x43, 0x40, 0xfb, 0xf3, 0x93, 0xbf, 0x05, 0x55, - 0x8c, 0x15, 0x21, 0x2e, 0x20, 0xe7, 0x90, 0x49, 0x0f, 0x65, 0xb3, 0x3a, 0x8c, 0x84, 0xe4, 0x19, - 0x80, 0x74, 0xff, 0x87, 0x18, 0x1b, 0x56, 0xb3, 0x8d, 0x91, 0xf5, 0x51, 0x56, 0x4b, 0x82, 0x43, - 0x48, 0x5c, 0x58, 0xd0, 0x47, 0x08, 0x4d, 0x12, 0xda, 0xa5, 0x6a, 0xed, 0x17, 0x4b, 0x1f, 0x48, - 0x56, 0xf3, 0x07, 0x92, 0x04, 0x8d, 0x32, 0x7d, 0xdc, 0x69, 0x63, 0x9b, 0xbc, 0x63, 0xc0, 0xaa, - 0x1e, 0x52, 0xa8, 0x99, 0x84, 0xa5, 0xdc, 0xad, 0xa6, 0x0b, 0xcd, 0x52, 0x7c, 0x1f, 0xcd, 0xf3, - 0x1d, 0x01, 0xa5, 0x6c, 0x59, 0xd1, 0xf3, 0x27, 0x07, 0x61, 0xc9, 0x88, 0xa3, 0x87, 0x4b, 0xdd, - 0xe1, 0x99, 0x7a, 0xa7, 0x34, 0xe3, 0xa5, 0x3c, 0x63, 0x89, 0x44, 0x59, 0x4d, 0x35, 0x64, 0xe2, - 0x20, 0xbf, 0x30, 0x60, 0x4d, 0x77, 0x8d, 0x2d, 0xf9, 0xaa, 0x8a, 0xe9, 0xcd, 0xd2, 0x4c, 0x1f, - 0xcf, 0x33, 0x1d, 0x5f, 0xf8, 0x35, 0x54, 0x67, 0x67, 0x4c, 0xf5, 0xf7, 0x06, 0xba, 0x14, 0xf7, - 0x03, 0xac, 0x78, 0xb7, 0x4b, 0xc7, 0xd9, 0xbc, 0x03, 0x72, 0x3f, 0x40, 0x07, 0xdc, 0xf6, 0x03, - 0xa9, 0x55, 0x74, 0x32, 0x89, 0x0f, 0x93, 0xc5, 0xf1, 0x0c, 0x29, 0x75, 0x57, 0xc9, 0xe3, 0x00, - 0x96, 0x8a, 0xb5, 0xb6, 0x64, 0xa5, 0x8b, 0xd8, 0x97, 0x4a, 0xb3, 0x6a, 0x8c, 0x2b, 0xde, 0x15, - 0xc7, 0x73, 0xf9, 0xda, 0x5d, 0xf2, 0xbd, 0x03, 0x4b, 0x71, 0x64, 0x3b, 0x76, 0xc8, 0x55, 0x01, - 0x18, 0xc8, 0x1f, 0x2c, 0x65, 0x4f, 0xcd, 0xf7, 0x18, 0x20, 0x65, 0x8b, 0x39, 0x1a, 0x53, 0xa4, - 0xf7, 0xeb, 0xb0, 0xa8, 0xa2, 0x85, 0x3c, 0x41, 0x84, 0xaf, 0xf2, 0x80, 0x0f, 0xc2, 0x49, 0x32, - 0xb7, 0x09, 0xb5, 0xd8, 0xf4, 0xfc, 0xc8, 0x1e, 0x70, 0x07, 0xeb, 0xba, 0x76, 0xe9, 0x05, 0x60, - 0x92, 0x4b, 0x81, 0x28, 0xab, 0xc6, 0xaf, 0xe8, 0x4f, 0xf2, 0x1a, 0x4c, 0xcb, 0xe3, 0x23, 0xe6, - 0xf1, 0xe7, 0x4b, 0x63, 0xd7, 0xd1, 0xfe, 0x3c, 0x14, 0x94, 0x29, 0x28, 0xf2, 0x0d, 0x98, 0x09, - 0x1d, 0xcf, 0x17, 0x97, 0xf1, 0x46, 0xf0, 0x85, 0xd2, 0xa0, 0x78, 0x65, 0xa5, 0x51, 0x28, 0x43, - 0xb8, 0x14, 0x78, 0x0b, 0x83, 0xde, 0x64, 0xc0, 0x5b, 0x09, 0xf0, 0x16, 0x79, 0x0d, 0x56, 0x84, - 0xab, 0xbc, 0xaa, 0x78, 0xcf, 0x31, 0xa3, 0x12, 0x7e, 0x33, 0x3b, 0xce, 0x8c, 0x1b, 0x45, 0x19, - 0xd1, 0xe4, 0xc2, 0x7d, 0x87, 0x80, 0x7a, 0x32, 0x4a, 0xaa, 0x57, 0x07, 0xad, 0x2b, 0xa5, 0x05, - 0x26, 0x45, 0x9f, 0x57, 0x5a, 0x06, 0xf4, 0x76, 0xa9, 0xeb, 0xdb, 0x30, 0x8f, 0x7d, 0xa8, 0xf2, - 0x6a, 0xe9, 0xfb, 0x29, 0xcd, 0x68, 0xa5, 0xc0, 0x28, 0xd1, 0xfc, 0x9c, 0x6e, 0xdf, 0xd4, 0xfa, - 0x1f, 0x61, 0xb6, 0x85, 0x41, 0xe9, 0x3f, 0xc2, 0x6c, 0xab, 0xc8, 0x6c, 0x8b, 0xdc, 0x80, 0x29, - 0x27, 0x3a, 0xc0, 0xb8, 0xf4, 0x5c, 0x69, 0x16, 0x80, 0x71, 0x2f, 0x3a, 0xa0, 0x4c, 0x02, 0x91, - 0x77, 0x0d, 0x58, 0x4d, 0x4e, 0x60, 0xea, 0x50, 0x78, 0x2b, 0x10, 0xe1, 0x2d, 0xcf, 0xb1, 0x30, - 0x1e, 0xdd, 0x28, 0xcd, 0x22, 0x39, 0x6e, 0x8e, 0x03, 0xa5, 0x6c, 0x25, 0x47, 0xdf, 0x4b, 0xc8, - 0xe4, 0x2d, 0x58, 0xce, 0x8f, 0xf7, 0x85, 0xcb, 0x9d, 0xe8, 0x10, 0x43, 0xd3, 0x6e, 0x69, 0x11, - 0xd6, 0x8e, 0x8b, 0x80, 0x90, 0x94, 0x91, 0x1c, 0xf5, 0x55, 0x4d, 0x94, 0x71, 0x31, 0x3f, 0xb6, - 0xeb, 0xb9, 0x71, 0xa8, 0x0e, 0xd8, 0x13, 0xc4, 0xc5, 0x63, 0x80, 0x94, 0x2d, 0xe6, 0x68, 0x6d, - 0x49, 0x92, 0x75, 0x4b, 0x72, 0x15, 0xd0, 0xe7, 0xbd, 0xc8, 0x0b, 0xf0, 0x9c, 0xfd, 0x62, 0x69, - 0xae, 0xab, 0xc5, 0x8b, 0x05, 0x8d, 0x46, 0xd9, 0x3c, 0x12, 0xae, 0xa9, 0x36, 0x79, 0x01, 0xa0, - 0x67, 0xa6, 0x41, 0xf7, 0x9c, 0x0a, 0xba, 0x8f, 0x1f, 0x0d, 0x9b, 0xd5, 0x9d, 0x2c, 0xea, 0x26, - 0x27, 0x59, 0x33, 0x8b, 0xbb, 0xd5, 0x9e, 0xee, 0xb6, 0xe8, 0x6f, 0x2b, 0x70, 0x9e, 0x69, 0xc8, - 0x76, 0x7c, 0xd8, 0xe5, 0xbd, 0xdb, 0xe9, 0xa1, 0x6c, 0x92, 0x78, 0x9e, 0xd3, 0x03, 0xde, 0xe5, - 0x55, 0x26, 0xab, 0xdf, 0x8a, 0x68, 0x99, 0x1e, 0xf0, 0x92, 0xce, 0x85, 0x85, 0xae, 0x16, 0x3f, - 0xe1, 0x37, 0x35, 0x19, 0xbf, 0x22, 0x1a, 0x65, 0xf3, 0x48, 0xd0, 0xfc, 0xe8, 0x3f, 0xa6, 0x61, - 0x7e, 0x3b, 0x56, 0x77, 0x2b, 0x98, 0xfc, 0x36, 0xd2, 0xb7, 0x09, 0xad, 0xaa, 0xa5, 0x13, 0x9f, - 0x24, 0xbe, 0x03, 0x0d, 0xae, 0xa7, 0x9a, 0x56, 0x1c, 0x68, 0x87, 0x0a, 0x45, 0xcf, 0x73, 0xad, - 0x10, 0x8b, 0xf1, 0x4b, 0xf7, 0x86, 0xcd, 0x26, 0xce, 0x3d, 0x61, 0x24, 0x65, 0xff, 0x87, 0x5d, - 0x57, 0xb0, 0xe7, 0xa6, 0xee, 0x90, 0xd9, 0xa3, 0x1b, 0xf7, 0xfb, 0x22, 0x40, 0x15, 0x9c, 0x3a, - 0x7b, 0x68, 0x14, 0xca, 0x10, 0x4e, 0xa6, 0xd0, 0x5e, 0x1c, 0xfa, 0x98, 0xed, 0x4e, 0x9d, 0x42, - 0x25, 0x06, 0x65, 0x0a, 0x4a, 0x42, 0x86, 0x91, 0xf0, 0x31, 0xcf, 0x3d, 0x5f, 0xda, 0x58, 0xf5, - 0x24, 0xc0, 0x0a, 0x09, 0x29, 0x7f, 0xc8, 0x0d, 0x58, 0xf6, 0x03, 0xbb, 0x27, 0xcc, 0x7e, 0xec, - 0xe2, 0xb5, 0xd8, 0xa1, 0x2f, 0xf0, 0xd4, 0xb8, 0x9e, 0xc5, 0x92, 0x31, 0x83, 0x28, 0x5b, 0x52, - 0xd4, 0x6b, 0x48, 0x54, 0xd7, 0x00, 0x2d, 0xa8, 0x5a, 0x71, 0xd4, 0xbb, 0x25, 0x2d, 0x3b, 0x3b, - 0x7a, 0x00, 0x4f, 0x7a, 0x28, 0x9b, 0x55, 0x9f, 0x1d, 0x4b, 0xe6, 0xd8, 0xae, 0x6d, 0x1d, 0xb7, - 0xac, 0x7e, 0xb1, 0xca, 0xe5, 0xd8, 0x71, 0xa3, 0x28, 0x23, 0x5d, 0xdb, 0x1a, 0xb1, 0x28, 0xfd, - 0xd8, 0x80, 0xf3, 0x6d, 0x3c, 0x27, 0x25, 0xa5, 0x75, 0x14, 0xf0, 0xde, 0x6d, 0x11, 0x90, 0x67, - 0xc7, 0xbe, 0x9d, 0x9c, 0x7f, 0xa8, 0x57, 0x13, 0x79, 0xe8, 0x49, 0xf6, 0x95, 0x3e, 0x22, 0x22, - 0x3a, 0x7a, 0xce, 0xa9, 0x53, 0xc5, 0x58, 0x50, 0xca, 0x96, 0x91, 0xae, 0x8e, 0xa7, 0x09, 0xf5, - 0x4f, 0x06, 0xac, 0xc8, 0x93, 0x49, 0xf2, 0x58, 0x94, 0xae, 0xec, 0x99, 0x31, 0xaf, 0xc3, 0xab, - 0x0f, 0x7c, 0xc6, 0x79, 0x1b, 0x96, 0x13, 0xa0, 0xfc, 0xb9, 0xa6, 0xf2, 0x69, 0x5c, 0x65, 0x13, - 0xe4, 0x94, 0x3b, 0xcb, 0xd0, 0xf7, 0x0d, 0x98, 0xd7, 0x97, 0x91, 0x6d, 0xee, 0x70, 0xb7, 0x27, - 0x4e, 0x7b, 0x44, 0x7f, 0x1b, 0x56, 0xf0, 0x02, 0xb3, 0xab, 0x81, 0x64, 0x35, 0x16, 0xc9, 0x08, - 0x31, 0xb5, 0x51, 0xdf, 0x7a, 0x72, 0xec, 0x5d, 0x63, 0x81, 0xf1, 0x4d, 0x39, 0xbc, 0x7d, 0xa9, - 0xf8, 0x42, 0x32, 0x0e, 0x92, 0x32, 0x32, 0x38, 0x36, 0x91, 0xfe, 0xd1, 0x00, 0x72, 0x1c, 0x6f, - 0x92, 0x9c, 0x70, 0x00, 0xb3, 0xc8, 0x57, 0x99, 0xe3, 0xbe, 0x0f, 0x3b, 0xdb, 0x28, 0xf6, 0x42, - 0x52, 0x76, 0xab, 0x79, 0xa5, 0xde, 0x72, 0x12, 0x66, 0xf4, 0x2d, 0x98, 0xb9, 0xee, 0x59, 0x6d, - 0xee, 0x90, 0x10, 0x96, 0xfb, 0xb1, 0x6b, 0x99, 0x45, 0x2d, 0x34, 0x0c, 0xa5, 0xd2, 0xe6, 0x58, - 0x95, 0x5e, 0x8b, 0x5d, 0x4b, 0xcf, 0x6e, 0x53, 0x94, 0x09, 0x03, 0xc8, 0x18, 0x24, 0xca, 0x96, - 0xfa, 0x7a, 0x7c, 0xa6, 0x36, 0xfa, 0x13, 0x03, 0x20, 0xc9, 0xb0, 0xdc, 0x21, 0xdf, 0x83, 0x15, - 0x35, 0x33, 0xd9, 0x23, 0x45, 0x21, 0x2e, 0x9d, 0x28, 0x44, 0x06, 0x31, 0x6a, 0xd3, 0x71, 0x70, - 0x94, 0x91, 0x7e, 0x61, 0x92, 0x22, 0xfe, 0x78, 0x0a, 0x20, 0x5b, 0xd0, 0x24, 0xb6, 0xcc, 0x39, - 0x75, 0xa5, 0x84, 0x53, 0x17, 0x9e, 0x39, 0xa7, 0x3e, 0xfb, 0xff, 0x46, 0x58, 0xc2, 0xf7, 0xd4, - 0x9d, 0xaf, 0x3d, 0x10, 0x2a, 0x8f, 0x95, 0xfa, 0x6f, 0x44, 0x7e, 0x36, 0xfe, 0x37, 0x02, 0x49, - 0xea, 0x7d, 0xe5, 0x29, 0x98, 0x91, 0x3a, 0x17, 0x01, 0xa6, 0xb3, 0x5c, 0x05, 0xa0, 0xe9, 0x94, - 0xe1, 0x00, 0xfa, 0x97, 0x0a, 0x2c, 0x14, 0x8d, 0x3a, 0x89, 0x31, 0x0a, 0x5a, 0xad, 0x7c, 0xce, - 0x5a, 0x9d, 0xfa, 0xd4, 0xb4, 0x3a, 0xfd, 0x20, 0xad, 0x7e, 0x34, 0x03, 0xe7, 0xb6, 0x1d, 0x07, - 0x95, 0x3a, 0x71, 0xbc, 0xfa, 0xb5, 0x01, 0xb9, 0xc7, 0x6d, 0xb3, 0x1f, 0x78, 0x83, 0x74, 0x9b, - 0x45, 0x9e, 0xba, 0x5a, 0x13, 0x41, 0x88, 0xa9, 0xe5, 0xdb, 0xa5, 0x6b, 0x97, 0xa7, 0x46, 0x9f, - 0xcf, 0x4f, 0xe2, 0x40, 0xd9, 0x63, 0xe9, 0x5b, 0xf9, 0xb5, 0xc0, 0x1b, 0xe0, 0xfa, 0xf6, 0xbc, - 0x5d, 0xdd, 0x4f, 0x7e, 0x63, 0xc0, 0xa5, 0x93, 0x60, 0xfa, 0x5e, 0x60, 0x62, 0xa1, 0x88, 0x59, - 0xfd, 0x8d, 0xd2, 0x92, 0x7e, 0xe1, 0xfe, 0x92, 0xe6, 0x58, 0x50, 0xb6, 0x3e, 0x4e, 0xd4, 0x6b, - 0x5e, 0x80, 0xc5, 0x32, 0xf9, 0xb9, 0x01, 0x6b, 0xa9, 0xcb, 0x69, 0x1c, 0xc7, 0x7e, 0x33, 0x3d, - 0x20, 0x4e, 0x4f, 0x76, 0xff, 0x78, 0x32, 0xb2, 0xac, 0x97, 0xd1, 0x65, 0xa5, 0x60, 0xbb, 0xf6, - 0x9b, 0xc9, 0x59, 0xf1, 0x67, 0x06, 0x3c, 0x32, 0x32, 0x2f, 0x10, 0x3e, 0x3f, 0x1c, 0x08, 0x37, - 0x0a, 0x71, 0x2b, 0xb3, 0xd2, 0x02, 0x5d, 0x1c, 0x2b, 0x50, 0x06, 0x3c, 0x22, 0x0f, 0x4b, 0x3b, - 0xc8, 0x2f, 0x0d, 0xb8, 0xa0, 0xef, 0x51, 0x73, 0x0a, 0xcf, 0xf9, 0x9b, 0xbe, 0x90, 0xde, 0x2b, - 0x2d, 0x11, 0xcd, 0x5f, 0xd1, 0x8e, 0x85, 0xa6, 0xec, 0xbc, 0xea, 0xdd, 0x4e, 0x4c, 0x98, 0xba, - 0x18, 0xfd, 0x83, 0x01, 0x8d, 0xdc, 0xf3, 0xc9, 0x4d, 0xdb, 0xdd, 0x77, 0xc4, 0x7f, 0xc9, 0x23, - 0xca, 0x43, 0xff, 0xcb, 0x46, 0xe6, 0xbf, 0x9a, 0x14, 0x4b, 0x0e, 0x0c, 0xff, 0xf7, 0x08, 0x5d, - 0xea, 0x11, 0xfa, 0x84, 0xd7, 0xb8, 0xb3, 0xa7, 0x79, 0x8d, 0x6b, 0x7f, 0xed, 0x83, 0xa3, 0x75, - 0xe3, 0xc3, 0xa3, 0x75, 0xe3, 0x6f, 0x47, 0xeb, 0xc6, 0x7b, 0x9f, 0xac, 0x9f, 0xf9, 0xf0, 0x93, - 0xf5, 0x33, 0x1f, 0x7d, 0xb2, 0x7e, 0xe6, 0x5b, 0xad, 0x82, 0x3f, 0xcb, 0x95, 0x3c, 0xed, 0xf5, - 0xfb, 0x76, 0xcf, 0xe6, 0x0e, 0xb6, 0x37, 0xf1, 0xaf, 0xac, 0xca, 0xb7, 0xbb, 0x33, 0x2a, 0xc1, - 0x7c, 0xe9, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xc1, 0x28, 0x6e, 0x27, 0xe6, 0x2a, 0x00, 0x00, + 0x15, 0xde, 0x1e, 0x7b, 0xed, 0x99, 0x37, 0xb6, 0xd7, 0x2e, 0xdb, 0xec, 0xc4, 0x9b, 0x78, 0x36, + 0xb5, 0x90, 0x38, 0xa0, 0x8c, 0xb5, 0x26, 0x39, 0x10, 0x25, 0x0a, 0x1e, 0xef, 0x6e, 0x98, 0xc4, + 0xbb, 0x49, 0x6a, 0x1d, 0x10, 0x10, 0x68, 0xd5, 0x4c, 0xd7, 0x78, 0x5b, 0xdb, 0xd3, 0xdd, 0xe9, + 0xee, 0xf1, 0xae, 0x81, 0x04, 0x94, 0x48, 0x08, 0x21, 0x10, 0x81, 0x2b, 0x77, 0x24, 0xee, 0x70, + 0x41, 0xe2, 0x84, 0x14, 0x72, 0xe0, 0x10, 0xe0, 0x12, 0xe5, 0x30, 0x20, 0xe7, 0x80, 0xc4, 0x71, + 0x0f, 0x1c, 0x38, 0xa1, 0xaa, 0x7a, 0xfd, 0x37, 0x33, 0xde, 0xdd, 0xf6, 0x90, 0x2c, 0x07, 0x4e, + 0x33, 0xfd, 0xaa, 0xea, 0x7b, 0xaf, 0xdf, 0x7b, 0xf5, 0x7e, 0xaa, 0x1a, 0xd6, 0x3b, 0x5e, 0xcf, + 0x12, 0xb7, 0x37, 0x1d, 0xe1, 0x5a, 0x9b, 0x07, 0x17, 0xdb, 0x22, 0xe2, 0x17, 0xd5, 0x43, 0xc3, + 0x0f, 0xbc, 0xc8, 0x23, 0xcb, 0x7a, 0xbc, 0xa1, 0x48, 0x38, 0xbe, 0xb6, 0xb2, 0xef, 0xed, 0x7b, + 0x6a, 0x7c, 0x53, 0xfe, 0xd3, 0x53, 0xd7, 0xea, 0xfb, 0x9e, 0xb7, 0xef, 0x88, 0x4d, 0xf5, 0xd4, + 0xee, 0x77, 0x37, 0x23, 0xbb, 0x27, 0xc2, 0x88, 0xf7, 0x7c, 0x9c, 0xb0, 0xde, 0xf1, 0xc2, 0x9e, + 0x17, 0x6e, 0xb6, 0x79, 0x28, 0x12, 0x5e, 0x1d, 0xcf, 0x76, 0xf5, 0x38, 0x7d, 0xa7, 0x0c, 0x95, + 0x5d, 0xe1, 0x5a, 0xdb, 0x61, 0x28, 0x22, 0xf2, 0x0c, 0x80, 0x64, 0x6a, 0xbb, 0xfb, 0xa6, 0x6d, + 0xd5, 0x8c, 0xf3, 0xc6, 0xc6, 0x74, 0xf3, 0xdc, 0xd1, 0xa0, 0x5e, 0x6a, 0x5d, 0xba, 0x33, 0xa8, + 0x2f, 0x1d, 0xf2, 0x9e, 0xf3, 0x0c, 0x4d, 0x67, 0x50, 0x56, 0xc1, 0x87, 0x96, 0x45, 0xbe, 0x04, + 0x65, 0x2e, 0x41, 0xe4, 0xca, 0x92, 0x5a, 0xb9, 0x7e, 0x34, 0xa8, 0xcf, 0x2a, 0x60, 0xb5, 0xfc, + 0x8c, 0x5e, 0x1e, 0x4f, 0xa2, 0x6c, 0x56, 0xfd, 0x6d, 0x59, 0xe4, 0x69, 0x98, 0xf5, 0x3d, 0xcf, + 0x91, 0x2b, 0xa7, 0xd4, 0xca, 0x87, 0x8f, 0x06, 0xf5, 0x99, 0x57, 0x3c, 0xcf, 0x51, 0x0b, 0x17, + 0xf4, 0x42, 0x9c, 0x42, 0xd9, 0x8c, 0xfc, 0xd7, 0xb2, 0xc8, 0x63, 0x70, 0xda, 0xbb, 0xe5, 0x8a, + 0xa0, 0x36, 0x7d, 0xde, 0xd8, 0xa8, 0x34, 0x17, 0xef, 0x0c, 0xea, 0x73, 0x7a, 0xaa, 0x22, 0x53, + 0xa6, 0x87, 0xc9, 0x77, 0xa1, 0xc2, 0x7b, 0x5e, 0xdf, 0x8d, 0x4c, 0xdb, 0xad, 0x9d, 0x3e, 0x6f, + 0x6c, 0x54, 0xb7, 0x1e, 0x6a, 0x68, 0xbd, 0x34, 0xa4, 0x5e, 0x62, 0x1d, 0x37, 0x76, 0x3c, 0xdb, + 0x6d, 0xee, 0xbc, 0x3f, 0xa8, 0x9f, 0xba, 0x33, 0xa8, 0x2f, 0xa2, 0xb8, 0xf1, 0x4a, 0xfa, 0xef, + 0x41, 0xfd, 0xf1, 0x7d, 0x3b, 0xba, 0xd1, 0x6f, 0x37, 0x3a, 0x5e, 0x6f, 0x13, 0x15, 0xab, 0x7f, + 0x9e, 0x0c, 0xad, 0x9b, 0x9b, 0xd1, 0xa1, 0x2f, 0x42, 0x05, 0xc2, 0xca, 0x7a, 0x59, 0xcb, 0x25, + 0xdf, 0x86, 0xb9, 0x58, 0x61, 0xd2, 0x36, 0xb5, 0x19, 0xc5, 0x7f, 0xad, 0xa1, 0x0d, 0xd7, 0x88, + 0x0d, 0xd7, 0xd8, 0x8b, 0x0d, 0xd7, 0xac, 0xa3, 0x00, 0xcb, 0x79, 0x75, 0xcb, 0xd5, 0xf4, 0xdd, + 0xbf, 0xd5, 0x0d, 0x56, 0x45, 0x92, 0x5c, 0x42, 0xbe, 0x07, 0xcb, 0xfc, 0x80, 0xdb, 0x0e, 0x6f, + 0x3b, 0xc2, 0x8c, 0x3c, 0xb3, 0xed, 0x05, 0x81, 0x77, 0xab, 0x36, 0xab, 0x54, 0xb2, 0x2b, 0xa1, + 0x3e, 0x1a, 0xd4, 0x1f, 0xbb, 0x0f, 0xb9, 0x5b, 0x6e, 0x74, 0x67, 0x50, 0x5f, 0xc3, 0xb7, 0x1e, + 0x85, 0xa4, 0x6c, 0x29, 0xa1, 0xee, 0x79, 0x4d, 0x45, 0x23, 0x17, 0x61, 0x86, 0xfb, 0xbe, 0x34, + 0x5c, 0x59, 0x19, 0x6e, 0xed, 0x68, 0x50, 0x3f, 0xbd, 0xed, 0xfb, 0xca, 0x6e, 0xf3, 0x88, 0xa5, + 0x26, 0x50, 0x76, 0x9a, 0xfb, 0x7e, 0xcb, 0x22, 0x37, 0x60, 0x6e, 0xdf, 0xf1, 0xda, 0xdc, 0x31, + 0x6d, 0xd7, 0x12, 0xb7, 0x6b, 0x15, 0x25, 0xe9, 0xe5, 0x02, 0x92, 0x5e, 0x12, 0x9d, 0x54, 0x3d, + 0x59, 0x2c, 0xca, 0xaa, 0xfa, 0xb1, 0x25, 0x9f, 0xc8, 0x6d, 0x58, 0x75, 0x78, 0x28, 0x6d, 0x17, + 0x89, 0x80, 0x77, 0x22, 0xdb, 0x73, 0xb5, 0x0d, 0xe0, 0x9e, 0x36, 0xd8, 0x40, 0x1b, 0x3c, 0x8c, + 0x36, 0x18, 0x07, 0xa3, 0x8d, 0xb1, 0x2c, 0xc7, 0x5a, 0xe9, 0x90, 0x32, 0xca, 0x36, 0x40, 0x47, + 0xb9, 0xab, 0xcb, 0x7b, 0xa2, 0x56, 0x55, 0x6f, 0x48, 0x8f, 0x06, 0xf5, 0xca, 0x8e, 0x74, 0xea, + 0x6b, 0xbc, 0x27, 0xd2, 0xed, 0x94, 0x4e, 0xa4, 0xac, 0xa2, 0x1e, 0xe4, 0x38, 0xb9, 0x09, 0xf3, + 0x91, 0x17, 0x71, 0xc7, 0x0c, 0xc4, 0x2d, 0x1e, 0x58, 0x61, 0x6d, 0x4e, 0xa1, 0x5c, 0x29, 0x6c, + 0xd1, 0x15, 0xcd, 0x26, 0x07, 0x46, 0xd9, 0x9c, 0x7a, 0x66, 0xf8, 0xf8, 0xaf, 0x2a, 0x54, 0xb5, + 0x45, 0x75, 0x1c, 0xf8, 0x32, 0xcc, 0x69, 0xa3, 0xe7, 0x22, 0xc1, 0x23, 0x49, 0x24, 0x40, 0xdd, + 0x67, 0xe7, 0x50, 0x56, 0x4d, 0x1e, 0x5b, 0x96, 0xd4, 0x40, 0x26, 0x92, 0xe8, 0x78, 0xa0, 0x34, + 0xb0, 0x8b, 0x01, 0xe3, 0xde, 0x01, 0xe5, 0x32, 0x2c, 0xda, 0xa1, 0x19, 0x46, 0xca, 0x0d, 0xd1, + 0xad, 0x65, 0x78, 0x28, 0x37, 0xcf, 0xdd, 0x19, 0xd4, 0xcf, 0xea, 0xb5, 0xc3, 0x33, 0x28, 0x5b, + 0xb0, 0xc3, 0xeb, 0x8a, 0x82, 0x2e, 0x2a, 0x83, 0x0b, 0xb7, 0x03, 0x29, 0xc6, 0x74, 0x26, 0xb8, + 0x70, 0x3b, 0xc8, 0x05, 0x17, 0x3d, 0x45, 0x06, 0x17, 0x39, 0x62, 0x3d, 0xd8, 0xa0, 0xf1, 0x16, + 0x00, 0x42, 0x78, 0xfd, 0x08, 0x43, 0xc6, 0x5d, 0xb8, 0x5f, 0x42, 0xee, 0x4b, 0x39, 0xee, 0x5e, + 0x3f, 0x2a, 0xc4, 0x1e, 0xdf, 0xf7, 0xe5, 0x7e, 0x44, 0x7e, 0x69, 0xc0, 0x4a, 0x3b, 0xb0, 0xad, + 0x7d, 0x61, 0x99, 0x3a, 0x5e, 0xeb, 0x31, 0x15, 0x56, 0xee, 0x2a, 0xca, 0x35, 0x14, 0xe5, 0x1c, + 0x7a, 0xc8, 0x18, 0x90, 0x42, 0x42, 0x11, 0x44, 0x50, 0x7e, 0xb9, 0xad, 0xd6, 0x13, 0x0b, 0x16, + 0x52, 0xcf, 0x53, 0x1b, 0xba, 0x7c, 0xcf, 0x0d, 0xfd, 0x28, 0xca, 0xb5, 0x3a, 0xec, 0xb9, 0xe9, + 0x4e, 0x9e, 0x4f, 0x88, 0x6a, 0x0f, 0x1f, 0x02, 0xc9, 0x79, 0x96, 0x19, 0xf0, 0x48, 0x60, 0xb4, + 0x7a, 0xa9, 0x70, 0xb4, 0x7a, 0x48, 0xf3, 0x1d, 0x45, 0xa4, 0x6c, 0x31, 0xcc, 0xb8, 0x2b, 0xe3, + 0x91, 0x20, 0x3f, 0x30, 0x60, 0x45, 0x45, 0x1b, 0x11, 0x46, 0x26, 0xef, 0x74, 0xfa, 0xbd, 0xbe, + 0xc3, 0x23, 0x61, 0xa9, 0xc0, 0x55, 0x69, 0x5e, 0x2d, 0xcc, 0x1d, 0xad, 0x31, 0x0e, 0x93, 0xb2, + 0xe5, 0x98, 0xbc, 0x9d, 0x52, 0x47, 0xa2, 0x74, 0xf5, 0x13, 0x8b, 0xd2, 0xdf, 0x87, 0x95, 0x40, + 0x84, 0x22, 0x38, 0x10, 0x66, 0x8e, 0xe3, 0xdc, 0x64, 0xef, 0x3a, 0x0e, 0x93, 0x32, 0x82, 0xe4, + 0x17, 0xee, 0x27, 0x4d, 0xcc, 0x7f, 0xba, 0x69, 0x62, 0xe1, 0x24, 0x69, 0xe2, 0x39, 0x98, 0xb7, + 0x43, 0xd3, 0xb1, 0xdf, 0xe8, 0xdb, 0x96, 0x72, 0x91, 0x33, 0x2a, 0x42, 0xd6, 0xd2, 0xc0, 0x9f, + 0x1b, 0xa6, 0x6c, 0xce, 0x0e, 0x77, 0xd3, 0xc7, 0xdf, 0x96, 0x60, 0x5a, 0xf2, 0xca, 0x96, 0x60, + 0x46, 0x81, 0x12, 0xec, 0x32, 0x54, 0x7b, 0x9e, 0xd5, 0x77, 0x84, 0x7e, 0x85, 0x92, 0x7a, 0x85, + 0xcf, 0x1e, 0x0d, 0xea, 0x70, 0x55, 0x91, 0xf1, 0x1d, 0x88, 0x5e, 0x9e, 0x99, 0x4a, 0x19, 0xf4, + 0x92, 0x19, 0x43, 0x8a, 0x98, 0x3a, 0x89, 0x22, 0x1c, 0x00, 0x1d, 0x64, 0x2c, 0x1e, 0xf1, 0xda, + 0xf4, 0xf9, 0xa9, 0x8d, 0xea, 0xd6, 0x13, 0x8d, 0x31, 0x95, 0x74, 0x43, 0x85, 0x92, 0x4b, 0x3c, + 0xe2, 0x12, 0xfb, 0x2a, 0xf7, 0x7d, 0xdb, 0xdd, 0xd7, 0xdc, 0x92, 0x91, 0x4c, 0x2c, 0x4d, 0x30, + 0x29, 0xab, 0xf0, 0x78, 0x9c, 0xfe, 0xd9, 0x80, 0xb5, 0xd7, 0x42, 0x11, 0xa8, 0x15, 0x32, 0xa5, + 0xe9, 0xdd, 0x8b, 0x68, 0x69, 0x65, 0x6a, 0xdc, 0xbd, 0x32, 0xfd, 0x02, 0xcc, 0x4a, 0xd1, 0xd2, + 0x14, 0x49, 0x52, 0x5d, 0xe3, 0x00, 0x65, 0x33, 0xf2, 0x5f, 0xcb, 0x92, 0x93, 0xf3, 0x55, 0x32, + 0xb9, 0x8b, 0x61, 0x2e, 0x42, 0x05, 0x83, 0x8c, 0xca, 0x7b, 0x53, 0x1b, 0xd3, 0xcd, 0x95, 0x34, + 0x3f, 0x25, 0x43, 0x94, 0x95, 0xf5, 0xff, 0x96, 0x45, 0xdf, 0x2e, 0xc1, 0xca, 0x38, 0xdd, 0xe4, + 0x2a, 0x7b, 0xa3, 0x58, 0x65, 0xff, 0x12, 0x10, 0x4d, 0x8d, 0x02, 0xee, 0x86, 0x76, 0x64, 0xca, + 0x9d, 0x8a, 0xef, 0xfa, 0x48, 0x1a, 0x16, 0x47, 0xe7, 0x50, 0xb6, 0xa8, 0x88, 0x7b, 0x9a, 0xb6, + 0x77, 0xe8, 0x0b, 0xd2, 0x06, 0x08, 0xfb, 0xbe, 0xef, 0x1c, 0x9a, 0x1d, 0xee, 0xa3, 0x97, 0xec, + 0x14, 0x8e, 0x0f, 0x68, 0xd8, 0x14, 0x89, 0xb2, 0x8a, 0x7e, 0xd8, 0xe1, 0x3e, 0xfd, 0x47, 0x09, + 0xe6, 0x2f, 0xdf, 0x8e, 0x84, 0x6b, 0x09, 0xcb, 0x94, 0x45, 0x02, 0x59, 0x80, 0x52, 0xfc, 0xde, + 0xac, 0x64, 0x5b, 0xa4, 0x91, 0x68, 0xc3, 0xc5, 0x17, 0x59, 0x1e, 0x51, 0x81, 0x9b, 0xa8, 0xc0, + 0x95, 0x96, 0xd0, 0x54, 0x99, 0xca, 0xb5, 0xe1, 0x32, 0x96, 0x48, 0x86, 0x28, 0xd3, 0xb0, 0x32, + 0xfd, 0x3e, 0xab, 0x36, 0xb5, 0x0a, 0x24, 0xa6, 0xb4, 0xa7, 0x2a, 0x5c, 0x86, 0x37, 0x75, 0x3a, + 0x4c, 0x59, 0xd5, 0x0e, 0x55, 0x6c, 0x51, 0x5b, 0xf9, 0xeb, 0xb0, 0x94, 0xa0, 0x9a, 0xb1, 0xc7, + 0x9c, 0x56, 0x8c, 0x1b, 0x47, 0x83, 0xfa, 0xc2, 0x36, 0xb2, 0x49, 0x36, 0x77, 0x6d, 0x48, 0x14, + 0x33, 0xf1, 0xa6, 0x05, 0x9e, 0x9d, 0x6b, 0x91, 0x17, 0x81, 0xf4, 0x6c, 0xd7, 0xec, 0x87, 0x96, + 0x79, 0xc0, 0x9d, 0xbe, 0x30, 0x1d, 0xd1, 0xd5, 0xf5, 0x49, 0xce, 0x9c, 0xa3, 0x73, 0x28, 0x3b, + 0xd3, 0xb3, 0xdd, 0xd7, 0x42, 0xeb, 0xab, 0x92, 0xb4, 0x2b, 0x29, 0xbf, 0x37, 0x80, 0x28, 0x51, + 0xf6, 0x3c, 0xa9, 0xe7, 0xd8, 0xd9, 0x4e, 0x18, 0x88, 0x26, 0xec, 0x3e, 0xb1, 0x40, 0x9c, 0x52, + 0x1b, 0xe5, 0xbe, 0x0a, 0x44, 0xfa, 0x93, 0x0a, 0x10, 0x29, 0x96, 0x0e, 0x01, 0xcd, 0x07, 0x27, + 0x7f, 0x03, 0xca, 0x18, 0x2b, 0x42, 0x7c, 0x81, 0x8c, 0x43, 0xc6, 0x23, 0x94, 0xcd, 0xea, 0x30, + 0x12, 0x92, 0xa7, 0x00, 0x92, 0xfd, 0x1f, 0x62, 0x6c, 0x58, 0x4d, 0x37, 0x46, 0x3a, 0x46, 0x59, + 0x25, 0x0e, 0x0e, 0x21, 0x71, 0x61, 0x41, 0xb7, 0x10, 0x9a, 0x24, 0xb4, 0x4b, 0x55, 0x9a, 0x2f, + 0x14, 0x6e, 0x48, 0x56, 0xb3, 0x0d, 0x49, 0x8c, 0x46, 0x99, 0x6e, 0x77, 0x9a, 0xf8, 0x4c, 0xde, + 0x36, 0x60, 0x55, 0x4f, 0xc9, 0xd5, 0x4c, 0xc2, 0x52, 0xee, 0x56, 0xd1, 0x85, 0x66, 0x21, 0xbe, + 0x0f, 0x67, 0xf9, 0x0e, 0x81, 0x52, 0xb6, 0xac, 0xe8, 0xd9, 0xce, 0x41, 0x58, 0x32, 0xe2, 0xe8, + 0xe9, 0x52, 0x77, 0xd8, 0x53, 0xef, 0x14, 0x66, 0xbc, 0x94, 0x65, 0x2c, 0x91, 0x28, 0xab, 0xa8, + 0x07, 0x99, 0x38, 0xc8, 0xcf, 0x0d, 0x58, 0xd3, 0x43, 0x63, 0x4b, 0xbe, 0xb2, 0x62, 0x7a, 0xbd, + 0x30, 0xd3, 0x47, 0xb3, 0x4c, 0xc7, 0x17, 0x7e, 0x35, 0x35, 0xd8, 0x1a, 0x53, 0xfd, 0xbd, 0x8e, + 0x2e, 0xc5, 0xfd, 0x00, 0x2b, 0xde, 0xed, 0xc2, 0x71, 0x36, 0xeb, 0x80, 0xdc, 0x0f, 0xd0, 0x01, + 0xb7, 0xfd, 0x40, 0x6a, 0x15, 0x9d, 0x4c, 0xe2, 0xc3, 0x64, 0x71, 0x3c, 0x45, 0x4a, 0xdc, 0x55, + 0xf2, 0x38, 0x80, 0xa5, 0x7c, 0xad, 0x2d, 0x59, 0xe9, 0x22, 0xf6, 0xc5, 0xc2, 0xac, 0x6a, 0xe3, + 0x8a, 0x77, 0xc5, 0xf1, 0x4c, 0xb6, 0x76, 0x97, 0x7c, 0x6f, 0xc1, 0x52, 0x3f, 0xb2, 0x1d, 0x3b, + 0xe4, 0xaa, 0x00, 0x0c, 0xe4, 0x0f, 0x96, 0xb2, 0x27, 0xe6, 0x3b, 0x02, 0x48, 0xd9, 0x62, 0x86, + 0xc6, 0x14, 0xe9, 0xbd, 0x2a, 0x2c, 0xaa, 0x68, 0x21, 0x3b, 0x88, 0xf0, 0x15, 0x1e, 0xf0, 0x5e, + 0x38, 0x49, 0xe6, 0x36, 0xa1, 0xd2, 0x37, 0x3d, 0x3f, 0xb2, 0x7b, 0xdc, 0xc1, 0xba, 0xae, 0x59, + 0xf8, 0x05, 0x30, 0xc9, 0x25, 0x40, 0x94, 0x95, 0xfb, 0x2f, 0xeb, 0xbf, 0xe4, 0x55, 0x98, 0x96, + 0xed, 0x23, 0xe6, 0xf1, 0xe7, 0x0a, 0x63, 0x57, 0xd1, 0xfe, 0x3c, 0x14, 0x94, 0x29, 0x28, 0xf2, + 0x35, 0x98, 0x09, 0x1d, 0xcf, 0x17, 0x17, 0xf1, 0x44, 0xf0, 0xf9, 0xc2, 0xa0, 0x78, 0x64, 0xa5, + 0x51, 0x28, 0x43, 0xb8, 0x04, 0x78, 0x0b, 0x83, 0xde, 0x64, 0xc0, 0x5b, 0x31, 0xf0, 0x16, 0x79, + 0x15, 0x56, 0x84, 0xab, 0xbc, 0x2a, 0x7f, 0xce, 0x31, 0xa3, 0x12, 0x7e, 0x3d, 0x6d, 0x67, 0xc6, + 0xcd, 0xa2, 0x8c, 0x68, 0x72, 0xee, 0xbc, 0x43, 0x40, 0x35, 0x9e, 0x25, 0xd5, 0xab, 0x83, 0xd6, + 0xa5, 0xc2, 0x02, 0x93, 0xbc, 0xcf, 0x2b, 0x2d, 0x03, 0x7a, 0xbb, 0xd4, 0xf5, 0x4d, 0x98, 0xc7, + 0x31, 0x54, 0x79, 0xb9, 0xf0, 0xf9, 0x94, 0x66, 0xb4, 0x92, 0x63, 0x14, 0x6b, 0x7e, 0x4e, 0x3f, + 0x5f, 0xd7, 0xfa, 0x1f, 0x62, 0xb6, 0x85, 0x41, 0xe9, 0xbf, 0xc2, 0x6c, 0x2b, 0xcf, 0x6c, 0x8b, + 0x5c, 0x83, 0x29, 0x27, 0x3a, 0xc0, 0xb8, 0xf4, 0x6c, 0x61, 0x16, 0x80, 0x71, 0x2f, 0x3a, 0xa0, + 0x4c, 0x02, 0x91, 0x77, 0x0c, 0x58, 0x8d, 0x3b, 0x30, 0xd5, 0x14, 0xde, 0x08, 0x44, 0x78, 0xc3, + 0x73, 0x2c, 0x8c, 0x47, 0xd7, 0x0a, 0xb3, 0x88, 0xdb, 0xcd, 0x71, 0xa0, 0x94, 0xad, 0x64, 0xe8, + 0x7b, 0x31, 0x99, 0xbc, 0x09, 0xcb, 0xd9, 0xf9, 0xbe, 0x70, 0xb9, 0x13, 0x1d, 0x62, 0x68, 0xda, + 0x2d, 0x2c, 0xc2, 0xda, 0xa8, 0x08, 0x08, 0x49, 0x19, 0xc9, 0x50, 0x5f, 0xd1, 0x44, 0x19, 0x17, + 0xb3, 0x73, 0xdb, 0x9e, 0xdb, 0x0f, 0x55, 0x83, 0x3d, 0x41, 0x5c, 0x1c, 0x01, 0xa4, 0x6c, 0x31, + 0x43, 0x6b, 0x4a, 0x92, 0xac, 0x5b, 0xe2, 0xa3, 0x80, 0x2e, 0xef, 0x44, 0x5e, 0x80, 0x7d, 0xf6, + 0x0b, 0x85, 0xb9, 0xae, 0xe6, 0x0f, 0x16, 0x34, 0x1a, 0x65, 0xf3, 0x48, 0xb8, 0xa2, 0x9e, 0xc9, + 0xf3, 0x00, 0x1d, 0x33, 0x09, 0xba, 0x67, 0x54, 0xd0, 0x7d, 0xf4, 0x68, 0x50, 0x2f, 0xef, 0xa4, + 0x51, 0x37, 0xee, 0x64, 0xcd, 0x34, 0xee, 0x96, 0x3b, 0x7a, 0xd8, 0xa2, 0xbf, 0x29, 0xc1, 0x59, + 0xa6, 0x21, 0x9b, 0xfd, 0xc3, 0x36, 0xef, 0xdc, 0x4c, 0x9a, 0xb2, 0x49, 0xe2, 0x79, 0x46, 0x0f, + 0x78, 0x96, 0x57, 0x9a, 0xac, 0x7e, 0xcb, 0xa3, 0xa5, 0x7a, 0xc0, 0x43, 0x3a, 0x17, 0x16, 0xda, + 0x5a, 0xfc, 0x98, 0xdf, 0xd4, 0x64, 0xfc, 0xf2, 0x68, 0x94, 0xcd, 0x23, 0x41, 0xf3, 0xa3, 0xff, + 0x9c, 0x86, 0xf9, 0xed, 0xbe, 0x3a, 0x5b, 0xc1, 0xe4, 0xb7, 0x91, 0xdc, 0x4d, 0x68, 0x55, 0x2d, + 0x1d, 0x7b, 0x25, 0xf1, 0x2d, 0xa8, 0x71, 0xbd, 0xd4, 0xb4, 0xfa, 0x81, 0x76, 0xa8, 0x50, 0x74, + 0x3c, 0xd7, 0x0a, 0xb1, 0x18, 0xbf, 0x70, 0x67, 0x50, 0xaf, 0xe3, 0xda, 0x63, 0x66, 0x52, 0xf6, + 0x19, 0x1c, 0xba, 0x84, 0x23, 0xd7, 0xf5, 0x80, 0xcc, 0x1e, 0xed, 0x7e, 0xb7, 0x2b, 0x02, 0x54, + 0xc1, 0x89, 0xb3, 0x87, 0x46, 0xa1, 0x0c, 0xe1, 0x64, 0x0a, 0xed, 0xf4, 0x43, 0x1f, 0xb3, 0xdd, + 0x89, 0x53, 0xa8, 0xc4, 0xa0, 0x4c, 0x41, 0x49, 0xc8, 0x30, 0x12, 0x3e, 0xe6, 0xb9, 0xe7, 0x0a, + 0x1b, 0xab, 0x1a, 0x07, 0x58, 0x21, 0x21, 0xe5, 0x0f, 0xb9, 0x06, 0xcb, 0x7e, 0x60, 0x77, 0x84, + 0xd9, 0xed, 0xbb, 0x78, 0x2c, 0x76, 0xe8, 0x0b, 0xec, 0x1a, 0xd7, 0xd3, 0x58, 0x32, 0x66, 0x12, + 0x65, 0x4b, 0x8a, 0x7a, 0x05, 0x89, 0xea, 0x18, 0xa0, 0x01, 0x65, 0xab, 0x1f, 0x75, 0x6e, 0x48, + 0xcb, 0xce, 0x0e, 0x37, 0xe0, 0xf1, 0x08, 0x65, 0xb3, 0xea, 0x6f, 0xcb, 0x92, 0x39, 0xb6, 0x6d, + 0x5b, 0xa3, 0x96, 0xd5, 0x37, 0x56, 0x99, 0x1c, 0x3b, 0x6e, 0x16, 0x65, 0xa4, 0x6d, 0x5b, 0x43, + 0x16, 0xa5, 0x1f, 0x19, 0x70, 0xb6, 0x89, 0x7d, 0x52, 0x5c, 0x5a, 0x47, 0x01, 0xef, 0xdc, 0x14, + 0x01, 0x79, 0x66, 0xec, 0xdd, 0xc9, 0xd9, 0xfb, 0xba, 0x35, 0x91, 0x4d, 0x4f, 0xbc, 0xaf, 0x74, + 0x8b, 0x88, 0xe8, 0xe8, 0x39, 0x27, 0x4e, 0x15, 0x63, 0x41, 0x29, 0x5b, 0x46, 0xba, 0x6a, 0x4f, + 0x63, 0xea, 0x9f, 0x0c, 0x58, 0x91, 0x9d, 0x49, 0x7c, 0x59, 0x94, 0xbc, 0xd9, 0x53, 0x63, 0x6e, + 0x87, 0x57, 0xef, 0x79, 0x8d, 0xf3, 0x16, 0x2c, 0xc7, 0x40, 0xd9, 0xbe, 0xa6, 0xf4, 0x49, 0x1c, + 0x65, 0x13, 0xe4, 0x94, 0xe9, 0x65, 0xe8, 0x7b, 0x06, 0xcc, 0xeb, 0xc3, 0xc8, 0x26, 0x77, 0xb8, + 0xdb, 0x11, 0x27, 0x6d, 0xd1, 0xdf, 0x82, 0x15, 0x3c, 0xc0, 0x6c, 0x6b, 0x20, 0x59, 0x8d, 0x45, + 0x32, 0x42, 0x4c, 0x6d, 0x54, 0xb7, 0x1e, 0x1f, 0x7b, 0xd6, 0x98, 0x63, 0x7c, 0x5d, 0x4e, 0x6f, + 0x5e, 0xc8, 0xdf, 0x90, 0x8c, 0x83, 0xa4, 0x8c, 0xf4, 0x46, 0x16, 0xd2, 0x3f, 0x1a, 0x40, 0x46, + 0xf1, 0x26, 0xc9, 0x09, 0x07, 0x30, 0x8b, 0x7c, 0x95, 0x39, 0xee, 0x7a, 0xb1, 0xb3, 0x8d, 0x62, + 0x2f, 0xc4, 0x65, 0xb7, 0x5a, 0x57, 0xe8, 0x2e, 0x27, 0x66, 0x46, 0xdf, 0x84, 0x99, 0xab, 0x9e, + 0xd5, 0xe4, 0x0e, 0x09, 0x61, 0xb9, 0xdb, 0x77, 0x2d, 0x33, 0xaf, 0x85, 0x9a, 0xa1, 0x54, 0x5a, + 0x1f, 0xab, 0xd2, 0x2b, 0x7d, 0xd7, 0xd2, 0xab, 0x9b, 0x14, 0x65, 0xc2, 0x00, 0x32, 0x06, 0x89, + 0xb2, 0xa5, 0xae, 0x9e, 0x9f, 0xaa, 0x8d, 0xfe, 0xc8, 0x00, 0x88, 0x33, 0x2c, 0x77, 0xc8, 0x77, + 0x60, 0x45, 0xad, 0x8c, 0xf7, 0x48, 0x5e, 0x88, 0x0b, 0xc7, 0x0a, 0x91, 0x42, 0x0c, 0xdb, 0x74, + 0x1c, 0x1c, 0x65, 0xa4, 0x9b, 0x5b, 0xa4, 0x88, 0x3f, 0x9c, 0x02, 0x48, 0x5f, 0x68, 0x12, 0x5b, + 0x66, 0x9c, 0xba, 0x54, 0xc0, 0xa9, 0x73, 0xd7, 0x9c, 0x53, 0x9f, 0xfe, 0xb7, 0x11, 0x96, 0xf0, + 0x3d, 0x75, 0xe6, 0x6b, 0xf7, 0x84, 0xca, 0x63, 0x85, 0xbe, 0x8d, 0xc8, 0xae, 0xc6, 0x6f, 0x23, + 0x90, 0xa4, 0xee, 0x57, 0x9e, 0x80, 0x19, 0xa9, 0x73, 0x11, 0x60, 0x3a, 0xcb, 0x54, 0x00, 0x9a, + 0x4e, 0x19, 0x4e, 0xa0, 0x7f, 0x2d, 0xc1, 0x42, 0xde, 0xa8, 0x93, 0x18, 0x23, 0xa7, 0xd5, 0xd2, + 0x03, 0xd6, 0xea, 0xd4, 0x27, 0xa6, 0xd5, 0xe9, 0x7b, 0x69, 0xf5, 0xc3, 0x19, 0x38, 0xb3, 0xed, + 0x38, 0xa8, 0xd4, 0x89, 0xe3, 0xd5, 0xaf, 0x0c, 0xc8, 0x5c, 0x6e, 0x9b, 0xdd, 0xc0, 0xeb, 0x25, + 0xdb, 0x2c, 0xf2, 0xd4, 0xd1, 0x9a, 0x08, 0x42, 0x4c, 0x2d, 0xdf, 0x2c, 0x5c, 0xbb, 0x3c, 0x31, + 0x7c, 0x7d, 0x7e, 0x1c, 0x07, 0xca, 0x1e, 0x49, 0xee, 0xca, 0xaf, 0x04, 0x5e, 0x0f, 0xdf, 0x6f, + 0xcf, 0xdb, 0xd5, 0xe3, 0xe4, 0xd7, 0x06, 0x5c, 0x38, 0x0e, 0xa6, 0xeb, 0x05, 0x26, 0x16, 0x8a, + 0x98, 0xd5, 0x5f, 0x2f, 0x2c, 0xe9, 0xe7, 0xef, 0x2e, 0x69, 0x86, 0x05, 0x65, 0xeb, 0xe3, 0x44, + 0xbd, 0xe2, 0x05, 0x58, 0x2c, 0x93, 0x9f, 0x19, 0xb0, 0x96, 0xb8, 0x9c, 0xc6, 0x71, 0xec, 0x37, + 0x92, 0x06, 0x71, 0x7a, 0xb2, 0xf3, 0xc7, 0xe3, 0x91, 0x65, 0xbd, 0x8c, 0x2e, 0x2b, 0x05, 0xdb, + 0xb5, 0xdf, 0x88, 0x7b, 0xc5, 0x9f, 0x1a, 0xf0, 0xd0, 0xd0, 0xba, 0x40, 0xf8, 0xfc, 0xb0, 0x27, + 0xdc, 0x28, 0xc4, 0xad, 0xcc, 0x0a, 0x0b, 0x74, 0x7e, 0xac, 0x40, 0x29, 0xf0, 0x90, 0x3c, 0x2c, + 0x19, 0x20, 0xbf, 0x30, 0xe0, 0x9c, 0x3e, 0x47, 0xcd, 0x28, 0x3c, 0xe3, 0x6f, 0xfa, 0x40, 0x7a, + 0xaf, 0xb0, 0x44, 0x34, 0x7b, 0x44, 0x3b, 0x16, 0x9a, 0xb2, 0xb3, 0x6a, 0x74, 0x3b, 0x36, 0x61, + 0xe2, 0x62, 0xf4, 0x0f, 0x06, 0xd4, 0x32, 0xd7, 0x27, 0xd7, 0x6d, 0x77, 0xdf, 0x11, 0xff, 0x23, + 0x97, 0x28, 0xf7, 0xfd, 0x95, 0x8d, 0xcc, 0x7f, 0x15, 0x29, 0x96, 0x9c, 0x18, 0xfe, 0xff, 0x12, + 0xba, 0xd0, 0x25, 0xf4, 0x31, 0xb7, 0x71, 0xa7, 0x4f, 0x74, 0x1b, 0xf7, 0x3b, 0x03, 0x16, 0xb3, + 0x5d, 0xc0, 0xa4, 0xc7, 0x0d, 0x37, 0x61, 0x5e, 0x5f, 0x3d, 0xc5, 0x0d, 0x4c, 0x69, 0xb2, 0xcf, + 0xd7, 0x72, 0x60, 0x94, 0xa9, 0x6f, 0x2a, 0x93, 0x8e, 0xe5, 0x2f, 0x06, 0xcc, 0x65, 0x85, 0x3f, + 0xa9, 0x23, 0xfd, 0xd8, 0x00, 0x92, 0xeb, 0x90, 0xb4, 0x1d, 0x75, 0x81, 0xff, 0xb9, 0xb1, 0x76, + 0x1c, 0xd6, 0x59, 0xf3, 0x69, 0xf9, 0x86, 0x47, 0x83, 0xfa, 0x88, 0x36, 0x53, 0x83, 0x8c, 0xb2, + 0xa0, 0x6c, 0xd1, 0x1f, 0x06, 0xfa, 0xca, 0xfb, 0x47, 0xeb, 0xc6, 0x07, 0x47, 0xeb, 0xc6, 0xdf, + 0x8f, 0xd6, 0x8d, 0x77, 0x3f, 0x5e, 0x3f, 0xf5, 0xc1, 0xc7, 0xeb, 0xa7, 0x3e, 0xfc, 0x78, 0xfd, + 0xd4, 0x37, 0x1a, 0x39, 0xe5, 0x49, 0x99, 0x9e, 0xf4, 0xba, 0x5d, 0xbb, 0x63, 0x73, 0x07, 0x9f, + 0x37, 0xf1, 0xe3, 0x62, 0xa5, 0xc8, 0xf6, 0x8c, 0x4a, 0xf9, 0x5f, 0xfc, 0x4f, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x97, 0xc7, 0xbd, 0x5a, 0x78, 0x2c, 0x00, 0x00, } func (m *LendAsset) Marshal() (dAtA []byte, err error) { @@ -3179,6 +3283,86 @@ func (m *PoolPairs) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *PoolInterestData) 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 *PoolInterestData) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PoolInterestData) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.LendInterest.Size() + i -= size + if _, err := m.LendInterest.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintLend(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if m.AssetID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.AssetID)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *PoolInterest) 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 *PoolInterest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PoolInterest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.PoolInterestData) > 0 { + for iNdEx := len(m.PoolInterestData) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PoolInterestData[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintLend(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if m.PoolID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.PoolID)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func encodeVarintLend(dAtA []byte, offset int, v uint64) int { offset -= sovLend(v) base := offset @@ -3730,6 +3914,38 @@ func (m *PoolPairs) Size() (n int) { return n } +func (m *PoolInterestData) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AssetID != 0 { + n += 1 + sovLend(uint64(m.AssetID)) + } + l = m.LendInterest.Size() + n += 1 + l + sovLend(uint64(l)) + return n +} + +func (m *PoolInterest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.PoolID != 0 { + n += 1 + sovLend(uint64(m.PoolID)) + } + if len(m.PoolInterestData) > 0 { + for _, e := range m.PoolInterestData { + l = e.Size() + n += 1 + l + sovLend(uint64(l)) + } + } + return n +} + func sovLend(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -8297,6 +8513,212 @@ func (m *PoolPairs) Unmarshal(dAtA []byte) error { } return nil } +func (m *PoolInterestData) 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 ErrIntOverflowLend + } + 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: PoolInterestData: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PoolInterestData: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) + } + m.AssetID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AssetID |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LendInterest", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + 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 ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LendInterest.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipLend(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthLend + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PoolInterest) 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 ErrIntOverflowLend + } + 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: PoolInterest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PoolInterest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) + } + m.PoolID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PoolID |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PoolInterestData", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PoolInterestData = append(m.PoolInterestData, PoolInterestData{}) + if err := m.PoolInterestData[len(m.PoolInterestData)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipLend(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthLend + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipLend(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/lend/types/query.pb.go b/x/lend/types/query.pb.go index b91e91516..33732de1a 100644 --- a/x/lend/types/query.pb.go +++ b/x/lend/types/query.pb.go @@ -1901,6 +1901,79 @@ func (m *QueryFundModBalByAssetPoolResponse) XXX_DiscardUnknown() { var xxx_messageInfo_QueryFundModBalByAssetPoolResponse proto.InternalMessageInfo +type QueryLendInterestRequest struct { +} + +func (m *QueryLendInterestRequest) Reset() { *m = QueryLendInterestRequest{} } +func (m *QueryLendInterestRequest) String() string { return proto.CompactTextString(m) } +func (*QueryLendInterestRequest) ProtoMessage() {} +func (*QueryLendInterestRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_462bf3f1a3eff175, []int{50} +} +func (m *QueryLendInterestRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryLendInterestRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryLendInterestRequest.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 *QueryLendInterestRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryLendInterestRequest.Merge(m, src) +} +func (m *QueryLendInterestRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryLendInterestRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryLendInterestRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryLendInterestRequest proto.InternalMessageInfo + +type QueryLendInterestResponse struct { + PoolInterest []PoolInterest `protobuf:"bytes,1,rep,name=pool_interest,json=poolInterest,proto3" json:"pool_interest" yaml:"pool_interest"` +} + +func (m *QueryLendInterestResponse) Reset() { *m = QueryLendInterestResponse{} } +func (m *QueryLendInterestResponse) String() string { return proto.CompactTextString(m) } +func (*QueryLendInterestResponse) ProtoMessage() {} +func (*QueryLendInterestResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_462bf3f1a3eff175, []int{51} +} +func (m *QueryLendInterestResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryLendInterestResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryLendInterestResponse.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 *QueryLendInterestResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryLendInterestResponse.Merge(m, src) +} +func (m *QueryLendInterestResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryLendInterestResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryLendInterestResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryLendInterestResponse proto.InternalMessageInfo + func init() { proto.RegisterType((*QueryParamsRequest)(nil), "comdex.lend.v1beta1.QueryParamsRequest") proto.RegisterType((*QueryParamsResponse)(nil), "comdex.lend.v1beta1.QueryParamsResponse") @@ -1952,151 +2025,157 @@ func init() { proto.RegisterType((*QueryAllReserveStatsResponse)(nil), "comdex.lend.v1beta1.QueryAllReserveStatsResponse") proto.RegisterType((*QueryFundModBalByAssetPoolRequest)(nil), "comdex.lend.v1beta1.QueryFundModBalByAssetPoolRequest") proto.RegisterType((*QueryFundModBalByAssetPoolResponse)(nil), "comdex.lend.v1beta1.QueryFundModBalByAssetPoolResponse") + proto.RegisterType((*QueryLendInterestRequest)(nil), "comdex.lend.v1beta1.QueryLendInterestRequest") + proto.RegisterType((*QueryLendInterestResponse)(nil), "comdex.lend.v1beta1.QueryLendInterestResponse") } func init() { proto.RegisterFile("comdex/lend/v1beta1/query.proto", fileDescriptor_462bf3f1a3eff175) } var fileDescriptor_462bf3f1a3eff175 = []byte{ - // 2210 bytes of a gzipped FileDescriptorProto + // 2284 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x5a, 0xdd, 0x6f, 0x1d, 0x47, - 0x15, 0xf7, 0xba, 0xb6, 0x43, 0x27, 0x69, 0x92, 0x8e, 0xed, 0x26, 0x59, 0x3b, 0xf7, 0xda, 0x13, - 0x7f, 0xc4, 0xa4, 0xbe, 0x5b, 0x27, 0x2d, 0x90, 0xaa, 0x82, 0x64, 0x49, 0xda, 0x06, 0xc5, 0xaa, - 0x59, 0x90, 0x90, 0x10, 0x70, 0xb5, 0xd7, 0xbb, 0xb9, 0x5c, 0x75, 0xef, 0xdd, 0xdb, 0xbb, 0x7b, - 0xdb, 0x5a, 0x96, 0x45, 0xf8, 0xe8, 0x03, 0xe2, 0xa5, 0xa8, 0xbc, 0x20, 0x5e, 0x90, 0x10, 0x52, - 0x25, 0x40, 0xf0, 0x42, 0x1f, 0x80, 0x07, 0x1e, 0x23, 0x04, 0x28, 0xa8, 0x0f, 0xa5, 0x20, 0x2c, - 0x48, 0xf8, 0x0b, 0x22, 0xf1, 0xc2, 0x13, 0x9a, 0x99, 0x33, 0xfb, 0x39, 0x3b, 0xbb, 0xb7, 0xaa, - 0x0d, 0xe1, 0xc9, 0x37, 0x3b, 0xe7, 0x9c, 0xf9, 0xfd, 0xce, 0x9c, 0x39, 0x3b, 0xf3, 0xdb, 0xa0, - 0xfa, 0xb6, 0xdf, 0x75, 0xdc, 0xd7, 0x0d, 0xcf, 0xed, 0x39, 0xc6, 0xab, 0x1b, 0x2d, 0x37, 0xb4, - 0x37, 0x8c, 0x57, 0x86, 0xee, 0x60, 0xa7, 0xd1, 0x1f, 0xf8, 0xa1, 0x8f, 0xa7, 0xb9, 0x41, 0x83, - 0x1a, 0x34, 0xc0, 0x40, 0xff, 0xe8, 0xb6, 0x1f, 0x74, 0xfd, 0xc0, 0x68, 0xd9, 0x81, 0xcb, 0xad, - 0x23, 0xdf, 0xbe, 0xdd, 0xee, 0xf4, 0xec, 0xb0, 0xe3, 0xf7, 0x78, 0x00, 0x7d, 0xa6, 0xed, 0xb7, - 0x7d, 0xf6, 0xd3, 0xa0, 0xbf, 0xe0, 0xe9, 0x7c, 0xdb, 0xf7, 0xdb, 0x9e, 0x6b, 0xd8, 0xfd, 0x8e, - 0x61, 0xf7, 0x7a, 0x7e, 0xc8, 0x5c, 0x02, 0x18, 0xad, 0xc9, 0x50, 0x31, 0x04, 0x7c, 0x7c, 0x41, - 0x36, 0xde, 0xb7, 0x07, 0x76, 0x37, 0x11, 0x21, 0x46, 0x28, 0x2c, 0xb6, 0xfd, 0x0e, 0xa0, 0x22, - 0x33, 0x08, 0x7f, 0x96, 0xe2, 0xde, 0x62, 0x4e, 0x96, 0xfb, 0xca, 0xd0, 0x0d, 0x42, 0xb2, 0x85, - 0xa6, 0x53, 0x4f, 0x83, 0xbe, 0xdf, 0x0b, 0x5c, 0x7c, 0x19, 0x4d, 0xf1, 0xe0, 0xa7, 0xb5, 0x05, - 0xed, 0xfc, 0xd1, 0x8b, 0x73, 0x0d, 0x49, 0x52, 0x1a, 0xdc, 0xc9, 0x9c, 0xb8, 0xb3, 0x5f, 0x1f, - 0xb3, 0xc0, 0x81, 0x0c, 0xd0, 0xe3, 0x2c, 0xe2, 0x4d, 0xb7, 0xe7, 0x88, 0x69, 0xf0, 0x97, 0x11, - 0x8a, 0xd3, 0x04, 0x31, 0x57, 0x1a, 0x1c, 0x71, 0x83, 0x22, 0x6e, 0xf0, 0x15, 0x88, 0x23, 0xb7, - 0x5d, 0xf0, 0x35, 0x67, 0x1f, 0xec, 0xd7, 0x1f, 0xdf, 0xb1, 0xbb, 0xde, 0xb3, 0x24, 0x8e, 0x41, - 0xac, 0x44, 0x40, 0xf2, 0x5b, 0x0d, 0xc8, 0xc1, 0xa4, 0xc0, 0xe2, 0x33, 0x68, 0x92, 0xe2, 0xa5, - 0x24, 0x1e, 0x39, 0x7f, 0xf4, 0x62, 0x4d, 0x4a, 0x82, 0xba, 0x5c, 0x0d, 0x02, 0x37, 0x34, 0x67, - 0x28, 0x8f, 0x07, 0xfb, 0xf5, 0x63, 0x7c, 0x32, 0xe6, 0x4a, 0x2c, 0x1e, 0x02, 0x7f, 0x25, 0xc5, - 0x60, 0x9c, 0x31, 0x58, 0x2d, 0x65, 0xc0, 0x81, 0x54, 0xa1, 0x40, 0xd0, 0xc9, 0x88, 0x81, 0xc8, - 0xda, 0x71, 0x34, 0xde, 0x71, 0x58, 0xb6, 0x26, 0xac, 0xf1, 0x8e, 0x43, 0xbe, 0x94, 0x48, 0x6d, - 0x44, 0xf2, 0x05, 0x34, 0x41, 0x11, 0x42, 0x52, 0xcb, 0x38, 0x4e, 0x03, 0xc7, 0xa3, 0x31, 0x47, - 0x62, 0xb1, 0x00, 0xe4, 0x47, 0x1a, 0xd2, 0x59, 0xf8, 0xab, 0x9e, 0x47, 0x1d, 0xcc, 0x9d, 0x97, - 0x5e, 0xeb, 0xb9, 0x03, 0x01, 0x66, 0x05, 0x4d, 0xfa, 0xf4, 0xdf, 0x6c, 0xa2, 0x47, 0xcd, 0x93, - 0x71, 0xa2, 0xd8, 0x63, 0x62, 0xf1, 0xe1, 0xcc, 0x52, 0x8f, 0x7f, 0xd8, 0x4b, 0xfd, 0x7b, 0x0d, - 0xcd, 0x49, 0x51, 0x42, 0x3a, 0x36, 0x47, 0x5b, 0xf3, 0x53, 0x90, 0x8f, 0x13, 0x71, 0x3e, 0x9a, - 0x9d, 0x43, 0x5c, 0xf6, 0xf7, 0x34, 0xb4, 0x28, 0xa1, 0x73, 0xb5, 0xe7, 0x6c, 0xf9, 0xbe, 0x37, - 0x6a, 0xee, 0x2f, 0xa0, 0x23, 0x7d, 0xdf, 0xf7, 0x9a, 0x1d, 0x87, 0x41, 0x9d, 0x30, 0xf1, 0x83, - 0xfd, 0xfa, 0x71, 0x40, 0xc0, 0x07, 0x88, 0x35, 0x45, 0x7f, 0xdd, 0x70, 0x32, 0x0b, 0xf5, 0xc8, - 0x87, 0xbd, 0x50, 0x77, 0x35, 0x44, 0x54, 0xcc, 0x1e, 0xc2, 0x3d, 0x2a, 0x5a, 0xdb, 0x96, 0xdd, - 0x19, 0x1c, 0x56, 0x6b, 0xfb, 0x9b, 0x16, 0xf5, 0x6d, 0x36, 0x29, 0xa4, 0xad, 0x8d, 0x1e, 0x73, - 0x5f, 0x0f, 0xdd, 0x9e, 0xe3, 0x3a, 0x6c, 0x00, 0xd2, 0x47, 0xa4, 0xe9, 0xbb, 0x0e, 0x96, 0x4d, - 0x6a, 0x6a, 0x9e, 0x85, 0x14, 0xce, 0xf2, 0x89, 0x45, 0x98, 0x66, 0x9f, 0xc6, 0x21, 0x56, 0x3a, - 0xee, 0xa1, 0xf5, 0x3d, 0x3a, 0x5b, 0x51, 0xdf, 0xdb, 0x49, 0xe4, 0x3d, 0xca, 0x80, 0x83, 0x8e, - 0x5d, 0x4f, 0x20, 0x85, 0xcc, 0x57, 0x49, 0xc0, 0x3c, 0x24, 0x60, 0x46, 0x92, 0x00, 0x62, 0xa5, - 0xa2, 0x92, 0x3d, 0x34, 0xcf, 0x8b, 0x98, 0x56, 0x9f, 0x65, 0x87, 0x6e, 0x90, 0x7a, 0x7f, 0x1e, - 0xf4, 0xea, 0xff, 0x4b, 0x43, 0x67, 0x0b, 0xe6, 0x87, 0x34, 0x84, 0xe8, 0x64, 0x76, 0x0c, 0x6a, - 0x61, 0x59, 0x9a, 0x8a, 0xac, 0xb1, 0xb9, 0x08, 0xd9, 0x38, 0xc3, 0x91, 0xd8, 0x74, 0xbc, 0x39, - 0xa0, 0x06, 0x4d, 0x78, 0xa3, 0x5b, 0xb9, 0x19, 0x0e, 0xbc, 0x2a, 0xd6, 0x45, 0x93, 0x4f, 0x4f, - 0x5c, 0x54, 0x20, 0xdf, 0xd3, 0xe4, 0xcb, 0x24, 0xcf, 0x52, 0xea, 0x64, 0x73, 0x20, 0x59, 0xca, - 0x1c, 0x85, 0x68, 0xc3, 0x3b, 0xac, 0x8a, 0xf9, 0x75, 0xd4, 0x2f, 0xf8, 0xa4, 0x90, 0x80, 0xeb, - 0x68, 0x92, 0xb6, 0x7d, 0x51, 0x1b, 0x67, 0xe4, 0xe7, 0x39, 0xdf, 0xf7, 0xb2, 0x1d, 0x96, 0x79, - 0x11, 0x8b, 0x7b, 0x1f, 0x5e, 0x37, 0x48, 0xbc, 0xfc, 0xb2, 0x8b, 0xfd, 0x85, 0x44, 0x56, 0x23, - 0x7e, 0x26, 0x9a, 0xa0, 0x08, 0x21, 0x9f, 0x0a, 0x7a, 0x99, 0x03, 0x10, 0x75, 0x22, 0x16, 0xf3, - 0x25, 0xb7, 0x35, 0x54, 0x8f, 0xab, 0xe8, 0xf3, 0x3e, 0x6d, 0x00, 0x9b, 0x76, 0xbf, 0xdf, 0xe9, - 0xb5, 0x0f, 0x6b, 0xf5, 0xde, 0x18, 0x47, 0x0b, 0xc5, 0x10, 0x80, 0xeb, 0x6d, 0x0d, 0x4d, 0xdb, - 0xf9, 0x71, 0x58, 0xda, 0xd5, 0xe2, 0x82, 0x4e, 0xd9, 0x9b, 0xcb, 0x90, 0x89, 0xb3, 0xc9, 0x92, - 0x0e, 0x7d, 0xd6, 0x06, 0x9b, 0x5d, 0x08, 0x4a, 0x2c, 0xd9, 0x54, 0x07, 0x5e, 0x07, 0x7b, 0xa8, - 0x56, 0x90, 0x06, 0xb1, 0x10, 0x0d, 0xf4, 0x11, 0x8e, 0x58, 0xd4, 0x86, 0x39, 0x1d, 0x1f, 0xe3, - 0xc4, 0x08, 0xb1, 0x8e, 0xb0, 0x9f, 0x37, 0x9c, 0x91, 0x8e, 0x46, 0xe4, 0x87, 0xc5, 0x95, 0x10, - 0xad, 0xc2, 0x1e, 0xc2, 0xf9, 0x51, 0xa8, 0x88, 0xca, 0x6b, 0xb0, 0x04, 0x6b, 0x30, 0xaf, 0x58, - 0x03, 0x62, 0x49, 0x26, 0x22, 0x21, 0x5c, 0xdc, 0x4c, 0x7f, 0x30, 0xf0, 0x5f, 0x3b, 0xac, 0xfa, - 0xfc, 0x9d, 0x86, 0x66, 0xd2, 0xd3, 0x42, 0x36, 0x2c, 0x74, 0xa4, 0xc5, 0x1f, 0x41, 0x19, 0x2e, - 0x48, 0x53, 0xc0, 0xdd, 0xf8, 0x51, 0xee, 0x09, 0xe0, 0x0e, 0x8b, 0x00, 0xee, 0xc4, 0x12, 0x81, - 0x0e, 0xbc, 0xc8, 0x96, 0xa0, 0x53, 0x72, 0x50, 0x45, 0xed, 0xe6, 0x56, 0x2a, 0xd1, 0x11, 0xe1, - 0x97, 0xd0, 0x14, 0xc7, 0x09, 0x49, 0x2e, 0xe7, 0x3b, 0x0b, 0x7c, 0x1f, 0x4b, 0xf2, 0x25, 0x16, - 0x84, 0x21, 0x3f, 0x8e, 0xde, 0x61, 0x9e, 0xc7, 0xdd, 0xfe, 0x37, 0x2f, 0x60, 0xef, 0x46, 0x47, - 0x92, 0x1c, 0xce, 0x87, 0xb8, 0x16, 0xde, 0xd7, 0xd0, 0x39, 0x29, 0xab, 0xff, 0x83, 0x9b, 0xd8, - 0x5f, 0x34, 0xb4, 0xa4, 0xe6, 0xf6, 0x10, 0x2f, 0x9c, 0x78, 0x53, 0x50, 0x22, 0x0c, 0xd2, 0x4d, - 0xf3, 0xbf, 0xf2, 0xa6, 0x90, 0xcd, 0x1f, 0xbf, 0x29, 0xf2, 0xa3, 0xca, 0x37, 0x45, 0xde, 0x3c, - 0xfb, 0xa6, 0x60, 0x40, 0x38, 0x78, 0xaf, 0x95, 0x78, 0x53, 0xe4, 0x3d, 0xc9, 0x15, 0xa8, 0x6c, - 0xcb, 0x0d, 0xdc, 0xc1, 0xab, 0xae, 0x39, 0xdc, 0x69, 0xd9, 0xdb, 0x2f, 0x33, 0xa3, 0x6b, 0x76, - 0x68, 0x8b, 0x34, 0x9d, 0xc9, 0xa6, 0x29, 0xca, 0x08, 0xf9, 0x95, 0x28, 0xa0, 0xc2, 0x10, 0xc0, - 0xf4, 0xbb, 0x1a, 0x3a, 0x55, 0x60, 0x03, 0x7c, 0x9f, 0x94, 0xf2, 0x2d, 0xf0, 0x31, 0xd7, 0x80, - 0xf4, 0x22, 0x27, 0x3d, 0xe0, 0x66, 0xcd, 0x16, 0xb7, 0x03, 0xfe, 0x8e, 0x1d, 0xda, 0xc4, 0x2a, - 0x9a, 0x97, 0x6c, 0xa0, 0xd3, 0xbc, 0xf8, 0x87, 0xdb, 0xb4, 0x60, 0x52, 0xf7, 0x88, 0x59, 0x34, - 0x65, 0xf7, 0xfb, 0x31, 0xe3, 0x49, 0xbb, 0xdf, 0xbf, 0xe1, 0x90, 0x6f, 0x69, 0xe8, 0x8c, 0xc4, - 0x27, 0xbe, 0x7a, 0xdb, 0x89, 0xe7, 0x81, 0xf2, 0xe6, 0x99, 0x8c, 0x10, 0x64, 0xaf, 0xde, 0x10, - 0x26, 0xba, 0x41, 0xa4, 0xe3, 0x92, 0x17, 0x01, 0xc5, 0xa6, 0xef, 0x0c, 0x3d, 0xd7, 0xb4, 0x3d, - 0xbb, 0xb7, 0x2d, 0xf6, 0x7d, 0xb2, 0x4a, 0xb5, 0xd2, 0x2a, 0x7d, 0x43, 0x48, 0x7b, 0x99, 0x50, - 0x31, 0xa3, 0xd4, 0x80, 0x92, 0x51, 0xca, 0x32, 0xcb, 0xa8, 0xcb, 0x06, 0x9b, 0x2d, 0x3e, 0x4a, - 0xac, 0x74, 0x5c, 0x72, 0x1a, 0x3d, 0xc1, 0x60, 0x3c, 0x3f, 0xec, 0x39, 0x9b, 0xbe, 0x63, 0xda, - 0xa2, 0xaf, 0x92, 0xaf, 0xa1, 0x53, 0xb9, 0x91, 0xe8, 0xa2, 0x7f, 0x3c, 0x7e, 0x9a, 0x80, 0x37, - 0x57, 0x04, 0xcf, 0xb4, 0x3d, 0xb3, 0x0e, 0xb8, 0x4e, 0x71, 0x5c, 0xb7, 0x86, 0x3d, 0xa7, 0xd9, - 0xf5, 0x9d, 0x18, 0x59, 0x26, 0x26, 0x99, 0x87, 0x0c, 0xd1, 0xc7, 0xa2, 0x94, 0x62, 0x78, 0x6f, - 0x09, 0xd5, 0x31, 0x3b, 0x1c, 0xdd, 0x2f, 0x71, 0x7a, 0x24, 0x81, 0xb3, 0xae, 0x2c, 0x79, 0xdb, - 0x33, 0xcf, 0x01, 0xd6, 0xb9, 0x04, 0xd6, 0xa8, 0xd4, 0x05, 0x5e, 0x49, 0x7c, 0xb2, 0x19, 0x4b, - 0xa1, 0x30, 0xf2, 0xb9, 0xd0, 0x0e, 0x83, 0x0f, 0xd8, 0xf8, 0xc8, 0x9b, 0x89, 0x13, 0x48, 0x3a, - 0x1e, 0xb0, 0xec, 0xa3, 0x13, 0x99, 0x21, 0xa0, 0xb8, 0x24, 0xaf, 0xfd, 0xb4, 0xad, 0xb9, 0x00, - 0x3c, 0x4f, 0x03, 0x02, 0xcf, 0x8b, 0x68, 0x06, 0xd4, 0x80, 0x58, 0xd9, 0xf0, 0xf4, 0x4a, 0xb6, - 0x98, 0xa9, 0x0b, 0x93, 0x1f, 0xca, 0x93, 0x2f, 0xe5, 0x03, 0xed, 0xf0, 0xdf, 0x17, 0x3a, 0x66, - 0x01, 0x04, 0xc8, 0x4d, 0x80, 0xa6, 0xec, 0xae, 0x3f, 0xec, 0x85, 0x89, 0x2b, 0x68, 0xfc, 0x8e, - 0x13, 0x29, 0xf9, 0xb4, 0xdf, 0xe9, 0x99, 0x57, 0xd2, 0x07, 0x41, 0xee, 0x46, 0xfe, 0xbd, 0x5f, - 0x5f, 0x6d, 0x77, 0xc2, 0xaf, 0x0e, 0x5b, 0x34, 0x99, 0x06, 0x7c, 0xcd, 0xe1, 0x7f, 0xd6, 0x03, - 0xe7, 0x65, 0x23, 0xdc, 0xe9, 0xbb, 0x01, 0x8b, 0x60, 0xc1, 0x54, 0x17, 0xdf, 0x59, 0x44, 0x93, - 0x0c, 0x1b, 0xfe, 0xba, 0x86, 0x50, 0xfc, 0x05, 0x04, 0xaf, 0x48, 0x17, 0x24, 0xf7, 0x5d, 0x46, - 0x5f, 0x2d, 0xb5, 0xe3, 0xf4, 0x08, 0xf9, 0xc6, 0xbb, 0xff, 0x7c, 0x6b, 0x7c, 0x1e, 0xeb, 0x46, - 0xd1, 0x87, 0xaa, 0x00, 0x7f, 0x53, 0x43, 0x8f, 0x46, 0xae, 0x78, 0x59, 0x1d, 0x5a, 0x20, 0x58, - 0x29, 0x33, 0x03, 0x00, 0xab, 0x0c, 0xc0, 0x22, 0xae, 0x17, 0x03, 0x30, 0x76, 0x3b, 0xce, 0x1e, - 0xfe, 0x99, 0x06, 0x07, 0xf6, 0xb4, 0xee, 0x8c, 0x8d, 0xe2, 0x89, 0xa4, 0x1f, 0x3c, 0xf4, 0xa7, - 0xaa, 0x3b, 0x00, 0xc6, 0x4b, 0x0c, 0xe3, 0x3a, 0xbe, 0x50, 0x8c, 0xb1, 0xd9, 0xda, 0x69, 0xb2, - 0x13, 0xa2, 0xb1, 0xcb, 0xfe, 0xec, 0xe1, 0x3f, 0xc9, 0x3f, 0xbb, 0xc0, 0xd9, 0x0c, 0x7f, 0xac, - 0x2a, 0x8a, 0xf4, 0x41, 0x55, 0xff, 0xf8, 0xc8, 0x7e, 0x40, 0xc2, 0x64, 0x24, 0x9e, 0xc3, 0xcf, - 0x56, 0x20, 0xd1, 0xa4, 0x7b, 0x44, 0x30, 0x31, 0x76, 0x61, 0xef, 0xec, 0xe1, 0xdb, 0x1a, 0x9a, - 0x02, 0xa5, 0x50, 0x51, 0x61, 0x29, 0x25, 0x55, 0x3f, 0x5f, 0x6e, 0x08, 0x08, 0xcf, 0x31, 0x84, - 0x67, 0xf1, 0x9c, 0x51, 0xfc, 0x51, 0x34, 0xde, 0x10, 0x5c, 0xc6, 0x5e, 0x51, 0x45, 0x8f, 0xd5, - 0x7c, 0x7d, 0xb5, 0xd4, 0xae, 0xd2, 0x86, 0x60, 0x5a, 0x7a, 0xbc, 0x21, 0xa8, 0xab, 0x6a, 0x43, - 0x24, 0xc4, 0x6f, 0x7d, 0xa5, 0xcc, 0xac, 0xd2, 0x86, 0x60, 0x00, 0xf8, 0x86, 0xf8, 0xb9, 0x86, - 0x66, 0xa5, 0x1a, 0x32, 0xde, 0x50, 0xd4, 0x88, 0x5c, 0xef, 0xd6, 0x2f, 0x8e, 0xe2, 0x02, 0x48, - 0x0d, 0x86, 0x74, 0x0d, 0xaf, 0x4a, 0x91, 0xe6, 0xa5, 0x54, 0xfc, 0x0b, 0xa1, 0x32, 0x64, 0x42, - 0xe2, 0xa7, 0x2a, 0xcf, 0x2e, 0xf0, 0x6e, 0x8c, 0xe0, 0x51, 0x69, 0x17, 0xe7, 0xe0, 0xf2, 0x24, - 0xc7, 0xe5, 0xc6, 0x74, 0x52, 0xd5, 0x22, 0x26, 0xc4, 0x60, 0x65, 0xb9, 0x25, 0xf5, 0xdb, 0xb2, - 0x72, 0x63, 0x93, 0xc6, 0xe5, 0x46, 0x1b, 0xc7, 0xb2, 0x3a, 0x74, 0x95, 0x72, 0x4b, 0xb6, 0x85, - 0x92, 0x72, 0xa3, 0x00, 0x78, 0x26, 0x7e, 0xa3, 0x89, 0x03, 0xb7, 0x44, 0x37, 0x7c, 0xba, 0x64, - 0x39, 0xa4, 0xa2, 0xab, 0xfe, 0xcc, 0x88, 0x5e, 0x23, 0x2c, 0x64, 0x56, 0xef, 0xc4, 0x7f, 0xd4, - 0xe0, 0x24, 0x9a, 0x8f, 0x8c, 0x2f, 0x8d, 0x82, 0x43, 0x80, 0x7f, 0x7a, 0x34, 0x27, 0xc0, 0xfe, - 0x22, 0xc3, 0x6e, 0xe2, 0x2b, 0x23, 0x60, 0x37, 0x76, 0xc5, 0x59, 0x27, 0xd9, 0x8b, 0xbf, 0xad, - 0xa1, 0x63, 0x49, 0xc9, 0x0e, 0x2b, 0x1a, 0x6d, 0x5a, 0x4c, 0xd4, 0xd7, 0x2a, 0x58, 0x02, 0xde, - 0x25, 0x86, 0xb7, 0x86, 0xe7, 0xa5, 0x78, 0x85, 0x18, 0xf0, 0x1d, 0x0d, 0x1d, 0x4d, 0xb8, 0xab, - 0x5e, 0x0e, 0x29, 0x51, 0x4e, 0x3f, 0x5f, 0x6e, 0x08, 0x40, 0xd6, 0x18, 0x90, 0x73, 0x78, 0x51, - 0x05, 0x84, 0x57, 0xea, 0x2f, 0xa3, 0xc6, 0x98, 0xd1, 0x45, 0x94, 0x8d, 0x51, 0xae, 0xce, 0x29, - 0x1b, 0x63, 0x81, 0x50, 0x46, 0x9e, 0x61, 0x58, 0x0d, 0xbc, 0xae, 0xc2, 0x9a, 0x3f, 0x31, 0xbc, - 0x5f, 0xa4, 0x14, 0x8a, 0x33, 0xc3, 0x27, 0xaa, 0x63, 0xc9, 0x9c, 0x1a, 0x2e, 0x7f, 0x00, 0x4f, - 0x20, 0x73, 0x8d, 0x91, 0xf9, 0x24, 0x7e, 0xae, 0x12, 0x99, 0xa2, 0x93, 0xc3, 0x1f, 0xc4, 0xf6, - 0xcb, 0x0b, 0x19, 0xaa, 0xed, 0x57, 0xa8, 0xfe, 0xa8, 0xb6, 0x5f, 0xb1, 0x64, 0x43, 0x5e, 0x60, - 0x64, 0xae, 0xe2, 0x4f, 0x15, 0x76, 0xbb, 0x9c, 0xf8, 0x22, 0xdf, 0x7d, 0xef, 0x89, 0xb5, 0x2a, - 0x90, 0x27, 0x54, 0x6b, 0xa5, 0x16, 0x6c, 0x54, 0x6b, 0x55, 0xa2, 0xd3, 0x94, 0x9c, 0xf1, 0x8a, - 0x65, 0x96, 0x04, 0x47, 0xfc, 0xb6, 0xf8, 0xd0, 0x98, 0x92, 0x38, 0xf0, 0xba, 0xa2, 0x82, 0xf2, - 0x0a, 0x8c, 0xde, 0xa8, 0x6a, 0x5e, 0xad, 0xa7, 0x73, 0x17, 0x7e, 0x8c, 0x30, 0x76, 0xb9, 0xb6, - 0xb3, 0x87, 0x7f, 0x2a, 0xa0, 0xa6, 0xd4, 0x08, 0xac, 0x98, 0x5b, 0x26, 0xb9, 0xe8, 0x46, 0x65, - 0xfb, 0x4a, 0xfb, 0x3b, 0xad, 0x95, 0x24, 0x6a, 0xe6, 0x07, 0x1a, 0x3a, 0x91, 0xb9, 0x71, 0xe2, - 0x0b, 0xc5, 0x73, 0xe7, 0xc4, 0x14, 0xfd, 0xc9, 0x6a, 0xc6, 0x80, 0x72, 0x9d, 0xa1, 0x5c, 0xc5, - 0xcb, 0x52, 0x94, 0x59, 0xe5, 0x04, 0xff, 0x44, 0xdc, 0xaf, 0xd2, 0x82, 0x84, 0xea, 0x7e, 0x25, - 0xd5, 0x54, 0x54, 0xf7, 0x2b, 0xb9, 0xca, 0x42, 0x36, 0x18, 0xd2, 0x0b, 0x78, 0xad, 0x18, 0x69, - 0x46, 0x37, 0xc1, 0xef, 0x44, 0x47, 0xc9, 0xb4, 0xb2, 0x80, 0xd5, 0xb7, 0x3b, 0x89, 0x9c, 0xa2, - 0x6f, 0x8c, 0xe0, 0x01, 0x80, 0x2f, 0x33, 0xc0, 0x97, 0xf0, 0x86, 0xbc, 0x5a, 0xb3, 0x02, 0x48, - 0x72, 0x7b, 0xfd, 0x55, 0x4b, 0x08, 0x52, 0x39, 0xd9, 0x41, 0x75, 0x2d, 0x54, 0x49, 0x25, 0xaa, - 0x6b, 0xa1, 0x52, 0xdf, 0x20, 0x37, 0x19, 0x95, 0xe7, 0xf1, 0xb5, 0xd2, 0x2a, 0xa1, 0x3d, 0x9e, - 0xf3, 0xe0, 0x3d, 0x5e, 0xd2, 0x16, 0xcd, 0xad, 0x3b, 0xff, 0xa8, 0x8d, 0xbd, 0x7d, 0xaf, 0x36, - 0x76, 0xe7, 0x5e, 0x4d, 0xbb, 0x7b, 0xaf, 0xa6, 0xfd, 0xfd, 0x5e, 0x4d, 0x7b, 0xf3, 0x7e, 0x6d, - 0xec, 0xee, 0xfd, 0xda, 0xd8, 0x9f, 0xef, 0xd7, 0xc6, 0xbe, 0xd8, 0x48, 0x69, 0x21, 0x74, 0xc6, - 0x75, 0xff, 0xd6, 0xad, 0xce, 0x76, 0xc7, 0xf6, 0x04, 0x02, 0xc0, 0xc0, 0x74, 0x91, 0xd6, 0x14, - 0xfb, 0x5f, 0xae, 0x97, 0xfe, 0x13, 0x00, 0x00, 0xff, 0xff, 0x39, 0x88, 0xa4, 0x2f, 0xdf, 0x2b, - 0x00, 0x00, + 0x15, 0xf7, 0xba, 0xb6, 0x43, 0x27, 0x9f, 0x1d, 0xdb, 0x4d, 0xb2, 0x76, 0xee, 0xb5, 0x27, 0xfe, + 0x88, 0x9b, 0xfa, 0x6e, 0x9d, 0xb4, 0x40, 0xaa, 0x0a, 0x92, 0x25, 0x69, 0x1b, 0x14, 0xab, 0x66, + 0x41, 0x42, 0x42, 0xc0, 0xd5, 0x5e, 0xef, 0xe6, 0x72, 0xd5, 0xf5, 0xee, 0xed, 0xdd, 0xbd, 0x6d, + 0x2d, 0xcb, 0x22, 0x05, 0xfa, 0x80, 0x78, 0x29, 0x2a, 0x2f, 0x08, 0x09, 0x21, 0x21, 0xa4, 0x4a, + 0x80, 0xe0, 0x05, 0x1e, 0x80, 0x07, 0x1e, 0x23, 0x04, 0x28, 0xa8, 0x0f, 0xa1, 0x20, 0x2c, 0x48, + 0xf8, 0x0b, 0x22, 0xf1, 0xc2, 0x13, 0x9a, 0x99, 0x33, 0xfb, 0x39, 0x3b, 0x77, 0x6f, 0x15, 0x1b, + 0xc2, 0x53, 0x6e, 0x76, 0xce, 0x39, 0xf3, 0xfb, 0x9d, 0x39, 0x73, 0x76, 0xe6, 0xb7, 0x46, 0xf5, + 0xcd, 0x60, 0xcb, 0x71, 0xdf, 0x34, 0x3c, 0xd7, 0x77, 0x8c, 0xd7, 0xd7, 0x5a, 0x6e, 0x64, 0xaf, + 0x19, 0xaf, 0xf5, 0xdd, 0xde, 0x76, 0xa3, 0xdb, 0x0b, 0xa2, 0x00, 0x4f, 0x72, 0x83, 0x06, 0x35, + 0x68, 0x80, 0x81, 0xfe, 0xd4, 0x66, 0x10, 0x6e, 0x05, 0xa1, 0xd1, 0xb2, 0x43, 0x97, 0x5b, 0xc7, + 0xbe, 0x5d, 0xbb, 0xdd, 0xf1, 0xed, 0xa8, 0x13, 0xf8, 0x3c, 0x80, 0x3e, 0xd5, 0x0e, 0xda, 0x01, + 0xfb, 0x69, 0xd0, 0x5f, 0xf0, 0x74, 0xb6, 0x1d, 0x04, 0x6d, 0xcf, 0x35, 0xec, 0x6e, 0xc7, 0xb0, + 0x7d, 0x3f, 0x88, 0x98, 0x4b, 0x08, 0xa3, 0x35, 0x19, 0x2a, 0x86, 0x80, 0x8f, 0xcf, 0xc9, 0xc6, + 0xbb, 0x76, 0xcf, 0xde, 0x4a, 0x45, 0x48, 0x10, 0x0a, 0x8b, 0xcd, 0xa0, 0x03, 0xa8, 0xc8, 0x14, + 0xc2, 0x9f, 0xa1, 0xb8, 0x37, 0x98, 0x93, 0xe5, 0xbe, 0xd6, 0x77, 0xc3, 0x88, 0x6c, 0xa0, 0xc9, + 0xcc, 0xd3, 0xb0, 0x1b, 0xf8, 0xa1, 0x8b, 0x2f, 0xa1, 0x09, 0x1e, 0xfc, 0x94, 0x36, 0xa7, 0x9d, + 0x3b, 0x7c, 0x61, 0xa6, 0x21, 0x49, 0x4a, 0x83, 0x3b, 0x99, 0x63, 0xb7, 0xf7, 0xea, 0x23, 0x16, + 0x38, 0x90, 0x1e, 0x7a, 0x82, 0x45, 0xbc, 0xe1, 0xfa, 0x8e, 0x98, 0x06, 0x7f, 0x09, 0xa1, 0x24, + 0x4d, 0x10, 0x73, 0xa9, 0xc1, 0x11, 0x37, 0x28, 0xe2, 0x06, 0x5f, 0x81, 0x24, 0x72, 0xdb, 0x05, + 0x5f, 0x73, 0xfa, 0xc1, 0x5e, 0xfd, 0x89, 0x6d, 0x7b, 0xcb, 0x7b, 0x9e, 0x24, 0x31, 0x88, 0x95, + 0x0a, 0x48, 0x7e, 0xab, 0x01, 0x39, 0x98, 0x14, 0x58, 0x7c, 0x1a, 0x8d, 0x53, 0xbc, 0x94, 0xc4, + 0x63, 0xe7, 0x0e, 0x5f, 0xa8, 0x49, 0x49, 0x50, 0x97, 0x2b, 0x61, 0xe8, 0x46, 0xe6, 0x14, 0xe5, + 0xf1, 0x60, 0xaf, 0x7e, 0x84, 0x4f, 0xc6, 0x5c, 0x89, 0xc5, 0x43, 0xe0, 0x2f, 0x67, 0x18, 0x8c, + 0x32, 0x06, 0xcb, 0x03, 0x19, 0x70, 0x20, 0x55, 0x28, 0x10, 0x74, 0x22, 0x66, 0x20, 0xb2, 0x76, + 0x0c, 0x8d, 0x76, 0x1c, 0x96, 0xad, 0x31, 0x6b, 0xb4, 0xe3, 0x90, 0x2f, 0xa6, 0x52, 0x1b, 0x93, + 0x7c, 0x09, 0x8d, 0x51, 0x84, 0x90, 0xd4, 0x41, 0x1c, 0x27, 0x81, 0xe3, 0xe1, 0x84, 0x23, 0xb1, + 0x58, 0x00, 0xf2, 0x43, 0x0d, 0xe9, 0x2c, 0xfc, 0x15, 0xcf, 0xa3, 0x0e, 0xe6, 0xf6, 0x2b, 0x6f, + 0xf8, 0x6e, 0x4f, 0x80, 0x59, 0x42, 0xe3, 0x01, 0xfd, 0x3f, 0x9b, 0xe8, 0x71, 0xf3, 0x44, 0x92, + 0x28, 0xf6, 0x98, 0x58, 0x7c, 0x38, 0xb7, 0xd4, 0xa3, 0x0f, 0x7b, 0xa9, 0x7f, 0xaf, 0xa1, 0x19, + 0x29, 0x4a, 0x48, 0xc7, 0xfa, 0x70, 0x6b, 0x7e, 0x12, 0xf2, 0x71, 0x3c, 0xc9, 0x47, 0xb3, 0x73, + 0x80, 0xcb, 0x7e, 0x57, 0x43, 0xf3, 0x12, 0x3a, 0x57, 0x7c, 0x67, 0x23, 0x08, 0xbc, 0x61, 0x73, + 0x7f, 0x1e, 0x1d, 0xea, 0x06, 0x81, 0xd7, 0xec, 0x38, 0x0c, 0xea, 0x98, 0x89, 0x1f, 0xec, 0xd5, + 0x8f, 0x01, 0x02, 0x3e, 0x40, 0xac, 0x09, 0xfa, 0xeb, 0xba, 0x93, 0x5b, 0xa8, 0xc7, 0x1e, 0xf6, + 0x42, 0xdd, 0xd1, 0x10, 0x51, 0x31, 0x7b, 0x04, 0xf7, 0xa8, 0x68, 0x6d, 0x1b, 0x76, 0xa7, 0x77, + 0x50, 0xad, 0xed, 0x6f, 0x5a, 0xdc, 0xb7, 0xd9, 0xa4, 0x90, 0xb6, 0x36, 0x3a, 0xea, 0xbe, 0x19, + 0xb9, 0xbe, 0xe3, 0x3a, 0x6c, 0x00, 0xd2, 0x47, 0xa4, 0xe9, 0xbb, 0x06, 0x96, 0x4d, 0x6a, 0x6a, + 0x9e, 0x81, 0x14, 0x4e, 0xf3, 0x89, 0x45, 0x98, 0x66, 0x97, 0xc6, 0x21, 0x56, 0x36, 0xee, 0x81, + 0xf5, 0x3d, 0x3a, 0x5b, 0x59, 0xdf, 0xdb, 0x4e, 0xe5, 0x3d, 0xce, 0x80, 0x83, 0x8e, 0x5c, 0x4b, + 0x21, 0x85, 0xcc, 0x57, 0x49, 0xc0, 0x2c, 0x24, 0x60, 0x4a, 0x92, 0x00, 0x62, 0x65, 0xa2, 0x92, + 0x5d, 0x34, 0xcb, 0x8b, 0x98, 0x56, 0x9f, 0x65, 0x47, 0x6e, 0x98, 0x79, 0x7f, 0xee, 0xf7, 0xea, + 0xff, 0x4b, 0x43, 0x67, 0x4a, 0xe6, 0x87, 0x34, 0x44, 0xe8, 0x44, 0x7e, 0x0c, 0x6a, 0x61, 0x51, + 0x9a, 0x8a, 0xbc, 0xb1, 0x39, 0x0f, 0xd9, 0x38, 0xcd, 0x91, 0xd8, 0x74, 0xbc, 0xd9, 0xa3, 0x06, + 0x4d, 0x78, 0xa3, 0x5b, 0x85, 0x19, 0xf6, 0xbd, 0x2a, 0x56, 0x45, 0x93, 0xcf, 0x4e, 0x5c, 0x56, + 0x20, 0xdf, 0xd1, 0xe4, 0xcb, 0x24, 0xcf, 0x52, 0xe6, 0x64, 0xb3, 0x2f, 0x59, 0xca, 0x1d, 0x85, + 0x68, 0xc3, 0x3b, 0xa8, 0x8a, 0xf9, 0x75, 0xdc, 0x2f, 0xf8, 0xa4, 0x90, 0x80, 0x6b, 0x68, 0x9c, + 0xb6, 0x7d, 0x51, 0x1b, 0xa7, 0xe5, 0xe7, 0xb9, 0x20, 0xf0, 0xf2, 0x1d, 0x96, 0x79, 0x11, 0x8b, + 0x7b, 0x1f, 0x5c, 0x37, 0x48, 0xbd, 0xfc, 0xf2, 0x8b, 0xfd, 0xf9, 0x54, 0x56, 0x63, 0x7e, 0x26, + 0x1a, 0xa3, 0x08, 0x21, 0x9f, 0x0a, 0x7a, 0xb9, 0x03, 0x10, 0x75, 0x22, 0x16, 0xf3, 0x25, 0xb7, + 0x34, 0x54, 0x4f, 0xaa, 0xe8, 0x73, 0x01, 0x6d, 0x00, 0xeb, 0x76, 0xb7, 0xdb, 0xf1, 0xdb, 0x07, + 0xb5, 0x7a, 0x6f, 0x8f, 0xa2, 0xb9, 0x72, 0x08, 0xc0, 0xf5, 0x96, 0x86, 0x26, 0xed, 0xe2, 0x38, + 0x2c, 0xed, 0x72, 0x79, 0x41, 0x67, 0xec, 0xcd, 0x45, 0xc8, 0xc4, 0x99, 0x74, 0x49, 0x47, 0x01, + 0x6b, 0x83, 0xcd, 0x2d, 0x08, 0x4a, 0x2c, 0xd9, 0x54, 0xfb, 0x5e, 0x07, 0xbb, 0xa8, 0x56, 0x92, + 0x06, 0xb1, 0x10, 0x0d, 0xf4, 0x11, 0x8e, 0x58, 0xd4, 0x86, 0x39, 0x99, 0x1c, 0xe3, 0xc4, 0x08, + 0xb1, 0x0e, 0xb1, 0x9f, 0xd7, 0x9d, 0xa1, 0x8e, 0x46, 0xe4, 0x07, 0xe5, 0x95, 0x10, 0xaf, 0xc2, + 0x2e, 0xc2, 0xc5, 0x51, 0xa8, 0x88, 0xca, 0x6b, 0xb0, 0x00, 0x6b, 0x30, 0xab, 0x58, 0x03, 0x62, + 0x49, 0x26, 0x22, 0x11, 0x5c, 0xdc, 0xcc, 0xa0, 0xd7, 0x0b, 0xde, 0x38, 0xa8, 0xfa, 0xfc, 0x9d, + 0x86, 0xa6, 0xb2, 0xd3, 0x42, 0x36, 0x2c, 0x74, 0xa8, 0xc5, 0x1f, 0x41, 0x19, 0xce, 0x49, 0x53, + 0xc0, 0xdd, 0xf8, 0x51, 0xee, 0x49, 0xe0, 0x0e, 0x8b, 0x00, 0xee, 0xc4, 0x12, 0x81, 0xf6, 0xbd, + 0xc8, 0x16, 0xa0, 0x53, 0x72, 0x50, 0x65, 0xed, 0xe6, 0x66, 0x26, 0xd1, 0x31, 0xe1, 0x57, 0xd0, + 0x04, 0xc7, 0x09, 0x49, 0x1e, 0xcc, 0x77, 0x1a, 0xf8, 0x1e, 0x4d, 0xf3, 0x25, 0x16, 0x84, 0x21, + 0x3f, 0x8a, 0xdf, 0x61, 0x9e, 0xc7, 0xdd, 0xfe, 0x37, 0x2f, 0x60, 0xef, 0xc7, 0x47, 0x92, 0x02, + 0xce, 0x47, 0xb8, 0x16, 0x3e, 0xd0, 0xd0, 0x59, 0x29, 0xab, 0xff, 0x83, 0x9b, 0xd8, 0x5f, 0x34, + 0xb4, 0xa0, 0xe6, 0xf6, 0x08, 0x2f, 0x9c, 0x78, 0x53, 0x50, 0x22, 0x0c, 0xd2, 0x0d, 0xf3, 0xbf, + 0xf2, 0xa6, 0x90, 0xcd, 0x9f, 0xbc, 0x29, 0x8a, 0xa3, 0xca, 0x37, 0x45, 0xd1, 0x3c, 0xff, 0xa6, + 0x60, 0x40, 0x38, 0x78, 0xaf, 0x95, 0x7a, 0x53, 0x14, 0x3d, 0xc9, 0x65, 0xa8, 0x6c, 0xcb, 0x0d, + 0xdd, 0xde, 0xeb, 0xae, 0xd9, 0xdf, 0x6e, 0xd9, 0x9b, 0xaf, 0x32, 0xa3, 0xab, 0x76, 0x64, 0x8b, + 0x34, 0x9d, 0xce, 0xa7, 0x29, 0xce, 0x08, 0xf9, 0x95, 0x28, 0xa0, 0xd2, 0x10, 0xc0, 0xf4, 0xdb, + 0x1a, 0x3a, 0x59, 0x62, 0x03, 0x7c, 0x9f, 0x96, 0xf2, 0x2d, 0xf1, 0x31, 0x57, 0x80, 0xf4, 0x3c, + 0x27, 0xdd, 0xe3, 0x66, 0xcd, 0x16, 0xb7, 0x03, 0xfe, 0x8e, 0x1d, 0xd9, 0xc4, 0x2a, 0x9b, 0x97, + 0xac, 0xa1, 0x53, 0xbc, 0xf8, 0xfb, 0x9b, 0xb4, 0x60, 0x32, 0xf7, 0x88, 0x69, 0x34, 0x61, 0x77, + 0xbb, 0x09, 0xe3, 0x71, 0xbb, 0xdb, 0xbd, 0xee, 0x90, 0x6f, 0x68, 0xe8, 0xb4, 0xc4, 0x27, 0xb9, + 0x7a, 0xdb, 0xa9, 0xe7, 0xa1, 0xf2, 0xe6, 0x99, 0x8e, 0x10, 0xe6, 0xaf, 0xde, 0x10, 0x26, 0xbe, + 0x41, 0x64, 0xe3, 0x92, 0x97, 0x01, 0xc5, 0x7a, 0xe0, 0xf4, 0x3d, 0xd7, 0xb4, 0x3d, 0xdb, 0xdf, + 0x14, 0xfb, 0x3e, 0x5d, 0xa5, 0xda, 0xc0, 0x2a, 0x7d, 0x5b, 0x48, 0x7b, 0xb9, 0x50, 0x09, 0xa3, + 0xcc, 0x80, 0x92, 0x51, 0xc6, 0x32, 0xcf, 0x68, 0x8b, 0x0d, 0x36, 0x5b, 0x7c, 0x94, 0x58, 0xd9, + 0xb8, 0xe4, 0x14, 0x7a, 0x92, 0xc1, 0x78, 0xb1, 0xef, 0x3b, 0xeb, 0x81, 0x63, 0xda, 0xa2, 0xaf, + 0x92, 0xaf, 0xa2, 0x93, 0x85, 0x91, 0xf8, 0xa2, 0x7f, 0x2c, 0x79, 0x9a, 0x82, 0x37, 0x53, 0x06, + 0xcf, 0xb4, 0x3d, 0xb3, 0x0e, 0xb8, 0x4e, 0x72, 0x5c, 0x37, 0xfb, 0xbe, 0xd3, 0xdc, 0x0a, 0x9c, + 0x04, 0x59, 0x2e, 0x26, 0x99, 0x85, 0x0c, 0xd1, 0xc7, 0xa2, 0x94, 0x12, 0x78, 0xef, 0x0a, 0xd5, + 0x31, 0x3f, 0x1c, 0xdf, 0x2f, 0x71, 0x76, 0x24, 0x85, 0xb3, 0xae, 0x2c, 0x79, 0xdb, 0x33, 0xcf, + 0x02, 0xd6, 0x99, 0x14, 0xd6, 0xb8, 0xd4, 0x05, 0x5e, 0x49, 0x7c, 0xb2, 0x9e, 0x48, 0xa1, 0x30, + 0xf2, 0xd9, 0xc8, 0x8e, 0xc2, 0x0f, 0xd9, 0xf8, 0xc8, 0x3b, 0xa9, 0x13, 0x48, 0x36, 0x1e, 0xb0, + 0xec, 0xa2, 0xe3, 0xb9, 0x21, 0xa0, 0xb8, 0x20, 0xaf, 0xfd, 0xac, 0xad, 0x39, 0x07, 0x3c, 0x4f, + 0x01, 0x02, 0xcf, 0x8b, 0x69, 0x86, 0xd4, 0x80, 0x58, 0xf9, 0xf0, 0xf4, 0x4a, 0x36, 0x9f, 0xab, + 0x0b, 0x93, 0x1f, 0xca, 0xd3, 0x2f, 0xe5, 0x7d, 0xed, 0xf0, 0xdf, 0x15, 0x3a, 0x66, 0x09, 0x04, + 0xc8, 0x4d, 0x88, 0x26, 0xec, 0xad, 0xa0, 0xef, 0x47, 0xa9, 0x2b, 0x68, 0xf2, 0x8e, 0x13, 0x29, + 0xf9, 0x54, 0xd0, 0xf1, 0xcd, 0xcb, 0xd9, 0x83, 0x20, 0x77, 0x23, 0xff, 0xde, 0xab, 0x2f, 0xb7, + 0x3b, 0xd1, 0x57, 0xfa, 0x2d, 0x9a, 0x4c, 0x03, 0xbe, 0xe6, 0xf0, 0x7f, 0x56, 0x43, 0xe7, 0x55, + 0x23, 0xda, 0xee, 0xba, 0x21, 0x8b, 0x60, 0xc1, 0x54, 0x44, 0x87, 0xde, 0x76, 0xc3, 0xf5, 0x9d, + 0xeb, 0x7e, 0xe4, 0xf6, 0xdc, 0x30, 0x12, 0x25, 0xfb, 0x96, 0x68, 0x62, 0xd9, 0xc1, 0x78, 0x53, + 0x1d, 0xe5, 0x4c, 0x61, 0x00, 0x5e, 0xf8, 0xf3, 0xa5, 0xaf, 0x23, 0x11, 0x21, 0xaf, 0x9e, 0x65, + 0xa2, 0x10, 0xeb, 0x48, 0x37, 0x65, 0x7b, 0xe1, 0x2e, 0x41, 0xe3, 0x0c, 0x03, 0x7e, 0x4b, 0x43, + 0x28, 0xf9, 0x42, 0x83, 0x97, 0xa4, 0xf3, 0x14, 0xbe, 0x1b, 0xe9, 0xcb, 0x03, 0xed, 0x38, 0x1f, + 0x42, 0xbe, 0xf6, 0xfe, 0x3f, 0xdf, 0x1d, 0x9d, 0xc5, 0xba, 0x51, 0xf6, 0x21, 0x2d, 0xc4, 0x5f, + 0xd7, 0xd0, 0xe3, 0xb1, 0x2b, 0x5e, 0x54, 0x87, 0x16, 0x08, 0x96, 0x06, 0x99, 0x01, 0x80, 0x65, + 0x06, 0x60, 0x1e, 0xd7, 0xcb, 0x01, 0x18, 0x3b, 0x1d, 0x67, 0x17, 0xff, 0x54, 0x83, 0x0b, 0x45, + 0x56, 0x17, 0xc7, 0x46, 0xf9, 0x44, 0xd2, 0x0f, 0x32, 0xfa, 0x33, 0xd5, 0x1d, 0x00, 0xe3, 0x45, + 0x86, 0x71, 0x15, 0x9f, 0x2f, 0xc7, 0xd8, 0x6c, 0x6d, 0x37, 0xd9, 0x09, 0xd6, 0xd8, 0x61, 0xff, + 0xec, 0xe2, 0x3f, 0xc9, 0x3f, 0x0b, 0xc1, 0xd9, 0x11, 0x7f, 0xb4, 0x2a, 0x8a, 0xec, 0x41, 0x5a, + 0xff, 0xd8, 0xd0, 0x7e, 0x40, 0xc2, 0x64, 0x24, 0x5e, 0xc0, 0xcf, 0x57, 0x20, 0xd1, 0xa4, 0xd5, + 0x28, 0x98, 0x18, 0x3b, 0xb0, 0xb7, 0x77, 0xf1, 0x2d, 0x0d, 0x4d, 0x80, 0x92, 0xa9, 0xa8, 0xb0, + 0x8c, 0xd2, 0xab, 0x9f, 0x1b, 0x6c, 0x08, 0x08, 0xcf, 0x32, 0x84, 0x67, 0xf0, 0x8c, 0x51, 0xfe, + 0xd1, 0x36, 0xd9, 0x10, 0x5c, 0x66, 0x5f, 0x52, 0x45, 0x4f, 0xbe, 0x36, 0xe8, 0xcb, 0x03, 0xed, + 0x2a, 0x6d, 0x08, 0xa6, 0xf5, 0x27, 0x1b, 0x82, 0xba, 0xaa, 0x36, 0x44, 0x4a, 0x9c, 0xd7, 0x97, + 0x06, 0x99, 0x55, 0xda, 0x10, 0x0c, 0x00, 0xdf, 0x10, 0x3f, 0xd3, 0xd0, 0xb4, 0x54, 0xe3, 0xc6, + 0x6b, 0x8a, 0x1a, 0x91, 0xeb, 0xf1, 0xfa, 0x85, 0x61, 0x5c, 0x00, 0xa9, 0xc1, 0x90, 0xae, 0xe0, + 0x65, 0x29, 0xd2, 0xa2, 0xd4, 0x8b, 0x7f, 0x2e, 0x54, 0x90, 0x5c, 0x48, 0xfc, 0x4c, 0xe5, 0xd9, + 0x05, 0xde, 0xb5, 0x21, 0x3c, 0x2a, 0xed, 0xe2, 0x02, 0x5c, 0x9e, 0xe4, 0xa4, 0xdc, 0x98, 0x8e, + 0xab, 0x5a, 0xc4, 0x94, 0x58, 0xad, 0x2c, 0xb7, 0xb4, 0xbe, 0x3c, 0xa8, 0xdc, 0xd8, 0xa4, 0x49, + 0xb9, 0xd1, 0xc6, 0xb1, 0xa8, 0x0e, 0x5d, 0xa5, 0xdc, 0xd2, 0x6d, 0x61, 0x40, 0xb9, 0x51, 0x00, + 0x3c, 0x13, 0xbf, 0xd1, 0xc4, 0x85, 0x40, 0xa2, 0x6b, 0x3e, 0x3b, 0x60, 0x39, 0xa4, 0xa2, 0xb0, + 0xfe, 0xdc, 0x90, 0x5e, 0x43, 0x2c, 0x64, 0x5e, 0x8f, 0xc5, 0x7f, 0xd4, 0xe0, 0xa4, 0x5c, 0x8c, + 0x8c, 0x2f, 0x0e, 0x83, 0x43, 0x80, 0x7f, 0x76, 0x38, 0x27, 0xc0, 0xfe, 0x32, 0xc3, 0x6e, 0xe2, + 0xcb, 0x43, 0x60, 0x37, 0x76, 0xc4, 0x59, 0x2c, 0xdd, 0x8b, 0xbf, 0xa9, 0xa1, 0x23, 0x69, 0x49, + 0x11, 0x2b, 0x1a, 0x6d, 0x56, 0xec, 0xd4, 0x57, 0x2a, 0x58, 0x02, 0xde, 0x05, 0x86, 0xb7, 0x86, + 0x67, 0xa5, 0x78, 0x85, 0x58, 0xf1, 0x2d, 0x0d, 0x1d, 0x4e, 0xb9, 0xab, 0x5e, 0x0e, 0x19, 0xd1, + 0x50, 0x3f, 0x37, 0xd8, 0x10, 0x80, 0xac, 0x30, 0x20, 0x67, 0xf1, 0xbc, 0x0a, 0x08, 0xaf, 0xd4, + 0x5f, 0xc4, 0x8d, 0x31, 0xa7, 0xdb, 0x28, 0x1b, 0xa3, 0x5c, 0x3d, 0x54, 0x36, 0xc6, 0x12, 0x21, + 0x8f, 0x3c, 0xc7, 0xb0, 0x1a, 0x78, 0x55, 0x85, 0xb5, 0x78, 0x62, 0xf8, 0xa0, 0x4c, 0xc9, 0x14, + 0x67, 0x86, 0x8f, 0x57, 0xc7, 0x92, 0x3b, 0x35, 0x5c, 0xfa, 0x10, 0x9e, 0x40, 0xe6, 0x2a, 0x23, + 0xf3, 0x09, 0xfc, 0x42, 0x25, 0x32, 0x65, 0x27, 0x87, 0x3f, 0x88, 0xed, 0x57, 0x14, 0x5a, 0x54, + 0xdb, 0xaf, 0x54, 0x9d, 0x52, 0x6d, 0xbf, 0x72, 0x49, 0x89, 0xbc, 0xc4, 0xc8, 0x5c, 0xc1, 0x9f, + 0x2c, 0xed, 0x76, 0x05, 0x71, 0x48, 0xbe, 0xfb, 0xee, 0x8a, 0xb5, 0x2a, 0x91, 0x4f, 0x54, 0x6b, + 0xa5, 0x16, 0x94, 0x54, 0x6b, 0x35, 0x40, 0x47, 0x1a, 0x70, 0xc6, 0x2b, 0x97, 0x81, 0x52, 0x1c, + 0xf1, 0x7b, 0xe2, 0x43, 0x68, 0x46, 0x82, 0xc1, 0xab, 0x8a, 0x0a, 0x2a, 0x2a, 0x44, 0x7a, 0xa3, + 0xaa, 0x79, 0xb5, 0x9e, 0xce, 0x5d, 0xf8, 0x31, 0xc2, 0xd8, 0xe1, 0xda, 0xd3, 0x2e, 0xfe, 0x89, + 0x80, 0x9a, 0x51, 0x4b, 0xb0, 0x62, 0x6e, 0x99, 0x24, 0xa4, 0x1b, 0x95, 0xed, 0x2b, 0xed, 0xef, + 0xac, 0x96, 0x93, 0xaa, 0x99, 0xef, 0x69, 0xe8, 0x78, 0xee, 0x46, 0x8c, 0xcf, 0x97, 0xcf, 0x5d, + 0x10, 0x7b, 0xf4, 0xa7, 0xab, 0x19, 0x03, 0xca, 0x55, 0x86, 0x72, 0x19, 0x2f, 0x4a, 0x51, 0xe6, + 0x95, 0x1d, 0xfc, 0x63, 0x71, 0xbf, 0xca, 0x0a, 0x26, 0xaa, 0xfb, 0x95, 0x54, 0xf3, 0x51, 0xdd, + 0xaf, 0xe4, 0x2a, 0x10, 0x59, 0x63, 0x48, 0xcf, 0xe3, 0x95, 0x72, 0xa4, 0x39, 0x5d, 0x07, 0xff, + 0x32, 0x3e, 0x4a, 0x66, 0x95, 0x0f, 0xac, 0xbe, 0xdd, 0x49, 0xe4, 0x1e, 0x7d, 0x6d, 0x08, 0x0f, + 0x00, 0x7c, 0x89, 0x01, 0xbe, 0x88, 0xd7, 0xe4, 0xd5, 0x9a, 0x17, 0x68, 0xd2, 0xdb, 0xeb, 0xaf, + 0x5a, 0x4a, 0x30, 0x2b, 0xc8, 0x22, 0xaa, 0x6b, 0xa1, 0x4a, 0xca, 0x51, 0x5d, 0x0b, 0x95, 0xfa, + 0x0b, 0xb9, 0xc1, 0xa8, 0xbc, 0x88, 0xaf, 0x0e, 0xac, 0x12, 0xda, 0xe3, 0x39, 0x0f, 0xde, 0xe3, + 0x65, 0x6d, 0xf1, 0xfb, 0x5a, 0xea, 0x4f, 0x2d, 0x85, 0x9c, 0xa1, 0xea, 0x1d, 0x12, 0x05, 0x46, + 0xd5, 0x3b, 0x64, 0x9a, 0x0c, 0x79, 0x8a, 0x51, 0x58, 0xc0, 0xa4, 0xf4, 0x66, 0x1b, 0x0b, 0x2d, + 0xe6, 0xc6, 0xed, 0x7f, 0xd4, 0x46, 0xde, 0xbb, 0x57, 0x1b, 0xb9, 0x7d, 0xaf, 0xa6, 0xdd, 0xb9, + 0x57, 0xd3, 0xfe, 0x7e, 0xaf, 0xa6, 0xbd, 0x73, 0xbf, 0x36, 0x72, 0xe7, 0x7e, 0x6d, 0xe4, 0xcf, + 0xf7, 0x6b, 0x23, 0x5f, 0x68, 0x64, 0xc4, 0x24, 0x1a, 0x6f, 0x35, 0xb8, 0x79, 0xb3, 0xb3, 0xd9, + 0xb1, 0x3d, 0x11, 0x1f, 0x66, 0x60, 0xc2, 0x52, 0x6b, 0x82, 0xfd, 0x99, 0xf0, 0xc5, 0xff, 0x04, + 0x00, 0x00, 0xff, 0xff, 0xf2, 0x9e, 0xdf, 0xf1, 0x20, 0x2d, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -2136,6 +2215,7 @@ type QueryClient interface { QueryFundReserveBal(ctx context.Context, in *QueryFundReserveBalRequest, opts ...grpc.CallOption) (*QueryFundReserveBalResponse, error) QueryAllReserveStats(ctx context.Context, in *QueryAllReserveStatsRequest, opts ...grpc.CallOption) (*QueryAllReserveStatsResponse, error) QueryFundModBalByAssetPool(ctx context.Context, in *QueryFundModBalByAssetPoolRequest, opts ...grpc.CallOption) (*QueryFundModBalByAssetPoolResponse, error) + QueryLendInterest(ctx context.Context, in *QueryLendInterestRequest, opts ...grpc.CallOption) (*QueryLendInterestResponse, error) } type queryClient struct { @@ -2371,6 +2451,15 @@ func (c *queryClient) QueryFundModBalByAssetPool(ctx context.Context, in *QueryF return out, nil } +func (c *queryClient) QueryLendInterest(ctx context.Context, in *QueryLendInterestRequest, opts ...grpc.CallOption) (*QueryLendInterestResponse, error) { + out := new(QueryLendInterestResponse) + err := c.cc.Invoke(ctx, "/comdex.lend.v1beta1.Query/QueryLendInterest", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // QueryServer is the server API for Query service. type QueryServer interface { QueryLends(context.Context, *QueryLendsRequest) (*QueryLendsResponse, error) @@ -2398,6 +2487,7 @@ type QueryServer interface { QueryFundReserveBal(context.Context, *QueryFundReserveBalRequest) (*QueryFundReserveBalResponse, error) QueryAllReserveStats(context.Context, *QueryAllReserveStatsRequest) (*QueryAllReserveStatsResponse, error) QueryFundModBalByAssetPool(context.Context, *QueryFundModBalByAssetPoolRequest) (*QueryFundModBalByAssetPoolResponse, error) + QueryLendInterest(context.Context, *QueryLendInterestRequest) (*QueryLendInterestResponse, error) } // UnimplementedQueryServer can be embedded to have forward compatible implementations. @@ -2479,6 +2569,9 @@ func (*UnimplementedQueryServer) QueryAllReserveStats(ctx context.Context, req * func (*UnimplementedQueryServer) QueryFundModBalByAssetPool(ctx context.Context, req *QueryFundModBalByAssetPoolRequest) (*QueryFundModBalByAssetPoolResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method QueryFundModBalByAssetPool not implemented") } +func (*UnimplementedQueryServer) QueryLendInterest(ctx context.Context, req *QueryLendInterestRequest) (*QueryLendInterestResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method QueryLendInterest not implemented") +} func RegisterQueryServer(s grpc1.Server, srv QueryServer) { s.RegisterService(&_Query_serviceDesc, srv) @@ -2934,6 +3027,24 @@ func _Query_QueryFundModBalByAssetPool_Handler(srv interface{}, ctx context.Cont return interceptor(ctx, in, info, handler) } +func _Query_QueryLendInterest_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryLendInterestRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).QueryLendInterest(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/comdex.lend.v1beta1.Query/QueryLendInterest", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).QueryLendInterest(ctx, req.(*QueryLendInterestRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Query_serviceDesc = grpc.ServiceDesc{ ServiceName: "comdex.lend.v1beta1.Query", HandlerType: (*QueryServer)(nil), @@ -3038,6 +3149,10 @@ var _Query_serviceDesc = grpc.ServiceDesc{ MethodName: "QueryFundModBalByAssetPool", Handler: _Query_QueryFundModBalByAssetPool_Handler, }, + { + MethodName: "QueryLendInterest", + Handler: _Query_QueryLendInterest_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "comdex/lend/v1beta1/query.proto", @@ -4836,6 +4951,66 @@ func (m *QueryFundModBalByAssetPoolResponse) MarshalToSizedBuffer(dAtA []byte) ( return len(dAtA) - i, nil } +func (m *QueryLendInterestRequest) 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 *QueryLendInterestRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryLendInterestRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryLendInterestResponse) 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 *QueryLendInterestResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryLendInterestResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.PoolInterest) > 0 { + for iNdEx := len(m.PoolInterest) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PoolInterest[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { offset -= sovQuery(v) base := offset @@ -5534,6 +5709,30 @@ func (m *QueryFundModBalByAssetPoolResponse) Size() (n int) { return n } +func (m *QueryLendInterestRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryLendInterestResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.PoolInterest) > 0 { + for _, e := range m.PoolInterest { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + func sovQuery(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -10046,6 +10245,140 @@ func (m *QueryFundModBalByAssetPoolResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *QueryLendInterestRequest) 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 ErrIntOverflowQuery + } + 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: QueryLendInterestRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryLendInterestRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryLendInterestResponse) 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 ErrIntOverflowQuery + } + 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: QueryLendInterestResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryLendInterestResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PoolInterest", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PoolInterest = append(m.PoolInterest, PoolInterest{}) + if err := m.PoolInterest[len(m.PoolInterest)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipQuery(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/lend/types/query.pb.gw.go b/x/lend/types/query.pb.gw.go index 9d1413261..a4963b5c4 100644 --- a/x/lend/types/query.pb.gw.go +++ b/x/lend/types/query.pb.gw.go @@ -1349,6 +1349,24 @@ func local_request_Query_QueryFundModBalByAssetPool_0(ctx context.Context, marsh } +func request_Query_QueryLendInterest_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryLendInterestRequest + var metadata runtime.ServerMetadata + + msg, err := client.QueryLendInterest(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_QueryLendInterest_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryLendInterestRequest + var metadata runtime.ServerMetadata + + msg, err := server.QueryLendInterest(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterQueryHandlerServer registers the http handlers for service Query to "mux". // UnaryRPC :call QueryServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -1930,6 +1948,29 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv }) + mux.Handle("GET", pattern_Query_QueryLendInterest_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_QueryLendInterest_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_QueryLendInterest_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -2471,6 +2512,26 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) + mux.Handle("GET", pattern_Query_QueryLendInterest_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_QueryLendInterest_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_QueryLendInterest_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -2524,6 +2585,8 @@ var ( pattern_Query_QueryAllReserveStats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"comdex", "lend", "v1beta1", "all_reserve_stats", "asset_id"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_QueryFundModBalByAssetPool_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"comdex", "lend", "v1beta1", "fund_mod_bal_by_asset_pool", "asset_id", "pool_id"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_QueryLendInterest_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"comdex", "lend", "v1beta1", "lend_interest"}, "", runtime.AssumeColonVerbOpt(false))) ) var ( @@ -2576,4 +2639,6 @@ var ( forward_Query_QueryAllReserveStats_0 = runtime.ForwardResponseMessage forward_Query_QueryFundModBalByAssetPool_0 = runtime.ForwardResponseMessage + + forward_Query_QueryLendInterest_0 = runtime.ForwardResponseMessage ) From 1fb5b57f4f7b2444a2f8948ace8c4f37df0fc928 Mon Sep 17 00:00:00 2001 From: Pratik Date: Tue, 14 Feb 2023 13:03:25 +0530 Subject: [PATCH 05/12] adding borrow interest queries --- proto/comdex/lend/v1beta1/lend.proto | 24 + proto/comdex/lend/v1beta1/query.proto | 13 + x/lend/client/cli/query.go | 38 +- x/lend/keeper/grpc_query.go | 9 + x/lend/keeper/iter.go | 39 ++ x/lend/types/lend.pb.go | 781 ++++++++++++++++++++------ x/lend/types/query.pb.go | 618 +++++++++++++++----- x/lend/types/query.pb.gw.go | 65 +++ 8 files changed, 1261 insertions(+), 326 deletions(-) diff --git a/proto/comdex/lend/v1beta1/lend.proto b/proto/comdex/lend/v1beta1/lend.proto index ae3808309..aec247970 100644 --- a/proto/comdex/lend/v1beta1/lend.proto +++ b/proto/comdex/lend/v1beta1/lend.proto @@ -627,3 +627,27 @@ message PoolInterest { (gogoproto.moretags) = "yaml:\"pool_interest_data\"" ]; } + +message PoolInterestDataB { + uint64 asset_id = 1 [ + (gogoproto.customname) = "AssetID", + (gogoproto.moretags) = "yaml:\"asset_id\"" + ]; + string borrow_interest = 2 [ + (gogoproto.nullable) = false, + (gogoproto.moretags) = "yaml:\"borrow_interest\"", + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int" + ]; +} + +message PoolInterestB { + uint64 pool_id = 1 [ + (gogoproto.customname) = "PoolID", + (gogoproto.moretags) = "yaml:\"pool_id\"" + ]; + repeated PoolInterestDataB pool_interest_data = 2 [ + (gogoproto.nullable) = false, + (gogoproto.customname) = "PoolInterestData", + (gogoproto.moretags) = "yaml:\"pool_interest_data\"" + ]; +} diff --git a/proto/comdex/lend/v1beta1/query.proto b/proto/comdex/lend/v1beta1/query.proto index bcb4f4f85..8cb77c16e 100644 --- a/proto/comdex/lend/v1beta1/query.proto +++ b/proto/comdex/lend/v1beta1/query.proto @@ -308,6 +308,15 @@ message QueryLendInterestResponse { ]; } +message QueryBorrowInterestRequest {} + +message QueryBorrowInterestResponse { + repeated PoolInterestB pool_interest = 1 [ + (gogoproto.nullable) = false, + (gogoproto.moretags) = "yaml:\"pool_interest\"" + ]; +} + service Query { rpc QueryLends(QueryLendsRequest) returns (QueryLendsResponse) { option (google.api.http).get = "/comdex/lend/v1beta1/lends"; @@ -405,5 +414,9 @@ service Query { rpc QueryLendInterest(QueryLendInterestRequest) returns (QueryLendInterestResponse) { option (google.api.http).get = "/comdex/lend/v1beta1/lend_interest"; }; + + rpc QueryBorrowInterest(QueryBorrowInterestRequest) returns (QueryBorrowInterestResponse) { + option (google.api.http).get = "/comdex/lend/v1beta1/borrow_interest"; + }; } diff --git a/x/lend/client/cli/query.go b/x/lend/client/cli/query.go index 49a33debe..25f82c916 100644 --- a/x/lend/client/cli/query.go +++ b/x/lend/client/cli/query.go @@ -50,7 +50,8 @@ func GetQueryCmd() *cobra.Command { QueryFundReserveBalance(), QueryAllReserveStats(), QueryFundModBalByAssetPool(), - queryLendIntereest(), + queryLendInterest(), + queryBorrowInterest(), ) return cmd @@ -905,10 +906,10 @@ func QueryFundModBalByAssetPool() *cobra.Command { return cmd } -func queryLendIntereest() *cobra.Command { +func queryLendInterest() *cobra.Command { cmd := &cobra.Command{ Use: "lend_interest", - Short: "Query lends", + Short: "Query all lend interest", RunE: func(cmd *cobra.Command, args []string) error { ctx, err := client.GetClientQueryContext(cmd) if err != nil { @@ -935,3 +936,34 @@ func queryLendIntereest() *cobra.Command { return cmd } + +func queryBorrowInterest() *cobra.Command { + cmd := &cobra.Command{ + Use: "borrow_interest", + Short: "Query all borrow interest", + RunE: func(cmd *cobra.Command, args []string) error { + ctx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + if err != nil { + return err + } + queryClient := types.NewQueryClient(ctx) + res, err := queryClient.QueryBorrowInterest( + context.Background(), + &types.QueryBorrowInterestRequest{}, + ) + if err != nil { + return err + } + + return ctx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + flags.AddPaginationFlagsToCmd(cmd, "lend_interest") + + return cmd +} diff --git a/x/lend/keeper/grpc_query.go b/x/lend/keeper/grpc_query.go index c1da7f42d..1da2ecc2c 100644 --- a/x/lend/keeper/grpc_query.go +++ b/x/lend/keeper/grpc_query.go @@ -608,3 +608,12 @@ func (q QueryServer) QueryLendInterest(c context.Context, req *types.QueryLendIn lendInterest, _ := q.IterateLendsForQuery(ctx) return &types.QueryLendInterestResponse{PoolInterest: lendInterest}, nil } + +func (q QueryServer) QueryBorrowInterest(c context.Context, req *types.QueryBorrowInterestRequest) (*types.QueryBorrowInterestResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "request cannot be empty") + } + ctx := sdk.UnwrapSDKContext(c) + borrowInterest, _ := q.IterateBorrowsForQuery(ctx) + return &types.QueryBorrowInterestResponse{PoolInterest: borrowInterest}, nil +} diff --git a/x/lend/keeper/iter.go b/x/lend/keeper/iter.go index 47658ccef..fe0d709ae 100644 --- a/x/lend/keeper/iter.go +++ b/x/lend/keeper/iter.go @@ -317,3 +317,42 @@ func (k Keeper) IterateLendsForQuery(ctx sdk.Context) ([]types.PoolInterest, err return allPoolInterest, nil } + +func (k Keeper) IterateBorrowsForQuery(ctx sdk.Context) ([]types.PoolInterestB, error) { + var ( + poolInterest types.PoolInterestB + poolInterestData types.PoolInterestDataB + ) + + pools := k.GetPools(ctx) + var allPoolInterest []types.PoolInterestB + for _, pool := range pools { + var v []types.PoolInterestDataB + poolInterest.PoolID = pool.PoolID + for _, data := range pool.AssetData { + lbMap, _ := k.GetAssetStatsByPoolIDAndAssetID(ctx, pool.PoolID, data.AssetID) + totalInt := sdk.ZeroDec() + for _, ID := range lbMap.BorrowIds { + borrow, _ := k.GetBorrow(ctx, ID) + pair, _ := k.GetLendPair(ctx, borrow.PairID) + reserveRates, err := k.GetReserveRate(ctx, pair.AssetOutPoolID, pair.AssetOut) + if err != nil { + return []types.PoolInterestB{}, err + } + currBorrowAPR, _ := k.GetBorrowAPRByAssetID(ctx, pair.AssetOutPoolID, pair.AssetOut, borrow.IsStableBorrow) + interestPerInteraction, _, _, _, err := k.CalculateBorrowInterest(ctx, borrow.AmountOut.Amount.String(), currBorrowAPR, reserveRates, borrow) + if err != nil { + return []types.PoolInterestB{}, err + } + totalInt = totalInt.Add(interestPerInteraction) + } + poolInterestData.BorrowInterest = totalInt.TruncateInt() + poolInterestData.AssetID = data.AssetID + v = append(v, poolInterestData) + } + poolInterest.PoolInterestData = v + allPoolInterest = append(allPoolInterest, poolInterest) + } + + return allPoolInterest, nil +} diff --git a/x/lend/types/lend.pb.go b/x/lend/types/lend.pb.go index d8591c693..d3654a4ad 100644 --- a/x/lend/types/lend.pb.go +++ b/x/lend/types/lend.pb.go @@ -1584,6 +1584,103 @@ func (m *PoolInterest) GetPoolInterestData() []PoolInterestData { return nil } +type PoolInterestDataB struct { + AssetID uint64 `protobuf:"varint,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty" yaml:"asset_id"` + BorrowInterest github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=borrow_interest,json=borrowInterest,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"borrow_interest" yaml:"borrow_interest"` +} + +func (m *PoolInterestDataB) Reset() { *m = PoolInterestDataB{} } +func (m *PoolInterestDataB) String() string { return proto.CompactTextString(m) } +func (*PoolInterestDataB) ProtoMessage() {} +func (*PoolInterestDataB) Descriptor() ([]byte, []int) { + return fileDescriptor_b87bb4bef8334ddd, []int{24} +} +func (m *PoolInterestDataB) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PoolInterestDataB) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PoolInterestDataB.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 *PoolInterestDataB) XXX_Merge(src proto.Message) { + xxx_messageInfo_PoolInterestDataB.Merge(m, src) +} +func (m *PoolInterestDataB) XXX_Size() int { + return m.Size() +} +func (m *PoolInterestDataB) XXX_DiscardUnknown() { + xxx_messageInfo_PoolInterestDataB.DiscardUnknown(m) +} + +var xxx_messageInfo_PoolInterestDataB proto.InternalMessageInfo + +func (m *PoolInterestDataB) GetAssetID() uint64 { + if m != nil { + return m.AssetID + } + return 0 +} + +type PoolInterestB struct { + PoolID uint64 `protobuf:"varint,1,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty" yaml:"pool_id"` + PoolInterestData []PoolInterestDataB `protobuf:"bytes,2,rep,name=pool_interest_data,json=poolInterestData,proto3" json:"pool_interest_data" yaml:"pool_interest_data"` +} + +func (m *PoolInterestB) Reset() { *m = PoolInterestB{} } +func (m *PoolInterestB) String() string { return proto.CompactTextString(m) } +func (*PoolInterestB) ProtoMessage() {} +func (*PoolInterestB) Descriptor() ([]byte, []int) { + return fileDescriptor_b87bb4bef8334ddd, []int{25} +} +func (m *PoolInterestB) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PoolInterestB) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PoolInterestB.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 *PoolInterestB) XXX_Merge(src proto.Message) { + xxx_messageInfo_PoolInterestB.Merge(m, src) +} +func (m *PoolInterestB) XXX_Size() int { + return m.Size() +} +func (m *PoolInterestB) XXX_DiscardUnknown() { + xxx_messageInfo_PoolInterestB.DiscardUnknown(m) +} + +var xxx_messageInfo_PoolInterestB proto.InternalMessageInfo + +func (m *PoolInterestB) GetPoolID() uint64 { + if m != nil { + return m.PoolID + } + return 0 +} + +func (m *PoolInterestB) GetPoolInterestData() []PoolInterestDataB { + if m != nil { + return m.PoolInterestData + } + return nil +} + func init() { proto.RegisterType((*LendAsset)(nil), "comdex.lend.v1beta1.LendAsset") proto.RegisterType((*BorrowAsset)(nil), "comdex.lend.v1beta1.BorrowAsset") @@ -1609,192 +1706,198 @@ func init() { proto.RegisterType((*PoolPairs)(nil), "comdex.lend.v1beta1.PoolPairs") proto.RegisterType((*PoolInterestData)(nil), "comdex.lend.v1beta1.PoolInterestData") proto.RegisterType((*PoolInterest)(nil), "comdex.lend.v1beta1.PoolInterest") + proto.RegisterType((*PoolInterestDataB)(nil), "comdex.lend.v1beta1.PoolInterestDataB") + proto.RegisterType((*PoolInterestB)(nil), "comdex.lend.v1beta1.PoolInterestB") } func init() { proto.RegisterFile("comdex/lend/v1beta1/lend.proto", fileDescriptor_b87bb4bef8334ddd) } var fileDescriptor_b87bb4bef8334ddd = []byte{ - // 2874 bytes of a gzipped FileDescriptorProto + // 2933 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0x4d, 0x6c, 0x24, 0x47, - 0x15, 0xde, 0x1e, 0x7b, 0xed, 0x99, 0x37, 0xb6, 0xd7, 0x2e, 0xdb, 0xec, 0xc4, 0x9b, 0x78, 0x36, - 0xb5, 0x90, 0x38, 0xa0, 0x8c, 0xb5, 0x26, 0x39, 0x10, 0x25, 0x0a, 0x1e, 0xef, 0x6e, 0x98, 0xc4, - 0xbb, 0x49, 0x6a, 0x1d, 0x10, 0x10, 0x68, 0xd5, 0x4c, 0xd7, 0x78, 0x5b, 0xdb, 0xd3, 0xdd, 0xe9, - 0xee, 0xf1, 0xae, 0x81, 0x04, 0x94, 0x48, 0x08, 0x21, 0x10, 0x81, 0x2b, 0x77, 0x24, 0xee, 0x70, - 0x41, 0xe2, 0x84, 0x14, 0x72, 0xe0, 0x10, 0xe0, 0x12, 0xe5, 0x30, 0x20, 0xe7, 0x80, 0xc4, 0x71, - 0x0f, 0x1c, 0x38, 0xa1, 0xaa, 0x7a, 0xfd, 0x37, 0x33, 0xde, 0xdd, 0xf6, 0x90, 0x2c, 0x07, 0x4e, - 0x33, 0xfd, 0xaa, 0xea, 0x7b, 0xaf, 0xdf, 0x7b, 0xf5, 0x7e, 0xaa, 0x1a, 0xd6, 0x3b, 0x5e, 0xcf, - 0x12, 0xb7, 0x37, 0x1d, 0xe1, 0x5a, 0x9b, 0x07, 0x17, 0xdb, 0x22, 0xe2, 0x17, 0xd5, 0x43, 0xc3, - 0x0f, 0xbc, 0xc8, 0x23, 0xcb, 0x7a, 0xbc, 0xa1, 0x48, 0x38, 0xbe, 0xb6, 0xb2, 0xef, 0xed, 0x7b, - 0x6a, 0x7c, 0x53, 0xfe, 0xd3, 0x53, 0xd7, 0xea, 0xfb, 0x9e, 0xb7, 0xef, 0x88, 0x4d, 0xf5, 0xd4, - 0xee, 0x77, 0x37, 0x23, 0xbb, 0x27, 0xc2, 0x88, 0xf7, 0x7c, 0x9c, 0xb0, 0xde, 0xf1, 0xc2, 0x9e, - 0x17, 0x6e, 0xb6, 0x79, 0x28, 0x12, 0x5e, 0x1d, 0xcf, 0x76, 0xf5, 0x38, 0x7d, 0xa7, 0x0c, 0x95, - 0x5d, 0xe1, 0x5a, 0xdb, 0x61, 0x28, 0x22, 0xf2, 0x0c, 0x80, 0x64, 0x6a, 0xbb, 0xfb, 0xa6, 0x6d, - 0xd5, 0x8c, 0xf3, 0xc6, 0xc6, 0x74, 0xf3, 0xdc, 0xd1, 0xa0, 0x5e, 0x6a, 0x5d, 0xba, 0x33, 0xa8, - 0x2f, 0x1d, 0xf2, 0x9e, 0xf3, 0x0c, 0x4d, 0x67, 0x50, 0x56, 0xc1, 0x87, 0x96, 0x45, 0xbe, 0x04, - 0x65, 0x2e, 0x41, 0xe4, 0xca, 0x92, 0x5a, 0xb9, 0x7e, 0x34, 0xa8, 0xcf, 0x2a, 0x60, 0xb5, 0xfc, - 0x8c, 0x5e, 0x1e, 0x4f, 0xa2, 0x6c, 0x56, 0xfd, 0x6d, 0x59, 0xe4, 0x69, 0x98, 0xf5, 0x3d, 0xcf, - 0x91, 0x2b, 0xa7, 0xd4, 0xca, 0x87, 0x8f, 0x06, 0xf5, 0x99, 0x57, 0x3c, 0xcf, 0x51, 0x0b, 0x17, - 0xf4, 0x42, 0x9c, 0x42, 0xd9, 0x8c, 0xfc, 0xd7, 0xb2, 0xc8, 0x63, 0x70, 0xda, 0xbb, 0xe5, 0x8a, - 0xa0, 0x36, 0x7d, 0xde, 0xd8, 0xa8, 0x34, 0x17, 0xef, 0x0c, 0xea, 0x73, 0x7a, 0xaa, 0x22, 0x53, - 0xa6, 0x87, 0xc9, 0x77, 0xa1, 0xc2, 0x7b, 0x5e, 0xdf, 0x8d, 0x4c, 0xdb, 0xad, 0x9d, 0x3e, 0x6f, - 0x6c, 0x54, 0xb7, 0x1e, 0x6a, 0x68, 0xbd, 0x34, 0xa4, 0x5e, 0x62, 0x1d, 0x37, 0x76, 0x3c, 0xdb, - 0x6d, 0xee, 0xbc, 0x3f, 0xa8, 0x9f, 0xba, 0x33, 0xa8, 0x2f, 0xa2, 0xb8, 0xf1, 0x4a, 0xfa, 0xef, - 0x41, 0xfd, 0xf1, 0x7d, 0x3b, 0xba, 0xd1, 0x6f, 0x37, 0x3a, 0x5e, 0x6f, 0x13, 0x15, 0xab, 0x7f, - 0x9e, 0x0c, 0xad, 0x9b, 0x9b, 0xd1, 0xa1, 0x2f, 0x42, 0x05, 0xc2, 0xca, 0x7a, 0x59, 0xcb, 0x25, - 0xdf, 0x86, 0xb9, 0x58, 0x61, 0xd2, 0x36, 0xb5, 0x19, 0xc5, 0x7f, 0xad, 0xa1, 0x0d, 0xd7, 0x88, - 0x0d, 0xd7, 0xd8, 0x8b, 0x0d, 0xd7, 0xac, 0xa3, 0x00, 0xcb, 0x79, 0x75, 0xcb, 0xd5, 0xf4, 0xdd, - 0xbf, 0xd5, 0x0d, 0x56, 0x45, 0x92, 0x5c, 0x42, 0xbe, 0x07, 0xcb, 0xfc, 0x80, 0xdb, 0x0e, 0x6f, - 0x3b, 0xc2, 0x8c, 0x3c, 0xb3, 0xed, 0x05, 0x81, 0x77, 0xab, 0x36, 0xab, 0x54, 0xb2, 0x2b, 0xa1, - 0x3e, 0x1a, 0xd4, 0x1f, 0xbb, 0x0f, 0xb9, 0x5b, 0x6e, 0x74, 0x67, 0x50, 0x5f, 0xc3, 0xb7, 0x1e, - 0x85, 0xa4, 0x6c, 0x29, 0xa1, 0xee, 0x79, 0x4d, 0x45, 0x23, 0x17, 0x61, 0x86, 0xfb, 0xbe, 0x34, - 0x5c, 0x59, 0x19, 0x6e, 0xed, 0x68, 0x50, 0x3f, 0xbd, 0xed, 0xfb, 0xca, 0x6e, 0xf3, 0x88, 0xa5, - 0x26, 0x50, 0x76, 0x9a, 0xfb, 0x7e, 0xcb, 0x22, 0x37, 0x60, 0x6e, 0xdf, 0xf1, 0xda, 0xdc, 0x31, - 0x6d, 0xd7, 0x12, 0xb7, 0x6b, 0x15, 0x25, 0xe9, 0xe5, 0x02, 0x92, 0x5e, 0x12, 0x9d, 0x54, 0x3d, - 0x59, 0x2c, 0xca, 0xaa, 0xfa, 0xb1, 0x25, 0x9f, 0xc8, 0x6d, 0x58, 0x75, 0x78, 0x28, 0x6d, 0x17, - 0x89, 0x80, 0x77, 0x22, 0xdb, 0x73, 0xb5, 0x0d, 0xe0, 0x9e, 0x36, 0xd8, 0x40, 0x1b, 0x3c, 0x8c, - 0x36, 0x18, 0x07, 0xa3, 0x8d, 0xb1, 0x2c, 0xc7, 0x5a, 0xe9, 0x90, 0x32, 0xca, 0x36, 0x40, 0x47, - 0xb9, 0xab, 0xcb, 0x7b, 0xa2, 0x56, 0x55, 0x6f, 0x48, 0x8f, 0x06, 0xf5, 0xca, 0x8e, 0x74, 0xea, - 0x6b, 0xbc, 0x27, 0xd2, 0xed, 0x94, 0x4e, 0xa4, 0xac, 0xa2, 0x1e, 0xe4, 0x38, 0xb9, 0x09, 0xf3, - 0x91, 0x17, 0x71, 0xc7, 0x0c, 0xc4, 0x2d, 0x1e, 0x58, 0x61, 0x6d, 0x4e, 0xa1, 0x5c, 0x29, 0x6c, - 0xd1, 0x15, 0xcd, 0x26, 0x07, 0x46, 0xd9, 0x9c, 0x7a, 0x66, 0xf8, 0xf8, 0xaf, 0x2a, 0x54, 0xb5, - 0x45, 0x75, 0x1c, 0xf8, 0x32, 0xcc, 0x69, 0xa3, 0xe7, 0x22, 0xc1, 0x23, 0x49, 0x24, 0x40, 0xdd, - 0x67, 0xe7, 0x50, 0x56, 0x4d, 0x1e, 0x5b, 0x96, 0xd4, 0x40, 0x26, 0x92, 0xe8, 0x78, 0xa0, 0x34, - 0xb0, 0x8b, 0x01, 0xe3, 0xde, 0x01, 0xe5, 0x32, 0x2c, 0xda, 0xa1, 0x19, 0x46, 0xca, 0x0d, 0xd1, - 0xad, 0x65, 0x78, 0x28, 0x37, 0xcf, 0xdd, 0x19, 0xd4, 0xcf, 0xea, 0xb5, 0xc3, 0x33, 0x28, 0x5b, - 0xb0, 0xc3, 0xeb, 0x8a, 0x82, 0x2e, 0x2a, 0x83, 0x0b, 0xb7, 0x03, 0x29, 0xc6, 0x74, 0x26, 0xb8, - 0x70, 0x3b, 0xc8, 0x05, 0x17, 0x3d, 0x45, 0x06, 0x17, 0x39, 0x62, 0x3d, 0xd8, 0xa0, 0xf1, 0x16, - 0x00, 0x42, 0x78, 0xfd, 0x08, 0x43, 0xc6, 0x5d, 0xb8, 0x5f, 0x42, 0xee, 0x4b, 0x39, 0xee, 0x5e, - 0x3f, 0x2a, 0xc4, 0x1e, 0xdf, 0xf7, 0xe5, 0x7e, 0x44, 0x7e, 0x69, 0xc0, 0x4a, 0x3b, 0xb0, 0xad, - 0x7d, 0x61, 0x99, 0x3a, 0x5e, 0xeb, 0x31, 0x15, 0x56, 0xee, 0x2a, 0xca, 0x35, 0x14, 0xe5, 0x1c, - 0x7a, 0xc8, 0x18, 0x90, 0x42, 0x42, 0x11, 0x44, 0x50, 0x7e, 0xb9, 0xad, 0xd6, 0x13, 0x0b, 0x16, - 0x52, 0xcf, 0x53, 0x1b, 0xba, 0x7c, 0xcf, 0x0d, 0xfd, 0x28, 0xca, 0xb5, 0x3a, 0xec, 0xb9, 0xe9, - 0x4e, 0x9e, 0x4f, 0x88, 0x6a, 0x0f, 0x1f, 0x02, 0xc9, 0x79, 0x96, 0x19, 0xf0, 0x48, 0x60, 0xb4, - 0x7a, 0xa9, 0x70, 0xb4, 0x7a, 0x48, 0xf3, 0x1d, 0x45, 0xa4, 0x6c, 0x31, 0xcc, 0xb8, 0x2b, 0xe3, - 0x91, 0x20, 0x3f, 0x30, 0x60, 0x45, 0x45, 0x1b, 0x11, 0x46, 0x26, 0xef, 0x74, 0xfa, 0xbd, 0xbe, - 0xc3, 0x23, 0x61, 0xa9, 0xc0, 0x55, 0x69, 0x5e, 0x2d, 0xcc, 0x1d, 0xad, 0x31, 0x0e, 0x93, 0xb2, - 0xe5, 0x98, 0xbc, 0x9d, 0x52, 0x47, 0xa2, 0x74, 0xf5, 0x13, 0x8b, 0xd2, 0xdf, 0x87, 0x95, 0x40, - 0x84, 0x22, 0x38, 0x10, 0x66, 0x8e, 0xe3, 0xdc, 0x64, 0xef, 0x3a, 0x0e, 0x93, 0x32, 0x82, 0xe4, - 0x17, 0xee, 0x27, 0x4d, 0xcc, 0x7f, 0xba, 0x69, 0x62, 0xe1, 0x24, 0x69, 0xe2, 0x39, 0x98, 0xb7, - 0x43, 0xd3, 0xb1, 0xdf, 0xe8, 0xdb, 0x96, 0x72, 0x91, 0x33, 0x2a, 0x42, 0xd6, 0xd2, 0xc0, 0x9f, - 0x1b, 0xa6, 0x6c, 0xce, 0x0e, 0x77, 0xd3, 0xc7, 0xdf, 0x96, 0x60, 0x5a, 0xf2, 0xca, 0x96, 0x60, - 0x46, 0x81, 0x12, 0xec, 0x32, 0x54, 0x7b, 0x9e, 0xd5, 0x77, 0x84, 0x7e, 0x85, 0x92, 0x7a, 0x85, - 0xcf, 0x1e, 0x0d, 0xea, 0x70, 0x55, 0x91, 0xf1, 0x1d, 0x88, 0x5e, 0x9e, 0x99, 0x4a, 0x19, 0xf4, - 0x92, 0x19, 0x43, 0x8a, 0x98, 0x3a, 0x89, 0x22, 0x1c, 0x00, 0x1d, 0x64, 0x2c, 0x1e, 0xf1, 0xda, - 0xf4, 0xf9, 0xa9, 0x8d, 0xea, 0xd6, 0x13, 0x8d, 0x31, 0x95, 0x74, 0x43, 0x85, 0x92, 0x4b, 0x3c, - 0xe2, 0x12, 0xfb, 0x2a, 0xf7, 0x7d, 0xdb, 0xdd, 0xd7, 0xdc, 0x92, 0x91, 0x4c, 0x2c, 0x4d, 0x30, - 0x29, 0xab, 0xf0, 0x78, 0x9c, 0xfe, 0xd9, 0x80, 0xb5, 0xd7, 0x42, 0x11, 0xa8, 0x15, 0x32, 0xa5, - 0xe9, 0xdd, 0x8b, 0x68, 0x69, 0x65, 0x6a, 0xdc, 0xbd, 0x32, 0xfd, 0x02, 0xcc, 0x4a, 0xd1, 0xd2, - 0x14, 0x49, 0x52, 0x5d, 0xe3, 0x00, 0x65, 0x33, 0xf2, 0x5f, 0xcb, 0x92, 0x93, 0xf3, 0x55, 0x32, - 0xb9, 0x8b, 0x61, 0x2e, 0x42, 0x05, 0x83, 0x8c, 0xca, 0x7b, 0x53, 0x1b, 0xd3, 0xcd, 0x95, 0x34, - 0x3f, 0x25, 0x43, 0x94, 0x95, 0xf5, 0xff, 0x96, 0x45, 0xdf, 0x2e, 0xc1, 0xca, 0x38, 0xdd, 0xe4, - 0x2a, 0x7b, 0xa3, 0x58, 0x65, 0xff, 0x12, 0x10, 0x4d, 0x8d, 0x02, 0xee, 0x86, 0x76, 0x64, 0xca, - 0x9d, 0x8a, 0xef, 0xfa, 0x48, 0x1a, 0x16, 0x47, 0xe7, 0x50, 0xb6, 0xa8, 0x88, 0x7b, 0x9a, 0xb6, - 0x77, 0xe8, 0x0b, 0xd2, 0x06, 0x08, 0xfb, 0xbe, 0xef, 0x1c, 0x9a, 0x1d, 0xee, 0xa3, 0x97, 0xec, - 0x14, 0x8e, 0x0f, 0x68, 0xd8, 0x14, 0x89, 0xb2, 0x8a, 0x7e, 0xd8, 0xe1, 0x3e, 0xfd, 0x47, 0x09, - 0xe6, 0x2f, 0xdf, 0x8e, 0x84, 0x6b, 0x09, 0xcb, 0x94, 0x45, 0x02, 0x59, 0x80, 0x52, 0xfc, 0xde, - 0xac, 0x64, 0x5b, 0xa4, 0x91, 0x68, 0xc3, 0xc5, 0x17, 0x59, 0x1e, 0x51, 0x81, 0x9b, 0xa8, 0xc0, - 0x95, 0x96, 0xd0, 0x54, 0x99, 0xca, 0xb5, 0xe1, 0x32, 0x96, 0x48, 0x86, 0x28, 0xd3, 0xb0, 0x32, - 0xfd, 0x3e, 0xab, 0x36, 0xb5, 0x0a, 0x24, 0xa6, 0xb4, 0xa7, 0x2a, 0x5c, 0x86, 0x37, 0x75, 0x3a, - 0x4c, 0x59, 0xd5, 0x0e, 0x55, 0x6c, 0x51, 0x5b, 0xf9, 0xeb, 0xb0, 0x94, 0xa0, 0x9a, 0xb1, 0xc7, - 0x9c, 0x56, 0x8c, 0x1b, 0x47, 0x83, 0xfa, 0xc2, 0x36, 0xb2, 0x49, 0x36, 0x77, 0x6d, 0x48, 0x14, - 0x33, 0xf1, 0xa6, 0x05, 0x9e, 0x9d, 0x6b, 0x91, 0x17, 0x81, 0xf4, 0x6c, 0xd7, 0xec, 0x87, 0x96, - 0x79, 0xc0, 0x9d, 0xbe, 0x30, 0x1d, 0xd1, 0xd5, 0xf5, 0x49, 0xce, 0x9c, 0xa3, 0x73, 0x28, 0x3b, - 0xd3, 0xb3, 0xdd, 0xd7, 0x42, 0xeb, 0xab, 0x92, 0xb4, 0x2b, 0x29, 0xbf, 0x37, 0x80, 0x28, 0x51, - 0xf6, 0x3c, 0xa9, 0xe7, 0xd8, 0xd9, 0x4e, 0x18, 0x88, 0x26, 0xec, 0x3e, 0xb1, 0x40, 0x9c, 0x52, - 0x1b, 0xe5, 0xbe, 0x0a, 0x44, 0xfa, 0x93, 0x0a, 0x10, 0x29, 0x96, 0x0e, 0x01, 0xcd, 0x07, 0x27, - 0x7f, 0x03, 0xca, 0x18, 0x2b, 0x42, 0x7c, 0x81, 0x8c, 0x43, 0xc6, 0x23, 0x94, 0xcd, 0xea, 0x30, - 0x12, 0x92, 0xa7, 0x00, 0x92, 0xfd, 0x1f, 0x62, 0x6c, 0x58, 0x4d, 0x37, 0x46, 0x3a, 0x46, 0x59, - 0x25, 0x0e, 0x0e, 0x21, 0x71, 0x61, 0x41, 0xb7, 0x10, 0x9a, 0x24, 0xb4, 0x4b, 0x55, 0x9a, 0x2f, - 0x14, 0x6e, 0x48, 0x56, 0xb3, 0x0d, 0x49, 0x8c, 0x46, 0x99, 0x6e, 0x77, 0x9a, 0xf8, 0x4c, 0xde, - 0x36, 0x60, 0x55, 0x4f, 0xc9, 0xd5, 0x4c, 0xc2, 0x52, 0xee, 0x56, 0xd1, 0x85, 0x66, 0x21, 0xbe, - 0x0f, 0x67, 0xf9, 0x0e, 0x81, 0x52, 0xb6, 0xac, 0xe8, 0xd9, 0xce, 0x41, 0x58, 0x32, 0xe2, 0xe8, - 0xe9, 0x52, 0x77, 0xd8, 0x53, 0xef, 0x14, 0x66, 0xbc, 0x94, 0x65, 0x2c, 0x91, 0x28, 0xab, 0xa8, - 0x07, 0x99, 0x38, 0xc8, 0xcf, 0x0d, 0x58, 0xd3, 0x43, 0x63, 0x4b, 0xbe, 0xb2, 0x62, 0x7a, 0xbd, - 0x30, 0xd3, 0x47, 0xb3, 0x4c, 0xc7, 0x17, 0x7e, 0x35, 0x35, 0xd8, 0x1a, 0x53, 0xfd, 0xbd, 0x8e, - 0x2e, 0xc5, 0xfd, 0x00, 0x2b, 0xde, 0xed, 0xc2, 0x71, 0x36, 0xeb, 0x80, 0xdc, 0x0f, 0xd0, 0x01, - 0xb7, 0xfd, 0x40, 0x6a, 0x15, 0x9d, 0x4c, 0xe2, 0xc3, 0x64, 0x71, 0x3c, 0x45, 0x4a, 0xdc, 0x55, - 0xf2, 0x38, 0x80, 0xa5, 0x7c, 0xad, 0x2d, 0x59, 0xe9, 0x22, 0xf6, 0xc5, 0xc2, 0xac, 0x6a, 0xe3, - 0x8a, 0x77, 0xc5, 0xf1, 0x4c, 0xb6, 0x76, 0x97, 0x7c, 0x6f, 0xc1, 0x52, 0x3f, 0xb2, 0x1d, 0x3b, - 0xe4, 0xaa, 0x00, 0x0c, 0xe4, 0x0f, 0x96, 0xb2, 0x27, 0xe6, 0x3b, 0x02, 0x48, 0xd9, 0x62, 0x86, - 0xc6, 0x14, 0xe9, 0xbd, 0x2a, 0x2c, 0xaa, 0x68, 0x21, 0x3b, 0x88, 0xf0, 0x15, 0x1e, 0xf0, 0x5e, - 0x38, 0x49, 0xe6, 0x36, 0xa1, 0xd2, 0x37, 0x3d, 0x3f, 0xb2, 0x7b, 0xdc, 0xc1, 0xba, 0xae, 0x59, - 0xf8, 0x05, 0x30, 0xc9, 0x25, 0x40, 0x94, 0x95, 0xfb, 0x2f, 0xeb, 0xbf, 0xe4, 0x55, 0x98, 0x96, - 0xed, 0x23, 0xe6, 0xf1, 0xe7, 0x0a, 0x63, 0x57, 0xd1, 0xfe, 0x3c, 0x14, 0x94, 0x29, 0x28, 0xf2, - 0x35, 0x98, 0x09, 0x1d, 0xcf, 0x17, 0x17, 0xf1, 0x44, 0xf0, 0xf9, 0xc2, 0xa0, 0x78, 0x64, 0xa5, - 0x51, 0x28, 0x43, 0xb8, 0x04, 0x78, 0x0b, 0x83, 0xde, 0x64, 0xc0, 0x5b, 0x31, 0xf0, 0x16, 0x79, - 0x15, 0x56, 0x84, 0xab, 0xbc, 0x2a, 0x7f, 0xce, 0x31, 0xa3, 0x12, 0x7e, 0x3d, 0x6d, 0x67, 0xc6, - 0xcd, 0xa2, 0x8c, 0x68, 0x72, 0xee, 0xbc, 0x43, 0x40, 0x35, 0x9e, 0x25, 0xd5, 0xab, 0x83, 0xd6, - 0xa5, 0xc2, 0x02, 0x93, 0xbc, 0xcf, 0x2b, 0x2d, 0x03, 0x7a, 0xbb, 0xd4, 0xf5, 0x4d, 0x98, 0xc7, - 0x31, 0x54, 0x79, 0xb9, 0xf0, 0xf9, 0x94, 0x66, 0xb4, 0x92, 0x63, 0x14, 0x6b, 0x7e, 0x4e, 0x3f, - 0x5f, 0xd7, 0xfa, 0x1f, 0x62, 0xb6, 0x85, 0x41, 0xe9, 0xbf, 0xc2, 0x6c, 0x2b, 0xcf, 0x6c, 0x8b, - 0x5c, 0x83, 0x29, 0x27, 0x3a, 0xc0, 0xb8, 0xf4, 0x6c, 0x61, 0x16, 0x80, 0x71, 0x2f, 0x3a, 0xa0, - 0x4c, 0x02, 0x91, 0x77, 0x0c, 0x58, 0x8d, 0x3b, 0x30, 0xd5, 0x14, 0xde, 0x08, 0x44, 0x78, 0xc3, - 0x73, 0x2c, 0x8c, 0x47, 0xd7, 0x0a, 0xb3, 0x88, 0xdb, 0xcd, 0x71, 0xa0, 0x94, 0xad, 0x64, 0xe8, - 0x7b, 0x31, 0x99, 0xbc, 0x09, 0xcb, 0xd9, 0xf9, 0xbe, 0x70, 0xb9, 0x13, 0x1d, 0x62, 0x68, 0xda, - 0x2d, 0x2c, 0xc2, 0xda, 0xa8, 0x08, 0x08, 0x49, 0x19, 0xc9, 0x50, 0x5f, 0xd1, 0x44, 0x19, 0x17, - 0xb3, 0x73, 0xdb, 0x9e, 0xdb, 0x0f, 0x55, 0x83, 0x3d, 0x41, 0x5c, 0x1c, 0x01, 0xa4, 0x6c, 0x31, - 0x43, 0x6b, 0x4a, 0x92, 0xac, 0x5b, 0xe2, 0xa3, 0x80, 0x2e, 0xef, 0x44, 0x5e, 0x80, 0x7d, 0xf6, - 0x0b, 0x85, 0xb9, 0xae, 0xe6, 0x0f, 0x16, 0x34, 0x1a, 0x65, 0xf3, 0x48, 0xb8, 0xa2, 0x9e, 0xc9, - 0xf3, 0x00, 0x1d, 0x33, 0x09, 0xba, 0x67, 0x54, 0xd0, 0x7d, 0xf4, 0x68, 0x50, 0x2f, 0xef, 0xa4, - 0x51, 0x37, 0xee, 0x64, 0xcd, 0x34, 0xee, 0x96, 0x3b, 0x7a, 0xd8, 0xa2, 0xbf, 0x29, 0xc1, 0x59, - 0xa6, 0x21, 0x9b, 0xfd, 0xc3, 0x36, 0xef, 0xdc, 0x4c, 0x9a, 0xb2, 0x49, 0xe2, 0x79, 0x46, 0x0f, - 0x78, 0x96, 0x57, 0x9a, 0xac, 0x7e, 0xcb, 0xa3, 0xa5, 0x7a, 0xc0, 0x43, 0x3a, 0x17, 0x16, 0xda, - 0x5a, 0xfc, 0x98, 0xdf, 0xd4, 0x64, 0xfc, 0xf2, 0x68, 0x94, 0xcd, 0x23, 0x41, 0xf3, 0xa3, 0xff, - 0x9c, 0x86, 0xf9, 0xed, 0xbe, 0x3a, 0x5b, 0xc1, 0xe4, 0xb7, 0x91, 0xdc, 0x4d, 0x68, 0x55, 0x2d, - 0x1d, 0x7b, 0x25, 0xf1, 0x2d, 0xa8, 0x71, 0xbd, 0xd4, 0xb4, 0xfa, 0x81, 0x76, 0xa8, 0x50, 0x74, - 0x3c, 0xd7, 0x0a, 0xb1, 0x18, 0xbf, 0x70, 0x67, 0x50, 0xaf, 0xe3, 0xda, 0x63, 0x66, 0x52, 0xf6, - 0x19, 0x1c, 0xba, 0x84, 0x23, 0xd7, 0xf5, 0x80, 0xcc, 0x1e, 0xed, 0x7e, 0xb7, 0x2b, 0x02, 0x54, - 0xc1, 0x89, 0xb3, 0x87, 0x46, 0xa1, 0x0c, 0xe1, 0x64, 0x0a, 0xed, 0xf4, 0x43, 0x1f, 0xb3, 0xdd, - 0x89, 0x53, 0xa8, 0xc4, 0xa0, 0x4c, 0x41, 0x49, 0xc8, 0x30, 0x12, 0x3e, 0xe6, 0xb9, 0xe7, 0x0a, - 0x1b, 0xab, 0x1a, 0x07, 0x58, 0x21, 0x21, 0xe5, 0x0f, 0xb9, 0x06, 0xcb, 0x7e, 0x60, 0x77, 0x84, - 0xd9, 0xed, 0xbb, 0x78, 0x2c, 0x76, 0xe8, 0x0b, 0xec, 0x1a, 0xd7, 0xd3, 0x58, 0x32, 0x66, 0x12, - 0x65, 0x4b, 0x8a, 0x7a, 0x05, 0x89, 0xea, 0x18, 0xa0, 0x01, 0x65, 0xab, 0x1f, 0x75, 0x6e, 0x48, - 0xcb, 0xce, 0x0e, 0x37, 0xe0, 0xf1, 0x08, 0x65, 0xb3, 0xea, 0x6f, 0xcb, 0x92, 0x39, 0xb6, 0x6d, - 0x5b, 0xa3, 0x96, 0xd5, 0x37, 0x56, 0x99, 0x1c, 0x3b, 0x6e, 0x16, 0x65, 0xa4, 0x6d, 0x5b, 0x43, - 0x16, 0xa5, 0x1f, 0x19, 0x70, 0xb6, 0x89, 0x7d, 0x52, 0x5c, 0x5a, 0x47, 0x01, 0xef, 0xdc, 0x14, - 0x01, 0x79, 0x66, 0xec, 0xdd, 0xc9, 0xd9, 0xfb, 0xba, 0x35, 0x91, 0x4d, 0x4f, 0xbc, 0xaf, 0x74, - 0x8b, 0x88, 0xe8, 0xe8, 0x39, 0x27, 0x4e, 0x15, 0x63, 0x41, 0x29, 0x5b, 0x46, 0xba, 0x6a, 0x4f, - 0x63, 0xea, 0x9f, 0x0c, 0x58, 0x91, 0x9d, 0x49, 0x7c, 0x59, 0x94, 0xbc, 0xd9, 0x53, 0x63, 0x6e, - 0x87, 0x57, 0xef, 0x79, 0x8d, 0xf3, 0x16, 0x2c, 0xc7, 0x40, 0xd9, 0xbe, 0xa6, 0xf4, 0x49, 0x1c, - 0x65, 0x13, 0xe4, 0x94, 0xe9, 0x65, 0xe8, 0x7b, 0x06, 0xcc, 0xeb, 0xc3, 0xc8, 0x26, 0x77, 0xb8, - 0xdb, 0x11, 0x27, 0x6d, 0xd1, 0xdf, 0x82, 0x15, 0x3c, 0xc0, 0x6c, 0x6b, 0x20, 0x59, 0x8d, 0x45, - 0x32, 0x42, 0x4c, 0x6d, 0x54, 0xb7, 0x1e, 0x1f, 0x7b, 0xd6, 0x98, 0x63, 0x7c, 0x5d, 0x4e, 0x6f, - 0x5e, 0xc8, 0xdf, 0x90, 0x8c, 0x83, 0xa4, 0x8c, 0xf4, 0x46, 0x16, 0xd2, 0x3f, 0x1a, 0x40, 0x46, - 0xf1, 0x26, 0xc9, 0x09, 0x07, 0x30, 0x8b, 0x7c, 0x95, 0x39, 0xee, 0x7a, 0xb1, 0xb3, 0x8d, 0x62, - 0x2f, 0xc4, 0x65, 0xb7, 0x5a, 0x57, 0xe8, 0x2e, 0x27, 0x66, 0x46, 0xdf, 0x84, 0x99, 0xab, 0x9e, - 0xd5, 0xe4, 0x0e, 0x09, 0x61, 0xb9, 0xdb, 0x77, 0x2d, 0x33, 0xaf, 0x85, 0x9a, 0xa1, 0x54, 0x5a, - 0x1f, 0xab, 0xd2, 0x2b, 0x7d, 0xd7, 0xd2, 0xab, 0x9b, 0x14, 0x65, 0xc2, 0x00, 0x32, 0x06, 0x89, - 0xb2, 0xa5, 0xae, 0x9e, 0x9f, 0xaa, 0x8d, 0xfe, 0xc8, 0x00, 0x88, 0x33, 0x2c, 0x77, 0xc8, 0x77, - 0x60, 0x45, 0xad, 0x8c, 0xf7, 0x48, 0x5e, 0x88, 0x0b, 0xc7, 0x0a, 0x91, 0x42, 0x0c, 0xdb, 0x74, - 0x1c, 0x1c, 0x65, 0xa4, 0x9b, 0x5b, 0xa4, 0x88, 0x3f, 0x9c, 0x02, 0x48, 0x5f, 0x68, 0x12, 0x5b, - 0x66, 0x9c, 0xba, 0x54, 0xc0, 0xa9, 0x73, 0xd7, 0x9c, 0x53, 0x9f, 0xfe, 0xb7, 0x11, 0x96, 0xf0, - 0x3d, 0x75, 0xe6, 0x6b, 0xf7, 0x84, 0xca, 0x63, 0x85, 0xbe, 0x8d, 0xc8, 0xae, 0xc6, 0x6f, 0x23, - 0x90, 0xa4, 0xee, 0x57, 0x9e, 0x80, 0x19, 0xa9, 0x73, 0x11, 0x60, 0x3a, 0xcb, 0x54, 0x00, 0x9a, - 0x4e, 0x19, 0x4e, 0xa0, 0x7f, 0x2d, 0xc1, 0x42, 0xde, 0xa8, 0x93, 0x18, 0x23, 0xa7, 0xd5, 0xd2, - 0x03, 0xd6, 0xea, 0xd4, 0x27, 0xa6, 0xd5, 0xe9, 0x7b, 0x69, 0xf5, 0xc3, 0x19, 0x38, 0xb3, 0xed, - 0x38, 0xa8, 0xd4, 0x89, 0xe3, 0xd5, 0xaf, 0x0c, 0xc8, 0x5c, 0x6e, 0x9b, 0xdd, 0xc0, 0xeb, 0x25, - 0xdb, 0x2c, 0xf2, 0xd4, 0xd1, 0x9a, 0x08, 0x42, 0x4c, 0x2d, 0xdf, 0x2c, 0x5c, 0xbb, 0x3c, 0x31, - 0x7c, 0x7d, 0x7e, 0x1c, 0x07, 0xca, 0x1e, 0x49, 0xee, 0xca, 0xaf, 0x04, 0x5e, 0x0f, 0xdf, 0x6f, - 0xcf, 0xdb, 0xd5, 0xe3, 0xe4, 0xd7, 0x06, 0x5c, 0x38, 0x0e, 0xa6, 0xeb, 0x05, 0x26, 0x16, 0x8a, - 0x98, 0xd5, 0x5f, 0x2f, 0x2c, 0xe9, 0xe7, 0xef, 0x2e, 0x69, 0x86, 0x05, 0x65, 0xeb, 0xe3, 0x44, - 0xbd, 0xe2, 0x05, 0x58, 0x2c, 0x93, 0x9f, 0x19, 0xb0, 0x96, 0xb8, 0x9c, 0xc6, 0x71, 0xec, 0x37, - 0x92, 0x06, 0x71, 0x7a, 0xb2, 0xf3, 0xc7, 0xe3, 0x91, 0x65, 0xbd, 0x8c, 0x2e, 0x2b, 0x05, 0xdb, - 0xb5, 0xdf, 0x88, 0x7b, 0xc5, 0x9f, 0x1a, 0xf0, 0xd0, 0xd0, 0xba, 0x40, 0xf8, 0xfc, 0xb0, 0x27, - 0xdc, 0x28, 0xc4, 0xad, 0xcc, 0x0a, 0x0b, 0x74, 0x7e, 0xac, 0x40, 0x29, 0xf0, 0x90, 0x3c, 0x2c, - 0x19, 0x20, 0xbf, 0x30, 0xe0, 0x9c, 0x3e, 0x47, 0xcd, 0x28, 0x3c, 0xe3, 0x6f, 0xfa, 0x40, 0x7a, - 0xaf, 0xb0, 0x44, 0x34, 0x7b, 0x44, 0x3b, 0x16, 0x9a, 0xb2, 0xb3, 0x6a, 0x74, 0x3b, 0x36, 0x61, - 0xe2, 0x62, 0xf4, 0x0f, 0x06, 0xd4, 0x32, 0xd7, 0x27, 0xd7, 0x6d, 0x77, 0xdf, 0x11, 0xff, 0x23, - 0x97, 0x28, 0xf7, 0xfd, 0x95, 0x8d, 0xcc, 0x7f, 0x15, 0x29, 0x96, 0x9c, 0x18, 0xfe, 0xff, 0x12, - 0xba, 0xd0, 0x25, 0xf4, 0x31, 0xb7, 0x71, 0xa7, 0x4f, 0x74, 0x1b, 0xf7, 0x3b, 0x03, 0x16, 0xb3, - 0x5d, 0xc0, 0xa4, 0xc7, 0x0d, 0x37, 0x61, 0x5e, 0x5f, 0x3d, 0xc5, 0x0d, 0x4c, 0x69, 0xb2, 0xcf, - 0xd7, 0x72, 0x60, 0x94, 0xa9, 0x6f, 0x2a, 0x93, 0x8e, 0xe5, 0x2f, 0x06, 0xcc, 0x65, 0x85, 0x3f, - 0xa9, 0x23, 0xfd, 0xd8, 0x00, 0x92, 0xeb, 0x90, 0xb4, 0x1d, 0x75, 0x81, 0xff, 0xb9, 0xb1, 0x76, - 0x1c, 0xd6, 0x59, 0xf3, 0x69, 0xf9, 0x86, 0x47, 0x83, 0xfa, 0x88, 0x36, 0x53, 0x83, 0x8c, 0xb2, - 0xa0, 0x6c, 0xd1, 0x1f, 0x06, 0xfa, 0xca, 0xfb, 0x47, 0xeb, 0xc6, 0x07, 0x47, 0xeb, 0xc6, 0xdf, - 0x8f, 0xd6, 0x8d, 0x77, 0x3f, 0x5e, 0x3f, 0xf5, 0xc1, 0xc7, 0xeb, 0xa7, 0x3e, 0xfc, 0x78, 0xfd, - 0xd4, 0x37, 0x1a, 0x39, 0xe5, 0x49, 0x99, 0x9e, 0xf4, 0xba, 0x5d, 0xbb, 0x63, 0x73, 0x07, 0x9f, - 0x37, 0xf1, 0xe3, 0x62, 0xa5, 0xc8, 0xf6, 0x8c, 0x4a, 0xf9, 0x5f, 0xfc, 0x4f, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x97, 0xc7, 0xbd, 0x5a, 0x78, 0x2c, 0x00, 0x00, + 0xf5, 0xdf, 0x1e, 0x7b, 0xed, 0x99, 0x37, 0xb6, 0xd7, 0x2e, 0xdb, 0xd9, 0x89, 0x37, 0xf1, 0x6c, + 0x6a, 0xff, 0xff, 0xc4, 0xf9, 0xff, 0x95, 0xb1, 0xd6, 0x24, 0x07, 0xa2, 0x44, 0xc1, 0xe3, 0xdd, + 0x4d, 0x26, 0xf1, 0x6e, 0x92, 0x5a, 0x07, 0x04, 0x04, 0x5a, 0x35, 0xd3, 0x65, 0x6f, 0x6b, 0x7b, + 0xba, 0x7b, 0xbb, 0x7b, 0xbc, 0x6b, 0x20, 0x01, 0x25, 0x12, 0x42, 0x7c, 0x88, 0xc0, 0x95, 0x3b, + 0x12, 0x77, 0xb8, 0x20, 0x71, 0x40, 0x48, 0x21, 0x07, 0x0e, 0xe1, 0xe3, 0x10, 0xe5, 0x30, 0x20, + 0xe7, 0x80, 0xc4, 0x71, 0x0f, 0x1c, 0x38, 0xa1, 0xaa, 0x7a, 0xfd, 0x35, 0x33, 0xf6, 0x6e, 0x7b, + 0xf2, 0xc1, 0x81, 0xd3, 0x4c, 0xbd, 0xaa, 0xfa, 0xbd, 0x57, 0xef, 0xbd, 0x7a, 0xf5, 0x5e, 0x55, + 0xc3, 0x6a, 0xc7, 0xeb, 0x5a, 0xe2, 0xce, 0xba, 0x23, 0x5c, 0x6b, 0x7d, 0xff, 0x62, 0x5b, 0x44, + 0xfc, 0xa2, 0x6a, 0x34, 0xfc, 0xc0, 0x8b, 0x3c, 0xb2, 0xa8, 0xfb, 0x1b, 0x8a, 0x84, 0xfd, 0x2b, + 0x4b, 0x7b, 0xde, 0x9e, 0xa7, 0xfa, 0xd7, 0xe5, 0x3f, 0x3d, 0x74, 0xa5, 0xbe, 0xe7, 0x79, 0x7b, + 0x8e, 0x58, 0x57, 0xad, 0x76, 0x6f, 0x77, 0x3d, 0xb2, 0xbb, 0x22, 0x8c, 0x78, 0xd7, 0xc7, 0x01, + 0xab, 0x1d, 0x2f, 0xec, 0x7a, 0xe1, 0x7a, 0x9b, 0x87, 0x22, 0xe1, 0xd5, 0xf1, 0x6c, 0x57, 0xf7, + 0xd3, 0xb7, 0xcb, 0x50, 0xd9, 0x16, 0xae, 0xb5, 0x19, 0x86, 0x22, 0x22, 0x4f, 0x03, 0x48, 0xa6, + 0xb6, 0xbb, 0x67, 0xda, 0x56, 0xcd, 0x38, 0x6f, 0xac, 0x4d, 0x36, 0xcf, 0x1d, 0xf6, 0xeb, 0xa5, + 0xd6, 0xa5, 0xbb, 0xfd, 0xfa, 0xc2, 0x01, 0xef, 0x3a, 0x4f, 0xd3, 0x74, 0x04, 0x65, 0x15, 0x6c, + 0xb4, 0x2c, 0xf2, 0x79, 0x28, 0x73, 0x09, 0x22, 0x67, 0x96, 0xd4, 0xcc, 0xd5, 0xc3, 0x7e, 0x7d, + 0x5a, 0x01, 0xab, 0xe9, 0x67, 0xf4, 0xf4, 0x78, 0x10, 0x65, 0xd3, 0xea, 0x6f, 0xcb, 0x22, 0x4f, + 0xc1, 0xb4, 0xef, 0x79, 0x8e, 0x9c, 0x39, 0xa1, 0x66, 0x3e, 0x74, 0xd8, 0xaf, 0x4f, 0xbd, 0xe2, + 0x79, 0x8e, 0x9a, 0x38, 0xa7, 0x27, 0xe2, 0x10, 0xca, 0xa6, 0xe4, 0xbf, 0x96, 0x45, 0x1e, 0x85, + 0xd3, 0xde, 0x6d, 0x57, 0x04, 0xb5, 0xc9, 0xf3, 0xc6, 0x5a, 0xa5, 0x39, 0x7f, 0xb7, 0x5f, 0x9f, + 0xd1, 0x43, 0x15, 0x99, 0x32, 0xdd, 0x4d, 0xbe, 0x09, 0x15, 0xde, 0xf5, 0x7a, 0x6e, 0x64, 0xda, + 0x6e, 0xed, 0xf4, 0x79, 0x63, 0xad, 0xba, 0xf1, 0x60, 0x43, 0xeb, 0xa5, 0x21, 0xf5, 0x12, 0xeb, + 0xb8, 0xb1, 0xe5, 0xd9, 0x6e, 0x73, 0xeb, 0xbd, 0x7e, 0xfd, 0xd4, 0xdd, 0x7e, 0x7d, 0x1e, 0xc5, + 0x8d, 0x67, 0xd2, 0x7f, 0xf5, 0xeb, 0x8f, 0xed, 0xd9, 0xd1, 0x8d, 0x5e, 0xbb, 0xd1, 0xf1, 0xba, + 0xeb, 0xa8, 0x58, 0xfd, 0xf3, 0x44, 0x68, 0xdd, 0x5c, 0x8f, 0x0e, 0x7c, 0x11, 0x2a, 0x10, 0x56, + 0xd6, 0xd3, 0x5a, 0x2e, 0xf9, 0x3a, 0xcc, 0xc4, 0x0a, 0x93, 0xb6, 0xa9, 0x4d, 0x29, 0xfe, 0x2b, + 0x0d, 0x6d, 0xb8, 0x46, 0x6c, 0xb8, 0xc6, 0x4e, 0x6c, 0xb8, 0x66, 0x1d, 0x05, 0x58, 0xcc, 0xab, + 0x5b, 0xce, 0xa6, 0xef, 0xfc, 0xb5, 0x6e, 0xb0, 0x2a, 0x92, 0xe4, 0x14, 0xf2, 0x2d, 0x58, 0xe4, + 0xfb, 0xdc, 0x76, 0x78, 0xdb, 0x11, 0x66, 0xe4, 0x99, 0x6d, 0x2f, 0x08, 0xbc, 0xdb, 0xb5, 0x69, + 0xa5, 0x92, 0x6d, 0x09, 0xf5, 0x61, 0xbf, 0xfe, 0xe8, 0x7d, 0xc8, 0xdd, 0x72, 0xa3, 0xbb, 0xfd, + 0xfa, 0x0a, 0xae, 0x7a, 0x18, 0x92, 0xb2, 0x85, 0x84, 0xba, 0xe3, 0x35, 0x15, 0x8d, 0x5c, 0x84, + 0x29, 0xee, 0xfb, 0xd2, 0x70, 0x65, 0x65, 0xb8, 0x95, 0xc3, 0x7e, 0xfd, 0xf4, 0xa6, 0xef, 0x2b, + 0xbb, 0xcd, 0x22, 0x96, 0x1a, 0x40, 0xd9, 0x69, 0xee, 0xfb, 0x2d, 0x8b, 0xdc, 0x80, 0x99, 0x3d, + 0xc7, 0x6b, 0x73, 0xc7, 0xb4, 0x5d, 0x4b, 0xdc, 0xa9, 0x55, 0x94, 0xa4, 0x97, 0x0b, 0x48, 0x7a, + 0x49, 0x74, 0x52, 0xf5, 0x64, 0xb1, 0x28, 0xab, 0xea, 0x66, 0x4b, 0xb6, 0xc8, 0x1d, 0x58, 0x76, + 0x78, 0x28, 0x6d, 0x17, 0x89, 0x80, 0x77, 0x22, 0xdb, 0x73, 0xb5, 0x0d, 0xe0, 0x9e, 0x36, 0x58, + 0x43, 0x1b, 0x3c, 0x84, 0x36, 0x18, 0x05, 0xa3, 0x8d, 0xb1, 0x28, 0xfb, 0x5a, 0x69, 0x97, 0x32, + 0xca, 0x26, 0x40, 0x47, 0xb9, 0xab, 0xcb, 0xbb, 0xa2, 0x56, 0x55, 0x2b, 0xa4, 0x87, 0xfd, 0x7a, + 0x65, 0x4b, 0x3a, 0xf5, 0x35, 0xde, 0x15, 0xe9, 0x76, 0x4a, 0x07, 0x52, 0x56, 0x51, 0x0d, 0xd9, + 0x4f, 0x6e, 0xc2, 0x6c, 0xe4, 0x45, 0xdc, 0x31, 0x03, 0x71, 0x9b, 0x07, 0x56, 0x58, 0x9b, 0x51, + 0x28, 0x57, 0x0a, 0x5b, 0x74, 0x49, 0xb3, 0xc9, 0x81, 0x51, 0x36, 0xa3, 0xda, 0x0c, 0x9b, 0xff, + 0xac, 0x42, 0x55, 0x5b, 0x54, 0xc7, 0x81, 0x2f, 0xc0, 0x8c, 0x36, 0x7a, 0x2e, 0x12, 0x3c, 0x9c, + 0x44, 0x02, 0xd4, 0x7d, 0x76, 0x0c, 0x65, 0xd5, 0xa4, 0xd9, 0xb2, 0xa4, 0x06, 0x32, 0x91, 0x44, + 0xc7, 0x03, 0xa5, 0x81, 0x6d, 0x0c, 0x18, 0xf7, 0x0e, 0x28, 0x97, 0x61, 0xde, 0x0e, 0xcd, 0x30, + 0x52, 0x6e, 0x88, 0x6e, 0x2d, 0xc3, 0x43, 0xb9, 0x79, 0xee, 0x6e, 0xbf, 0x7e, 0x56, 0xcf, 0x1d, + 0x1c, 0x41, 0xd9, 0x9c, 0x1d, 0x5e, 0x57, 0x14, 0x74, 0x51, 0x19, 0x5c, 0xb8, 0x1d, 0x48, 0x31, + 0x26, 0x33, 0xc1, 0x85, 0xdb, 0x41, 0x2e, 0xb8, 0xe8, 0x21, 0x32, 0xb8, 0xc8, 0x1e, 0xeb, 0xb3, + 0x0d, 0x1a, 0x6f, 0x02, 0x20, 0x84, 0xd7, 0x8b, 0x30, 0x64, 0x1c, 0xc3, 0xfd, 0x12, 0x72, 0x5f, + 0xc8, 0x71, 0xf7, 0x7a, 0x51, 0x21, 0xf6, 0xb8, 0xde, 0x97, 0x7b, 0x11, 0xf9, 0x99, 0x01, 0x4b, + 0xed, 0xc0, 0xb6, 0xf6, 0x84, 0x65, 0xea, 0x78, 0xad, 0xfb, 0x54, 0x58, 0x39, 0x56, 0x94, 0x6b, + 0x28, 0xca, 0x39, 0xf4, 0x90, 0x11, 0x20, 0x85, 0x84, 0x22, 0x88, 0xa0, 0xfc, 0x72, 0x53, 0xcd, + 0x27, 0x16, 0xcc, 0xa5, 0x9e, 0xa7, 0x36, 0x74, 0xf9, 0x9e, 0x1b, 0xfa, 0x11, 0x94, 0x6b, 0x79, + 0xd0, 0x73, 0xd3, 0x9d, 0x3c, 0x9b, 0x10, 0xd5, 0x1e, 0x3e, 0x00, 0x92, 0xf3, 0x2c, 0x33, 0xe0, + 0x91, 0xc0, 0x68, 0xf5, 0x52, 0xe1, 0x68, 0xf5, 0xa0, 0xe6, 0x3b, 0x8c, 0x48, 0xd9, 0x7c, 0x98, + 0x71, 0x57, 0xc6, 0x23, 0x41, 0xbe, 0x63, 0xc0, 0x92, 0x8a, 0x36, 0x22, 0x8c, 0x4c, 0xde, 0xe9, + 0xf4, 0xba, 0x3d, 0x87, 0x47, 0xc2, 0x52, 0x81, 0xab, 0xd2, 0xbc, 0x5a, 0x98, 0x3b, 0x5a, 0x63, + 0x14, 0x26, 0x65, 0x8b, 0x31, 0x79, 0x33, 0xa5, 0x0e, 0x45, 0xe9, 0xea, 0x27, 0x16, 0xa5, 0xbf, + 0x0d, 0x4b, 0x81, 0x08, 0x45, 0xb0, 0x2f, 0xcc, 0x1c, 0xc7, 0x99, 0xf1, 0xd6, 0x3a, 0x0a, 0x93, + 0x32, 0x82, 0xe4, 0xe7, 0xef, 0xe7, 0x98, 0x98, 0xfd, 0x74, 0x8f, 0x89, 0xb9, 0x93, 0x1c, 0x13, + 0xcf, 0xc2, 0xac, 0x1d, 0x9a, 0x8e, 0x7d, 0xab, 0x67, 0x5b, 0xca, 0x45, 0xce, 0xa8, 0x08, 0x59, + 0x4b, 0x03, 0x7f, 0xae, 0x9b, 0xb2, 0x19, 0x3b, 0xdc, 0x4e, 0x9b, 0xbf, 0x2a, 0xc1, 0xa4, 0xe4, + 0x95, 0x4d, 0xc1, 0x8c, 0x02, 0x29, 0xd8, 0x65, 0xa8, 0x76, 0x3d, 0xab, 0xe7, 0x08, 0xbd, 0x84, + 0x92, 0x5a, 0xc2, 0xff, 0x1c, 0xf6, 0xeb, 0x70, 0x55, 0x91, 0x71, 0x0d, 0x44, 0x4f, 0xcf, 0x0c, + 0xa5, 0x0c, 0xba, 0xc9, 0x88, 0x01, 0x45, 0x4c, 0x9c, 0x44, 0x11, 0x0e, 0x80, 0x0e, 0x32, 0x16, + 0x8f, 0x78, 0x6d, 0xf2, 0xfc, 0xc4, 0x5a, 0x75, 0xe3, 0xf1, 0xc6, 0x88, 0x4c, 0xba, 0xa1, 0x42, + 0xc9, 0x25, 0x1e, 0x71, 0x89, 0x7d, 0x95, 0xfb, 0xbe, 0xed, 0xee, 0x69, 0x6e, 0x49, 0x4f, 0x26, + 0x96, 0x26, 0x98, 0x94, 0x55, 0x78, 0xdc, 0x4f, 0xff, 0x68, 0xc0, 0xca, 0x6b, 0xa1, 0x08, 0xd4, + 0x0c, 0x79, 0xa4, 0xe9, 0xdd, 0x8b, 0x68, 0x69, 0x66, 0x6a, 0x1c, 0x9f, 0x99, 0xfe, 0x3f, 0x4c, + 0x4b, 0xd1, 0xd2, 0x23, 0x92, 0xa4, 0xba, 0xc6, 0x0e, 0xca, 0xa6, 0xe4, 0xbf, 0x96, 0x25, 0x07, + 0xe7, 0xb3, 0x64, 0x72, 0x8c, 0x61, 0x2e, 0x42, 0x05, 0x83, 0x8c, 0x3a, 0xf7, 0x26, 0xd6, 0x26, + 0x9b, 0x4b, 0xe9, 0xf9, 0x94, 0x74, 0x51, 0x56, 0xd6, 0xff, 0x5b, 0x16, 0x7d, 0xab, 0x04, 0x4b, + 0xa3, 0x74, 0x93, 0xcb, 0xec, 0x8d, 0x62, 0x99, 0xfd, 0x4b, 0x40, 0x34, 0x35, 0x0a, 0xb8, 0x1b, + 0xda, 0x91, 0x29, 0x77, 0x2a, 0xae, 0xf5, 0xe1, 0x34, 0x2c, 0x0e, 0x8f, 0xa1, 0x6c, 0x5e, 0x11, + 0x77, 0x34, 0x6d, 0xe7, 0xc0, 0x17, 0xa4, 0x0d, 0x10, 0xf6, 0x7c, 0xdf, 0x39, 0x30, 0x3b, 0xdc, + 0x47, 0x2f, 0xd9, 0x2a, 0x1c, 0x1f, 0xd0, 0xb0, 0x29, 0x12, 0x65, 0x15, 0xdd, 0xd8, 0xe2, 0x3e, + 0xfd, 0x7b, 0x09, 0x66, 0x2f, 0xdf, 0x89, 0x84, 0x6b, 0x09, 0xcb, 0x94, 0x49, 0x02, 0x99, 0x83, + 0x52, 0xbc, 0x6e, 0x56, 0xb2, 0x2d, 0xd2, 0x48, 0xb4, 0xe1, 0xe2, 0x42, 0x16, 0x87, 0x54, 0xe0, + 0x26, 0x2a, 0x70, 0xa5, 0x25, 0x34, 0x55, 0x1e, 0xe5, 0xda, 0x70, 0x19, 0x4b, 0x24, 0x5d, 0x94, + 0x69, 0x58, 0x79, 0xfc, 0x3e, 0xa3, 0x36, 0xb5, 0x0a, 0x24, 0xa6, 0xb4, 0xa7, 0x4a, 0x5c, 0x06, + 0x37, 0x75, 0xda, 0x4d, 0x59, 0xd5, 0x0e, 0x55, 0x6c, 0x51, 0x5b, 0xf9, 0xcb, 0xb0, 0x90, 0xa0, + 0x9a, 0xb1, 0xc7, 0x9c, 0x56, 0x8c, 0x1b, 0x87, 0xfd, 0xfa, 0xdc, 0x26, 0xb2, 0x49, 0x36, 0x77, + 0x6d, 0x40, 0x14, 0x33, 0xf1, 0xa6, 0x39, 0x9e, 0x1d, 0x6b, 0x91, 0x17, 0x81, 0x74, 0x6d, 0xd7, + 0xec, 0x85, 0x96, 0xb9, 0xcf, 0x9d, 0x9e, 0x30, 0x1d, 0xb1, 0xab, 0xf3, 0x93, 0x9c, 0x39, 0x87, + 0xc7, 0x50, 0x76, 0xa6, 0x6b, 0xbb, 0xaf, 0x85, 0xd6, 0x17, 0x25, 0x69, 0x5b, 0x52, 0x7e, 0x63, + 0x00, 0x51, 0xa2, 0xec, 0x78, 0x52, 0xcf, 0xb1, 0xb3, 0x9d, 0x30, 0x10, 0x8d, 0x59, 0x7d, 0x62, + 0x82, 0x38, 0xa1, 0x36, 0xca, 0x7d, 0x25, 0x88, 0xf4, 0x87, 0x15, 0x20, 0x52, 0x2c, 0x1d, 0x02, + 0x9a, 0x9f, 0x9d, 0xfc, 0x0d, 0x28, 0x63, 0xac, 0x08, 0x71, 0x01, 0x19, 0x87, 0x8c, 0x7b, 0x28, + 0x9b, 0xd6, 0x61, 0x24, 0x24, 0x4f, 0x02, 0x24, 0xfb, 0x3f, 0xc4, 0xd8, 0xb0, 0x9c, 0x6e, 0x8c, + 0xb4, 0x8f, 0xb2, 0x4a, 0x1c, 0x1c, 0x42, 0xe2, 0xc2, 0x9c, 0x2e, 0x21, 0x34, 0x49, 0x68, 0x97, + 0xaa, 0x34, 0x9f, 0x2f, 0x5c, 0x90, 0x2c, 0x67, 0x0b, 0x92, 0x18, 0x8d, 0x32, 0x5d, 0xee, 0x34, + 0xb1, 0x4d, 0xde, 0x32, 0x60, 0x59, 0x0f, 0xc9, 0xe5, 0x4c, 0xc2, 0x52, 0xee, 0x56, 0xd1, 0x89, + 0x66, 0x21, 0xbe, 0x0f, 0x65, 0xf9, 0x0e, 0x80, 0x52, 0xb6, 0xa8, 0xe8, 0xd9, 0xca, 0x41, 0x58, + 0x32, 0xe2, 0xe8, 0xe1, 0x52, 0x77, 0x58, 0x53, 0x6f, 0x15, 0x66, 0xbc, 0x90, 0x65, 0x2c, 0x91, + 0x28, 0xab, 0xa8, 0x86, 0x3c, 0x38, 0xc8, 0x4f, 0x0c, 0x58, 0xd1, 0x5d, 0x23, 0x53, 0xbe, 0xb2, + 0x62, 0x7a, 0xbd, 0x30, 0xd3, 0x47, 0xb2, 0x4c, 0x47, 0x27, 0x7e, 0x35, 0xd5, 0xd9, 0x1a, 0x91, + 0xfd, 0xbd, 0x8e, 0x2e, 0xc5, 0xfd, 0x00, 0x33, 0xde, 0xcd, 0xc2, 0x71, 0x36, 0xeb, 0x80, 0xdc, + 0x0f, 0xd0, 0x01, 0x37, 0xfd, 0x40, 0x6a, 0x15, 0x9d, 0x4c, 0xe2, 0xc3, 0x78, 0x71, 0x3c, 0x45, + 0x4a, 0xdc, 0x55, 0xf2, 0xd8, 0x87, 0x85, 0x7c, 0xae, 0x2d, 0x59, 0xe9, 0x24, 0xf6, 0xc5, 0xc2, + 0xac, 0x6a, 0xa3, 0x92, 0x77, 0xc5, 0xf1, 0x4c, 0x36, 0x77, 0x97, 0x7c, 0x6f, 0xc3, 0x42, 0x2f, + 0xb2, 0x1d, 0x3b, 0xe4, 0x2a, 0x01, 0x0c, 0xe4, 0x0f, 0xa6, 0xb2, 0x27, 0xe6, 0x3b, 0x04, 0x48, + 0xd9, 0x7c, 0x86, 0xc6, 0x14, 0xe9, 0xdd, 0x2a, 0xcc, 0xab, 0x68, 0x21, 0x2b, 0x88, 0xf0, 0x15, + 0x1e, 0xf0, 0x6e, 0x38, 0xce, 0xc9, 0x6d, 0x42, 0xa5, 0x67, 0x7a, 0x7e, 0x64, 0x77, 0xb9, 0x83, + 0x79, 0x5d, 0xb3, 0xf0, 0x02, 0xf0, 0x90, 0x4b, 0x80, 0x28, 0x2b, 0xf7, 0x5e, 0xd6, 0x7f, 0xc9, + 0xab, 0x30, 0x29, 0xcb, 0x47, 0x3c, 0xc7, 0x9f, 0x2d, 0x8c, 0x5d, 0x45, 0xfb, 0xf3, 0x50, 0x50, + 0xa6, 0xa0, 0xc8, 0x97, 0x60, 0x2a, 0x74, 0x3c, 0x5f, 0x5c, 0xc4, 0x1b, 0xc1, 0xe7, 0x0a, 0x83, + 0xe2, 0x95, 0x95, 0x46, 0xa1, 0x0c, 0xe1, 0x12, 0xe0, 0x0d, 0x0c, 0x7a, 0xe3, 0x01, 0x6f, 0xc4, + 0xc0, 0x1b, 0xe4, 0x55, 0x58, 0x12, 0xae, 0xf2, 0xaa, 0xfc, 0x3d, 0xc7, 0x94, 0x3a, 0xf0, 0xeb, + 0x69, 0x39, 0x33, 0x6a, 0x14, 0x65, 0x44, 0x93, 0x73, 0xf7, 0x1d, 0x02, 0xaa, 0xf1, 0x28, 0xa9, + 0x5e, 0x1d, 0xb4, 0x2e, 0x15, 0x16, 0x98, 0xe4, 0x7d, 0x5e, 0x69, 0x19, 0xd0, 0xdb, 0xa5, 0xae, + 0x6f, 0xc2, 0x2c, 0xf6, 0xa1, 0xca, 0xcb, 0x85, 0xef, 0xa7, 0x34, 0xa3, 0xa5, 0x1c, 0xa3, 0x58, + 0xf3, 0x33, 0xba, 0x7d, 0x5d, 0xeb, 0x7f, 0x80, 0xd9, 0x06, 0x06, 0xa5, 0x8f, 0x85, 0xd9, 0x46, + 0x9e, 0xd9, 0x06, 0xb9, 0x06, 0x13, 0x4e, 0xb4, 0x8f, 0x71, 0xe9, 0x99, 0xc2, 0x2c, 0x00, 0xe3, + 0x5e, 0xb4, 0x4f, 0x99, 0x04, 0x22, 0x6f, 0x1b, 0xb0, 0x1c, 0x57, 0x60, 0xaa, 0x28, 0xbc, 0x11, + 0x88, 0xf0, 0x86, 0xe7, 0x58, 0x18, 0x8f, 0xae, 0x15, 0x66, 0x11, 0x97, 0x9b, 0xa3, 0x40, 0x29, + 0x5b, 0xca, 0xd0, 0x77, 0x62, 0x32, 0x79, 0x03, 0x16, 0xb3, 0xe3, 0x7d, 0xe1, 0x72, 0x27, 0x3a, + 0xc0, 0xd0, 0xb4, 0x5d, 0x58, 0x84, 0x95, 0x61, 0x11, 0x10, 0x92, 0x32, 0x92, 0xa1, 0xbe, 0xa2, + 0x89, 0x32, 0x2e, 0x66, 0xc7, 0xb6, 0x3d, 0xb7, 0x17, 0xaa, 0x02, 0x7b, 0x8c, 0xb8, 0x38, 0x04, + 0x48, 0xd9, 0x7c, 0x86, 0xd6, 0x94, 0x24, 0x99, 0xb7, 0xc4, 0x57, 0x01, 0xbb, 0xbc, 0x13, 0x79, + 0x01, 0xd6, 0xd9, 0xcf, 0x17, 0xe6, 0xba, 0x9c, 0xbf, 0x58, 0xd0, 0x68, 0x94, 0xcd, 0x22, 0xe1, + 0x8a, 0x6a, 0x93, 0xe7, 0x00, 0x3a, 0x66, 0x12, 0x74, 0xcf, 0xa8, 0xa0, 0xfb, 0xc8, 0x61, 0xbf, + 0x5e, 0xde, 0x4a, 0xa3, 0x6e, 0x5c, 0xc9, 0x9a, 0x69, 0xdc, 0x2d, 0x77, 0x74, 0xb7, 0x45, 0x7f, + 0x59, 0x82, 0xb3, 0x4c, 0x43, 0x36, 0x7b, 0x07, 0x6d, 0xde, 0xb9, 0x99, 0x14, 0x65, 0xe3, 0xc4, + 0xf3, 0x8c, 0x1e, 0xf0, 0x2e, 0xaf, 0x34, 0x5e, 0xfe, 0x96, 0x47, 0x4b, 0xf5, 0x80, 0x97, 0x74, + 0x2e, 0xcc, 0xb5, 0xb5, 0xf8, 0x31, 0xbf, 0x89, 0xf1, 0xf8, 0xe5, 0xd1, 0x28, 0x9b, 0x45, 0x82, + 0xe6, 0x47, 0xff, 0x31, 0x09, 0xb3, 0x9b, 0x3d, 0x75, 0xb7, 0x82, 0x87, 0xdf, 0x5a, 0xf2, 0x36, + 0xa1, 0x55, 0xb5, 0x70, 0xe4, 0x93, 0xc4, 0xd7, 0xa0, 0xc6, 0xf5, 0x54, 0xd3, 0xea, 0x05, 0xda, + 0xa1, 0x42, 0xd1, 0xf1, 0x5c, 0x2b, 0xc4, 0x64, 0xfc, 0xc2, 0xdd, 0x7e, 0xbd, 0x8e, 0x73, 0x8f, + 0x18, 0x49, 0xd9, 0x03, 0xd8, 0x75, 0x09, 0x7b, 0xae, 0xeb, 0x0e, 0x79, 0x7a, 0xb4, 0x7b, 0xbb, + 0xbb, 0x22, 0x40, 0x15, 0x9c, 0xf8, 0xf4, 0xd0, 0x28, 0x94, 0x21, 0x9c, 0x3c, 0x42, 0x3b, 0xbd, + 0xd0, 0xc7, 0xd3, 0xee, 0xc4, 0x47, 0xa8, 0xc4, 0xa0, 0x4c, 0x41, 0x49, 0xc8, 0x30, 0x12, 0x3e, + 0x9e, 0x73, 0xcf, 0x16, 0x36, 0x56, 0x35, 0x0e, 0xb0, 0x42, 0x42, 0xca, 0x1f, 0x72, 0x0d, 0x16, + 0xfd, 0xc0, 0xee, 0x08, 0x73, 0xb7, 0xe7, 0xe2, 0xb5, 0xd8, 0x81, 0x2f, 0xb0, 0x6a, 0x5c, 0x4d, + 0x63, 0xc9, 0x88, 0x41, 0x94, 0x2d, 0x28, 0xea, 0x15, 0x24, 0xaa, 0x6b, 0x80, 0x06, 0x94, 0xad, + 0x5e, 0xd4, 0xb9, 0x21, 0x2d, 0x3b, 0x3d, 0x58, 0x80, 0xc7, 0x3d, 0x94, 0x4d, 0xab, 0xbf, 0x2d, + 0x4b, 0x9e, 0xb1, 0x6d, 0xdb, 0x1a, 0xb6, 0xac, 0x7e, 0xb1, 0xca, 0x9c, 0xb1, 0xa3, 0x46, 0x51, + 0x46, 0xda, 0xb6, 0x35, 0x60, 0x51, 0xfa, 0xa1, 0x01, 0x67, 0x9b, 0x58, 0x27, 0xc5, 0xa9, 0x75, + 0x14, 0xf0, 0xce, 0x4d, 0x11, 0x90, 0xa7, 0x47, 0xbe, 0x9d, 0x9c, 0xbd, 0xaf, 0x57, 0x13, 0x59, + 0xf4, 0xc4, 0xfb, 0x4a, 0x97, 0x88, 0x88, 0x8e, 0x9e, 0x73, 0xe2, 0xa3, 0x62, 0x24, 0x28, 0x65, + 0x8b, 0x48, 0x57, 0xe5, 0x69, 0x4c, 0xfd, 0x83, 0x01, 0x4b, 0xb2, 0x32, 0x89, 0x1f, 0x8b, 0x92, + 0x95, 0x3d, 0x39, 0xe2, 0x75, 0x78, 0xf9, 0x9e, 0xcf, 0x38, 0x6f, 0xc2, 0x62, 0x0c, 0x94, 0xad, + 0x6b, 0x4a, 0x9f, 0xc4, 0x55, 0x36, 0x41, 0x4e, 0x99, 0x5a, 0x86, 0xbe, 0x6b, 0xc0, 0xac, 0xbe, + 0x8c, 0x6c, 0x72, 0x87, 0xbb, 0x1d, 0x71, 0xd2, 0x12, 0xfd, 0x4d, 0x58, 0xc2, 0x0b, 0xcc, 0xb6, + 0x06, 0x92, 0xd9, 0x58, 0x24, 0x23, 0xc4, 0xc4, 0x5a, 0x75, 0xe3, 0xb1, 0x91, 0x77, 0x8d, 0x39, + 0xc6, 0xd7, 0xe5, 0xf0, 0xe6, 0x85, 0xfc, 0x0b, 0xc9, 0x28, 0x48, 0xca, 0x48, 0x77, 0x68, 0x22, + 0xfd, 0xbd, 0x01, 0x64, 0x18, 0x6f, 0x9c, 0x33, 0x61, 0x1f, 0xa6, 0x91, 0xaf, 0x32, 0xc7, 0xb1, + 0x0f, 0x3b, 0x9b, 0x28, 0xf6, 0x5c, 0x9c, 0x76, 0xab, 0x79, 0x85, 0xde, 0x72, 0x62, 0x66, 0xf4, + 0x0d, 0x98, 0xba, 0xea, 0x59, 0x4d, 0xee, 0x90, 0x10, 0x16, 0x77, 0x7b, 0xae, 0x65, 0xe6, 0xb5, + 0x50, 0x33, 0x94, 0x4a, 0xeb, 0x23, 0x55, 0x7a, 0xa5, 0xe7, 0x5a, 0x7a, 0x76, 0x93, 0xa2, 0x4c, + 0x18, 0x40, 0x46, 0x20, 0x51, 0xb6, 0xb0, 0xab, 0xc7, 0xa7, 0x6a, 0xa3, 0xdf, 0x33, 0x00, 0xe2, + 0x13, 0x96, 0x3b, 0xe4, 0x1b, 0xb0, 0xa4, 0x66, 0xc6, 0x7b, 0x24, 0x2f, 0xc4, 0x85, 0x23, 0x85, + 0x48, 0x21, 0x06, 0x6d, 0x3a, 0x0a, 0x8e, 0x32, 0xb2, 0x9b, 0x9b, 0xa4, 0x88, 0xdf, 0x9d, 0x00, + 0x48, 0x17, 0x34, 0x8e, 0x2d, 0x33, 0x4e, 0x5d, 0x2a, 0xe0, 0xd4, 0xb9, 0x67, 0xce, 0x89, 0x4f, + 0xff, 0xdb, 0x08, 0x4b, 0xf8, 0x9e, 0xba, 0xf3, 0xb5, 0xbb, 0x42, 0x9d, 0x63, 0x85, 0xbe, 0x8d, + 0xc8, 0xce, 0xc6, 0x6f, 0x23, 0x90, 0xa4, 0xde, 0x57, 0x1e, 0x87, 0x29, 0xa9, 0x73, 0x11, 0xe0, + 0x71, 0x96, 0xc9, 0x00, 0x34, 0x9d, 0x32, 0x1c, 0x40, 0xff, 0x5c, 0x82, 0xb9, 0xbc, 0x51, 0xc7, + 0x31, 0x46, 0x4e, 0xab, 0xa5, 0xcf, 0x58, 0xab, 0x13, 0x9f, 0x98, 0x56, 0x27, 0xef, 0xa5, 0xd5, + 0x0f, 0xa6, 0xe0, 0xcc, 0xa6, 0xe3, 0xa0, 0x52, 0xc7, 0x8e, 0x57, 0x3f, 0x37, 0x20, 0xf3, 0xb8, + 0x6d, 0xee, 0x06, 0x5e, 0x37, 0xd9, 0x66, 0x91, 0xa7, 0xae, 0xd6, 0x44, 0x10, 0xe2, 0xd1, 0xf2, + 0xd5, 0xc2, 0xb9, 0xcb, 0xe3, 0x83, 0xcf, 0xe7, 0x47, 0x71, 0xa0, 0xec, 0xe1, 0xe4, 0xad, 0xfc, + 0x4a, 0xe0, 0x75, 0x71, 0x7d, 0x3b, 0xde, 0xb6, 0xee, 0x27, 0xbf, 0x30, 0xe0, 0xc2, 0x51, 0x30, + 0xbb, 0x5e, 0x60, 0x62, 0xa2, 0x88, 0xa7, 0xfa, 0xeb, 0x85, 0x25, 0xfd, 0xbf, 0xe3, 0x25, 0xcd, + 0xb0, 0xa0, 0x6c, 0x75, 0x94, 0xa8, 0x57, 0xbc, 0x00, 0x93, 0x65, 0xf2, 0x63, 0x03, 0x56, 0x12, + 0x97, 0xd3, 0x38, 0x8e, 0x7d, 0x2b, 0x29, 0x10, 0x27, 0xc7, 0xbb, 0x7f, 0x3c, 0x1a, 0x59, 0xe6, + 0xcb, 0xe8, 0xb2, 0x52, 0xb0, 0x6d, 0xfb, 0x56, 0x5c, 0x2b, 0xfe, 0xc8, 0x80, 0x07, 0x07, 0xe6, + 0x05, 0xc2, 0xe7, 0x07, 0x5d, 0xe1, 0x46, 0x21, 0x6e, 0x65, 0x56, 0x58, 0xa0, 0xf3, 0x23, 0x05, + 0x4a, 0x81, 0x07, 0xe4, 0x61, 0x49, 0x07, 0xf9, 0xa9, 0x01, 0xe7, 0xf4, 0x3d, 0x6a, 0x46, 0xe1, + 0x19, 0x7f, 0xd3, 0x17, 0xd2, 0x3b, 0x85, 0x25, 0xa2, 0xd9, 0x2b, 0xda, 0x91, 0xd0, 0x94, 0x9d, + 0x55, 0xbd, 0x9b, 0xb1, 0x09, 0x13, 0x17, 0xa3, 0xbf, 0x33, 0xa0, 0x96, 0x79, 0x3e, 0xb9, 0x6e, + 0xbb, 0x7b, 0x8e, 0xf8, 0x0f, 0x79, 0x44, 0xb9, 0xef, 0xaf, 0x6c, 0xe4, 0xf9, 0x57, 0x91, 0x62, + 0xc9, 0x81, 0xe1, 0x7f, 0x1f, 0xa1, 0x0b, 0x3d, 0x42, 0x1f, 0xf1, 0x1a, 0x77, 0xfa, 0x44, 0xaf, + 0x71, 0xbf, 0x36, 0x60, 0x3e, 0x5b, 0x05, 0x8c, 0x7b, 0xdd, 0x70, 0x13, 0x66, 0xf5, 0xd3, 0x53, + 0x5c, 0xc0, 0x94, 0xc6, 0xfb, 0x7c, 0x2d, 0x07, 0x46, 0x99, 0xfa, 0xa6, 0x32, 0xa9, 0x58, 0xfe, + 0x64, 0xc0, 0x4c, 0x56, 0xf8, 0x93, 0x3a, 0xd2, 0xf7, 0x0d, 0x20, 0xb9, 0x0a, 0x49, 0xdb, 0x51, + 0x27, 0xf8, 0xff, 0x3b, 0xd2, 0x8e, 0x83, 0x3a, 0x6b, 0x3e, 0x25, 0x57, 0x78, 0xd8, 0xaf, 0x0f, + 0x69, 0x33, 0x35, 0xc8, 0x30, 0x0b, 0xca, 0xe6, 0xfd, 0x81, 0xe1, 0xf4, 0xb7, 0x06, 0x2c, 0x0c, + 0xa1, 0x8f, 0x63, 0x92, 0x5b, 0x70, 0xa6, 0x9d, 0xaf, 0x59, 0xd1, 0x28, 0x2f, 0x14, 0x36, 0xca, + 0x03, 0xf9, 0xa7, 0xc2, 0xc4, 0x2c, 0xf8, 0x5d, 0x56, 0x62, 0x98, 0xbf, 0x18, 0x30, 0x9b, 0x5d, + 0x43, 0xf3, 0xa4, 0x96, 0xf9, 0xc1, 0x71, 0x96, 0x79, 0xf4, 0xfe, 0x2c, 0xf3, 0xb1, 0x99, 0xa6, + 0xf9, 0xc2, 0x7b, 0x87, 0xab, 0xc6, 0xfb, 0x87, 0xab, 0xc6, 0xdf, 0x0e, 0x57, 0x8d, 0x77, 0x3e, + 0x5a, 0x3d, 0xf5, 0xfe, 0x47, 0xab, 0xa7, 0x3e, 0xf8, 0x68, 0xf5, 0xd4, 0x57, 0x1a, 0x39, 0x15, + 0x4a, 0xa1, 0x9e, 0xf0, 0x76, 0x77, 0xed, 0x8e, 0xcd, 0x1d, 0x6c, 0xaf, 0xe3, 0x77, 0xdf, 0x4a, + 0x9d, 0xed, 0x29, 0x95, 0x8d, 0x7d, 0xee, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xbf, 0x28, 0xf5, + 0x15, 0x13, 0x2e, 0x00, 0x00, } func (m *LendAsset) Marshal() (dAtA []byte, err error) { @@ -3363,6 +3466,86 @@ func (m *PoolInterest) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *PoolInterestDataB) 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 *PoolInterestDataB) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PoolInterestDataB) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.BorrowInterest.Size() + i -= size + if _, err := m.BorrowInterest.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintLend(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if m.AssetID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.AssetID)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *PoolInterestB) 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 *PoolInterestB) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PoolInterestB) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.PoolInterestData) > 0 { + for iNdEx := len(m.PoolInterestData) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PoolInterestData[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintLend(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if m.PoolID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.PoolID)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func encodeVarintLend(dAtA []byte, offset int, v uint64) int { offset -= sovLend(v) base := offset @@ -3946,6 +4129,38 @@ func (m *PoolInterest) Size() (n int) { return n } +func (m *PoolInterestDataB) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AssetID != 0 { + n += 1 + sovLend(uint64(m.AssetID)) + } + l = m.BorrowInterest.Size() + n += 1 + l + sovLend(uint64(l)) + return n +} + +func (m *PoolInterestB) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.PoolID != 0 { + n += 1 + sovLend(uint64(m.PoolID)) + } + if len(m.PoolInterestData) > 0 { + for _, e := range m.PoolInterestData { + l = e.Size() + n += 1 + l + sovLend(uint64(l)) + } + } + return n +} + func sovLend(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -8719,6 +8934,212 @@ func (m *PoolInterest) Unmarshal(dAtA []byte) error { } return nil } +func (m *PoolInterestDataB) 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 ErrIntOverflowLend + } + 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: PoolInterestDataB: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PoolInterestDataB: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) + } + m.AssetID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AssetID |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BorrowInterest", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + 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 ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.BorrowInterest.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipLend(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthLend + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PoolInterestB) 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 ErrIntOverflowLend + } + 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: PoolInterestB: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PoolInterestB: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) + } + m.PoolID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PoolID |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PoolInterestData", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PoolInterestData = append(m.PoolInterestData, PoolInterestDataB{}) + if err := m.PoolInterestData[len(m.PoolInterestData)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipLend(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthLend + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipLend(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/lend/types/query.pb.go b/x/lend/types/query.pb.go index 33732de1a..42a896abb 100644 --- a/x/lend/types/query.pb.go +++ b/x/lend/types/query.pb.go @@ -1974,6 +1974,79 @@ func (m *QueryLendInterestResponse) XXX_DiscardUnknown() { var xxx_messageInfo_QueryLendInterestResponse proto.InternalMessageInfo +type QueryBorrowInterestRequest struct { +} + +func (m *QueryBorrowInterestRequest) Reset() { *m = QueryBorrowInterestRequest{} } +func (m *QueryBorrowInterestRequest) String() string { return proto.CompactTextString(m) } +func (*QueryBorrowInterestRequest) ProtoMessage() {} +func (*QueryBorrowInterestRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_462bf3f1a3eff175, []int{52} +} +func (m *QueryBorrowInterestRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryBorrowInterestRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryBorrowInterestRequest.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 *QueryBorrowInterestRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryBorrowInterestRequest.Merge(m, src) +} +func (m *QueryBorrowInterestRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryBorrowInterestRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryBorrowInterestRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryBorrowInterestRequest proto.InternalMessageInfo + +type QueryBorrowInterestResponse struct { + PoolInterest []PoolInterestB `protobuf:"bytes,1,rep,name=pool_interest,json=poolInterest,proto3" json:"pool_interest" yaml:"pool_interest"` +} + +func (m *QueryBorrowInterestResponse) Reset() { *m = QueryBorrowInterestResponse{} } +func (m *QueryBorrowInterestResponse) String() string { return proto.CompactTextString(m) } +func (*QueryBorrowInterestResponse) ProtoMessage() {} +func (*QueryBorrowInterestResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_462bf3f1a3eff175, []int{53} +} +func (m *QueryBorrowInterestResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryBorrowInterestResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryBorrowInterestResponse.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 *QueryBorrowInterestResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryBorrowInterestResponse.Merge(m, src) +} +func (m *QueryBorrowInterestResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryBorrowInterestResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryBorrowInterestResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryBorrowInterestResponse proto.InternalMessageInfo + func init() { proto.RegisterType((*QueryParamsRequest)(nil), "comdex.lend.v1beta1.QueryParamsRequest") proto.RegisterType((*QueryParamsResponse)(nil), "comdex.lend.v1beta1.QueryParamsResponse") @@ -2027,155 +2100,160 @@ func init() { proto.RegisterType((*QueryFundModBalByAssetPoolResponse)(nil), "comdex.lend.v1beta1.QueryFundModBalByAssetPoolResponse") proto.RegisterType((*QueryLendInterestRequest)(nil), "comdex.lend.v1beta1.QueryLendInterestRequest") proto.RegisterType((*QueryLendInterestResponse)(nil), "comdex.lend.v1beta1.QueryLendInterestResponse") + proto.RegisterType((*QueryBorrowInterestRequest)(nil), "comdex.lend.v1beta1.QueryBorrowInterestRequest") + proto.RegisterType((*QueryBorrowInterestResponse)(nil), "comdex.lend.v1beta1.QueryBorrowInterestResponse") } func init() { proto.RegisterFile("comdex/lend/v1beta1/query.proto", fileDescriptor_462bf3f1a3eff175) } var fileDescriptor_462bf3f1a3eff175 = []byte{ - // 2284 bytes of a gzipped FileDescriptorProto + // 2336 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x5a, 0xdd, 0x6f, 0x1d, 0x47, - 0x15, 0xf7, 0xba, 0xb6, 0x43, 0x27, 0x9f, 0x1d, 0xdb, 0x4d, 0xb2, 0x76, 0xee, 0xb5, 0x27, 0xfe, - 0x88, 0x9b, 0xfa, 0x6e, 0x9d, 0xb4, 0x40, 0xaa, 0x0a, 0x92, 0x25, 0x69, 0x1b, 0x14, 0xab, 0x66, - 0x41, 0x42, 0x42, 0xc0, 0xd5, 0x5e, 0xef, 0xe6, 0x72, 0xd5, 0xf5, 0xee, 0xed, 0xdd, 0xbd, 0x6d, - 0x2d, 0xcb, 0x22, 0x05, 0xfa, 0x80, 0x78, 0x29, 0x2a, 0x2f, 0x08, 0x09, 0x21, 0x21, 0xa4, 0x4a, - 0x80, 0xe0, 0x05, 0x1e, 0x80, 0x07, 0x1e, 0x23, 0x04, 0x28, 0xa8, 0x0f, 0xa1, 0x20, 0x2c, 0x48, - 0xf8, 0x0b, 0x22, 0xf1, 0xc2, 0x13, 0x9a, 0x99, 0x33, 0xfb, 0x39, 0x3b, 0x77, 0x6f, 0x15, 0x1b, - 0xc2, 0x53, 0x6e, 0x76, 0xce, 0x39, 0xf3, 0xfb, 0x9d, 0x39, 0x73, 0x76, 0xe6, 0xb7, 0x46, 0xf5, - 0xcd, 0x60, 0xcb, 0x71, 0xdf, 0x34, 0x3c, 0xd7, 0x77, 0x8c, 0xd7, 0xd7, 0x5a, 0x6e, 0x64, 0xaf, - 0x19, 0xaf, 0xf5, 0xdd, 0xde, 0x76, 0xa3, 0xdb, 0x0b, 0xa2, 0x00, 0x4f, 0x72, 0x83, 0x06, 0x35, - 0x68, 0x80, 0x81, 0xfe, 0xd4, 0x66, 0x10, 0x6e, 0x05, 0xa1, 0xd1, 0xb2, 0x43, 0x97, 0x5b, 0xc7, - 0xbe, 0x5d, 0xbb, 0xdd, 0xf1, 0xed, 0xa8, 0x13, 0xf8, 0x3c, 0x80, 0x3e, 0xd5, 0x0e, 0xda, 0x01, - 0xfb, 0x69, 0xd0, 0x5f, 0xf0, 0x74, 0xb6, 0x1d, 0x04, 0x6d, 0xcf, 0x35, 0xec, 0x6e, 0xc7, 0xb0, - 0x7d, 0x3f, 0x88, 0x98, 0x4b, 0x08, 0xa3, 0x35, 0x19, 0x2a, 0x86, 0x80, 0x8f, 0xcf, 0xc9, 0xc6, - 0xbb, 0x76, 0xcf, 0xde, 0x4a, 0x45, 0x48, 0x10, 0x0a, 0x8b, 0xcd, 0xa0, 0x03, 0xa8, 0xc8, 0x14, - 0xc2, 0x9f, 0xa1, 0xb8, 0x37, 0x98, 0x93, 0xe5, 0xbe, 0xd6, 0x77, 0xc3, 0x88, 0x6c, 0xa0, 0xc9, - 0xcc, 0xd3, 0xb0, 0x1b, 0xf8, 0xa1, 0x8b, 0x2f, 0xa1, 0x09, 0x1e, 0xfc, 0x94, 0x36, 0xa7, 0x9d, - 0x3b, 0x7c, 0x61, 0xa6, 0x21, 0x49, 0x4a, 0x83, 0x3b, 0x99, 0x63, 0xb7, 0xf7, 0xea, 0x23, 0x16, - 0x38, 0x90, 0x1e, 0x7a, 0x82, 0x45, 0xbc, 0xe1, 0xfa, 0x8e, 0x98, 0x06, 0x7f, 0x09, 0xa1, 0x24, - 0x4d, 0x10, 0x73, 0xa9, 0xc1, 0x11, 0x37, 0x28, 0xe2, 0x06, 0x5f, 0x81, 0x24, 0x72, 0xdb, 0x05, - 0x5f, 0x73, 0xfa, 0xc1, 0x5e, 0xfd, 0x89, 0x6d, 0x7b, 0xcb, 0x7b, 0x9e, 0x24, 0x31, 0x88, 0x95, - 0x0a, 0x48, 0x7e, 0xab, 0x01, 0x39, 0x98, 0x14, 0x58, 0x7c, 0x1a, 0x8d, 0x53, 0xbc, 0x94, 0xc4, - 0x63, 0xe7, 0x0e, 0x5f, 0xa8, 0x49, 0x49, 0x50, 0x97, 0x2b, 0x61, 0xe8, 0x46, 0xe6, 0x14, 0xe5, - 0xf1, 0x60, 0xaf, 0x7e, 0x84, 0x4f, 0xc6, 0x5c, 0x89, 0xc5, 0x43, 0xe0, 0x2f, 0x67, 0x18, 0x8c, - 0x32, 0x06, 0xcb, 0x03, 0x19, 0x70, 0x20, 0x55, 0x28, 0x10, 0x74, 0x22, 0x66, 0x20, 0xb2, 0x76, - 0x0c, 0x8d, 0x76, 0x1c, 0x96, 0xad, 0x31, 0x6b, 0xb4, 0xe3, 0x90, 0x2f, 0xa6, 0x52, 0x1b, 0x93, - 0x7c, 0x09, 0x8d, 0x51, 0x84, 0x90, 0xd4, 0x41, 0x1c, 0x27, 0x81, 0xe3, 0xe1, 0x84, 0x23, 0xb1, - 0x58, 0x00, 0xf2, 0x43, 0x0d, 0xe9, 0x2c, 0xfc, 0x15, 0xcf, 0xa3, 0x0e, 0xe6, 0xf6, 0x2b, 0x6f, - 0xf8, 0x6e, 0x4f, 0x80, 0x59, 0x42, 0xe3, 0x01, 0xfd, 0x3f, 0x9b, 0xe8, 0x71, 0xf3, 0x44, 0x92, - 0x28, 0xf6, 0x98, 0x58, 0x7c, 0x38, 0xb7, 0xd4, 0xa3, 0x0f, 0x7b, 0xa9, 0x7f, 0xaf, 0xa1, 0x19, - 0x29, 0x4a, 0x48, 0xc7, 0xfa, 0x70, 0x6b, 0x7e, 0x12, 0xf2, 0x71, 0x3c, 0xc9, 0x47, 0xb3, 0x73, - 0x80, 0xcb, 0x7e, 0x57, 0x43, 0xf3, 0x12, 0x3a, 0x57, 0x7c, 0x67, 0x23, 0x08, 0xbc, 0x61, 0x73, - 0x7f, 0x1e, 0x1d, 0xea, 0x06, 0x81, 0xd7, 0xec, 0x38, 0x0c, 0xea, 0x98, 0x89, 0x1f, 0xec, 0xd5, - 0x8f, 0x01, 0x02, 0x3e, 0x40, 0xac, 0x09, 0xfa, 0xeb, 0xba, 0x93, 0x5b, 0xa8, 0xc7, 0x1e, 0xf6, - 0x42, 0xdd, 0xd1, 0x10, 0x51, 0x31, 0x7b, 0x04, 0xf7, 0xa8, 0x68, 0x6d, 0x1b, 0x76, 0xa7, 0x77, - 0x50, 0xad, 0xed, 0x6f, 0x5a, 0xdc, 0xb7, 0xd9, 0xa4, 0x90, 0xb6, 0x36, 0x3a, 0xea, 0xbe, 0x19, - 0xb9, 0xbe, 0xe3, 0x3a, 0x6c, 0x00, 0xd2, 0x47, 0xa4, 0xe9, 0xbb, 0x06, 0x96, 0x4d, 0x6a, 0x6a, - 0x9e, 0x81, 0x14, 0x4e, 0xf3, 0x89, 0x45, 0x98, 0x66, 0x97, 0xc6, 0x21, 0x56, 0x36, 0xee, 0x81, - 0xf5, 0x3d, 0x3a, 0x5b, 0x59, 0xdf, 0xdb, 0x4e, 0xe5, 0x3d, 0xce, 0x80, 0x83, 0x8e, 0x5c, 0x4b, - 0x21, 0x85, 0xcc, 0x57, 0x49, 0xc0, 0x2c, 0x24, 0x60, 0x4a, 0x92, 0x00, 0x62, 0x65, 0xa2, 0x92, - 0x5d, 0x34, 0xcb, 0x8b, 0x98, 0x56, 0x9f, 0x65, 0x47, 0x6e, 0x98, 0x79, 0x7f, 0xee, 0xf7, 0xea, - 0xff, 0x4b, 0x43, 0x67, 0x4a, 0xe6, 0x87, 0x34, 0x44, 0xe8, 0x44, 0x7e, 0x0c, 0x6a, 0x61, 0x51, - 0x9a, 0x8a, 0xbc, 0xb1, 0x39, 0x0f, 0xd9, 0x38, 0xcd, 0x91, 0xd8, 0x74, 0xbc, 0xd9, 0xa3, 0x06, - 0x4d, 0x78, 0xa3, 0x5b, 0x85, 0x19, 0xf6, 0xbd, 0x2a, 0x56, 0x45, 0x93, 0xcf, 0x4e, 0x5c, 0x56, - 0x20, 0xdf, 0xd1, 0xe4, 0xcb, 0x24, 0xcf, 0x52, 0xe6, 0x64, 0xb3, 0x2f, 0x59, 0xca, 0x1d, 0x85, - 0x68, 0xc3, 0x3b, 0xa8, 0x8a, 0xf9, 0x75, 0xdc, 0x2f, 0xf8, 0xa4, 0x90, 0x80, 0x6b, 0x68, 0x9c, - 0xb6, 0x7d, 0x51, 0x1b, 0xa7, 0xe5, 0xe7, 0xb9, 0x20, 0xf0, 0xf2, 0x1d, 0x96, 0x79, 0x11, 0x8b, - 0x7b, 0x1f, 0x5c, 0x37, 0x48, 0xbd, 0xfc, 0xf2, 0x8b, 0xfd, 0xf9, 0x54, 0x56, 0x63, 0x7e, 0x26, - 0x1a, 0xa3, 0x08, 0x21, 0x9f, 0x0a, 0x7a, 0xb9, 0x03, 0x10, 0x75, 0x22, 0x16, 0xf3, 0x25, 0xb7, - 0x34, 0x54, 0x4f, 0xaa, 0xe8, 0x73, 0x01, 0x6d, 0x00, 0xeb, 0x76, 0xb7, 0xdb, 0xf1, 0xdb, 0x07, - 0xb5, 0x7a, 0x6f, 0x8f, 0xa2, 0xb9, 0x72, 0x08, 0xc0, 0xf5, 0x96, 0x86, 0x26, 0xed, 0xe2, 0x38, - 0x2c, 0xed, 0x72, 0x79, 0x41, 0x67, 0xec, 0xcd, 0x45, 0xc8, 0xc4, 0x99, 0x74, 0x49, 0x47, 0x01, - 0x6b, 0x83, 0xcd, 0x2d, 0x08, 0x4a, 0x2c, 0xd9, 0x54, 0xfb, 0x5e, 0x07, 0xbb, 0xa8, 0x56, 0x92, - 0x06, 0xb1, 0x10, 0x0d, 0xf4, 0x11, 0x8e, 0x58, 0xd4, 0x86, 0x39, 0x99, 0x1c, 0xe3, 0xc4, 0x08, - 0xb1, 0x0e, 0xb1, 0x9f, 0xd7, 0x9d, 0xa1, 0x8e, 0x46, 0xe4, 0x07, 0xe5, 0x95, 0x10, 0xaf, 0xc2, - 0x2e, 0xc2, 0xc5, 0x51, 0xa8, 0x88, 0xca, 0x6b, 0xb0, 0x00, 0x6b, 0x30, 0xab, 0x58, 0x03, 0x62, - 0x49, 0x26, 0x22, 0x11, 0x5c, 0xdc, 0xcc, 0xa0, 0xd7, 0x0b, 0xde, 0x38, 0xa8, 0xfa, 0xfc, 0x9d, - 0x86, 0xa6, 0xb2, 0xd3, 0x42, 0x36, 0x2c, 0x74, 0xa8, 0xc5, 0x1f, 0x41, 0x19, 0xce, 0x49, 0x53, - 0xc0, 0xdd, 0xf8, 0x51, 0xee, 0x49, 0xe0, 0x0e, 0x8b, 0x00, 0xee, 0xc4, 0x12, 0x81, 0xf6, 0xbd, - 0xc8, 0x16, 0xa0, 0x53, 0x72, 0x50, 0x65, 0xed, 0xe6, 0x66, 0x26, 0xd1, 0x31, 0xe1, 0x57, 0xd0, - 0x04, 0xc7, 0x09, 0x49, 0x1e, 0xcc, 0x77, 0x1a, 0xf8, 0x1e, 0x4d, 0xf3, 0x25, 0x16, 0x84, 0x21, - 0x3f, 0x8a, 0xdf, 0x61, 0x9e, 0xc7, 0xdd, 0xfe, 0x37, 0x2f, 0x60, 0xef, 0xc7, 0x47, 0x92, 0x02, - 0xce, 0x47, 0xb8, 0x16, 0x3e, 0xd0, 0xd0, 0x59, 0x29, 0xab, 0xff, 0x83, 0x9b, 0xd8, 0x5f, 0x34, - 0xb4, 0xa0, 0xe6, 0xf6, 0x08, 0x2f, 0x9c, 0x78, 0x53, 0x50, 0x22, 0x0c, 0xd2, 0x0d, 0xf3, 0xbf, - 0xf2, 0xa6, 0x90, 0xcd, 0x9f, 0xbc, 0x29, 0x8a, 0xa3, 0xca, 0x37, 0x45, 0xd1, 0x3c, 0xff, 0xa6, - 0x60, 0x40, 0x38, 0x78, 0xaf, 0x95, 0x7a, 0x53, 0x14, 0x3d, 0xc9, 0x65, 0xa8, 0x6c, 0xcb, 0x0d, - 0xdd, 0xde, 0xeb, 0xae, 0xd9, 0xdf, 0x6e, 0xd9, 0x9b, 0xaf, 0x32, 0xa3, 0xab, 0x76, 0x64, 0x8b, - 0x34, 0x9d, 0xce, 0xa7, 0x29, 0xce, 0x08, 0xf9, 0x95, 0x28, 0xa0, 0xd2, 0x10, 0xc0, 0xf4, 0xdb, - 0x1a, 0x3a, 0x59, 0x62, 0x03, 0x7c, 0x9f, 0x96, 0xf2, 0x2d, 0xf1, 0x31, 0x57, 0x80, 0xf4, 0x3c, - 0x27, 0xdd, 0xe3, 0x66, 0xcd, 0x16, 0xb7, 0x03, 0xfe, 0x8e, 0x1d, 0xd9, 0xc4, 0x2a, 0x9b, 0x97, - 0xac, 0xa1, 0x53, 0xbc, 0xf8, 0xfb, 0x9b, 0xb4, 0x60, 0x32, 0xf7, 0x88, 0x69, 0x34, 0x61, 0x77, - 0xbb, 0x09, 0xe3, 0x71, 0xbb, 0xdb, 0xbd, 0xee, 0x90, 0x6f, 0x68, 0xe8, 0xb4, 0xc4, 0x27, 0xb9, - 0x7a, 0xdb, 0xa9, 0xe7, 0xa1, 0xf2, 0xe6, 0x99, 0x8e, 0x10, 0xe6, 0xaf, 0xde, 0x10, 0x26, 0xbe, - 0x41, 0x64, 0xe3, 0x92, 0x97, 0x01, 0xc5, 0x7a, 0xe0, 0xf4, 0x3d, 0xd7, 0xb4, 0x3d, 0xdb, 0xdf, - 0x14, 0xfb, 0x3e, 0x5d, 0xa5, 0xda, 0xc0, 0x2a, 0x7d, 0x5b, 0x48, 0x7b, 0xb9, 0x50, 0x09, 0xa3, - 0xcc, 0x80, 0x92, 0x51, 0xc6, 0x32, 0xcf, 0x68, 0x8b, 0x0d, 0x36, 0x5b, 0x7c, 0x94, 0x58, 0xd9, - 0xb8, 0xe4, 0x14, 0x7a, 0x92, 0xc1, 0x78, 0xb1, 0xef, 0x3b, 0xeb, 0x81, 0x63, 0xda, 0xa2, 0xaf, - 0x92, 0xaf, 0xa2, 0x93, 0x85, 0x91, 0xf8, 0xa2, 0x7f, 0x2c, 0x79, 0x9a, 0x82, 0x37, 0x53, 0x06, - 0xcf, 0xb4, 0x3d, 0xb3, 0x0e, 0xb8, 0x4e, 0x72, 0x5c, 0x37, 0xfb, 0xbe, 0xd3, 0xdc, 0x0a, 0x9c, - 0x04, 0x59, 0x2e, 0x26, 0x99, 0x85, 0x0c, 0xd1, 0xc7, 0xa2, 0x94, 0x12, 0x78, 0xef, 0x0a, 0xd5, - 0x31, 0x3f, 0x1c, 0xdf, 0x2f, 0x71, 0x76, 0x24, 0x85, 0xb3, 0xae, 0x2c, 0x79, 0xdb, 0x33, 0xcf, - 0x02, 0xd6, 0x99, 0x14, 0xd6, 0xb8, 0xd4, 0x05, 0x5e, 0x49, 0x7c, 0xb2, 0x9e, 0x48, 0xa1, 0x30, - 0xf2, 0xd9, 0xc8, 0x8e, 0xc2, 0x0f, 0xd9, 0xf8, 0xc8, 0x3b, 0xa9, 0x13, 0x48, 0x36, 0x1e, 0xb0, - 0xec, 0xa2, 0xe3, 0xb9, 0x21, 0xa0, 0xb8, 0x20, 0xaf, 0xfd, 0xac, 0xad, 0x39, 0x07, 0x3c, 0x4f, - 0x01, 0x02, 0xcf, 0x8b, 0x69, 0x86, 0xd4, 0x80, 0x58, 0xf9, 0xf0, 0xf4, 0x4a, 0x36, 0x9f, 0xab, - 0x0b, 0x93, 0x1f, 0xca, 0xd3, 0x2f, 0xe5, 0x7d, 0xed, 0xf0, 0xdf, 0x15, 0x3a, 0x66, 0x09, 0x04, - 0xc8, 0x4d, 0x88, 0x26, 0xec, 0xad, 0xa0, 0xef, 0x47, 0xa9, 0x2b, 0x68, 0xf2, 0x8e, 0x13, 0x29, - 0xf9, 0x54, 0xd0, 0xf1, 0xcd, 0xcb, 0xd9, 0x83, 0x20, 0x77, 0x23, 0xff, 0xde, 0xab, 0x2f, 0xb7, - 0x3b, 0xd1, 0x57, 0xfa, 0x2d, 0x9a, 0x4c, 0x03, 0xbe, 0xe6, 0xf0, 0x7f, 0x56, 0x43, 0xe7, 0x55, - 0x23, 0xda, 0xee, 0xba, 0x21, 0x8b, 0x60, 0xc1, 0x54, 0x44, 0x87, 0xde, 0x76, 0xc3, 0xf5, 0x9d, - 0xeb, 0x7e, 0xe4, 0xf6, 0xdc, 0x30, 0x12, 0x25, 0xfb, 0x96, 0x68, 0x62, 0xd9, 0xc1, 0x78, 0x53, - 0x1d, 0xe5, 0x4c, 0x61, 0x00, 0x5e, 0xf8, 0xf3, 0xa5, 0xaf, 0x23, 0x11, 0x21, 0xaf, 0x9e, 0x65, - 0xa2, 0x10, 0xeb, 0x48, 0x37, 0x65, 0x7b, 0xe1, 0x2e, 0x41, 0xe3, 0x0c, 0x03, 0x7e, 0x4b, 0x43, - 0x28, 0xf9, 0x42, 0x83, 0x97, 0xa4, 0xf3, 0x14, 0xbe, 0x1b, 0xe9, 0xcb, 0x03, 0xed, 0x38, 0x1f, - 0x42, 0xbe, 0xf6, 0xfe, 0x3f, 0xdf, 0x1d, 0x9d, 0xc5, 0xba, 0x51, 0xf6, 0x21, 0x2d, 0xc4, 0x5f, - 0xd7, 0xd0, 0xe3, 0xb1, 0x2b, 0x5e, 0x54, 0x87, 0x16, 0x08, 0x96, 0x06, 0x99, 0x01, 0x80, 0x65, - 0x06, 0x60, 0x1e, 0xd7, 0xcb, 0x01, 0x18, 0x3b, 0x1d, 0x67, 0x17, 0xff, 0x54, 0x83, 0x0b, 0x45, - 0x56, 0x17, 0xc7, 0x46, 0xf9, 0x44, 0xd2, 0x0f, 0x32, 0xfa, 0x33, 0xd5, 0x1d, 0x00, 0xe3, 0x45, - 0x86, 0x71, 0x15, 0x9f, 0x2f, 0xc7, 0xd8, 0x6c, 0x6d, 0x37, 0xd9, 0x09, 0xd6, 0xd8, 0x61, 0xff, - 0xec, 0xe2, 0x3f, 0xc9, 0x3f, 0x0b, 0xc1, 0xd9, 0x11, 0x7f, 0xb4, 0x2a, 0x8a, 0xec, 0x41, 0x5a, - 0xff, 0xd8, 0xd0, 0x7e, 0x40, 0xc2, 0x64, 0x24, 0x5e, 0xc0, 0xcf, 0x57, 0x20, 0xd1, 0xa4, 0xd5, - 0x28, 0x98, 0x18, 0x3b, 0xb0, 0xb7, 0x77, 0xf1, 0x2d, 0x0d, 0x4d, 0x80, 0x92, 0xa9, 0xa8, 0xb0, - 0x8c, 0xd2, 0xab, 0x9f, 0x1b, 0x6c, 0x08, 0x08, 0xcf, 0x32, 0x84, 0x67, 0xf0, 0x8c, 0x51, 0xfe, - 0xd1, 0x36, 0xd9, 0x10, 0x5c, 0x66, 0x5f, 0x52, 0x45, 0x4f, 0xbe, 0x36, 0xe8, 0xcb, 0x03, 0xed, - 0x2a, 0x6d, 0x08, 0xa6, 0xf5, 0x27, 0x1b, 0x82, 0xba, 0xaa, 0x36, 0x44, 0x4a, 0x9c, 0xd7, 0x97, - 0x06, 0x99, 0x55, 0xda, 0x10, 0x0c, 0x00, 0xdf, 0x10, 0x3f, 0xd3, 0xd0, 0xb4, 0x54, 0xe3, 0xc6, - 0x6b, 0x8a, 0x1a, 0x91, 0xeb, 0xf1, 0xfa, 0x85, 0x61, 0x5c, 0x00, 0xa9, 0xc1, 0x90, 0xae, 0xe0, - 0x65, 0x29, 0xd2, 0xa2, 0xd4, 0x8b, 0x7f, 0x2e, 0x54, 0x90, 0x5c, 0x48, 0xfc, 0x4c, 0xe5, 0xd9, - 0x05, 0xde, 0xb5, 0x21, 0x3c, 0x2a, 0xed, 0xe2, 0x02, 0x5c, 0x9e, 0xe4, 0xa4, 0xdc, 0x98, 0x8e, - 0xab, 0x5a, 0xc4, 0x94, 0x58, 0xad, 0x2c, 0xb7, 0xb4, 0xbe, 0x3c, 0xa8, 0xdc, 0xd8, 0xa4, 0x49, - 0xb9, 0xd1, 0xc6, 0xb1, 0xa8, 0x0e, 0x5d, 0xa5, 0xdc, 0xd2, 0x6d, 0x61, 0x40, 0xb9, 0x51, 0x00, - 0x3c, 0x13, 0xbf, 0xd1, 0xc4, 0x85, 0x40, 0xa2, 0x6b, 0x3e, 0x3b, 0x60, 0x39, 0xa4, 0xa2, 0xb0, - 0xfe, 0xdc, 0x90, 0x5e, 0x43, 0x2c, 0x64, 0x5e, 0x8f, 0xc5, 0x7f, 0xd4, 0xe0, 0xa4, 0x5c, 0x8c, - 0x8c, 0x2f, 0x0e, 0x83, 0x43, 0x80, 0x7f, 0x76, 0x38, 0x27, 0xc0, 0xfe, 0x32, 0xc3, 0x6e, 0xe2, - 0xcb, 0x43, 0x60, 0x37, 0x76, 0xc4, 0x59, 0x2c, 0xdd, 0x8b, 0xbf, 0xa9, 0xa1, 0x23, 0x69, 0x49, - 0x11, 0x2b, 0x1a, 0x6d, 0x56, 0xec, 0xd4, 0x57, 0x2a, 0x58, 0x02, 0xde, 0x05, 0x86, 0xb7, 0x86, - 0x67, 0xa5, 0x78, 0x85, 0x58, 0xf1, 0x2d, 0x0d, 0x1d, 0x4e, 0xb9, 0xab, 0x5e, 0x0e, 0x19, 0xd1, - 0x50, 0x3f, 0x37, 0xd8, 0x10, 0x80, 0xac, 0x30, 0x20, 0x67, 0xf1, 0xbc, 0x0a, 0x08, 0xaf, 0xd4, - 0x5f, 0xc4, 0x8d, 0x31, 0xa7, 0xdb, 0x28, 0x1b, 0xa3, 0x5c, 0x3d, 0x54, 0x36, 0xc6, 0x12, 0x21, - 0x8f, 0x3c, 0xc7, 0xb0, 0x1a, 0x78, 0x55, 0x85, 0xb5, 0x78, 0x62, 0xf8, 0xa0, 0x4c, 0xc9, 0x14, - 0x67, 0x86, 0x8f, 0x57, 0xc7, 0x92, 0x3b, 0x35, 0x5c, 0xfa, 0x10, 0x9e, 0x40, 0xe6, 0x2a, 0x23, - 0xf3, 0x09, 0xfc, 0x42, 0x25, 0x32, 0x65, 0x27, 0x87, 0x3f, 0x88, 0xed, 0x57, 0x14, 0x5a, 0x54, - 0xdb, 0xaf, 0x54, 0x9d, 0x52, 0x6d, 0xbf, 0x72, 0x49, 0x89, 0xbc, 0xc4, 0xc8, 0x5c, 0xc1, 0x9f, - 0x2c, 0xed, 0x76, 0x05, 0x71, 0x48, 0xbe, 0xfb, 0xee, 0x8a, 0xb5, 0x2a, 0x91, 0x4f, 0x54, 0x6b, - 0xa5, 0x16, 0x94, 0x54, 0x6b, 0x35, 0x40, 0x47, 0x1a, 0x70, 0xc6, 0x2b, 0x97, 0x81, 0x52, 0x1c, - 0xf1, 0x7b, 0xe2, 0x43, 0x68, 0x46, 0x82, 0xc1, 0xab, 0x8a, 0x0a, 0x2a, 0x2a, 0x44, 0x7a, 0xa3, - 0xaa, 0x79, 0xb5, 0x9e, 0xce, 0x5d, 0xf8, 0x31, 0xc2, 0xd8, 0xe1, 0xda, 0xd3, 0x2e, 0xfe, 0x89, - 0x80, 0x9a, 0x51, 0x4b, 0xb0, 0x62, 0x6e, 0x99, 0x24, 0xa4, 0x1b, 0x95, 0xed, 0x2b, 0xed, 0xef, - 0xac, 0x96, 0x93, 0xaa, 0x99, 0xef, 0x69, 0xe8, 0x78, 0xee, 0x46, 0x8c, 0xcf, 0x97, 0xcf, 0x5d, - 0x10, 0x7b, 0xf4, 0xa7, 0xab, 0x19, 0x03, 0xca, 0x55, 0x86, 0x72, 0x19, 0x2f, 0x4a, 0x51, 0xe6, - 0x95, 0x1d, 0xfc, 0x63, 0x71, 0xbf, 0xca, 0x0a, 0x26, 0xaa, 0xfb, 0x95, 0x54, 0xf3, 0x51, 0xdd, - 0xaf, 0xe4, 0x2a, 0x10, 0x59, 0x63, 0x48, 0xcf, 0xe3, 0x95, 0x72, 0xa4, 0x39, 0x5d, 0x07, 0xff, - 0x32, 0x3e, 0x4a, 0x66, 0x95, 0x0f, 0xac, 0xbe, 0xdd, 0x49, 0xe4, 0x1e, 0x7d, 0x6d, 0x08, 0x0f, - 0x00, 0x7c, 0x89, 0x01, 0xbe, 0x88, 0xd7, 0xe4, 0xd5, 0x9a, 0x17, 0x68, 0xd2, 0xdb, 0xeb, 0xaf, - 0x5a, 0x4a, 0x30, 0x2b, 0xc8, 0x22, 0xaa, 0x6b, 0xa1, 0x4a, 0xca, 0x51, 0x5d, 0x0b, 0x95, 0xfa, - 0x0b, 0xb9, 0xc1, 0xa8, 0xbc, 0x88, 0xaf, 0x0e, 0xac, 0x12, 0xda, 0xe3, 0x39, 0x0f, 0xde, 0xe3, - 0x65, 0x6d, 0xf1, 0xfb, 0x5a, 0xea, 0x4f, 0x2d, 0x85, 0x9c, 0xa1, 0xea, 0x1d, 0x12, 0x05, 0x46, - 0xd5, 0x3b, 0x64, 0x9a, 0x0c, 0x79, 0x8a, 0x51, 0x58, 0xc0, 0xa4, 0xf4, 0x66, 0x1b, 0x0b, 0x2d, - 0xe6, 0xc6, 0xed, 0x7f, 0xd4, 0x46, 0xde, 0xbb, 0x57, 0x1b, 0xb9, 0x7d, 0xaf, 0xa6, 0xdd, 0xb9, - 0x57, 0xd3, 0xfe, 0x7e, 0xaf, 0xa6, 0xbd, 0x73, 0xbf, 0x36, 0x72, 0xe7, 0x7e, 0x6d, 0xe4, 0xcf, - 0xf7, 0x6b, 0x23, 0x5f, 0x68, 0x64, 0xc4, 0x24, 0x1a, 0x6f, 0x35, 0xb8, 0x79, 0xb3, 0xb3, 0xd9, - 0xb1, 0x3d, 0x11, 0x1f, 0x66, 0x60, 0xc2, 0x52, 0x6b, 0x82, 0xfd, 0x99, 0xf0, 0xc5, 0xff, 0x04, - 0x00, 0x00, 0xff, 0xff, 0xf2, 0x9e, 0xdf, 0xf1, 0x20, 0x2d, 0x00, 0x00, + 0x15, 0xf7, 0xba, 0xb6, 0x4b, 0x27, 0x9f, 0x1d, 0xdb, 0x4d, 0xb2, 0x76, 0xee, 0xb5, 0x27, 0xfe, + 0x88, 0x9b, 0xf8, 0x6e, 0x9c, 0xb4, 0x40, 0xaa, 0x0a, 0x92, 0x25, 0x69, 0x1b, 0x14, 0xab, 0x66, + 0x41, 0x42, 0x42, 0xc0, 0xd5, 0x5e, 0xef, 0xc6, 0x5c, 0x75, 0xbd, 0x7b, 0x7b, 0x77, 0xdd, 0xd6, + 0xb2, 0x2c, 0x52, 0x68, 0x1f, 0x10, 0x2f, 0x45, 0xe5, 0x05, 0x21, 0x21, 0x24, 0x04, 0xaa, 0x04, + 0x08, 0x5e, 0xe0, 0x01, 0x78, 0xe0, 0x31, 0x42, 0x80, 0x82, 0xfa, 0x50, 0x0a, 0xc2, 0x82, 0x84, + 0xbf, 0x20, 0x12, 0x2f, 0x3c, 0xa1, 0x99, 0x39, 0xb3, 0x9f, 0xb3, 0xb3, 0x7b, 0xab, 0xda, 0x10, + 0x9e, 0x72, 0xb3, 0x33, 0xe7, 0xcc, 0xef, 0x77, 0xe6, 0xcc, 0x99, 0x99, 0xdf, 0x18, 0x35, 0xd7, + 0x83, 0x4d, 0xc7, 0x7d, 0xcd, 0xf0, 0x5c, 0xdf, 0x31, 0x5e, 0x59, 0xe9, 0xb8, 0x91, 0xbd, 0x62, + 0xbc, 0xbc, 0xe5, 0xf6, 0xb7, 0x5b, 0xbd, 0x7e, 0x10, 0x05, 0x78, 0x9c, 0x77, 0x68, 0xd1, 0x0e, + 0x2d, 0xe8, 0xa0, 0x3f, 0xb9, 0x1e, 0x84, 0x9b, 0x41, 0x68, 0x74, 0xec, 0xd0, 0xe5, 0xbd, 0x63, + 0xdb, 0x9e, 0xbd, 0xd1, 0xf5, 0xed, 0xa8, 0x1b, 0xf8, 0xdc, 0x81, 0x3e, 0xb1, 0x11, 0x6c, 0x04, + 0xec, 0xa7, 0x41, 0x7f, 0xc1, 0xd7, 0xe9, 0x8d, 0x20, 0xd8, 0xf0, 0x5c, 0xc3, 0xee, 0x75, 0x0d, + 0xdb, 0xf7, 0x83, 0x88, 0x99, 0x84, 0xd0, 0xda, 0x90, 0xa1, 0x62, 0x08, 0x78, 0xfb, 0x8c, 0xac, + 0xbd, 0x67, 0xf7, 0xed, 0xcd, 0x94, 0x87, 0x04, 0xa1, 0xe8, 0xb1, 0x1e, 0x74, 0x01, 0x15, 0x99, + 0x40, 0xf8, 0x33, 0x14, 0xf7, 0x1a, 0x33, 0xb2, 0xdc, 0x97, 0xb7, 0xdc, 0x30, 0x22, 0x6b, 0x68, + 0x3c, 0xf3, 0x35, 0xec, 0x05, 0x7e, 0xe8, 0xe2, 0xcb, 0x68, 0x8c, 0x3b, 0x3f, 0xa9, 0xcd, 0x68, + 0x67, 0x0f, 0x5d, 0x9c, 0x6a, 0x49, 0x82, 0xd2, 0xe2, 0x46, 0xe6, 0xc8, 0x9d, 0xbd, 0xe6, 0x90, + 0x05, 0x06, 0xa4, 0x8f, 0x1e, 0x67, 0x1e, 0x6f, 0xba, 0xbe, 0x23, 0x86, 0xc1, 0x5f, 0x42, 0x28, + 0x09, 0x13, 0xf8, 0x5c, 0x68, 0x71, 0xc4, 0x2d, 0x8a, 0xb8, 0xc5, 0x67, 0x20, 0xf1, 0xbc, 0xe1, + 0x82, 0xad, 0x39, 0xf9, 0x60, 0xaf, 0xf9, 0xf8, 0xb6, 0xbd, 0xe9, 0x3d, 0x43, 0x12, 0x1f, 0xc4, + 0x4a, 0x39, 0x24, 0xbf, 0xd5, 0x80, 0x1c, 0x0c, 0x0a, 0x2c, 0x3e, 0x8d, 0x46, 0x29, 0x5e, 0x4a, + 0xe2, 0x91, 0xb3, 0x87, 0x2e, 0x36, 0xa4, 0x24, 0xa8, 0xc9, 0xd5, 0x30, 0x74, 0x23, 0x73, 0x82, + 0xf2, 0x78, 0xb0, 0xd7, 0x3c, 0xcc, 0x07, 0x63, 0xa6, 0xc4, 0xe2, 0x2e, 0xf0, 0x97, 0x33, 0x0c, + 0x86, 0x19, 0x83, 0xc5, 0x4a, 0x06, 0x1c, 0x48, 0x1d, 0x0a, 0x04, 0x1d, 0x8f, 0x19, 0x88, 0xa8, + 0x1d, 0x45, 0xc3, 0x5d, 0x87, 0x45, 0x6b, 0xc4, 0x1a, 0xee, 0x3a, 0xe4, 0x8b, 0xa9, 0xd0, 0xc6, + 0x24, 0x9f, 0x47, 0x23, 0x14, 0x21, 0x04, 0xb5, 0x8a, 0xe3, 0x38, 0x70, 0x3c, 0x94, 0x70, 0x24, + 0x16, 0x73, 0x40, 0x7e, 0xa0, 0x21, 0x9d, 0xb9, 0xbf, 0xea, 0x79, 0xd4, 0xc0, 0xdc, 0x7e, 0xf1, + 0x55, 0xdf, 0xed, 0x0b, 0x30, 0x0b, 0x68, 0x34, 0xa0, 0xff, 0x67, 0x03, 0x3d, 0x66, 0x1e, 0x4f, + 0x02, 0xc5, 0x3e, 0x13, 0x8b, 0x37, 0xe7, 0xa6, 0x7a, 0xf8, 0xc3, 0x9e, 0xea, 0xdf, 0x6b, 0x68, + 0x4a, 0x8a, 0x12, 0xc2, 0xb1, 0x3a, 0xd8, 0x9c, 0x9f, 0x80, 0x78, 0x1c, 0x4b, 0xe2, 0xd1, 0xee, + 0x1e, 0xe0, 0xb4, 0xbf, 0xa7, 0xa1, 0x59, 0x09, 0x9d, 0xab, 0xbe, 0xb3, 0x16, 0x04, 0xde, 0xa0, + 0xb1, 0x3f, 0x87, 0x1e, 0xed, 0x05, 0x81, 0xd7, 0xee, 0x3a, 0x0c, 0xea, 0x88, 0x89, 0x1f, 0xec, + 0x35, 0x8f, 0x02, 0x02, 0xde, 0x40, 0xac, 0x31, 0xfa, 0xeb, 0x86, 0x93, 0x9b, 0xa8, 0x47, 0x3e, + 0xec, 0x89, 0xba, 0xab, 0x21, 0xa2, 0x62, 0xf6, 0x10, 0xae, 0x51, 0x51, 0xda, 0xd6, 0xec, 0x6e, + 0xff, 0xa0, 0x4a, 0xdb, 0xdf, 0xb4, 0xb8, 0x6e, 0xb3, 0x41, 0x21, 0x6c, 0x1b, 0xe8, 0x88, 0xfb, + 0x5a, 0xe4, 0xfa, 0x8e, 0xeb, 0xb0, 0x06, 0x08, 0x1f, 0x91, 0x86, 0xef, 0x3a, 0xf4, 0x6c, 0xd3, + 0xae, 0xe6, 0x69, 0x08, 0xe1, 0x24, 0x1f, 0x58, 0xb8, 0x69, 0xf7, 0xa8, 0x1f, 0x62, 0x65, 0xfd, + 0x1e, 0x58, 0xdd, 0xa3, 0xa3, 0x95, 0xd5, 0xbd, 0xed, 0x54, 0xdc, 0xe3, 0x08, 0x38, 0xe8, 0xf0, + 0xf5, 0x14, 0x52, 0x88, 0x7c, 0x9d, 0x00, 0x4c, 0x43, 0x00, 0x26, 0x24, 0x01, 0x20, 0x56, 0xc6, + 0x2b, 0xd9, 0x45, 0xd3, 0x3c, 0x89, 0x69, 0xf6, 0x59, 0x76, 0xe4, 0x86, 0x99, 0xfd, 0x73, 0xbf, + 0x67, 0xff, 0x5f, 0x1a, 0x3a, 0x5d, 0x32, 0x3e, 0x84, 0x21, 0x42, 0xc7, 0xf3, 0x6d, 0x90, 0x0b, + 0xf3, 0xd2, 0x50, 0xe4, 0x3b, 0x9b, 0xb3, 0x10, 0x8d, 0x53, 0x1c, 0x89, 0x4d, 0xdb, 0xdb, 0x7d, + 0xda, 0xa1, 0x0d, 0x3b, 0xba, 0x55, 0x18, 0x61, 0xdf, 0xb3, 0x62, 0x59, 0x14, 0xf9, 0xec, 0xc0, + 0x65, 0x09, 0xf2, 0x6d, 0x4d, 0x3e, 0x4d, 0xf2, 0x28, 0x65, 0x4e, 0x36, 0xfb, 0x12, 0xa5, 0xdc, + 0x51, 0x88, 0x16, 0xbc, 0x83, 0xca, 0x98, 0x5f, 0xc7, 0xf5, 0x82, 0x0f, 0x0a, 0x01, 0xb8, 0x8e, + 0x46, 0x69, 0xd9, 0x17, 0xb9, 0x71, 0x4a, 0x7e, 0x9e, 0x0b, 0x02, 0x2f, 0x5f, 0x61, 0x99, 0x15, + 0xb1, 0xb8, 0xf5, 0xc1, 0x55, 0x83, 0xd4, 0xe6, 0x97, 0x9f, 0xec, 0xcf, 0xa7, 0xa2, 0x1a, 0xf3, + 0x33, 0xd1, 0x08, 0x45, 0x08, 0xf1, 0x54, 0xd0, 0xcb, 0x1d, 0x80, 0xa8, 0x11, 0xb1, 0x98, 0x2d, + 0xb9, 0xad, 0xa1, 0x66, 0x92, 0x45, 0x9f, 0x0b, 0x68, 0x01, 0x58, 0xb5, 0x7b, 0xbd, 0xae, 0xbf, + 0x71, 0x50, 0xb3, 0xf7, 0xe6, 0x30, 0x9a, 0x29, 0x87, 0x00, 0x5c, 0x6f, 0x6b, 0x68, 0xdc, 0x2e, + 0xb6, 0xc3, 0xd4, 0x2e, 0x96, 0x27, 0x74, 0xa6, 0xbf, 0x39, 0x0f, 0x91, 0x38, 0x9d, 0x4e, 0xe9, + 0x28, 0x60, 0x65, 0xb0, 0xbd, 0x09, 0x4e, 0x89, 0x25, 0x1b, 0x6a, 0xdf, 0xf3, 0x60, 0x17, 0x35, + 0x4a, 0xc2, 0x20, 0x26, 0xa2, 0x85, 0x3e, 0xc2, 0x11, 0x8b, 0xdc, 0x30, 0xc7, 0x93, 0x63, 0x9c, + 0x68, 0x21, 0xd6, 0xa3, 0xec, 0xe7, 0x0d, 0x67, 0xa0, 0xa3, 0x11, 0xf9, 0x7e, 0x79, 0x26, 0xc4, + 0xb3, 0xb0, 0x8b, 0x70, 0xb1, 0x15, 0x32, 0xa2, 0xf6, 0x1c, 0xcc, 0xc1, 0x1c, 0x4c, 0x2b, 0xe6, + 0x80, 0x58, 0x92, 0x81, 0x48, 0x04, 0x17, 0x37, 0x33, 0xe8, 0xf7, 0x83, 0x57, 0x0f, 0x2a, 0x3f, + 0x7f, 0xa7, 0xa1, 0x89, 0xec, 0xb0, 0x10, 0x0d, 0x0b, 0x3d, 0xda, 0xe1, 0x9f, 0x20, 0x0d, 0x67, + 0xa4, 0x21, 0xe0, 0x66, 0xfc, 0x28, 0xf7, 0x04, 0x70, 0x87, 0x49, 0x00, 0x73, 0x62, 0x09, 0x47, + 0xfb, 0x9e, 0x64, 0x73, 0x50, 0x29, 0x39, 0xa8, 0xb2, 0x72, 0x73, 0x2b, 0x13, 0xe8, 0x98, 0xf0, + 0x8b, 0x68, 0x8c, 0xe3, 0x84, 0x20, 0x57, 0xf3, 0x9d, 0x04, 0xbe, 0x47, 0xd2, 0x7c, 0x89, 0x05, + 0x6e, 0xc8, 0x0f, 0xe3, 0x3d, 0xcc, 0xf3, 0xb8, 0xd9, 0xff, 0xe6, 0x05, 0xec, 0xdd, 0xf8, 0x48, + 0x52, 0xc0, 0xf9, 0x10, 0xe7, 0xc2, 0xfb, 0x1a, 0x3a, 0x23, 0x65, 0xf5, 0x7f, 0x70, 0x13, 0xfb, + 0x8b, 0x86, 0xe6, 0xd4, 0xdc, 0x1e, 0xe2, 0x89, 0x13, 0x3b, 0x05, 0x25, 0xc2, 0x20, 0xdd, 0x34, + 0xff, 0x2b, 0x3b, 0x85, 0x6c, 0xfc, 0x64, 0xa7, 0x28, 0xb6, 0x2a, 0x77, 0x8a, 0x62, 0xf7, 0xfc, + 0x4e, 0xc1, 0x80, 0x70, 0xf0, 0x5e, 0x27, 0xb5, 0x53, 0x14, 0x2d, 0xc9, 0x15, 0xc8, 0x6c, 0xcb, + 0x0d, 0xdd, 0xfe, 0x2b, 0xae, 0xb9, 0xb5, 0xdd, 0xb1, 0xd7, 0x5f, 0x62, 0x9d, 0xae, 0xd9, 0x91, + 0x2d, 0xc2, 0x74, 0x2a, 0x1f, 0xa6, 0x38, 0x22, 0xe4, 0x57, 0x22, 0x81, 0x4a, 0x5d, 0x00, 0xd3, + 0x6f, 0x69, 0xe8, 0x44, 0x49, 0x1f, 0xe0, 0x7b, 0x5e, 0xca, 0xb7, 0xc4, 0xc6, 0x5c, 0x02, 0xd2, + 0xb3, 0x9c, 0x74, 0x9f, 0x77, 0x6b, 0x77, 0x78, 0x3f, 0xe0, 0xef, 0xd8, 0x91, 0x4d, 0xac, 0xb2, + 0x71, 0xc9, 0x0a, 0x3a, 0xc9, 0x93, 0x7f, 0x6b, 0x9d, 0x26, 0x4c, 0xe6, 0x1e, 0x31, 0x89, 0xc6, + 0xec, 0x5e, 0x2f, 0x61, 0x3c, 0x6a, 0xf7, 0x7a, 0x37, 0x1c, 0xf2, 0x86, 0x86, 0x4e, 0x49, 0x6c, + 0x92, 0xab, 0xb7, 0x9d, 0xfa, 0x1e, 0x2a, 0x6f, 0x9e, 0x69, 0x0f, 0x61, 0xfe, 0xea, 0x0d, 0x6e, + 0xe2, 0x1b, 0x44, 0xd6, 0x2f, 0x79, 0x01, 0x50, 0xac, 0x06, 0xce, 0x96, 0xe7, 0x9a, 0xb6, 0x67, + 0xfb, 0xeb, 0x62, 0xdd, 0xa7, 0xb3, 0x54, 0xab, 0xcc, 0xd2, 0x37, 0x85, 0xb4, 0x97, 0x73, 0x95, + 0x30, 0xca, 0x34, 0x28, 0x19, 0x65, 0x7a, 0xe6, 0x19, 0x6d, 0xb2, 0xc6, 0x76, 0x87, 0xb7, 0x12, + 0x2b, 0xeb, 0x97, 0x9c, 0x44, 0x4f, 0x30, 0x18, 0xcf, 0x6d, 0xf9, 0xce, 0x6a, 0xe0, 0x98, 0xb6, + 0xa8, 0xab, 0xe4, 0xab, 0xe8, 0x44, 0xa1, 0x25, 0xbe, 0xe8, 0x1f, 0x4d, 0xbe, 0xa6, 0xe0, 0x4d, + 0x95, 0xc1, 0x33, 0x6d, 0xcf, 0x6c, 0x02, 0xae, 0x13, 0x1c, 0xd7, 0xad, 0x2d, 0xdf, 0x69, 0x6f, + 0x06, 0x4e, 0x82, 0x2c, 0xe7, 0x93, 0x4c, 0x43, 0x84, 0xe8, 0x67, 0x91, 0x4a, 0x09, 0xbc, 0xb7, + 0x85, 0xea, 0x98, 0x6f, 0x8e, 0xef, 0x97, 0x38, 0xdb, 0x92, 0xc2, 0xd9, 0x54, 0xa6, 0xbc, 0xed, + 0x99, 0x67, 0x00, 0xeb, 0x54, 0x0a, 0x6b, 0x9c, 0xea, 0x02, 0xaf, 0xc4, 0x3f, 0x59, 0x4d, 0xa4, + 0x50, 0x68, 0xf9, 0x6c, 0x64, 0x47, 0xe1, 0x07, 0x2c, 0x7c, 0xe4, 0xad, 0xd4, 0x09, 0x24, 0xeb, + 0x0f, 0x58, 0xf6, 0xd0, 0xb1, 0x5c, 0x13, 0x50, 0x9c, 0x93, 0xe7, 0x7e, 0xb6, 0xaf, 0x39, 0x03, + 0x3c, 0x4f, 0x02, 0x02, 0xcf, 0x8b, 0x69, 0x86, 0xb4, 0x03, 0xb1, 0xf2, 0xee, 0xe9, 0x95, 0x6c, + 0x36, 0x97, 0x17, 0x26, 0x3f, 0x94, 0xa7, 0x37, 0xe5, 0x7d, 0xad, 0xf0, 0xdf, 0x11, 0x3a, 0x66, + 0x09, 0x04, 0x88, 0x4d, 0x88, 0xc6, 0xec, 0xcd, 0x60, 0xcb, 0x8f, 0x52, 0x57, 0xd0, 0x64, 0x8f, + 0x13, 0x21, 0xf9, 0x54, 0xd0, 0xf5, 0xcd, 0x2b, 0xd9, 0x83, 0x20, 0x37, 0x23, 0xff, 0xde, 0x6b, + 0x2e, 0x6e, 0x74, 0xa3, 0xaf, 0x6c, 0x75, 0x68, 0x30, 0x0d, 0x78, 0xcd, 0xe1, 0xff, 0x2c, 0x87, + 0xce, 0x4b, 0x46, 0xb4, 0xdd, 0x73, 0x43, 0xe6, 0xc1, 0x82, 0xa1, 0x88, 0x0e, 0xb5, 0xed, 0xa6, + 0xeb, 0x3b, 0x37, 0xfc, 0xc8, 0xed, 0xbb, 0x61, 0x24, 0x52, 0xf6, 0x75, 0x51, 0xc4, 0xb2, 0x8d, + 0xf1, 0xa2, 0x3a, 0xc2, 0x99, 0x42, 0x03, 0x6c, 0xf8, 0xb3, 0xa5, 0xdb, 0x91, 0xf0, 0x90, 0x57, + 0xcf, 0x32, 0x5e, 0x88, 0x75, 0xb8, 0x97, 0xea, 0x1b, 0x2f, 0x2a, 0x7e, 0x62, 0xc8, 0x23, 0x7c, + 0x43, 0x2c, 0xaa, 0x7c, 0x33, 0x60, 0x74, 0xe5, 0x18, 0x49, 0x35, 0xc6, 0x41, 0x40, 0x5e, 0xbc, + 0x3d, 0x87, 0x46, 0x19, 0x0c, 0xfc, 0xba, 0x86, 0x50, 0xf2, 0x8c, 0x84, 0x17, 0xa4, 0x03, 0x15, + 0x1e, 0xb7, 0xf4, 0xc5, 0xca, 0x7e, 0x9c, 0x10, 0x21, 0x5f, 0x7b, 0xf7, 0x9f, 0x6f, 0x0f, 0x4f, + 0x63, 0xdd, 0x28, 0x7b, 0xed, 0x0b, 0xf1, 0xd7, 0x35, 0xf4, 0x58, 0x6c, 0x8a, 0xe7, 0xd5, 0xae, + 0x05, 0x82, 0x85, 0xaa, 0x6e, 0x00, 0x60, 0x91, 0x01, 0x98, 0xc5, 0xcd, 0x72, 0x00, 0xc6, 0x4e, + 0xd7, 0xd9, 0xc5, 0x3f, 0xd5, 0xe0, 0xd6, 0x93, 0x15, 0xef, 0xb1, 0x51, 0x3e, 0x90, 0xf4, 0xd5, + 0x48, 0xbf, 0x50, 0xdf, 0x00, 0x30, 0x5e, 0x62, 0x18, 0x97, 0xf1, 0xb9, 0x72, 0x8c, 0xed, 0xce, + 0x76, 0x9b, 0x1d, 0xb3, 0x8d, 0x1d, 0xf6, 0xcf, 0x2e, 0xfe, 0x93, 0xfc, 0xed, 0x0a, 0x0e, 0xb8, + 0xf8, 0xa3, 0x75, 0x51, 0x64, 0x4f, 0xfb, 0xfa, 0xc7, 0x06, 0xb6, 0x03, 0x12, 0x26, 0x23, 0xf1, + 0x2c, 0x7e, 0xa6, 0x06, 0x89, 0x36, 0xcd, 0x46, 0xc1, 0xc4, 0xd8, 0x81, 0x02, 0xb4, 0x8b, 0x6f, + 0x6b, 0x68, 0x0c, 0xe4, 0x56, 0x45, 0x86, 0x65, 0xe4, 0x68, 0xfd, 0x6c, 0x75, 0x47, 0x40, 0x78, + 0x86, 0x21, 0x3c, 0x8d, 0xa7, 0x8c, 0xf2, 0x97, 0xe5, 0x64, 0x41, 0xf0, 0xb7, 0x80, 0x05, 0x95, + 0xf7, 0xe4, 0x49, 0x44, 0x5f, 0xac, 0xec, 0x57, 0x6b, 0x41, 0xb0, 0x07, 0x89, 0x64, 0x41, 0x50, + 0x53, 0xd5, 0x82, 0x48, 0xbd, 0x20, 0xe8, 0x0b, 0x55, 0xdd, 0x6a, 0x2d, 0x08, 0x06, 0x80, 0x2f, + 0x88, 0x9f, 0x69, 0x68, 0x52, 0x2a, 0xc4, 0xe3, 0x15, 0x45, 0x8e, 0xc8, 0x1f, 0x0d, 0xf4, 0x8b, + 0x83, 0x98, 0x00, 0x52, 0x83, 0x21, 0x5d, 0xc2, 0x8b, 0x52, 0xa4, 0x45, 0x3d, 0x1a, 0xff, 0x5c, + 0x48, 0x35, 0x39, 0x97, 0xf8, 0x42, 0xed, 0xd1, 0x05, 0xde, 0x95, 0x01, 0x2c, 0x6a, 0xad, 0xe2, + 0x02, 0x5c, 0x1e, 0xe4, 0x24, 0xdd, 0x98, 0xd8, 0xac, 0x9a, 0xc4, 0x94, 0xa2, 0xae, 0x4c, 0xb7, + 0xb4, 0x08, 0x5e, 0x95, 0x6e, 0x6c, 0xd0, 0x24, 0xdd, 0x68, 0xe1, 0x98, 0x57, 0xbb, 0xae, 0x93, + 0x6e, 0xe9, 0xb2, 0x50, 0x91, 0x6e, 0x14, 0x00, 0x8f, 0xc4, 0x6f, 0x34, 0x71, 0x6b, 0x91, 0x88, + 0xaf, 0x4f, 0x55, 0x4c, 0x87, 0x54, 0xb9, 0xd6, 0x9f, 0x1e, 0xd0, 0x6a, 0x80, 0x89, 0xcc, 0x8b, + 0xc6, 0xf8, 0x8f, 0x1a, 0x1c, 0xe7, 0x8b, 0x9e, 0xf1, 0xa5, 0x41, 0x70, 0x08, 0xf0, 0x4f, 0x0d, + 0x66, 0x04, 0xd8, 0x5f, 0x60, 0xd8, 0x4d, 0x7c, 0x65, 0x00, 0xec, 0xc6, 0x8e, 0x38, 0x30, 0xa6, + 0x6b, 0xf1, 0x37, 0x34, 0x74, 0x38, 0xad, 0x7b, 0x62, 0x45, 0xa1, 0xcd, 0x2a, 0xb2, 0xfa, 0x52, + 0x8d, 0x9e, 0x80, 0x77, 0x8e, 0xe1, 0x6d, 0xe0, 0x69, 0x29, 0x5e, 0xa1, 0xa8, 0x7c, 0x53, 0x43, + 0x87, 0x52, 0xe6, 0xaa, 0xcd, 0x21, 0xa3, 0x6c, 0xea, 0x67, 0xab, 0x3b, 0x02, 0x90, 0x25, 0x06, + 0xe4, 0x0c, 0x9e, 0x55, 0x01, 0xe1, 0x99, 0xfa, 0x8b, 0xb8, 0x30, 0xe6, 0xc4, 0x25, 0x65, 0x61, + 0x94, 0x4b, 0x9c, 0xca, 0xc2, 0x58, 0xa2, 0x36, 0x92, 0xa7, 0x19, 0x56, 0x03, 0x2f, 0xab, 0xb0, + 0x16, 0x4f, 0x0c, 0xef, 0x97, 0xc9, 0xad, 0xe2, 0xcc, 0xf0, 0xf1, 0xfa, 0x58, 0x72, 0xa7, 0x86, + 0xcb, 0x1f, 0xc0, 0x12, 0xc8, 0x5c, 0x63, 0x64, 0x3e, 0x81, 0x9f, 0xad, 0x45, 0xa6, 0xec, 0xe4, + 0xf0, 0x07, 0xb1, 0xfc, 0x8a, 0x6a, 0x90, 0x6a, 0xf9, 0x95, 0x4a, 0x68, 0xaa, 0xe5, 0x57, 0xae, + 0x7b, 0x91, 0xe7, 0x19, 0x99, 0xab, 0xf8, 0x93, 0xa5, 0xd5, 0xae, 0xa0, 0x60, 0xc9, 0x57, 0xdf, + 0x7b, 0x62, 0xae, 0x4a, 0x34, 0x1e, 0xd5, 0x5c, 0xa9, 0x55, 0x2f, 0xd5, 0x5c, 0x55, 0x88, 0x5d, + 0x15, 0x67, 0xbc, 0x72, 0xad, 0x2a, 0xc5, 0x11, 0xbf, 0x23, 0x5e, 0x6b, 0x33, 0x3a, 0x11, 0x5e, + 0x56, 0x64, 0x50, 0x51, 0xc6, 0xd2, 0x5b, 0x75, 0xbb, 0xd7, 0xab, 0xe9, 0xdc, 0x84, 0x1f, 0x23, + 0x8c, 0x1d, 0x2e, 0x90, 0xed, 0xe2, 0x9f, 0x08, 0xa8, 0x19, 0x49, 0x07, 0x2b, 0xc6, 0x96, 0xe9, + 0x56, 0xba, 0x51, 0xbb, 0x7f, 0xad, 0xf5, 0x9d, 0x15, 0x9c, 0x52, 0x39, 0xf3, 0x5d, 0x0d, 0x1d, + 0xcb, 0x5d, 0xdb, 0xf1, 0xb9, 0xf2, 0xb1, 0x0b, 0x8a, 0x94, 0x7e, 0xbe, 0x5e, 0x67, 0x40, 0xb9, + 0xcc, 0x50, 0x2e, 0xe2, 0x79, 0x29, 0xca, 0xbc, 0xfc, 0x84, 0x7f, 0x2c, 0xee, 0x57, 0x59, 0x55, + 0x47, 0x75, 0xbf, 0x92, 0x0a, 0x53, 0xaa, 0xfb, 0x95, 0x5c, 0xaa, 0x22, 0x2b, 0x0c, 0xe9, 0x39, + 0xbc, 0x54, 0x8e, 0x34, 0x27, 0x3e, 0xe1, 0x5f, 0xc6, 0x47, 0xc9, 0xac, 0x3c, 0x83, 0xd5, 0xb7, + 0x3b, 0x89, 0x26, 0xa5, 0xaf, 0x0c, 0x60, 0x01, 0x80, 0x2f, 0x33, 0xc0, 0x97, 0xf0, 0x8a, 0x3c, + 0x5b, 0xf3, 0x2a, 0x52, 0x7a, 0x79, 0xfd, 0x55, 0x4b, 0xa9, 0x7a, 0x05, 0xed, 0x46, 0x75, 0x2d, + 0x54, 0xe9, 0x4d, 0xaa, 0x6b, 0xa1, 0x52, 0x24, 0x22, 0x37, 0x19, 0x95, 0xe7, 0xf0, 0xb5, 0xca, + 0x2c, 0xa1, 0x35, 0x9e, 0xf3, 0xe0, 0x35, 0x5e, 0x56, 0x16, 0xbf, 0xa7, 0xa5, 0xfe, 0x1e, 0x54, + 0xc8, 0x19, 0xaa, 0xda, 0x21, 0x91, 0x89, 0x54, 0xb5, 0x43, 0x26, 0x1c, 0x91, 0x27, 0x19, 0x85, + 0x39, 0x4c, 0x4a, 0x6f, 0xb6, 0xb1, 0xd0, 0x82, 0x7f, 0xa4, 0x65, 0xde, 0x4e, 0x63, 0x88, 0x46, + 0xd5, 0x41, 0x24, 0x0f, 0xf2, 0x42, 0x7d, 0x03, 0x80, 0x79, 0x9e, 0xc1, 0x5c, 0xc0, 0x73, 0x8a, + 0x8d, 0x34, 0x06, 0x6a, 0xae, 0xdd, 0xf9, 0x47, 0x63, 0xe8, 0x9d, 0x7b, 0x8d, 0xa1, 0x3b, 0xf7, + 0x1a, 0xda, 0xdd, 0x7b, 0x0d, 0xed, 0xef, 0xf7, 0x1a, 0xda, 0x5b, 0xf7, 0x1b, 0x43, 0x77, 0xef, + 0x37, 0x86, 0xfe, 0x7c, 0xbf, 0x31, 0xf4, 0x85, 0x56, 0x46, 0x9a, 0xa3, 0x1e, 0x97, 0x83, 0x5b, + 0xb7, 0xba, 0xeb, 0x5d, 0xdb, 0x13, 0x23, 0xc0, 0x18, 0x4c, 0xa6, 0xeb, 0x8c, 0xb1, 0x3f, 0xba, + 0xbe, 0xf4, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf9, 0x36, 0x5e, 0x88, 0x6e, 0x2e, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -2216,6 +2294,7 @@ type QueryClient interface { QueryAllReserveStats(ctx context.Context, in *QueryAllReserveStatsRequest, opts ...grpc.CallOption) (*QueryAllReserveStatsResponse, error) QueryFundModBalByAssetPool(ctx context.Context, in *QueryFundModBalByAssetPoolRequest, opts ...grpc.CallOption) (*QueryFundModBalByAssetPoolResponse, error) QueryLendInterest(ctx context.Context, in *QueryLendInterestRequest, opts ...grpc.CallOption) (*QueryLendInterestResponse, error) + QueryBorrowInterest(ctx context.Context, in *QueryBorrowInterestRequest, opts ...grpc.CallOption) (*QueryBorrowInterestResponse, error) } type queryClient struct { @@ -2460,6 +2539,15 @@ func (c *queryClient) QueryLendInterest(ctx context.Context, in *QueryLendIntere return out, nil } +func (c *queryClient) QueryBorrowInterest(ctx context.Context, in *QueryBorrowInterestRequest, opts ...grpc.CallOption) (*QueryBorrowInterestResponse, error) { + out := new(QueryBorrowInterestResponse) + err := c.cc.Invoke(ctx, "/comdex.lend.v1beta1.Query/QueryBorrowInterest", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // QueryServer is the server API for Query service. type QueryServer interface { QueryLends(context.Context, *QueryLendsRequest) (*QueryLendsResponse, error) @@ -2488,6 +2576,7 @@ type QueryServer interface { QueryAllReserveStats(context.Context, *QueryAllReserveStatsRequest) (*QueryAllReserveStatsResponse, error) QueryFundModBalByAssetPool(context.Context, *QueryFundModBalByAssetPoolRequest) (*QueryFundModBalByAssetPoolResponse, error) QueryLendInterest(context.Context, *QueryLendInterestRequest) (*QueryLendInterestResponse, error) + QueryBorrowInterest(context.Context, *QueryBorrowInterestRequest) (*QueryBorrowInterestResponse, error) } // UnimplementedQueryServer can be embedded to have forward compatible implementations. @@ -2572,6 +2661,9 @@ func (*UnimplementedQueryServer) QueryFundModBalByAssetPool(ctx context.Context, func (*UnimplementedQueryServer) QueryLendInterest(ctx context.Context, req *QueryLendInterestRequest) (*QueryLendInterestResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method QueryLendInterest not implemented") } +func (*UnimplementedQueryServer) QueryBorrowInterest(ctx context.Context, req *QueryBorrowInterestRequest) (*QueryBorrowInterestResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method QueryBorrowInterest not implemented") +} func RegisterQueryServer(s grpc1.Server, srv QueryServer) { s.RegisterService(&_Query_serviceDesc, srv) @@ -3045,6 +3137,24 @@ func _Query_QueryLendInterest_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _Query_QueryBorrowInterest_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryBorrowInterestRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).QueryBorrowInterest(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/comdex.lend.v1beta1.Query/QueryBorrowInterest", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).QueryBorrowInterest(ctx, req.(*QueryBorrowInterestRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Query_serviceDesc = grpc.ServiceDesc{ ServiceName: "comdex.lend.v1beta1.Query", HandlerType: (*QueryServer)(nil), @@ -3153,6 +3263,10 @@ var _Query_serviceDesc = grpc.ServiceDesc{ MethodName: "QueryLendInterest", Handler: _Query_QueryLendInterest_Handler, }, + { + MethodName: "QueryBorrowInterest", + Handler: _Query_QueryBorrowInterest_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "comdex/lend/v1beta1/query.proto", @@ -5011,6 +5125,66 @@ func (m *QueryLendInterestResponse) MarshalToSizedBuffer(dAtA []byte) (int, erro return len(dAtA) - i, nil } +func (m *QueryBorrowInterestRequest) 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 *QueryBorrowInterestRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryBorrowInterestRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryBorrowInterestResponse) 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 *QueryBorrowInterestResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryBorrowInterestResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.PoolInterest) > 0 { + for iNdEx := len(m.PoolInterest) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PoolInterest[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { offset -= sovQuery(v) base := offset @@ -5733,6 +5907,30 @@ func (m *QueryLendInterestResponse) Size() (n int) { return n } +func (m *QueryBorrowInterestRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryBorrowInterestResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.PoolInterest) > 0 { + for _, e := range m.PoolInterest { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + func sovQuery(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -10379,6 +10577,140 @@ func (m *QueryLendInterestResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *QueryBorrowInterestRequest) 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 ErrIntOverflowQuery + } + 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: QueryBorrowInterestRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryBorrowInterestRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryBorrowInterestResponse) 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 ErrIntOverflowQuery + } + 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: QueryBorrowInterestResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryBorrowInterestResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PoolInterest", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PoolInterest = append(m.PoolInterest, PoolInterestB{}) + if err := m.PoolInterest[len(m.PoolInterest)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipQuery(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/lend/types/query.pb.gw.go b/x/lend/types/query.pb.gw.go index a4963b5c4..c461af7b3 100644 --- a/x/lend/types/query.pb.gw.go +++ b/x/lend/types/query.pb.gw.go @@ -1367,6 +1367,24 @@ func local_request_Query_QueryLendInterest_0(ctx context.Context, marshaler runt } +func request_Query_QueryBorrowInterest_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryBorrowInterestRequest + var metadata runtime.ServerMetadata + + msg, err := client.QueryBorrowInterest(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_QueryBorrowInterest_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryBorrowInterestRequest + var metadata runtime.ServerMetadata + + msg, err := server.QueryBorrowInterest(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterQueryHandlerServer registers the http handlers for service Query to "mux". // UnaryRPC :call QueryServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -1971,6 +1989,29 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv }) + mux.Handle("GET", pattern_Query_QueryBorrowInterest_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_QueryBorrowInterest_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_QueryBorrowInterest_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -2532,6 +2573,26 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) + mux.Handle("GET", pattern_Query_QueryBorrowInterest_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_QueryBorrowInterest_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_QueryBorrowInterest_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -2587,6 +2648,8 @@ var ( pattern_Query_QueryFundModBalByAssetPool_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"comdex", "lend", "v1beta1", "fund_mod_bal_by_asset_pool", "asset_id", "pool_id"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_QueryLendInterest_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"comdex", "lend", "v1beta1", "lend_interest"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_QueryBorrowInterest_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"comdex", "lend", "v1beta1", "borrow_interest"}, "", runtime.AssumeColonVerbOpt(false))) ) var ( @@ -2641,4 +2704,6 @@ var ( forward_Query_QueryFundModBalByAssetPool_0 = runtime.ForwardResponseMessage forward_Query_QueryLendInterest_0 = runtime.ForwardResponseMessage + + forward_Query_QueryBorrowInterest_0 = runtime.ForwardResponseMessage ) From a2160e368cb7c1528e95e350b96aa0a43f439969 Mon Sep 17 00:00:00 2001 From: Pratik Date: Thu, 16 Feb 2023 10:34:47 +0530 Subject: [PATCH 06/12] refactoring error mssg --- x/asset/client/cli/parse.go | 2 +- x/asset/client/cli/tx.go | 1 + x/lend/client/cli/parse.go | 2 +- x/lend/client/cli/tx.go | 12 +++++------- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/x/asset/client/cli/parse.go b/x/asset/client/cli/parse.go index 1b4d5ca7d..ed8302e21 100644 --- a/x/asset/client/cli/parse.go +++ b/x/asset/client/cli/parse.go @@ -120,7 +120,7 @@ func parseAssetsPairsMappingFlags(fs *pflag.FlagSet) (*createAddAssetsPairsMappi addAssetsPairsMappingFile, _ := fs.GetString(FlagAddAssetsPairsMappingFile) if addAssetsPairsMappingFile == "" { - return nil, fmt.Errorf("must pass in add asset mapping json using the --%s flag", FlagAddAssetMappingFile) + return nil, fmt.Errorf("must pass in add asset pairs mapping json using the --%s flag", FlagAddAssetsPairsMappingFile) } contents, err := os.ReadFile(addAssetsPairsMappingFile) diff --git a/x/asset/client/cli/tx.go b/x/asset/client/cli/tx.go index 6c365677c..d6069583f 100644 --- a/x/asset/client/cli/tx.go +++ b/x/asset/client/cli/tx.go @@ -824,6 +824,7 @@ Sample json content "decimals" :"1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000", "is_on_chain" :"0,0,0,0,0,0,0,0,1", "asset_oracle_price" :"1,1,0,1,0,0,0,0,0", + "is_cdp_mintable" :"1,1,0,1,0,0,0,0,0", "asset_out" :"3,3,3,3,3,3,3,3,3", "title" :"Add assets and pairs for applications to be deployed on comdex testnet", "description" :"This proposal it to add following assets ATOM,CMDX,CMST,OSMO,cATOM,cCMDX,cCMST,cOSMO,HARBOR to be then used on harbor, commodo and cswap apps", diff --git a/x/lend/client/cli/parse.go b/x/lend/client/cli/parse.go index bc4ed60b0..db7cd5dd6 100644 --- a/x/lend/client/cli/parse.go +++ b/x/lend/client/cli/parse.go @@ -159,7 +159,7 @@ func parseAddPoolPairsFlags(fs *pflag.FlagSet) (*addLendPoolPairsInputs, error) addPoolPairsParamsFile, _ := fs.GetString(FlagAddLendPoolPairsFile) if addPoolPairsParamsFile == "" { - return nil, fmt.Errorf("must pass in a add new pool json using the --%s flag", FlagAddLendPoolFile) + return nil, fmt.Errorf("must pass in a add new pool pairs json using the --%s flag", FlagAddLendPoolPairsFile) } contents, err := os.ReadFile(addPoolPairsParamsFile) diff --git a/x/lend/client/cli/tx.go b/x/lend/client/cli/tx.go index 11695f8bd..873e5e2ae 100644 --- a/x/lend/client/cli/tx.go +++ b/x/lend/client/cli/tx.go @@ -1156,11 +1156,6 @@ func NewCreateLendPoolPairs(clientCtx client.Context, txf tx.Factory, fs *flag.F return txf, nil, err } - //minUSDValue, err := ParseUint64SliceFromString(newLendPool.MinUSDValueLeft, ",") - //if err != nil { - // return txf, nil, err - //} - supplyCap, err := ParseDecSliceFromString(newLendPool.SupplyCap, ",") if err != nil { return txf, nil, err @@ -1181,12 +1176,15 @@ func NewCreateLendPoolPairs(clientCtx client.Context, txf tx.Factory, fs *flag.F } assetData = append(assetData, &assetDataNew) } - minUSDValue := sdk.NewUintFromString(newLendPool.MinUSDValueLeft) + minUSDValueLeft, err := strconv.ParseUint(newLendPool.MinUSDValueLeft, 10, 64) + if err != nil { + return txf, nil, err + } pool = types.PoolPairs{ ModuleName: moduleName, CPoolName: cPoolName, AssetData: assetData, - MinUsdValueLeft: minUSDValue.Uint64(), + MinUsdValueLeft: minUSDValueLeft, } from := clientCtx.GetFromAddress() From 870d4a3fe4220700082544fb41c8134ecaaa9382 Mon Sep 17 00:00:00 2001 From: Pratik Date: Thu, 16 Feb 2023 16:51:47 +0530 Subject: [PATCH 07/12] combining asset-rates proposal, pool and pairs proposal in a single proposal --- app/app.go | 1 + proto/comdex/lend/v1beta1/gov.proto | 6 + proto/comdex/lend/v1beta1/lend.proto | 89 + x/lend/client/cli/flags.go | 45 +- x/lend/client/cli/parse.go | 51 +- x/lend/client/cli/tx.go | 154 + x/lend/client/proposal_handler.go | 1 + x/lend/client/rest/tx.go | 7 + x/lend/handler.go | 6 + x/lend/keeper/gov.go | 4 + x/lend/keeper/pair.go | 39 + x/lend/types/codec.go | 2 + x/lend/types/gov.go | 33 + x/lend/types/gov.pb.go | 339 +- x/lend/types/lend.pb.go | 5686 +++++++++++++++----------- x/lend/types/pair.go | 52 + 16 files changed, 4132 insertions(+), 2383 deletions(-) diff --git a/app/app.go b/app/app.go index 573bbf125..70c98c730 100644 --- a/app/app.go +++ b/app/app.go @@ -205,6 +205,7 @@ func GetGovProposalHandlers() []govclient.ProposalHandler { lendclient.AddMultipleAssetToPairHandler, lendclient.AddMultipleLendPairsHandler, lendclient.AddPoolPairsHandler, + lendclient.AddAssetRatesPoolPairsHandler, paramsclient.ProposalHandler, distrclient.ProposalHandler, upgradeclient.ProposalHandler, diff --git a/proto/comdex/lend/v1beta1/gov.proto b/proto/comdex/lend/v1beta1/gov.proto index 70bf77690..81808a538 100644 --- a/proto/comdex/lend/v1beta1/gov.proto +++ b/proto/comdex/lend/v1beta1/gov.proto @@ -53,4 +53,10 @@ message AddPoolPairsProposal { string title = 1 [(gogoproto.moretags) = "yaml:\"title\""]; string description = 2 [(gogoproto.moretags) = "yaml:\"description\""]; PoolPairs PoolPairs = 3 [(gogoproto.nullable) = false]; +} + +message AddAssetRatesPoolPairsProposal { + string title = 1 [(gogoproto.moretags) = "yaml:\"title\""]; + string description = 2 [(gogoproto.moretags) = "yaml:\"description\""]; + AssetRatesPoolPairs AssetRatesPoolPairs = 3 [(gogoproto.nullable) = false]; } \ No newline at end of file diff --git a/proto/comdex/lend/v1beta1/lend.proto b/proto/comdex/lend/v1beta1/lend.proto index aec247970..ca8cdf004 100644 --- a/proto/comdex/lend/v1beta1/lend.proto +++ b/proto/comdex/lend/v1beta1/lend.proto @@ -651,3 +651,92 @@ message PoolInterestB { (gogoproto.moretags) = "yaml:\"pool_interest_data\"" ]; } + +message AssetRatesPoolPairs { + uint64 asset_id = 1 [ + (gogoproto.customname) = "AssetID", + (gogoproto.moretags) = "yaml:\"asset_id\"" + ]; + string u_optimal = 2 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false, + (gogoproto.moretags) = "yaml:\"u_optimal\"" + ]; + string base = 3 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false, + (gogoproto.moretags) = "yaml:\"base\"" + ]; + string slope1 = 4 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false, + (gogoproto.moretags) = "yaml:\"slope1\"" + ]; + string slope2 = 5 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false, + (gogoproto.moretags) = "yaml:\"slope2\"" + ]; + bool enable_stable_borrow = 6 [ + (gogoproto.moretags) = "yaml:\"enable_stable_borrow\"" + ]; + string stable_base = 7 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false, + (gogoproto.moretags) = "yaml:\"stable_base\"" + ]; + string stable_slope1 = 8 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false, + (gogoproto.moretags) = "yaml:\"stable_slope1\"" + ]; + string stable_slope2 = 9 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false, + (gogoproto.moretags) = "yaml:\"stable_slope2\"" + ]; + string ltv = 10 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false, + (gogoproto.moretags) = "yaml:\"ltv\"" + ]; + string liquidation_threshold = 11 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false, + (gogoproto.moretags) = "yaml:\"liquidation_threshold\"" + ]; + string liquidation_penalty = 12 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false, + (gogoproto.moretags) = "yaml:\"liquidation_penalty\"" + ]; + string liquidation_bonus = 13 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false, + (gogoproto.moretags) = "yaml:\"liquidation_bonus\"" + ]; + string reserve_factor = 14 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false, + (gogoproto.moretags) = "yaml:\"reserve_factor\"" + ]; + uint64 c_asset_id = 15 [ + (gogoproto.customname) = "CAssetID", + (gogoproto.moretags) = "yaml:\"c_asset_id\"" + ]; + + string module_name = 16 [ + (gogoproto.customname) = "ModuleName", + (gogoproto.moretags) = "yaml:\"module_name\"" + ]; + string cpool_name = 17 [ + (gogoproto.customname) = "CPoolName", + (gogoproto.moretags) = "yaml:\"cpool_name\"" + ]; + repeated AssetDataPoolMapping asset_data = 18 [ + (gogoproto.customname) = "AssetData", + (gogoproto.moretags) = "yaml:\"asset_data\"" + ]; + uint64 min_usd_value_left = 19 [ + (gogoproto.moretags) = "yaml:\"min_usd_value_left\""]; +} diff --git a/x/lend/client/cli/flags.go b/x/lend/client/cli/flags.go index 1e8986afb..8aa46962f 100644 --- a/x/lend/client/cli/flags.go +++ b/x/lend/client/cli/flags.go @@ -10,11 +10,12 @@ import ( ) const ( - FlagNewLendPairFile = "add-lend-pair-file" - FlagAddLendPoolFile = "add-lend-pool-file" - FlagAddAssetRatesParamsFile = "add-asset-rates-params-file" - FlagSetAuctionParamsFile = "add-auction-params-file" - FlagAddLendPoolPairsFile = "add-lend-pool-pairs-file" + FlagNewLendPairFile = "add-lend-pair-file" + FlagAddLendPoolFile = "add-lend-pool-file" + FlagAddAssetRatesParamsFile = "add-asset-rates-params-file" + FlagSetAuctionParamsFile = "add-auction-params-file" + FlagAddLendPoolPairsFile = "add-lend-pool-pairs-file" + FlagAddAssetRatesPoolPairsFile = "add-asset-rates-pool-pairs-file" ) func ParseUint64SliceFromString(s string, separator string) ([]uint64, error) { @@ -76,6 +77,13 @@ func FlagSetAddLendPoolPairsMapping() *flag.FlagSet { return fs } +func FlagSetAddAssetRatesPoolPairsMapping() *flag.FlagSet { + fs := flag.NewFlagSet("", flag.ContinueOnError) + + fs.String(FlagAddAssetRatesPoolPairsFile, "", "add new lend asset rates, pool pairs json file path") + return fs +} + func FlagSetAddAssetRatesParamsMapping() *flag.FlagSet { fs := flag.NewFlagSet("", flag.ContinueOnError) @@ -158,3 +166,30 @@ type addNewAuctionParamsInputs struct { Description string Deposit string } + +type addAssetRatesPoolPairsInputs struct { + AssetID string `json:"asset_id"` + UOptimal string `json:"u_optimal"` + Base string `json:"base"` + Slope1 string `json:"slope_1"` + Slope2 string `json:"slope_2"` + EnableStableBorrow string `json:"enable_stable_borrow"` + StableBase string `json:"stable_base"` + StableSlope1 string `json:"stable_slope_1"` + StableSlope2 string `json:"stable_slope_2"` + LTV string `json:"ltv"` + LiquidationThreshold string `json:"liquidation_threshold"` + LiquidationPenalty string `json:"liquidation_penalty"` + LiquidationBonus string `json:"liquidation_bonus"` + ReserveFactor string `json:"reserve_factor"` + CAssetID string `json:"c_asset_id"` + ModuleName string `json:"module_name"` + AssetIDs string `json:"asset_ids"` + AssetTransitType string `json:"asset_transit_type"` + SupplyCap string `json:"supply_cap"` + CPoolName string `json:"c_pool_name"` + MinUSDValueLeft string `json:"min_usd_value_left"` + Title string + Description string + Deposit string +} diff --git a/x/lend/client/cli/parse.go b/x/lend/client/cli/parse.go index db7cd5dd6..21fc8652e 100644 --- a/x/lend/client/cli/parse.go +++ b/x/lend/client/cli/parse.go @@ -10,11 +10,12 @@ import ( ) type ( - XAddNewLendPairsInputs addNewLendPairsInputs - XAddLendPoolInputs addLendPoolInputs - XAddAssetRatesParamsInputs addAssetRatesParamsInputs - XSetAuctionParamsInputs addNewAuctionParamsInputs - XAddLendPoolPairsInputs addLendPoolPairsInputs + XAddNewLendPairsInputs addNewLendPairsInputs + XAddLendPoolInputs addLendPoolInputs + XAddAssetRatesParamsInputs addAssetRatesParamsInputs + XSetAuctionParamsInputs addNewAuctionParamsInputs + XAddLendPoolPairsInputs addLendPoolPairsInputs + XAddAssetRatesLendPoolPairsInputs addAssetRatesPoolPairsInputs ) type XAddNewLendPairsInputsExceptions struct { @@ -32,6 +33,11 @@ type XAddPoolPairsInputsExceptions struct { Other *string // Other won't raise an error } +type XAddAssetRatesPoolPairsInputsExceptions struct { + XAddAssetRatesLendPoolPairsInputs + Other *string // Other won't raise an error +} + type XAddAssetRatesParamsInputsExceptions struct { XAddAssetRatesParamsInputs Other *string // Other won't raise an error @@ -83,6 +89,19 @@ func (release *addLendPoolPairsInputs) UnmarshalJSON(data []byte) error { return nil } +func (release *addAssetRatesPoolPairsInputs) UnmarshalJSON(data []byte) error { + var addPoolParamsE XAddAssetRatesPoolPairsInputsExceptions + dec := json.NewDecoder(bytes.NewReader(data)) + dec.DisallowUnknownFields() // Force + + if err := dec.Decode(&addPoolParamsE); err != nil { + return err + } + + *release = addAssetRatesPoolPairsInputs(addPoolParamsE.XAddAssetRatesLendPoolPairsInputs) + return nil +} + func (release *addAssetRatesParamsInputs) UnmarshalJSON(data []byte) error { var addAssetRatesParamsE XAddAssetRatesParamsInputsExceptions dec := json.NewDecoder(bytes.NewReader(data)) @@ -176,6 +195,28 @@ func parseAddPoolPairsFlags(fs *pflag.FlagSet) (*addLendPoolPairsInputs, error) return addPoolPairsParams, nil } +func parseAddAssetratesPoolPairsFlags(fs *pflag.FlagSet) (*addAssetRatesPoolPairsInputs, error) { + addPoolPairsParams := &addAssetRatesPoolPairsInputs{} + addPoolPairsParamsFile, _ := fs.GetString(FlagAddAssetRatesPoolPairsFile) + + if addPoolPairsParamsFile == "" { + return nil, fmt.Errorf("must pass in a add new asset rates, pool & pairs json using the --%s flag", FlagAddAssetRatesPoolPairsFile) + } + + contents, err := os.ReadFile(addPoolPairsParamsFile) + if err != nil { + return nil, err + } + + // make exception if unknown field exists + err = addPoolPairsParams.UnmarshalJSON(contents) + if err != nil { + return nil, err + } + + return addPoolPairsParams, nil +} + func parseAssetRateStatsFlags(fs *pflag.FlagSet) (*addAssetRatesParamsInputs, error) { addAssetRatesParams := &addAssetRatesParamsInputs{} addAssetRatesParamsFile, _ := fs.GetString(FlagAddAssetRatesParamsFile) diff --git a/x/lend/client/cli/tx.go b/x/lend/client/cli/tx.go index 873e5e2ae..4357f3a91 100644 --- a/x/lend/client/cli/tx.go +++ b/x/lend/client/cli/tx.go @@ -1203,3 +1203,157 @@ func NewCreateLendPoolPairs(clientCtx client.Context, txf tx.Factory, fs *flag.F return txf, msg, nil } + +func CmdAddAssetRatesPoolPairsProposal() *cobra.Command { + cmd := &cobra.Command{ + Use: "add-lend-asset-pool-pairs [flag] ", + Short: "Add lend asset rates, pool and pairs ", + Args: cobra.ExactArgs(0), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + txf := tx.NewFactoryCLI(clientCtx, cmd.Flags()).WithTxConfig(clientCtx.TxConfig).WithAccountRetriever(clientCtx.AccountRetriever) + + txf, msg, err := NewCreateAssetRatesPoolPairs(clientCtx, txf, cmd.Flags()) + if err != nil { + return err + } + + return tx.GenerateOrBroadcastTxWithFactory(clientCtx, txf, msg) + }, + } + + cmd.Flags().AddFlagSet(FlagSetAddAssetRatesPoolPairsMapping()) + cmd.Flags().String(cli.FlagProposal, "", "Proposal file path (if this path is given, other proposal flags are ignored)") + return cmd +} + +func NewCreateAssetRatesPoolPairs(clientCtx client.Context, txf tx.Factory, fs *flag.FlagSet) (tx.Factory, sdk.Msg, error) { + assetRatesPoolPairs, err := parseAddAssetratesPoolPairsFlags(fs) + if err != nil { + return txf, nil, fmt.Errorf("failed to parse add asset rates, lend pool file: %w", err) + } + + assetID, err := strconv.ParseUint(assetRatesPoolPairs.AssetID, 10, 64) + if err != nil { + return txf, nil, err + } + + uOptimal := assetRatesPoolPairs.UOptimal + + base := assetRatesPoolPairs.Base + + slope1 := assetRatesPoolPairs.Slope1 + + slope2 := assetRatesPoolPairs.Slope2 + + enableStableBorrow, err := strconv.ParseUint(assetRatesPoolPairs.EnableStableBorrow, 10, 64) + if err != nil { + return txf, nil, err + } + stableBase := assetRatesPoolPairs.StableBase + + stableSlope1 := assetRatesPoolPairs.StableSlope1 + + stableSlope2 := assetRatesPoolPairs.StableSlope2 + + ltv := assetRatesPoolPairs.LTV + + liquidationThreshold := assetRatesPoolPairs.LiquidationThreshold + + liquidationPenalty := assetRatesPoolPairs.LiquidationPenalty + + liquidationBonus := assetRatesPoolPairs.LiquidationBonus + + reserveFactor := assetRatesPoolPairs.ReserveFactor + + cAssetID, err := strconv.ParseUint(assetRatesPoolPairs.CAssetID, 10, 64) + if err != nil { + return txf, nil, err + } + + newUOptimal, _ := sdk.NewDecFromStr(uOptimal) + newBase, _ := sdk.NewDecFromStr(base) + newSlope1, _ := sdk.NewDecFromStr(slope1) + newSlope2, _ := sdk.NewDecFromStr(slope2) + newEnableStableBorrow := ParseBoolFromString(enableStableBorrow) + newStableBase, _ := sdk.NewDecFromStr(stableBase) + newStableSlope1, _ := sdk.NewDecFromStr(stableSlope1) + newStableSlope2, _ := sdk.NewDecFromStr(stableSlope2) + newLTV, _ := sdk.NewDecFromStr(ltv) + newLiquidationThreshold, _ := sdk.NewDecFromStr(liquidationThreshold) + newLiquidationPenalty, _ := sdk.NewDecFromStr(liquidationPenalty) + newLiquidationBonus, _ := sdk.NewDecFromStr(liquidationBonus) + newReserveFactor, _ := sdk.NewDecFromStr(reserveFactor) + + moduleName := assetRatesPoolPairs.ModuleName + cPoolName := assetRatesPoolPairs.CPoolName + + assetIDs, err := ParseUint64SliceFromString(assetRatesPoolPairs.AssetIDs, ",") + if err != nil { + return txf, nil, err + } + + supplyCap, err := ParseDecSliceFromString(assetRatesPoolPairs.SupplyCap, ",") + if err != nil { + return txf, nil, err + } + + assetTransitType, err := ParseUint64SliceFromString(assetRatesPoolPairs.AssetTransitType, ",") + if err != nil { + return txf, nil, err + } + var assetData []*types.AssetDataPoolMapping + + for i := range assetIDs { + assetDataNew := types.AssetDataPoolMapping{ + AssetID: assetIDs[i], + AssetTransitType: assetTransitType[i], + SupplyCap: supplyCap[i], + } + assetData = append(assetData, &assetDataNew) + } + minUSDValueLeft, err := strconv.ParseUint(assetRatesPoolPairs.MinUSDValueLeft, 10, 64) + if err != nil { + return txf, nil, err + } + + from := clientCtx.GetFromAddress() + deposit, err := sdk.ParseCoinsNormalized(assetRatesPoolPairs.Deposit) + if err != nil { + return txf, nil, err + } + + assetRatesPoolPairsE := types.AssetRatesPoolPairs{ + AssetID: assetID, + UOptimal: newUOptimal, + Base: newBase, + Slope1: newSlope1, + Slope2: newSlope2, + EnableStableBorrow: newEnableStableBorrow, + StableBase: newStableBase, + StableSlope1: newStableSlope1, + StableSlope2: newStableSlope2, + Ltv: newLTV, + LiquidationThreshold: newLiquidationThreshold, + LiquidationPenalty: newLiquidationPenalty, + LiquidationBonus: newLiquidationBonus, + ReserveFactor: newReserveFactor, + CAssetID: cAssetID, + ModuleName: moduleName, + CPoolName: cPoolName, + AssetData: assetData, + MinUsdValueLeft: minUSDValueLeft, + } + + content := types.NewAddassetRatesPoolPairs(assetRatesPoolPairs.Title, assetRatesPoolPairs.Description, assetRatesPoolPairsE) + + msg, err := govtypes.NewMsgSubmitProposal(content, deposit, from) + if err != nil { + return txf, nil, err + } + + return txf, msg, nil +} diff --git a/x/lend/client/proposal_handler.go b/x/lend/client/proposal_handler.go index 52180d910..8b47f6d29 100644 --- a/x/lend/client/proposal_handler.go +++ b/x/lend/client/proposal_handler.go @@ -16,4 +16,5 @@ var ( AddAuctionParamsHandler = govclient.NewProposalHandler(cli.CmdAddNewAuctionParamsProposal, rest.AddNewAuctionParamsProposalRESTHandler) AddMultipleLendPairsHandler = govclient.NewProposalHandler(cli.CmdAddNewMultipleLendPairsProposal, rest.AddNewPairsProposalRESTHandler) AddPoolPairsHandler = govclient.NewProposalHandler(cli.CmdAddPoolPairsProposal, rest.AddPoolPairsProposalRESTHandler) + AddAssetRatesPoolPairsHandler = govclient.NewProposalHandler(cli.CmdAddAssetRatesPoolPairsProposal, rest.AddAssetRatesPoolPairsProposalRESTHandler) ) diff --git a/x/lend/client/rest/tx.go b/x/lend/client/rest/tx.go index 1629193c2..c34328ae0 100644 --- a/x/lend/client/rest/tx.go +++ b/x/lend/client/rest/tx.go @@ -56,6 +56,13 @@ func AddPoolPairsProposalRESTHandler(clientCtx client.Context) govrest.ProposalR } } +func AddAssetRatesPoolPairsProposalRESTHandler(clientCtx client.Context) govrest.ProposalRESTHandler { + return govrest.ProposalRESTHandler{ + SubRoute: "add-asset-pool-pairs", + Handler: AddpoolRESTHandler(clientCtx), + } +} + func AddAssetToPairProposalRESTHandler(clientCtx client.Context) govrest.ProposalRESTHandler { return govrest.ProposalRESTHandler{ SubRoute: "add-asset-to-pair", diff --git a/x/lend/handler.go b/x/lend/handler.go index f543990ed..95dd00f81 100644 --- a/x/lend/handler.go +++ b/x/lend/handler.go @@ -99,6 +99,8 @@ func NewLendHandler(k keeper.Keeper) govtypes.Handler { return HandleAddAuctionParamsProposal(ctx, k, c) case *types.AddPoolPairsProposal: return handleAddPoolPairsProposal(ctx, k, c) + case *types.AddAssetRatesPoolPairsProposal: + return handleAddAssetRatesPoolPairsProposal(ctx, k, c) default: return errors.Wrapf(types.ErrorUnknownProposalType, "%T", c) @@ -137,3 +139,7 @@ func HandleAddAuctionParamsProposal(ctx sdk.Context, k keeper.Keeper, p *types.A func handleAddPoolPairsProposal(ctx sdk.Context, k keeper.Keeper, p *types.AddPoolPairsProposal) error { return k.HandleAddPoolPairsRecords(ctx, p) } + +func handleAddAssetRatesPoolPairsProposal(ctx sdk.Context, k keeper.Keeper, p *types.AddAssetRatesPoolPairsProposal) error { + return k.HandleAddAssetRatesPoolPairsRecords(ctx, p) +} diff --git a/x/lend/keeper/gov.go b/x/lend/keeper/gov.go index 4b50805ae..d50d806b5 100644 --- a/x/lend/keeper/gov.go +++ b/x/lend/keeper/gov.go @@ -37,3 +37,7 @@ func (k Keeper) HandleMultipleAddWhitelistedPairsRecords(ctx sdk.Context, p *typ func (k Keeper) HandleAddPoolPairsRecords(ctx sdk.Context, p *types.AddPoolPairsProposal) error { return k.AddPoolsPairsRecords(ctx, p.PoolPairs) } + +func (k Keeper) HandleAddAssetRatesPoolPairsRecords(ctx sdk.Context, p *types.AddAssetRatesPoolPairsProposal) error { + return k.AddAssetRatesPoolPairs(ctx, p.AssetRatesPoolPairs) +} diff --git a/x/lend/keeper/pair.go b/x/lend/keeper/pair.go index e4cd26ff6..1443ecc6f 100644 --- a/x/lend/keeper/pair.go +++ b/x/lend/keeper/pair.go @@ -506,3 +506,42 @@ func (k Keeper) GetAllAssetRatesParams(ctx sdk.Context) (assetRatesParams []type } return assetRatesParams } + +func (k Keeper) AddAssetRatesPoolPairs(ctx sdk.Context, msg types.AssetRatesPoolPairs) error { + _, found := k.GetAssetRatesParams(ctx, msg.AssetID) + if found { + return types.ErrorAssetRatesParamsAlreadyExists + } + + assetRatesParams := types.AssetRatesParams{ + AssetID: msg.AssetID, + UOptimal: msg.UOptimal, + Base: msg.Base, + Slope1: msg.Slope1, + Slope2: msg.Slope2, + EnableStableBorrow: msg.EnableStableBorrow, + StableBase: msg.StableBase, + StableSlope1: msg.StableSlope1, + StableSlope2: msg.StableSlope2, + Ltv: msg.Ltv, + LiquidationThreshold: msg.LiquidationThreshold, + LiquidationPenalty: msg.LiquidationPenalty, + LiquidationBonus: msg.LiquidationBonus, + ReserveFactor: msg.ReserveFactor, + CAssetID: msg.CAssetID, + } + + k.SetAssetRatesParams(ctx, assetRatesParams) + + poolPairs := types.PoolPairs{ + ModuleName: msg.ModuleName, + CPoolName: msg.CPoolName, + AssetData: msg.AssetData, + MinUsdValueLeft: msg.MinUsdValueLeft, + } + err := k.AddPoolsPairsRecords(ctx, poolPairs) + if err != nil { + return err + } + return nil +} diff --git a/x/lend/types/codec.go b/x/lend/types/codec.go index 14b424e56..e60238763 100644 --- a/x/lend/types/codec.go +++ b/x/lend/types/codec.go @@ -31,6 +31,7 @@ func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&MsgCalculateInterestAndRewards{}, "comdex/lend/MsgCalculateInterestAndRewards", nil) cdc.RegisterConcrete(&MsgFundReserveAccounts{}, "comdex/lend/MsgFundReserveAccounts", nil) cdc.RegisterConcrete(&AddPoolPairsProposal{}, "comdex/lend/AddPoolPairsProposal", nil) + cdc.RegisterConcrete(&AddAssetRatesPoolPairsProposal{}, "comdex/lend/AddAssetRatesPoolPairsProposal", nil) } func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { @@ -44,6 +45,7 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { &MultipleLendPairsProposal{}, &AddMultipleAssetToPairProposal{}, &AddPoolPairsProposal{}, + &AddAssetRatesPoolPairsProposal{}, ) registry.RegisterImplementations( (*sdk.Msg)(nil), diff --git a/x/lend/types/gov.go b/x/lend/types/gov.go index 66fd27f7b..53a7c370d 100644 --- a/x/lend/types/gov.go +++ b/x/lend/types/gov.go @@ -13,6 +13,7 @@ var ( ProposalAddAuctionParams = "ProposalAddAuctionParams" ProposalAddMultipleAssetToPair = "ProposalAddMultipleAssetToPair" ProposalAddPoolPairs = "ProposalAddPoolPairs" + ProposalAddAssetRatesPoolPairs = "ProposalAddAssetRatesPoolPairs" ) func init() { @@ -32,6 +33,8 @@ func init() { govtypes.RegisterProposalTypeCodec(&AddAuctionParamsProposal{}, "comdex/AddAuctionParamsProposal") govtypes.RegisterProposalType(ProposalAddPoolPairs) govtypes.RegisterProposalTypeCodec(&AddPoolPairsProposal{}, "comdex/AddPoolPairsProposal") + govtypes.RegisterProposalType(ProposalAddAssetRatesPoolPairs) + govtypes.RegisterProposalTypeCodec(&AddAssetRatesPoolPairsProposal{}, "comdex/AddAssetRatesPoolPairsProposal") } var ( @@ -43,6 +46,7 @@ var ( _ govtypes.Content = &MultipleLendPairsProposal{} _ govtypes.Content = &AddMultipleAssetToPairProposal{} _ govtypes.Content = &AddPoolPairsProposal{} + _ govtypes.Content = &AddAssetRatesPoolPairsProposal{} ) func NewAddLendPairsProposal(title, description string, pairs Extended_Pair) govtypes.Content { @@ -276,3 +280,32 @@ func (p *AddPoolPairsProposal) ValidateBasic() error { return nil } + +func NewAddassetRatesPoolPairs(title, description string, AssetRatesPoolPairs AssetRatesPoolPairs) govtypes.Content { + return &AddAssetRatesPoolPairsProposal{ + Title: title, + Description: description, + AssetRatesPoolPairs: AssetRatesPoolPairs, + } +} + +func (p *AddAssetRatesPoolPairsProposal) ProposalRoute() string { + return RouterKey +} + +func (p *AddAssetRatesPoolPairsProposal) ProposalType() string { + return ProposalAddAssetRatesPoolPairs +} + +func (p *AddAssetRatesPoolPairsProposal) ValidateBasic() error { + err := govtypes.ValidateAbstract(p) + if err != nil { + return err + } + + if err = p.AssetRatesPoolPairs.Validate(); err != nil { + return err + } + + return nil +} diff --git a/x/lend/types/gov.pb.go b/x/lend/types/gov.pb.go index f0b081d9f..a101e3ff4 100644 --- a/x/lend/types/gov.pb.go +++ b/x/lend/types/gov.pb.go @@ -503,6 +503,66 @@ func (m *AddPoolPairsProposal) GetPoolPairs() PoolPairs { return PoolPairs{} } +type AddAssetRatesPoolPairsProposal struct { + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty" yaml:"title"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description"` + AssetRatesPoolPairs AssetRatesPoolPairs `protobuf:"bytes,3,opt,name=AssetRatesPoolPairs,proto3" json:"AssetRatesPoolPairs"` +} + +func (m *AddAssetRatesPoolPairsProposal) Reset() { *m = AddAssetRatesPoolPairsProposal{} } +func (m *AddAssetRatesPoolPairsProposal) String() string { return proto.CompactTextString(m) } +func (*AddAssetRatesPoolPairsProposal) ProtoMessage() {} +func (*AddAssetRatesPoolPairsProposal) Descriptor() ([]byte, []int) { + return fileDescriptor_4c877ba3eefc3a22, []int{8} +} +func (m *AddAssetRatesPoolPairsProposal) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AddAssetRatesPoolPairsProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AddAssetRatesPoolPairsProposal.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 *AddAssetRatesPoolPairsProposal) XXX_Merge(src proto.Message) { + xxx_messageInfo_AddAssetRatesPoolPairsProposal.Merge(m, src) +} +func (m *AddAssetRatesPoolPairsProposal) XXX_Size() int { + return m.Size() +} +func (m *AddAssetRatesPoolPairsProposal) XXX_DiscardUnknown() { + xxx_messageInfo_AddAssetRatesPoolPairsProposal.DiscardUnknown(m) +} + +var xxx_messageInfo_AddAssetRatesPoolPairsProposal proto.InternalMessageInfo + +func (m *AddAssetRatesPoolPairsProposal) GetTitle() string { + if m != nil { + return m.Title + } + return "" +} + +func (m *AddAssetRatesPoolPairsProposal) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *AddAssetRatesPoolPairsProposal) GetAssetRatesPoolPairs() AssetRatesPoolPairs { + if m != nil { + return m.AssetRatesPoolPairs + } + return AssetRatesPoolPairs{} +} + func init() { proto.RegisterType((*LendPairsProposal)(nil), "comdex.lend.v1beta1.LendPairsProposal") proto.RegisterType((*MultipleLendPairsProposal)(nil), "comdex.lend.v1beta1.MultipleLendPairsProposal") @@ -512,44 +572,46 @@ func init() { proto.RegisterType((*AddAssetRatesParams)(nil), "comdex.lend.v1beta1.AddAssetRatesParams") proto.RegisterType((*AddAuctionParamsProposal)(nil), "comdex.lend.v1beta1.AddAuctionParamsProposal") proto.RegisterType((*AddPoolPairsProposal)(nil), "comdex.lend.v1beta1.AddPoolPairsProposal") + proto.RegisterType((*AddAssetRatesPoolPairsProposal)(nil), "comdex.lend.v1beta1.AddAssetRatesPoolPairsProposal") } func init() { proto.RegisterFile("comdex/lend/v1beta1/gov.proto", fileDescriptor_4c877ba3eefc3a22) } var fileDescriptor_4c877ba3eefc3a22 = []byte{ - // 504 bytes of a gzipped FileDescriptorProto + // 528 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x95, 0xc1, 0x6a, 0x13, 0x41, - 0x18, 0xc7, 0x33, 0xb6, 0x15, 0xfa, 0x55, 0x21, 0x6e, 0x4b, 0xd9, 0x16, 0x9c, 0x94, 0x01, 0xb5, - 0x97, 0xee, 0x52, 0x7b, 0x11, 0x0f, 0x42, 0x02, 0x82, 0x07, 0x2b, 0x21, 0x0a, 0x82, 0x20, 0x32, - 0xc9, 0x4c, 0xd7, 0x81, 0xc9, 0xce, 0xb2, 0x33, 0x29, 0xed, 0x5b, 0xf8, 0x1a, 0x3e, 0x80, 0x37, - 0xbd, 0xf7, 0xe0, 0x21, 0x47, 0xbd, 0x04, 0x49, 0xde, 0xa0, 0xbe, 0x80, 0xcc, 0xec, 0xd4, 0x6e, - 0xec, 0x46, 0xc1, 0xc3, 0xf6, 0x96, 0xec, 0xf7, 0xff, 0xbe, 0xff, 0xff, 0xb7, 0xb3, 0x7c, 0x03, - 0x77, 0x07, 0x6a, 0xc8, 0xf8, 0x49, 0x2c, 0x79, 0xca, 0xe2, 0xe3, 0xfd, 0x3e, 0x37, 0x74, 0x3f, - 0x4e, 0xd4, 0x71, 0x94, 0xe5, 0xca, 0xa8, 0x60, 0xbd, 0x28, 0x47, 0xb6, 0x1c, 0xf9, 0xf2, 0xf6, - 0x46, 0xa2, 0x12, 0xe5, 0xea, 0xb1, 0xfd, 0x55, 0x48, 0xb7, 0x71, 0xd5, 0x24, 0xd7, 0xe7, 0xea, - 0xe4, 0x13, 0x82, 0x3b, 0xcf, 0x79, 0xca, 0xba, 0x54, 0xe4, 0xba, 0x9b, 0xab, 0x4c, 0x69, 0x2a, - 0x83, 0xfb, 0xb0, 0x62, 0x84, 0x91, 0x3c, 0x44, 0x3b, 0x68, 0x77, 0xb5, 0xd3, 0x3c, 0x9f, 0xb4, - 0x6e, 0x9d, 0xd2, 0xa1, 0x7c, 0x4c, 0xdc, 0x63, 0xd2, 0x2b, 0xca, 0xc1, 0x23, 0x58, 0x63, 0x5c, - 0x0f, 0x72, 0x91, 0x19, 0xa1, 0xd2, 0xf0, 0x86, 0x53, 0x6f, 0x9e, 0x4f, 0x5a, 0x41, 0xa1, 0x2e, - 0x15, 0x49, 0xaf, 0x2c, 0x0d, 0x9e, 0xc0, 0x4a, 0x66, 0x2d, 0xc3, 0xa5, 0x1d, 0xb4, 0xbb, 0xf6, - 0x90, 0x44, 0x15, 0x48, 0xd1, 0xd3, 0x13, 0xc3, 0x53, 0xc6, 0xd9, 0x3b, 0x9b, 0xae, 0xb3, 0x7c, - 0x36, 0x69, 0x35, 0x7a, 0x45, 0x1b, 0xf9, 0x82, 0x60, 0xeb, 0x70, 0x24, 0x8d, 0xc8, 0x24, 0xbf, - 0xe6, 0xfc, 0x4b, 0xff, 0x93, 0xff, 0x23, 0x82, 0x66, 0x9b, 0xb1, 0xae, 0x52, 0xb2, 0xce, 0xd8, - 0x07, 0xb0, 0x6c, 0x2d, 0xfd, 0x5b, 0xdf, 0xaa, 0x4c, 0x6d, 0x05, 0x3e, 0xac, 0x13, 0x93, 0xef, - 0x08, 0x36, 0xdb, 0x8c, 0xb5, 0xb5, 0xe6, 0xe6, 0x95, 0xb2, 0x2c, 0x35, 0x26, 0x7e, 0x0b, 0x41, - 0xc9, 0xf8, 0x90, 0x66, 0x99, 0x48, 0x13, 0x9f, 0xff, 0x41, 0x65, 0xfe, 0xab, 0x72, 0x4f, 0x53, - 0x31, 0x88, 0xfc, 0x44, 0x80, 0xdb, 0x8c, 0x5d, 0x7c, 0x4a, 0xd7, 0xc3, 0xa8, 0x20, 0x2c, 0x19, - 0xbf, 0x14, 0x69, 0x22, 0xf9, 0x25, 0xa9, 0xfd, 0xbe, 0xf6, 0xfe, 0x45, 0x3a, 0xd7, 0xe4, 0x79, - 0x17, 0x0e, 0x25, 0x63, 0x04, 0xeb, 0x17, 0x27, 0xda, 0xa3, 0x86, 0xeb, 0x2e, 0xcd, 0xe9, 0x50, - 0xd7, 0x80, 0xfa, 0x1a, 0x9a, 0x7f, 0xba, 0xfa, 0xc3, 0xbc, 0xb7, 0x18, 0xb1, 0x24, 0xf6, 0x68, - 0x57, 0x86, 0x90, 0xaf, 0x08, 0x42, 0x8b, 0x34, 0x1a, 0x58, 0x9f, 0xe2, 0x61, 0x8d, 0x47, 0xf8, - 0x02, 0x6e, 0xcf, 0x59, 0xff, 0x75, 0xaf, 0xcd, 0x29, 0x3d, 0xd1, 0x7c, 0x3b, 0xf9, 0x8c, 0x60, - 0xc3, 0xef, 0x87, 0xba, 0x57, 0x5b, 0x07, 0x56, 0x7f, 0xdb, 0x7a, 0x0c, 0xbc, 0x70, 0x51, 0x38, - 0x95, 0x47, 0xb8, 0x6c, 0xeb, 0x3c, 0x3b, 0x9b, 0x62, 0x34, 0x9e, 0x62, 0xf4, 0x63, 0x8a, 0xd1, - 0x87, 0x19, 0x6e, 0x8c, 0x67, 0xb8, 0xf1, 0x6d, 0x86, 0x1b, 0x6f, 0xa2, 0x44, 0x98, 0xf7, 0xa3, - 0xbe, 0x1d, 0x18, 0x17, 0x43, 0xf7, 0xd4, 0xd1, 0x91, 0x18, 0x08, 0x2a, 0xfd, 0xff, 0xd8, 0xdf, - 0x56, 0xe6, 0x34, 0xe3, 0xba, 0x7f, 0xd3, 0xdd, 0x53, 0x07, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, - 0xb5, 0xb2, 0x44, 0xc9, 0x13, 0x07, 0x00, 0x00, + 0x18, 0xc7, 0x33, 0xb6, 0x15, 0xfa, 0x55, 0x21, 0x6e, 0x4a, 0xd9, 0x16, 0x9c, 0x94, 0x01, 0x35, + 0x97, 0xee, 0x52, 0x7b, 0x11, 0x0f, 0x42, 0x02, 0x82, 0x07, 0x2b, 0x21, 0x0a, 0x82, 0x20, 0x3a, + 0xc9, 0x4c, 0xd7, 0x81, 0xc9, 0xce, 0xb2, 0x3b, 0x29, 0xed, 0x5b, 0xf8, 0x1a, 0x3e, 0x80, 0x37, + 0xbd, 0xf7, 0xe0, 0x21, 0x47, 0xbd, 0x04, 0x49, 0x7c, 0x82, 0xfa, 0x02, 0x32, 0xbb, 0x53, 0xbb, + 0xdb, 0x6e, 0x0c, 0x78, 0xd8, 0xdc, 0x92, 0xfd, 0xfe, 0xdf, 0xf7, 0xff, 0xff, 0x32, 0x93, 0x6f, + 0xe1, 0xee, 0x40, 0x0d, 0x19, 0x3f, 0xf1, 0x25, 0x0f, 0x99, 0x7f, 0xbc, 0xdf, 0xe7, 0x9a, 0xee, + 0xfb, 0x81, 0x3a, 0xf6, 0xa2, 0x58, 0x69, 0xe5, 0x34, 0xb2, 0xb2, 0x67, 0xca, 0x9e, 0x2d, 0xef, + 0x6c, 0x06, 0x2a, 0x50, 0x69, 0xdd, 0x37, 0x9f, 0x32, 0xe9, 0x0e, 0x2e, 0x9b, 0x94, 0xf6, 0xa5, + 0x75, 0xf2, 0x19, 0xc1, 0x9d, 0xe7, 0x3c, 0x64, 0x5d, 0x2a, 0xe2, 0xa4, 0x1b, 0xab, 0x48, 0x25, + 0x54, 0x3a, 0xf7, 0x61, 0x4d, 0x0b, 0x2d, 0xb9, 0x8b, 0x76, 0x51, 0x6b, 0xbd, 0x53, 0x3f, 0x9f, + 0x34, 0x6f, 0x9d, 0xd2, 0xa1, 0x7c, 0x4c, 0xd2, 0xc7, 0xa4, 0x97, 0x95, 0x9d, 0x47, 0xb0, 0xc1, + 0x78, 0x32, 0x88, 0x45, 0xa4, 0x85, 0x0a, 0xdd, 0x1b, 0xa9, 0x7a, 0xeb, 0x7c, 0xd2, 0x74, 0x32, + 0x75, 0xae, 0x48, 0x7a, 0x79, 0xa9, 0xf3, 0x04, 0xd6, 0x22, 0x63, 0xe9, 0xae, 0xec, 0xa2, 0xd6, + 0xc6, 0x43, 0xe2, 0x95, 0x20, 0x79, 0x4f, 0x4f, 0x34, 0x0f, 0x19, 0x67, 0xef, 0x4c, 0xba, 0xce, + 0xea, 0xd9, 0xa4, 0x59, 0xeb, 0x65, 0x6d, 0xe4, 0x2b, 0x82, 0xed, 0xc3, 0x91, 0xd4, 0x22, 0x92, + 0x7c, 0xc9, 0xf9, 0x57, 0xfe, 0x27, 0xff, 0x27, 0x04, 0xf5, 0x36, 0x63, 0x5d, 0xa5, 0x64, 0x95, + 0xb1, 0x0f, 0x60, 0xd5, 0x58, 0xda, 0x5f, 0x7d, 0xbb, 0x34, 0xb5, 0x11, 0xd8, 0xb0, 0xa9, 0x98, + 0xfc, 0x40, 0xb0, 0xd5, 0x66, 0xac, 0x9d, 0x24, 0x5c, 0xbf, 0x52, 0x86, 0xa5, 0xc2, 0xc4, 0x6f, + 0xc1, 0xc9, 0x19, 0x1f, 0xd2, 0x28, 0x12, 0x61, 0x60, 0xf3, 0x3f, 0x28, 0xcd, 0x7f, 0x5d, 0x6e, + 0x69, 0x4a, 0x06, 0x91, 0xdf, 0x08, 0x70, 0x9b, 0xb1, 0x8b, 0xab, 0xb4, 0x1c, 0x46, 0x05, 0x6e, + 0xce, 0xf8, 0xa5, 0x08, 0x03, 0xc9, 0x2f, 0x49, 0xcd, 0xfd, 0xda, 0x5b, 0x44, 0x5a, 0x68, 0xb2, + 0xbc, 0x73, 0x87, 0x92, 0x31, 0x82, 0xc6, 0xc5, 0x89, 0xf6, 0xa8, 0xe6, 0x49, 0x97, 0xc6, 0x74, + 0x98, 0x54, 0x80, 0xfa, 0x1a, 0xea, 0x57, 0x5d, 0xed, 0x61, 0xde, 0x9b, 0x8f, 0x98, 0x13, 0x5b, + 0xb4, 0x6b, 0x43, 0xc8, 0x37, 0x04, 0xae, 0x41, 0x1a, 0x0d, 0x8c, 0x4f, 0xf6, 0xb0, 0xc2, 0x23, + 0x7c, 0x01, 0xb7, 0x0b, 0xd6, 0xff, 0xdc, 0x6b, 0x05, 0xa5, 0x25, 0x2a, 0xb6, 0x93, 0x2f, 0x08, + 0x36, 0xed, 0x7e, 0xa8, 0x7a, 0xb5, 0x75, 0x60, 0xfd, 0xaf, 0xad, 0xc5, 0xc0, 0x73, 0x17, 0x45, + 0xaa, 0xb2, 0x08, 0x97, 0x6d, 0xe4, 0x57, 0xf6, 0xb7, 0xca, 0x9d, 0xd2, 0x12, 0x40, 0xde, 0x43, + 0xa3, 0x24, 0x80, 0x45, 0x6a, 0x2d, 0xba, 0x6e, 0x57, 0xe0, 0xca, 0x46, 0x75, 0x9e, 0x9d, 0x4d, + 0x31, 0x1a, 0x4f, 0x31, 0xfa, 0x39, 0xc5, 0xe8, 0xe3, 0x0c, 0xd7, 0xc6, 0x33, 0x5c, 0xfb, 0x3e, + 0xc3, 0xb5, 0x37, 0x5e, 0x20, 0xf4, 0x87, 0x51, 0xdf, 0x98, 0xf8, 0x99, 0xd1, 0x9e, 0x3a, 0x3a, + 0x12, 0x03, 0x41, 0xa5, 0xfd, 0xee, 0xdb, 0x97, 0xb2, 0x3e, 0x8d, 0x78, 0xd2, 0xbf, 0x99, 0xbe, + 0x8e, 0x0f, 0xfe, 0x04, 0x00, 0x00, 0xff, 0xff, 0x27, 0xa0, 0xa1, 0x74, 0xfa, 0x07, 0x00, 0x00, } func (m *LendPairsProposal) Marshal() (dAtA []byte, err error) { @@ -936,6 +998,53 @@ func (m *AddPoolPairsProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *AddAssetRatesPoolPairsProposal) 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 *AddAssetRatesPoolPairsProposal) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AddAssetRatesPoolPairsProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.AssetRatesPoolPairs.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGov(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintGov(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 = encodeVarintGov(dAtA, i, uint64(len(m.Title))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func encodeVarintGov(dAtA []byte, offset int, v uint64) int { offset -= sovGov(v) base := offset @@ -1107,6 +1216,25 @@ func (m *AddPoolPairsProposal) Size() (n int) { return n } +func (m *AddAssetRatesPoolPairsProposal) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Title) + if l > 0 { + n += 1 + l + sovGov(uint64(l)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovGov(uint64(l)) + } + l = m.AssetRatesPoolPairs.Size() + n += 1 + l + sovGov(uint64(l)) + return n +} + func sovGov(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -2291,6 +2419,153 @@ func (m *AddPoolPairsProposal) Unmarshal(dAtA []byte) error { } return nil } +func (m *AddAssetRatesPoolPairsProposal) 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 ErrIntOverflowGov + } + 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: AddAssetRatesPoolPairsProposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AddAssetRatesPoolPairsProposal: 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 ErrIntOverflowGov + } + 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 ErrInvalidLengthGov + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGov + } + 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 ErrIntOverflowGov + } + 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 ErrInvalidLengthGov + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGov + } + 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 AssetRatesPoolPairs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGov + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGov + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGov + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.AssetRatesPoolPairs.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGov(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGov + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipGov(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/lend/types/lend.pb.go b/x/lend/types/lend.pb.go index d3654a4ad..6d4c8e807 100644 --- a/x/lend/types/lend.pb.go +++ b/x/lend/types/lend.pb.go @@ -1681,6 +1681,110 @@ func (m *PoolInterestB) GetPoolInterestData() []PoolInterestDataB { return nil } +type AssetRatesPoolPairs struct { + AssetID uint64 `protobuf:"varint,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty" yaml:"asset_id"` + UOptimal github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,2,opt,name=u_optimal,json=uOptimal,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"u_optimal" yaml:"u_optimal"` + Base github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,3,opt,name=base,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"base" yaml:"base"` + Slope1 github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,4,opt,name=slope1,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"slope1" yaml:"slope1"` + Slope2 github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,5,opt,name=slope2,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"slope2" yaml:"slope2"` + EnableStableBorrow bool `protobuf:"varint,6,opt,name=enable_stable_borrow,json=enableStableBorrow,proto3" json:"enable_stable_borrow,omitempty" yaml:"enable_stable_borrow"` + StableBase github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,7,opt,name=stable_base,json=stableBase,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"stable_base" yaml:"stable_base"` + StableSlope1 github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,8,opt,name=stable_slope1,json=stableSlope1,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"stable_slope1" yaml:"stable_slope1"` + StableSlope2 github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,9,opt,name=stable_slope2,json=stableSlope2,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"stable_slope2" yaml:"stable_slope2"` + Ltv github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,10,opt,name=ltv,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"ltv" yaml:"ltv"` + LiquidationThreshold github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,11,opt,name=liquidation_threshold,json=liquidationThreshold,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"liquidation_threshold" yaml:"liquidation_threshold"` + LiquidationPenalty github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,12,opt,name=liquidation_penalty,json=liquidationPenalty,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"liquidation_penalty" yaml:"liquidation_penalty"` + LiquidationBonus github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,13,opt,name=liquidation_bonus,json=liquidationBonus,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"liquidation_bonus" yaml:"liquidation_bonus"` + ReserveFactor github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,14,opt,name=reserve_factor,json=reserveFactor,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"reserve_factor" yaml:"reserve_factor"` + CAssetID uint64 `protobuf:"varint,15,opt,name=c_asset_id,json=cAssetId,proto3" json:"c_asset_id,omitempty" yaml:"c_asset_id"` + ModuleName string `protobuf:"bytes,16,opt,name=module_name,json=moduleName,proto3" json:"module_name,omitempty" yaml:"module_name"` + CPoolName string `protobuf:"bytes,17,opt,name=cpool_name,json=cpoolName,proto3" json:"cpool_name,omitempty" yaml:"cpool_name"` + AssetData []*AssetDataPoolMapping `protobuf:"bytes,18,rep,name=asset_data,json=assetData,proto3" json:"asset_data,omitempty" yaml:"asset_data"` + MinUsdValueLeft uint64 `protobuf:"varint,19,opt,name=min_usd_value_left,json=minUsdValueLeft,proto3" json:"min_usd_value_left,omitempty" yaml:"min_usd_value_left"` +} + +func (m *AssetRatesPoolPairs) Reset() { *m = AssetRatesPoolPairs{} } +func (m *AssetRatesPoolPairs) String() string { return proto.CompactTextString(m) } +func (*AssetRatesPoolPairs) ProtoMessage() {} +func (*AssetRatesPoolPairs) Descriptor() ([]byte, []int) { + return fileDescriptor_b87bb4bef8334ddd, []int{26} +} +func (m *AssetRatesPoolPairs) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AssetRatesPoolPairs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AssetRatesPoolPairs.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 *AssetRatesPoolPairs) XXX_Merge(src proto.Message) { + xxx_messageInfo_AssetRatesPoolPairs.Merge(m, src) +} +func (m *AssetRatesPoolPairs) XXX_Size() int { + return m.Size() +} +func (m *AssetRatesPoolPairs) XXX_DiscardUnknown() { + xxx_messageInfo_AssetRatesPoolPairs.DiscardUnknown(m) +} + +var xxx_messageInfo_AssetRatesPoolPairs proto.InternalMessageInfo + +func (m *AssetRatesPoolPairs) GetAssetID() uint64 { + if m != nil { + return m.AssetID + } + return 0 +} + +func (m *AssetRatesPoolPairs) GetEnableStableBorrow() bool { + if m != nil { + return m.EnableStableBorrow + } + return false +} + +func (m *AssetRatesPoolPairs) GetCAssetID() uint64 { + if m != nil { + return m.CAssetID + } + return 0 +} + +func (m *AssetRatesPoolPairs) GetModuleName() string { + if m != nil { + return m.ModuleName + } + return "" +} + +func (m *AssetRatesPoolPairs) GetCPoolName() string { + if m != nil { + return m.CPoolName + } + return "" +} + +func (m *AssetRatesPoolPairs) GetAssetData() []*AssetDataPoolMapping { + if m != nil { + return m.AssetData + } + return nil +} + +func (m *AssetRatesPoolPairs) GetMinUsdValueLeft() uint64 { + if m != nil { + return m.MinUsdValueLeft + } + return 0 +} + func init() { proto.RegisterType((*LendAsset)(nil), "comdex.lend.v1beta1.LendAsset") proto.RegisterType((*BorrowAsset)(nil), "comdex.lend.v1beta1.BorrowAsset") @@ -1708,196 +1812,200 @@ func init() { proto.RegisterType((*PoolInterest)(nil), "comdex.lend.v1beta1.PoolInterest") proto.RegisterType((*PoolInterestDataB)(nil), "comdex.lend.v1beta1.PoolInterestDataB") proto.RegisterType((*PoolInterestB)(nil), "comdex.lend.v1beta1.PoolInterestB") + proto.RegisterType((*AssetRatesPoolPairs)(nil), "comdex.lend.v1beta1.AssetRatesPoolPairs") } func init() { proto.RegisterFile("comdex/lend/v1beta1/lend.proto", fileDescriptor_b87bb4bef8334ddd) } var fileDescriptor_b87bb4bef8334ddd = []byte{ - // 2933 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0x4d, 0x6c, 0x24, 0x47, - 0xf5, 0xdf, 0x1e, 0x7b, 0xed, 0x99, 0x37, 0xb6, 0xd7, 0x2e, 0xdb, 0xd9, 0x89, 0x37, 0xf1, 0x6c, - 0x6a, 0xff, 0xff, 0xc4, 0xf9, 0xff, 0x95, 0xb1, 0xd6, 0x24, 0x07, 0xa2, 0x44, 0xc1, 0xe3, 0xdd, - 0x4d, 0x26, 0xf1, 0x6e, 0x92, 0x5a, 0x07, 0x04, 0x04, 0x5a, 0x35, 0xd3, 0x65, 0x6f, 0x6b, 0x7b, - 0xba, 0x7b, 0xbb, 0x7b, 0xbc, 0x6b, 0x20, 0x01, 0x25, 0x12, 0x42, 0x7c, 0x88, 0xc0, 0x95, 0x3b, - 0x12, 0x77, 0xb8, 0x20, 0x71, 0x40, 0x48, 0x21, 0x07, 0x0e, 0xe1, 0xe3, 0x10, 0xe5, 0x30, 0x20, - 0xe7, 0x80, 0xc4, 0x71, 0x0f, 0x1c, 0x38, 0xa1, 0xaa, 0x7a, 0xfd, 0x35, 0x33, 0xf6, 0x6e, 0x7b, - 0xf2, 0xc1, 0x81, 0xd3, 0x4c, 0xbd, 0xaa, 0xfa, 0xbd, 0x57, 0xef, 0xbd, 0x7a, 0xf5, 0x5e, 0x55, - 0xc3, 0x6a, 0xc7, 0xeb, 0x5a, 0xe2, 0xce, 0xba, 0x23, 0x5c, 0x6b, 0x7d, 0xff, 0x62, 0x5b, 0x44, - 0xfc, 0xa2, 0x6a, 0x34, 0xfc, 0xc0, 0x8b, 0x3c, 0xb2, 0xa8, 0xfb, 0x1b, 0x8a, 0x84, 0xfd, 0x2b, - 0x4b, 0x7b, 0xde, 0x9e, 0xa7, 0xfa, 0xd7, 0xe5, 0x3f, 0x3d, 0x74, 0xa5, 0xbe, 0xe7, 0x79, 0x7b, - 0x8e, 0x58, 0x57, 0xad, 0x76, 0x6f, 0x77, 0x3d, 0xb2, 0xbb, 0x22, 0x8c, 0x78, 0xd7, 0xc7, 0x01, - 0xab, 0x1d, 0x2f, 0xec, 0x7a, 0xe1, 0x7a, 0x9b, 0x87, 0x22, 0xe1, 0xd5, 0xf1, 0x6c, 0x57, 0xf7, - 0xd3, 0xb7, 0xcb, 0x50, 0xd9, 0x16, 0xae, 0xb5, 0x19, 0x86, 0x22, 0x22, 0x4f, 0x03, 0x48, 0xa6, - 0xb6, 0xbb, 0x67, 0xda, 0x56, 0xcd, 0x38, 0x6f, 0xac, 0x4d, 0x36, 0xcf, 0x1d, 0xf6, 0xeb, 0xa5, - 0xd6, 0xa5, 0xbb, 0xfd, 0xfa, 0xc2, 0x01, 0xef, 0x3a, 0x4f, 0xd3, 0x74, 0x04, 0x65, 0x15, 0x6c, - 0xb4, 0x2c, 0xf2, 0x79, 0x28, 0x73, 0x09, 0x22, 0x67, 0x96, 0xd4, 0xcc, 0xd5, 0xc3, 0x7e, 0x7d, - 0x5a, 0x01, 0xab, 0xe9, 0x67, 0xf4, 0xf4, 0x78, 0x10, 0x65, 0xd3, 0xea, 0x6f, 0xcb, 0x22, 0x4f, - 0xc1, 0xb4, 0xef, 0x79, 0x8e, 0x9c, 0x39, 0xa1, 0x66, 0x3e, 0x74, 0xd8, 0xaf, 0x4f, 0xbd, 0xe2, - 0x79, 0x8e, 0x9a, 0x38, 0xa7, 0x27, 0xe2, 0x10, 0xca, 0xa6, 0xe4, 0xbf, 0x96, 0x45, 0x1e, 0x85, - 0xd3, 0xde, 0x6d, 0x57, 0x04, 0xb5, 0xc9, 0xf3, 0xc6, 0x5a, 0xa5, 0x39, 0x7f, 0xb7, 0x5f, 0x9f, - 0xd1, 0x43, 0x15, 0x99, 0x32, 0xdd, 0x4d, 0xbe, 0x09, 0x15, 0xde, 0xf5, 0x7a, 0x6e, 0x64, 0xda, - 0x6e, 0xed, 0xf4, 0x79, 0x63, 0xad, 0xba, 0xf1, 0x60, 0x43, 0xeb, 0xa5, 0x21, 0xf5, 0x12, 0xeb, - 0xb8, 0xb1, 0xe5, 0xd9, 0x6e, 0x73, 0xeb, 0xbd, 0x7e, 0xfd, 0xd4, 0xdd, 0x7e, 0x7d, 0x1e, 0xc5, - 0x8d, 0x67, 0xd2, 0x7f, 0xf5, 0xeb, 0x8f, 0xed, 0xd9, 0xd1, 0x8d, 0x5e, 0xbb, 0xd1, 0xf1, 0xba, - 0xeb, 0xa8, 0x58, 0xfd, 0xf3, 0x44, 0x68, 0xdd, 0x5c, 0x8f, 0x0e, 0x7c, 0x11, 0x2a, 0x10, 0x56, - 0xd6, 0xd3, 0x5a, 0x2e, 0xf9, 0x3a, 0xcc, 0xc4, 0x0a, 0x93, 0xb6, 0xa9, 0x4d, 0x29, 0xfe, 0x2b, - 0x0d, 0x6d, 0xb8, 0x46, 0x6c, 0xb8, 0xc6, 0x4e, 0x6c, 0xb8, 0x66, 0x1d, 0x05, 0x58, 0xcc, 0xab, - 0x5b, 0xce, 0xa6, 0xef, 0xfc, 0xb5, 0x6e, 0xb0, 0x2a, 0x92, 0xe4, 0x14, 0xf2, 0x2d, 0x58, 0xe4, - 0xfb, 0xdc, 0x76, 0x78, 0xdb, 0x11, 0x66, 0xe4, 0x99, 0x6d, 0x2f, 0x08, 0xbc, 0xdb, 0xb5, 0x69, - 0xa5, 0x92, 0x6d, 0x09, 0xf5, 0x61, 0xbf, 0xfe, 0xe8, 0x7d, 0xc8, 0xdd, 0x72, 0xa3, 0xbb, 0xfd, - 0xfa, 0x0a, 0xae, 0x7a, 0x18, 0x92, 0xb2, 0x85, 0x84, 0xba, 0xe3, 0x35, 0x15, 0x8d, 0x5c, 0x84, - 0x29, 0xee, 0xfb, 0xd2, 0x70, 0x65, 0x65, 0xb8, 0x95, 0xc3, 0x7e, 0xfd, 0xf4, 0xa6, 0xef, 0x2b, - 0xbb, 0xcd, 0x22, 0x96, 0x1a, 0x40, 0xd9, 0x69, 0xee, 0xfb, 0x2d, 0x8b, 0xdc, 0x80, 0x99, 0x3d, - 0xc7, 0x6b, 0x73, 0xc7, 0xb4, 0x5d, 0x4b, 0xdc, 0xa9, 0x55, 0x94, 0xa4, 0x97, 0x0b, 0x48, 0x7a, - 0x49, 0x74, 0x52, 0xf5, 0x64, 0xb1, 0x28, 0xab, 0xea, 0x66, 0x4b, 0xb6, 0xc8, 0x1d, 0x58, 0x76, - 0x78, 0x28, 0x6d, 0x17, 0x89, 0x80, 0x77, 0x22, 0xdb, 0x73, 0xb5, 0x0d, 0xe0, 0x9e, 0x36, 0x58, - 0x43, 0x1b, 0x3c, 0x84, 0x36, 0x18, 0x05, 0xa3, 0x8d, 0xb1, 0x28, 0xfb, 0x5a, 0x69, 0x97, 0x32, - 0xca, 0x26, 0x40, 0x47, 0xb9, 0xab, 0xcb, 0xbb, 0xa2, 0x56, 0x55, 0x2b, 0xa4, 0x87, 0xfd, 0x7a, - 0x65, 0x4b, 0x3a, 0xf5, 0x35, 0xde, 0x15, 0xe9, 0x76, 0x4a, 0x07, 0x52, 0x56, 0x51, 0x0d, 0xd9, - 0x4f, 0x6e, 0xc2, 0x6c, 0xe4, 0x45, 0xdc, 0x31, 0x03, 0x71, 0x9b, 0x07, 0x56, 0x58, 0x9b, 0x51, - 0x28, 0x57, 0x0a, 0x5b, 0x74, 0x49, 0xb3, 0xc9, 0x81, 0x51, 0x36, 0xa3, 0xda, 0x0c, 0x9b, 0xff, - 0xac, 0x42, 0x55, 0x5b, 0x54, 0xc7, 0x81, 0x2f, 0xc0, 0x8c, 0x36, 0x7a, 0x2e, 0x12, 0x3c, 0x9c, - 0x44, 0x02, 0xd4, 0x7d, 0x76, 0x0c, 0x65, 0xd5, 0xa4, 0xd9, 0xb2, 0xa4, 0x06, 0x32, 0x91, 0x44, - 0xc7, 0x03, 0xa5, 0x81, 0x6d, 0x0c, 0x18, 0xf7, 0x0e, 0x28, 0x97, 0x61, 0xde, 0x0e, 0xcd, 0x30, - 0x52, 0x6e, 0x88, 0x6e, 0x2d, 0xc3, 0x43, 0xb9, 0x79, 0xee, 0x6e, 0xbf, 0x7e, 0x56, 0xcf, 0x1d, - 0x1c, 0x41, 0xd9, 0x9c, 0x1d, 0x5e, 0x57, 0x14, 0x74, 0x51, 0x19, 0x5c, 0xb8, 0x1d, 0x48, 0x31, - 0x26, 0x33, 0xc1, 0x85, 0xdb, 0x41, 0x2e, 0xb8, 0xe8, 0x21, 0x32, 0xb8, 0xc8, 0x1e, 0xeb, 0xb3, - 0x0d, 0x1a, 0x6f, 0x02, 0x20, 0x84, 0xd7, 0x8b, 0x30, 0x64, 0x1c, 0xc3, 0xfd, 0x12, 0x72, 0x5f, - 0xc8, 0x71, 0xf7, 0x7a, 0x51, 0x21, 0xf6, 0xb8, 0xde, 0x97, 0x7b, 0x11, 0xf9, 0x99, 0x01, 0x4b, - 0xed, 0xc0, 0xb6, 0xf6, 0x84, 0x65, 0xea, 0x78, 0xad, 0xfb, 0x54, 0x58, 0x39, 0x56, 0x94, 0x6b, - 0x28, 0xca, 0x39, 0xf4, 0x90, 0x11, 0x20, 0x85, 0x84, 0x22, 0x88, 0xa0, 0xfc, 0x72, 0x53, 0xcd, - 0x27, 0x16, 0xcc, 0xa5, 0x9e, 0xa7, 0x36, 0x74, 0xf9, 0x9e, 0x1b, 0xfa, 0x11, 0x94, 0x6b, 0x79, - 0xd0, 0x73, 0xd3, 0x9d, 0x3c, 0x9b, 0x10, 0xd5, 0x1e, 0x3e, 0x00, 0x92, 0xf3, 0x2c, 0x33, 0xe0, - 0x91, 0xc0, 0x68, 0xf5, 0x52, 0xe1, 0x68, 0xf5, 0xa0, 0xe6, 0x3b, 0x8c, 0x48, 0xd9, 0x7c, 0x98, - 0x71, 0x57, 0xc6, 0x23, 0x41, 0xbe, 0x63, 0xc0, 0x92, 0x8a, 0x36, 0x22, 0x8c, 0x4c, 0xde, 0xe9, - 0xf4, 0xba, 0x3d, 0x87, 0x47, 0xc2, 0x52, 0x81, 0xab, 0xd2, 0xbc, 0x5a, 0x98, 0x3b, 0x5a, 0x63, - 0x14, 0x26, 0x65, 0x8b, 0x31, 0x79, 0x33, 0xa5, 0x0e, 0x45, 0xe9, 0xea, 0x27, 0x16, 0xa5, 0xbf, - 0x0d, 0x4b, 0x81, 0x08, 0x45, 0xb0, 0x2f, 0xcc, 0x1c, 0xc7, 0x99, 0xf1, 0xd6, 0x3a, 0x0a, 0x93, - 0x32, 0x82, 0xe4, 0xe7, 0xef, 0xe7, 0x98, 0x98, 0xfd, 0x74, 0x8f, 0x89, 0xb9, 0x93, 0x1c, 0x13, - 0xcf, 0xc2, 0xac, 0x1d, 0x9a, 0x8e, 0x7d, 0xab, 0x67, 0x5b, 0xca, 0x45, 0xce, 0xa8, 0x08, 0x59, - 0x4b, 0x03, 0x7f, 0xae, 0x9b, 0xb2, 0x19, 0x3b, 0xdc, 0x4e, 0x9b, 0xbf, 0x2a, 0xc1, 0xa4, 0xe4, - 0x95, 0x4d, 0xc1, 0x8c, 0x02, 0x29, 0xd8, 0x65, 0xa8, 0x76, 0x3d, 0xab, 0xe7, 0x08, 0xbd, 0x84, - 0x92, 0x5a, 0xc2, 0xff, 0x1c, 0xf6, 0xeb, 0x70, 0x55, 0x91, 0x71, 0x0d, 0x44, 0x4f, 0xcf, 0x0c, - 0xa5, 0x0c, 0xba, 0xc9, 0x88, 0x01, 0x45, 0x4c, 0x9c, 0x44, 0x11, 0x0e, 0x80, 0x0e, 0x32, 0x16, - 0x8f, 0x78, 0x6d, 0xf2, 0xfc, 0xc4, 0x5a, 0x75, 0xe3, 0xf1, 0xc6, 0x88, 0x4c, 0xba, 0xa1, 0x42, - 0xc9, 0x25, 0x1e, 0x71, 0x89, 0x7d, 0x95, 0xfb, 0xbe, 0xed, 0xee, 0x69, 0x6e, 0x49, 0x4f, 0x26, - 0x96, 0x26, 0x98, 0x94, 0x55, 0x78, 0xdc, 0x4f, 0xff, 0x68, 0xc0, 0xca, 0x6b, 0xa1, 0x08, 0xd4, - 0x0c, 0x79, 0xa4, 0xe9, 0xdd, 0x8b, 0x68, 0x69, 0x66, 0x6a, 0x1c, 0x9f, 0x99, 0xfe, 0x3f, 0x4c, - 0x4b, 0xd1, 0xd2, 0x23, 0x92, 0xa4, 0xba, 0xc6, 0x0e, 0xca, 0xa6, 0xe4, 0xbf, 0x96, 0x25, 0x07, - 0xe7, 0xb3, 0x64, 0x72, 0x8c, 0x61, 0x2e, 0x42, 0x05, 0x83, 0x8c, 0x3a, 0xf7, 0x26, 0xd6, 0x26, - 0x9b, 0x4b, 0xe9, 0xf9, 0x94, 0x74, 0x51, 0x56, 0xd6, 0xff, 0x5b, 0x16, 0x7d, 0xab, 0x04, 0x4b, - 0xa3, 0x74, 0x93, 0xcb, 0xec, 0x8d, 0x62, 0x99, 0xfd, 0x4b, 0x40, 0x34, 0x35, 0x0a, 0xb8, 0x1b, - 0xda, 0x91, 0x29, 0x77, 0x2a, 0xae, 0xf5, 0xe1, 0x34, 0x2c, 0x0e, 0x8f, 0xa1, 0x6c, 0x5e, 0x11, - 0x77, 0x34, 0x6d, 0xe7, 0xc0, 0x17, 0xa4, 0x0d, 0x10, 0xf6, 0x7c, 0xdf, 0x39, 0x30, 0x3b, 0xdc, - 0x47, 0x2f, 0xd9, 0x2a, 0x1c, 0x1f, 0xd0, 0xb0, 0x29, 0x12, 0x65, 0x15, 0xdd, 0xd8, 0xe2, 0x3e, - 0xfd, 0x7b, 0x09, 0x66, 0x2f, 0xdf, 0x89, 0x84, 0x6b, 0x09, 0xcb, 0x94, 0x49, 0x02, 0x99, 0x83, - 0x52, 0xbc, 0x6e, 0x56, 0xb2, 0x2d, 0xd2, 0x48, 0xb4, 0xe1, 0xe2, 0x42, 0x16, 0x87, 0x54, 0xe0, - 0x26, 0x2a, 0x70, 0xa5, 0x25, 0x34, 0x55, 0x1e, 0xe5, 0xda, 0x70, 0x19, 0x4b, 0x24, 0x5d, 0x94, - 0x69, 0x58, 0x79, 0xfc, 0x3e, 0xa3, 0x36, 0xb5, 0x0a, 0x24, 0xa6, 0xb4, 0xa7, 0x4a, 0x5c, 0x06, - 0x37, 0x75, 0xda, 0x4d, 0x59, 0xd5, 0x0e, 0x55, 0x6c, 0x51, 0x5b, 0xf9, 0xcb, 0xb0, 0x90, 0xa0, - 0x9a, 0xb1, 0xc7, 0x9c, 0x56, 0x8c, 0x1b, 0x87, 0xfd, 0xfa, 0xdc, 0x26, 0xb2, 0x49, 0x36, 0x77, - 0x6d, 0x40, 0x14, 0x33, 0xf1, 0xa6, 0x39, 0x9e, 0x1d, 0x6b, 0x91, 0x17, 0x81, 0x74, 0x6d, 0xd7, - 0xec, 0x85, 0x96, 0xb9, 0xcf, 0x9d, 0x9e, 0x30, 0x1d, 0xb1, 0xab, 0xf3, 0x93, 0x9c, 0x39, 0x87, - 0xc7, 0x50, 0x76, 0xa6, 0x6b, 0xbb, 0xaf, 0x85, 0xd6, 0x17, 0x25, 0x69, 0x5b, 0x52, 0x7e, 0x63, - 0x00, 0x51, 0xa2, 0xec, 0x78, 0x52, 0xcf, 0xb1, 0xb3, 0x9d, 0x30, 0x10, 0x8d, 0x59, 0x7d, 0x62, - 0x82, 0x38, 0xa1, 0x36, 0xca, 0x7d, 0x25, 0x88, 0xf4, 0x87, 0x15, 0x20, 0x52, 0x2c, 0x1d, 0x02, - 0x9a, 0x9f, 0x9d, 0xfc, 0x0d, 0x28, 0x63, 0xac, 0x08, 0x71, 0x01, 0x19, 0x87, 0x8c, 0x7b, 0x28, - 0x9b, 0xd6, 0x61, 0x24, 0x24, 0x4f, 0x02, 0x24, 0xfb, 0x3f, 0xc4, 0xd8, 0xb0, 0x9c, 0x6e, 0x8c, - 0xb4, 0x8f, 0xb2, 0x4a, 0x1c, 0x1c, 0x42, 0xe2, 0xc2, 0x9c, 0x2e, 0x21, 0x34, 0x49, 0x68, 0x97, - 0xaa, 0x34, 0x9f, 0x2f, 0x5c, 0x90, 0x2c, 0x67, 0x0b, 0x92, 0x18, 0x8d, 0x32, 0x5d, 0xee, 0x34, - 0xb1, 0x4d, 0xde, 0x32, 0x60, 0x59, 0x0f, 0xc9, 0xe5, 0x4c, 0xc2, 0x52, 0xee, 0x56, 0xd1, 0x89, - 0x66, 0x21, 0xbe, 0x0f, 0x65, 0xf9, 0x0e, 0x80, 0x52, 0xb6, 0xa8, 0xe8, 0xd9, 0xca, 0x41, 0x58, - 0x32, 0xe2, 0xe8, 0xe1, 0x52, 0x77, 0x58, 0x53, 0x6f, 0x15, 0x66, 0xbc, 0x90, 0x65, 0x2c, 0x91, - 0x28, 0xab, 0xa8, 0x86, 0x3c, 0x38, 0xc8, 0x4f, 0x0c, 0x58, 0xd1, 0x5d, 0x23, 0x53, 0xbe, 0xb2, - 0x62, 0x7a, 0xbd, 0x30, 0xd3, 0x47, 0xb2, 0x4c, 0x47, 0x27, 0x7e, 0x35, 0xd5, 0xd9, 0x1a, 0x91, - 0xfd, 0xbd, 0x8e, 0x2e, 0xc5, 0xfd, 0x00, 0x33, 0xde, 0xcd, 0xc2, 0x71, 0x36, 0xeb, 0x80, 0xdc, - 0x0f, 0xd0, 0x01, 0x37, 0xfd, 0x40, 0x6a, 0x15, 0x9d, 0x4c, 0xe2, 0xc3, 0x78, 0x71, 0x3c, 0x45, - 0x4a, 0xdc, 0x55, 0xf2, 0xd8, 0x87, 0x85, 0x7c, 0xae, 0x2d, 0x59, 0xe9, 0x24, 0xf6, 0xc5, 0xc2, - 0xac, 0x6a, 0xa3, 0x92, 0x77, 0xc5, 0xf1, 0x4c, 0x36, 0x77, 0x97, 0x7c, 0x6f, 0xc3, 0x42, 0x2f, - 0xb2, 0x1d, 0x3b, 0xe4, 0x2a, 0x01, 0x0c, 0xe4, 0x0f, 0xa6, 0xb2, 0x27, 0xe6, 0x3b, 0x04, 0x48, - 0xd9, 0x7c, 0x86, 0xc6, 0x14, 0xe9, 0xdd, 0x2a, 0xcc, 0xab, 0x68, 0x21, 0x2b, 0x88, 0xf0, 0x15, - 0x1e, 0xf0, 0x6e, 0x38, 0xce, 0xc9, 0x6d, 0x42, 0xa5, 0x67, 0x7a, 0x7e, 0x64, 0x77, 0xb9, 0x83, - 0x79, 0x5d, 0xb3, 0xf0, 0x02, 0xf0, 0x90, 0x4b, 0x80, 0x28, 0x2b, 0xf7, 0x5e, 0xd6, 0x7f, 0xc9, - 0xab, 0x30, 0x29, 0xcb, 0x47, 0x3c, 0xc7, 0x9f, 0x2d, 0x8c, 0x5d, 0x45, 0xfb, 0xf3, 0x50, 0x50, - 0xa6, 0xa0, 0xc8, 0x97, 0x60, 0x2a, 0x74, 0x3c, 0x5f, 0x5c, 0xc4, 0x1b, 0xc1, 0xe7, 0x0a, 0x83, - 0xe2, 0x95, 0x95, 0x46, 0xa1, 0x0c, 0xe1, 0x12, 0xe0, 0x0d, 0x0c, 0x7a, 0xe3, 0x01, 0x6f, 0xc4, - 0xc0, 0x1b, 0xe4, 0x55, 0x58, 0x12, 0xae, 0xf2, 0xaa, 0xfc, 0x3d, 0xc7, 0x94, 0x3a, 0xf0, 0xeb, - 0x69, 0x39, 0x33, 0x6a, 0x14, 0x65, 0x44, 0x93, 0x73, 0xf7, 0x1d, 0x02, 0xaa, 0xf1, 0x28, 0xa9, - 0x5e, 0x1d, 0xb4, 0x2e, 0x15, 0x16, 0x98, 0xe4, 0x7d, 0x5e, 0x69, 0x19, 0xd0, 0xdb, 0xa5, 0xae, - 0x6f, 0xc2, 0x2c, 0xf6, 0xa1, 0xca, 0xcb, 0x85, 0xef, 0xa7, 0x34, 0xa3, 0xa5, 0x1c, 0xa3, 0x58, - 0xf3, 0x33, 0xba, 0x7d, 0x5d, 0xeb, 0x7f, 0x80, 0xd9, 0x06, 0x06, 0xa5, 0x8f, 0x85, 0xd9, 0x46, - 0x9e, 0xd9, 0x06, 0xb9, 0x06, 0x13, 0x4e, 0xb4, 0x8f, 0x71, 0xe9, 0x99, 0xc2, 0x2c, 0x00, 0xe3, - 0x5e, 0xb4, 0x4f, 0x99, 0x04, 0x22, 0x6f, 0x1b, 0xb0, 0x1c, 0x57, 0x60, 0xaa, 0x28, 0xbc, 0x11, - 0x88, 0xf0, 0x86, 0xe7, 0x58, 0x18, 0x8f, 0xae, 0x15, 0x66, 0x11, 0x97, 0x9b, 0xa3, 0x40, 0x29, - 0x5b, 0xca, 0xd0, 0x77, 0x62, 0x32, 0x79, 0x03, 0x16, 0xb3, 0xe3, 0x7d, 0xe1, 0x72, 0x27, 0x3a, - 0xc0, 0xd0, 0xb4, 0x5d, 0x58, 0x84, 0x95, 0x61, 0x11, 0x10, 0x92, 0x32, 0x92, 0xa1, 0xbe, 0xa2, - 0x89, 0x32, 0x2e, 0x66, 0xc7, 0xb6, 0x3d, 0xb7, 0x17, 0xaa, 0x02, 0x7b, 0x8c, 0xb8, 0x38, 0x04, - 0x48, 0xd9, 0x7c, 0x86, 0xd6, 0x94, 0x24, 0x99, 0xb7, 0xc4, 0x57, 0x01, 0xbb, 0xbc, 0x13, 0x79, - 0x01, 0xd6, 0xd9, 0xcf, 0x17, 0xe6, 0xba, 0x9c, 0xbf, 0x58, 0xd0, 0x68, 0x94, 0xcd, 0x22, 0xe1, - 0x8a, 0x6a, 0x93, 0xe7, 0x00, 0x3a, 0x66, 0x12, 0x74, 0xcf, 0xa8, 0xa0, 0xfb, 0xc8, 0x61, 0xbf, - 0x5e, 0xde, 0x4a, 0xa3, 0x6e, 0x5c, 0xc9, 0x9a, 0x69, 0xdc, 0x2d, 0x77, 0x74, 0xb7, 0x45, 0x7f, - 0x59, 0x82, 0xb3, 0x4c, 0x43, 0x36, 0x7b, 0x07, 0x6d, 0xde, 0xb9, 0x99, 0x14, 0x65, 0xe3, 0xc4, - 0xf3, 0x8c, 0x1e, 0xf0, 0x2e, 0xaf, 0x34, 0x5e, 0xfe, 0x96, 0x47, 0x4b, 0xf5, 0x80, 0x97, 0x74, - 0x2e, 0xcc, 0xb5, 0xb5, 0xf8, 0x31, 0xbf, 0x89, 0xf1, 0xf8, 0xe5, 0xd1, 0x28, 0x9b, 0x45, 0x82, - 0xe6, 0x47, 0xff, 0x31, 0x09, 0xb3, 0x9b, 0x3d, 0x75, 0xb7, 0x82, 0x87, 0xdf, 0x5a, 0xf2, 0x36, - 0xa1, 0x55, 0xb5, 0x70, 0xe4, 0x93, 0xc4, 0xd7, 0xa0, 0xc6, 0xf5, 0x54, 0xd3, 0xea, 0x05, 0xda, - 0xa1, 0x42, 0xd1, 0xf1, 0x5c, 0x2b, 0xc4, 0x64, 0xfc, 0xc2, 0xdd, 0x7e, 0xbd, 0x8e, 0x73, 0x8f, - 0x18, 0x49, 0xd9, 0x03, 0xd8, 0x75, 0x09, 0x7b, 0xae, 0xeb, 0x0e, 0x79, 0x7a, 0xb4, 0x7b, 0xbb, - 0xbb, 0x22, 0x40, 0x15, 0x9c, 0xf8, 0xf4, 0xd0, 0x28, 0x94, 0x21, 0x9c, 0x3c, 0x42, 0x3b, 0xbd, - 0xd0, 0xc7, 0xd3, 0xee, 0xc4, 0x47, 0xa8, 0xc4, 0xa0, 0x4c, 0x41, 0x49, 0xc8, 0x30, 0x12, 0x3e, - 0x9e, 0x73, 0xcf, 0x16, 0x36, 0x56, 0x35, 0x0e, 0xb0, 0x42, 0x42, 0xca, 0x1f, 0x72, 0x0d, 0x16, - 0xfd, 0xc0, 0xee, 0x08, 0x73, 0xb7, 0xe7, 0xe2, 0xb5, 0xd8, 0x81, 0x2f, 0xb0, 0x6a, 0x5c, 0x4d, - 0x63, 0xc9, 0x88, 0x41, 0x94, 0x2d, 0x28, 0xea, 0x15, 0x24, 0xaa, 0x6b, 0x80, 0x06, 0x94, 0xad, - 0x5e, 0xd4, 0xb9, 0x21, 0x2d, 0x3b, 0x3d, 0x58, 0x80, 0xc7, 0x3d, 0x94, 0x4d, 0xab, 0xbf, 0x2d, - 0x4b, 0x9e, 0xb1, 0x6d, 0xdb, 0x1a, 0xb6, 0xac, 0x7e, 0xb1, 0xca, 0x9c, 0xb1, 0xa3, 0x46, 0x51, - 0x46, 0xda, 0xb6, 0x35, 0x60, 0x51, 0xfa, 0xa1, 0x01, 0x67, 0x9b, 0x58, 0x27, 0xc5, 0xa9, 0x75, - 0x14, 0xf0, 0xce, 0x4d, 0x11, 0x90, 0xa7, 0x47, 0xbe, 0x9d, 0x9c, 0xbd, 0xaf, 0x57, 0x13, 0x59, - 0xf4, 0xc4, 0xfb, 0x4a, 0x97, 0x88, 0x88, 0x8e, 0x9e, 0x73, 0xe2, 0xa3, 0x62, 0x24, 0x28, 0x65, - 0x8b, 0x48, 0x57, 0xe5, 0x69, 0x4c, 0xfd, 0x83, 0x01, 0x4b, 0xb2, 0x32, 0x89, 0x1f, 0x8b, 0x92, - 0x95, 0x3d, 0x39, 0xe2, 0x75, 0x78, 0xf9, 0x9e, 0xcf, 0x38, 0x6f, 0xc2, 0x62, 0x0c, 0x94, 0xad, - 0x6b, 0x4a, 0x9f, 0xc4, 0x55, 0x36, 0x41, 0x4e, 0x99, 0x5a, 0x86, 0xbe, 0x6b, 0xc0, 0xac, 0xbe, - 0x8c, 0x6c, 0x72, 0x87, 0xbb, 0x1d, 0x71, 0xd2, 0x12, 0xfd, 0x4d, 0x58, 0xc2, 0x0b, 0xcc, 0xb6, - 0x06, 0x92, 0xd9, 0x58, 0x24, 0x23, 0xc4, 0xc4, 0x5a, 0x75, 0xe3, 0xb1, 0x91, 0x77, 0x8d, 0x39, - 0xc6, 0xd7, 0xe5, 0xf0, 0xe6, 0x85, 0xfc, 0x0b, 0xc9, 0x28, 0x48, 0xca, 0x48, 0x77, 0x68, 0x22, - 0xfd, 0xbd, 0x01, 0x64, 0x18, 0x6f, 0x9c, 0x33, 0x61, 0x1f, 0xa6, 0x91, 0xaf, 0x32, 0xc7, 0xb1, - 0x0f, 0x3b, 0x9b, 0x28, 0xf6, 0x5c, 0x9c, 0x76, 0xab, 0x79, 0x85, 0xde, 0x72, 0x62, 0x66, 0xf4, - 0x0d, 0x98, 0xba, 0xea, 0x59, 0x4d, 0xee, 0x90, 0x10, 0x16, 0x77, 0x7b, 0xae, 0x65, 0xe6, 0xb5, - 0x50, 0x33, 0x94, 0x4a, 0xeb, 0x23, 0x55, 0x7a, 0xa5, 0xe7, 0x5a, 0x7a, 0x76, 0x93, 0xa2, 0x4c, - 0x18, 0x40, 0x46, 0x20, 0x51, 0xb6, 0xb0, 0xab, 0xc7, 0xa7, 0x6a, 0xa3, 0xdf, 0x33, 0x00, 0xe2, - 0x13, 0x96, 0x3b, 0xe4, 0x1b, 0xb0, 0xa4, 0x66, 0xc6, 0x7b, 0x24, 0x2f, 0xc4, 0x85, 0x23, 0x85, - 0x48, 0x21, 0x06, 0x6d, 0x3a, 0x0a, 0x8e, 0x32, 0xb2, 0x9b, 0x9b, 0xa4, 0x88, 0xdf, 0x9d, 0x00, - 0x48, 0x17, 0x34, 0x8e, 0x2d, 0x33, 0x4e, 0x5d, 0x2a, 0xe0, 0xd4, 0xb9, 0x67, 0xce, 0x89, 0x4f, - 0xff, 0xdb, 0x08, 0x4b, 0xf8, 0x9e, 0xba, 0xf3, 0xb5, 0xbb, 0x42, 0x9d, 0x63, 0x85, 0xbe, 0x8d, - 0xc8, 0xce, 0xc6, 0x6f, 0x23, 0x90, 0xa4, 0xde, 0x57, 0x1e, 0x87, 0x29, 0xa9, 0x73, 0x11, 0xe0, - 0x71, 0x96, 0xc9, 0x00, 0x34, 0x9d, 0x32, 0x1c, 0x40, 0xff, 0x5c, 0x82, 0xb9, 0xbc, 0x51, 0xc7, - 0x31, 0x46, 0x4e, 0xab, 0xa5, 0xcf, 0x58, 0xab, 0x13, 0x9f, 0x98, 0x56, 0x27, 0xef, 0xa5, 0xd5, - 0x0f, 0xa6, 0xe0, 0xcc, 0xa6, 0xe3, 0xa0, 0x52, 0xc7, 0x8e, 0x57, 0x3f, 0x37, 0x20, 0xf3, 0xb8, - 0x6d, 0xee, 0x06, 0x5e, 0x37, 0xd9, 0x66, 0x91, 0xa7, 0xae, 0xd6, 0x44, 0x10, 0xe2, 0xd1, 0xf2, - 0xd5, 0xc2, 0xb9, 0xcb, 0xe3, 0x83, 0xcf, 0xe7, 0x47, 0x71, 0xa0, 0xec, 0xe1, 0xe4, 0xad, 0xfc, - 0x4a, 0xe0, 0x75, 0x71, 0x7d, 0x3b, 0xde, 0xb6, 0xee, 0x27, 0xbf, 0x30, 0xe0, 0xc2, 0x51, 0x30, - 0xbb, 0x5e, 0x60, 0x62, 0xa2, 0x88, 0xa7, 0xfa, 0xeb, 0x85, 0x25, 0xfd, 0xbf, 0xe3, 0x25, 0xcd, - 0xb0, 0xa0, 0x6c, 0x75, 0x94, 0xa8, 0x57, 0xbc, 0x00, 0x93, 0x65, 0xf2, 0x63, 0x03, 0x56, 0x12, - 0x97, 0xd3, 0x38, 0x8e, 0x7d, 0x2b, 0x29, 0x10, 0x27, 0xc7, 0xbb, 0x7f, 0x3c, 0x1a, 0x59, 0xe6, - 0xcb, 0xe8, 0xb2, 0x52, 0xb0, 0x6d, 0xfb, 0x56, 0x5c, 0x2b, 0xfe, 0xc8, 0x80, 0x07, 0x07, 0xe6, - 0x05, 0xc2, 0xe7, 0x07, 0x5d, 0xe1, 0x46, 0x21, 0x6e, 0x65, 0x56, 0x58, 0xa0, 0xf3, 0x23, 0x05, - 0x4a, 0x81, 0x07, 0xe4, 0x61, 0x49, 0x07, 0xf9, 0xa9, 0x01, 0xe7, 0xf4, 0x3d, 0x6a, 0x46, 0xe1, - 0x19, 0x7f, 0xd3, 0x17, 0xd2, 0x3b, 0x85, 0x25, 0xa2, 0xd9, 0x2b, 0xda, 0x91, 0xd0, 0x94, 0x9d, - 0x55, 0xbd, 0x9b, 0xb1, 0x09, 0x13, 0x17, 0xa3, 0xbf, 0x33, 0xa0, 0x96, 0x79, 0x3e, 0xb9, 0x6e, - 0xbb, 0x7b, 0x8e, 0xf8, 0x0f, 0x79, 0x44, 0xb9, 0xef, 0xaf, 0x6c, 0xe4, 0xf9, 0x57, 0x91, 0x62, - 0xc9, 0x81, 0xe1, 0x7f, 0x1f, 0xa1, 0x0b, 0x3d, 0x42, 0x1f, 0xf1, 0x1a, 0x77, 0xfa, 0x44, 0xaf, - 0x71, 0xbf, 0x36, 0x60, 0x3e, 0x5b, 0x05, 0x8c, 0x7b, 0xdd, 0x70, 0x13, 0x66, 0xf5, 0xd3, 0x53, - 0x5c, 0xc0, 0x94, 0xc6, 0xfb, 0x7c, 0x2d, 0x07, 0x46, 0x99, 0xfa, 0xa6, 0x32, 0xa9, 0x58, 0xfe, - 0x64, 0xc0, 0x4c, 0x56, 0xf8, 0x93, 0x3a, 0xd2, 0xf7, 0x0d, 0x20, 0xb9, 0x0a, 0x49, 0xdb, 0x51, - 0x27, 0xf8, 0xff, 0x3b, 0xd2, 0x8e, 0x83, 0x3a, 0x6b, 0x3e, 0x25, 0x57, 0x78, 0xd8, 0xaf, 0x0f, - 0x69, 0x33, 0x35, 0xc8, 0x30, 0x0b, 0xca, 0xe6, 0xfd, 0x81, 0xe1, 0xf4, 0xb7, 0x06, 0x2c, 0x0c, - 0xa1, 0x8f, 0x63, 0x92, 0x5b, 0x70, 0xa6, 0x9d, 0xaf, 0x59, 0xd1, 0x28, 0x2f, 0x14, 0x36, 0xca, - 0x03, 0xf9, 0xa7, 0xc2, 0xc4, 0x2c, 0xf8, 0x5d, 0x56, 0x62, 0x98, 0xbf, 0x18, 0x30, 0x9b, 0x5d, - 0x43, 0xf3, 0xa4, 0x96, 0xf9, 0xc1, 0x71, 0x96, 0x79, 0xf4, 0xfe, 0x2c, 0xf3, 0xb1, 0x99, 0xa6, - 0xf9, 0xc2, 0x7b, 0x87, 0xab, 0xc6, 0xfb, 0x87, 0xab, 0xc6, 0xdf, 0x0e, 0x57, 0x8d, 0x77, 0x3e, - 0x5a, 0x3d, 0xf5, 0xfe, 0x47, 0xab, 0xa7, 0x3e, 0xf8, 0x68, 0xf5, 0xd4, 0x57, 0x1a, 0x39, 0x15, - 0x4a, 0xa1, 0x9e, 0xf0, 0x76, 0x77, 0xed, 0x8e, 0xcd, 0x1d, 0x6c, 0xaf, 0xe3, 0x77, 0xdf, 0x4a, - 0x9d, 0xed, 0x29, 0x95, 0x8d, 0x7d, 0xee, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xbf, 0x28, 0xf5, - 0x15, 0x13, 0x2e, 0x00, 0x00, + // 2982 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0x4d, 0x6c, 0x24, 0x47, + 0xf5, 0xdf, 0x1e, 0x7b, 0xed, 0x99, 0x37, 0xb6, 0xd7, 0xae, 0xb1, 0xb3, 0x13, 0x6f, 0xe2, 0xd9, + 0xd4, 0xfe, 0xff, 0x89, 0x03, 0xca, 0x58, 0x6b, 0x92, 0x03, 0x51, 0xa2, 0xe0, 0xf1, 0xee, 0x26, + 0x93, 0x78, 0x37, 0x49, 0xad, 0x03, 0x02, 0x02, 0xad, 0x9e, 0xe9, 0xb2, 0xb7, 0xb5, 0x3d, 0xdd, + 0xbd, 0xdd, 0x3d, 0xde, 0x35, 0x90, 0x80, 0x12, 0x09, 0x21, 0x20, 0x22, 0x70, 0xe5, 0x8e, 0xc4, + 0x1d, 0x2e, 0x48, 0x1c, 0x10, 0x52, 0xc8, 0x81, 0x43, 0xf8, 0x38, 0x44, 0x39, 0x0c, 0xc8, 0x39, + 0x20, 0x71, 0xdc, 0x03, 0x07, 0x4e, 0xa8, 0xaa, 0x5e, 0x7f, 0xcd, 0xb4, 0xbd, 0xdb, 0x9e, 0x24, + 0x0b, 0xd2, 0x9e, 0x3c, 0xf5, 0xaa, 0xea, 0xf7, 0x5e, 0xbd, 0xf7, 0xea, 0xd5, 0x7b, 0x55, 0x6d, + 0x58, 0xe9, 0xba, 0x3d, 0x93, 0xdf, 0x5a, 0xb3, 0xb9, 0x63, 0xae, 0xed, 0x9d, 0xef, 0xf0, 0xd0, + 0x38, 0x2f, 0x1b, 0x4d, 0xcf, 0x77, 0x43, 0x97, 0xd4, 0x54, 0x7f, 0x53, 0x92, 0xb0, 0x7f, 0x79, + 0x71, 0xd7, 0xdd, 0x75, 0x65, 0xff, 0x9a, 0xf8, 0xa5, 0x86, 0x2e, 0x37, 0x76, 0x5d, 0x77, 0xd7, + 0xe6, 0x6b, 0xb2, 0xd5, 0xe9, 0xef, 0xac, 0x85, 0x56, 0x8f, 0x07, 0xa1, 0xd1, 0xf3, 0x70, 0xc0, + 0x4a, 0xd7, 0x0d, 0x7a, 0x6e, 0xb0, 0xd6, 0x31, 0x02, 0x1e, 0xf3, 0xea, 0xba, 0x96, 0xa3, 0xfa, + 0xe9, 0xdb, 0x65, 0xa8, 0x6c, 0x71, 0xc7, 0xdc, 0x08, 0x02, 0x1e, 0x92, 0xa7, 0x01, 0x04, 0x53, + 0xcb, 0xd9, 0xd5, 0x2d, 0xb3, 0xae, 0x9d, 0xd5, 0x56, 0x27, 0x5b, 0x67, 0x0e, 0x06, 0x8d, 0x52, + 0xfb, 0xc2, 0xed, 0x41, 0x63, 0x61, 0xdf, 0xe8, 0xd9, 0x4f, 0xd3, 0x64, 0x04, 0x65, 0x15, 0x6c, + 0xb4, 0x4d, 0xf2, 0x45, 0x28, 0x1b, 0x02, 0x44, 0xcc, 0x2c, 0xc9, 0x99, 0x2b, 0x07, 0x83, 0xc6, + 0xb4, 0x04, 0x96, 0xd3, 0x4f, 0xa9, 0xe9, 0xd1, 0x20, 0xca, 0xa6, 0xe5, 0xcf, 0xb6, 0x49, 0x9e, + 0x82, 0x69, 0xcf, 0x75, 0x6d, 0x31, 0x73, 0x42, 0xce, 0x7c, 0xe8, 0x60, 0xd0, 0x98, 0x7a, 0xc5, + 0x75, 0x6d, 0x39, 0x71, 0x4e, 0x4d, 0xc4, 0x21, 0x94, 0x4d, 0x89, 0x5f, 0x6d, 0x93, 0x3c, 0x0a, + 0x27, 0xdd, 0x9b, 0x0e, 0xf7, 0xeb, 0x93, 0x67, 0xb5, 0xd5, 0x4a, 0x6b, 0xfe, 0xf6, 0xa0, 0x31, + 0xa3, 0x86, 0x4a, 0x32, 0x65, 0xaa, 0x9b, 0x7c, 0x1b, 0x2a, 0x46, 0xcf, 0xed, 0x3b, 0xa1, 0x6e, + 0x39, 0xf5, 0x93, 0x67, 0xb5, 0xd5, 0xea, 0xfa, 0x83, 0x4d, 0xa5, 0x97, 0xa6, 0xd0, 0x4b, 0xa4, + 0xe3, 0xe6, 0xa6, 0x6b, 0x39, 0xad, 0xcd, 0xf7, 0x07, 0x8d, 0x13, 0xb7, 0x07, 0x8d, 0x79, 0x14, + 0x37, 0x9a, 0x49, 0xff, 0x3d, 0x68, 0x3c, 0xb6, 0x6b, 0x85, 0xd7, 0xfa, 0x9d, 0x66, 0xd7, 0xed, + 0xad, 0xa1, 0x62, 0xd5, 0x9f, 0x27, 0x02, 0xf3, 0xfa, 0x5a, 0xb8, 0xef, 0xf1, 0x40, 0x82, 0xb0, + 0xb2, 0x9a, 0xd6, 0x76, 0xc8, 0x37, 0x61, 0x26, 0x52, 0x98, 0xb0, 0x4d, 0x7d, 0x4a, 0xf2, 0x5f, + 0x6e, 0x2a, 0xc3, 0x35, 0x23, 0xc3, 0x35, 0xb7, 0x23, 0xc3, 0xb5, 0x1a, 0x28, 0x40, 0x2d, 0xab, + 0x6e, 0x31, 0x9b, 0xbe, 0xfb, 0xb7, 0x86, 0xc6, 0xaa, 0x48, 0x12, 0x53, 0xc8, 0x77, 0xa0, 0x66, + 0xec, 0x19, 0x96, 0x6d, 0x74, 0x6c, 0xae, 0x87, 0xae, 0xde, 0x71, 0x7d, 0xdf, 0xbd, 0x59, 0x9f, + 0x96, 0x2a, 0xd9, 0x12, 0x50, 0x1f, 0x0d, 0x1a, 0x8f, 0xde, 0x85, 0xdc, 0x6d, 0x27, 0xbc, 0x3d, + 0x68, 0x2c, 0xe3, 0xaa, 0x47, 0x21, 0x29, 0x5b, 0x88, 0xa9, 0xdb, 0x6e, 0x4b, 0xd2, 0xc8, 0x79, + 0x98, 0x32, 0x3c, 0x4f, 0x18, 0xae, 0x2c, 0x0d, 0xb7, 0x7c, 0x30, 0x68, 0x9c, 0xdc, 0xf0, 0x3c, + 0x69, 0xb7, 0x59, 0xc4, 0x92, 0x03, 0x28, 0x3b, 0x69, 0x78, 0x5e, 0xdb, 0x24, 0xd7, 0x60, 0x66, + 0xd7, 0x76, 0x3b, 0x86, 0xad, 0x5b, 0x8e, 0xc9, 0x6f, 0xd5, 0x2b, 0x52, 0xd2, 0x8b, 0x05, 0x24, + 0xbd, 0xc0, 0xbb, 0x89, 0x7a, 0xd2, 0x58, 0x94, 0x55, 0x55, 0xb3, 0x2d, 0x5a, 0xe4, 0x16, 0x2c, + 0xd9, 0x46, 0x20, 0x6c, 0x17, 0x72, 0xdf, 0xe8, 0x86, 0x96, 0xeb, 0x28, 0x1b, 0xc0, 0x1d, 0x6d, + 0xb0, 0x8a, 0x36, 0x78, 0x08, 0x6d, 0x90, 0x07, 0xa3, 0x8c, 0x51, 0x13, 0x7d, 0xed, 0xa4, 0x4b, + 0x1a, 0x65, 0x03, 0xa0, 0x2b, 0xdd, 0xd5, 0x31, 0x7a, 0xbc, 0x5e, 0x95, 0x2b, 0xa4, 0x07, 0x83, + 0x46, 0x65, 0x53, 0x38, 0xf5, 0x15, 0xa3, 0xc7, 0x93, 0xed, 0x94, 0x0c, 0xa4, 0xac, 0x22, 0x1b, + 0xa2, 0x9f, 0x5c, 0x87, 0xd9, 0xd0, 0x0d, 0x0d, 0x5b, 0xf7, 0xf9, 0x4d, 0xc3, 0x37, 0x83, 0xfa, + 0x8c, 0x44, 0xb9, 0x54, 0xd8, 0xa2, 0x8b, 0x8a, 0x4d, 0x06, 0x8c, 0xb2, 0x19, 0xd9, 0x66, 0xd8, + 0xfc, 0x57, 0x15, 0xaa, 0xca, 0xa2, 0x2a, 0x0e, 0x7c, 0x09, 0x66, 0x94, 0xd1, 0x33, 0x91, 0xe0, + 0xe1, 0x38, 0x12, 0xa0, 0xee, 0xd3, 0x63, 0x28, 0xab, 0xc6, 0xcd, 0xb6, 0x29, 0x34, 0x90, 0x8a, + 0x24, 0x2a, 0x1e, 0x48, 0x0d, 0x6c, 0x61, 0xc0, 0xb8, 0x73, 0x40, 0xb9, 0x08, 0xf3, 0x56, 0xa0, + 0x07, 0xa1, 0x74, 0x43, 0x74, 0x6b, 0x11, 0x1e, 0xca, 0xad, 0x33, 0xb7, 0x07, 0x8d, 0xd3, 0x6a, + 0xee, 0xf0, 0x08, 0xca, 0xe6, 0xac, 0xe0, 0xaa, 0xa4, 0xa0, 0x8b, 0x8a, 0xe0, 0x62, 0x58, 0xbe, + 0x10, 0x63, 0x32, 0x15, 0x5c, 0x0c, 0xcb, 0xcf, 0x04, 0x17, 0x35, 0x44, 0x04, 0x17, 0xd1, 0x63, + 0xde, 0xdb, 0xa0, 0xf1, 0x26, 0x00, 0x42, 0xb8, 0xfd, 0x10, 0x43, 0xc6, 0x11, 0xdc, 0x2f, 0x20, + 0xf7, 0x85, 0x0c, 0x77, 0xb7, 0x1f, 0x16, 0x62, 0x8f, 0xeb, 0x7d, 0xb9, 0x1f, 0x92, 0x9f, 0x6b, + 0xb0, 0xd8, 0xf1, 0x2d, 0x73, 0x97, 0x9b, 0xba, 0x8a, 0xd7, 0xaa, 0x4f, 0x86, 0x95, 0x23, 0x45, + 0xb9, 0x82, 0xa2, 0x9c, 0x41, 0x0f, 0xc9, 0x01, 0x29, 0x24, 0x14, 0x41, 0x04, 0xe9, 0x97, 0x1b, + 0x72, 0x3e, 0x31, 0x61, 0x2e, 0xf1, 0x3c, 0xb9, 0xa1, 0xcb, 0x77, 0xdc, 0xd0, 0x8f, 0xa0, 0x5c, + 0x4b, 0xc3, 0x9e, 0x9b, 0xec, 0xe4, 0xd9, 0x98, 0x28, 0xf7, 0xf0, 0x3e, 0x90, 0x8c, 0x67, 0xe9, + 0xbe, 0x11, 0x72, 0x8c, 0x56, 0x2f, 0x15, 0x8e, 0x56, 0x0f, 0x2a, 0xbe, 0xa3, 0x88, 0x94, 0xcd, + 0x07, 0x29, 0x77, 0x65, 0x46, 0xc8, 0xc9, 0xf7, 0x34, 0x58, 0x94, 0xd1, 0x86, 0x07, 0xa1, 0x6e, + 0x74, 0xbb, 0xfd, 0x5e, 0xdf, 0x36, 0x42, 0x6e, 0xca, 0xc0, 0x55, 0x69, 0x5d, 0x2e, 0xcc, 0x1d, + 0xad, 0x91, 0x87, 0x49, 0x59, 0x2d, 0x22, 0x6f, 0x24, 0xd4, 0x91, 0x28, 0x5d, 0xfd, 0xd4, 0xa2, + 0xf4, 0x77, 0x61, 0xd1, 0xe7, 0x01, 0xf7, 0xf7, 0xb8, 0x9e, 0xe1, 0x38, 0x33, 0xde, 0x5a, 0xf3, + 0x30, 0x29, 0x23, 0x48, 0x7e, 0xfe, 0x6e, 0x8e, 0x89, 0xd9, 0xcf, 0xf6, 0x98, 0x98, 0x3b, 0xce, + 0x31, 0xf1, 0x2c, 0xcc, 0x5a, 0x81, 0x6e, 0x5b, 0x37, 0xfa, 0x96, 0x29, 0x5d, 0xe4, 0x94, 0x8c, + 0x90, 0xf5, 0x24, 0xf0, 0x67, 0xba, 0x29, 0x9b, 0xb1, 0x82, 0xad, 0xa4, 0xf9, 0xeb, 0x12, 0x4c, + 0x0a, 0x5e, 0xe9, 0x14, 0x4c, 0x2b, 0x90, 0x82, 0x5d, 0x84, 0x6a, 0xcf, 0x35, 0xfb, 0x36, 0x57, + 0x4b, 0x28, 0xc9, 0x25, 0xfc, 0xdf, 0xc1, 0xa0, 0x01, 0x97, 0x25, 0x19, 0xd7, 0x40, 0xd4, 0xf4, + 0xd4, 0x50, 0xca, 0xa0, 0x17, 0x8f, 0x18, 0x52, 0xc4, 0xc4, 0x71, 0x14, 0x61, 0x03, 0xa8, 0x20, + 0x63, 0x1a, 0xa1, 0x51, 0x9f, 0x3c, 0x3b, 0xb1, 0x5a, 0x5d, 0x7f, 0xbc, 0x99, 0x93, 0x49, 0x37, + 0x65, 0x28, 0xb9, 0x60, 0x84, 0x86, 0xc0, 0xbe, 0x6c, 0x78, 0x9e, 0xe5, 0xec, 0x2a, 0x6e, 0x71, + 0x4f, 0x2a, 0x96, 0xc6, 0x98, 0x94, 0x55, 0x8c, 0xa8, 0x9f, 0xfe, 0x49, 0x83, 0xe5, 0xd7, 0x02, + 0xee, 0xcb, 0x19, 0xe2, 0x48, 0x53, 0xbb, 0x17, 0xd1, 0x92, 0xcc, 0x54, 0x3b, 0x3a, 0x33, 0xfd, + 0x3c, 0x4c, 0x0b, 0xd1, 0x92, 0x23, 0x92, 0x24, 0xba, 0xc6, 0x0e, 0xca, 0xa6, 0xc4, 0xaf, 0xb6, + 0x29, 0x06, 0x67, 0xb3, 0x64, 0x72, 0x84, 0x61, 0xce, 0x43, 0x05, 0x83, 0x8c, 0x3c, 0xf7, 0x26, + 0x56, 0x27, 0x5b, 0x8b, 0xc9, 0xf9, 0x14, 0x77, 0x51, 0x56, 0x56, 0xbf, 0xdb, 0x26, 0x7d, 0xab, + 0x04, 0x8b, 0x79, 0xba, 0xc9, 0x64, 0xf6, 0x5a, 0xb1, 0xcc, 0xfe, 0x25, 0x20, 0x8a, 0x1a, 0xfa, + 0x86, 0x13, 0x58, 0xa1, 0x2e, 0x76, 0x2a, 0xae, 0xf5, 0xe1, 0x24, 0x2c, 0x8e, 0x8e, 0xa1, 0x6c, + 0x5e, 0x12, 0xb7, 0x15, 0x6d, 0x7b, 0xdf, 0xe3, 0xa4, 0x03, 0x10, 0xf4, 0x3d, 0xcf, 0xde, 0xd7, + 0xbb, 0x86, 0x87, 0x5e, 0xb2, 0x59, 0x38, 0x3e, 0xa0, 0x61, 0x13, 0x24, 0xca, 0x2a, 0xaa, 0xb1, + 0x69, 0x78, 0xf4, 0x1f, 0x25, 0x98, 0xbd, 0x78, 0x2b, 0xe4, 0x8e, 0xc9, 0x4d, 0x5d, 0x24, 0x09, + 0x64, 0x0e, 0x4a, 0xd1, 0xba, 0x59, 0xc9, 0x32, 0x49, 0x33, 0xd6, 0x86, 0x83, 0x0b, 0xa9, 0x8d, + 0xa8, 0xc0, 0x89, 0x55, 0xe0, 0x08, 0x4b, 0x28, 0xaa, 0x38, 0xca, 0x95, 0xe1, 0x52, 0x96, 0x88, + 0xbb, 0x28, 0x53, 0xb0, 0xe2, 0xf8, 0x7d, 0x46, 0x6e, 0x6a, 0x19, 0x48, 0x74, 0x61, 0x4f, 0x99, + 0xb8, 0x0c, 0x6f, 0xea, 0xa4, 0x9b, 0xb2, 0xaa, 0x15, 0xc8, 0xd8, 0x22, 0xb7, 0xf2, 0x57, 0x61, + 0x21, 0x46, 0xd5, 0x23, 0x8f, 0x39, 0x29, 0x19, 0x37, 0x0f, 0x06, 0x8d, 0xb9, 0x0d, 0x64, 0x13, + 0x6f, 0xee, 0xfa, 0x90, 0x28, 0x7a, 0xec, 0x4d, 0x73, 0x46, 0x7a, 0xac, 0x49, 0x5e, 0x04, 0xd2, + 0xb3, 0x1c, 0xbd, 0x1f, 0x98, 0xfa, 0x9e, 0x61, 0xf7, 0xb9, 0x6e, 0xf3, 0x1d, 0x95, 0x9f, 0x64, + 0xcc, 0x39, 0x3a, 0x86, 0xb2, 0x53, 0x3d, 0xcb, 0x79, 0x2d, 0x30, 0xbf, 0x2c, 0x48, 0x5b, 0x82, + 0xf2, 0x5b, 0x0d, 0x88, 0x14, 0x65, 0xdb, 0x15, 0x7a, 0x8e, 0x9c, 0xed, 0x98, 0x81, 0x68, 0xcc, + 0xea, 0x13, 0x13, 0xc4, 0x09, 0xb9, 0x51, 0xee, 0x2a, 0x41, 0xa4, 0x3f, 0xae, 0x00, 0x11, 0x62, + 0xa9, 0x10, 0xd0, 0xba, 0x77, 0xf2, 0x37, 0xa1, 0x8c, 0xb1, 0x22, 0xc0, 0x05, 0xa4, 0x1c, 0x32, + 0xea, 0xa1, 0x6c, 0x5a, 0x85, 0x91, 0x80, 0x3c, 0x09, 0x10, 0xef, 0xff, 0x00, 0x63, 0xc3, 0x52, + 0xb2, 0x31, 0x92, 0x3e, 0xca, 0x2a, 0x51, 0x70, 0x08, 0x88, 0x03, 0x73, 0xaa, 0x84, 0x50, 0x24, + 0xae, 0x5c, 0xaa, 0xd2, 0x7a, 0xbe, 0x70, 0x41, 0xb2, 0x94, 0x2e, 0x48, 0x22, 0x34, 0xca, 0x54, + 0xb9, 0xd3, 0xc2, 0x36, 0x79, 0x4b, 0x83, 0x25, 0x35, 0x24, 0x93, 0x33, 0x71, 0x53, 0xba, 0x5b, + 0x45, 0x25, 0x9a, 0x85, 0xf8, 0x3e, 0x94, 0xe6, 0x3b, 0x04, 0x4a, 0x59, 0x4d, 0xd2, 0xd3, 0x95, + 0x03, 0x37, 0x45, 0xc4, 0x51, 0xc3, 0x85, 0xee, 0xb0, 0xa6, 0xde, 0x2c, 0xcc, 0x78, 0x21, 0xcd, + 0x58, 0x20, 0x51, 0x56, 0x91, 0x0d, 0x71, 0x70, 0x90, 0x9f, 0x6a, 0xb0, 0xac, 0xba, 0x72, 0x53, + 0xbe, 0xb2, 0x64, 0x7a, 0xb5, 0x30, 0xd3, 0x47, 0xd2, 0x4c, 0xf3, 0x13, 0xbf, 0xba, 0xec, 0x6c, + 0xe7, 0x64, 0x7f, 0xaf, 0xa3, 0x4b, 0x19, 0x9e, 0x8f, 0x19, 0xef, 0x46, 0xe1, 0x38, 0x9b, 0x76, + 0x40, 0xc3, 0xf3, 0xd1, 0x01, 0x37, 0x3c, 0x5f, 0x68, 0x15, 0x9d, 0x4c, 0xe0, 0xc3, 0x78, 0x71, + 0x3c, 0x41, 0x8a, 0xdd, 0x55, 0xf0, 0xd8, 0x83, 0x85, 0x6c, 0xae, 0x2d, 0x58, 0xa9, 0x24, 0xf6, + 0xc5, 0xc2, 0xac, 0xea, 0x79, 0xc9, 0xbb, 0xe4, 0x78, 0x2a, 0x9d, 0xbb, 0x0b, 0xbe, 0x37, 0x61, + 0xa1, 0x1f, 0x5a, 0xb6, 0x15, 0x18, 0x32, 0x01, 0xf4, 0xc5, 0x1f, 0x4c, 0x65, 0x8f, 0xcd, 0x77, + 0x04, 0x90, 0xb2, 0xf9, 0x14, 0x8d, 0x49, 0xd2, 0x7b, 0x55, 0x98, 0x97, 0xd1, 0x42, 0x54, 0x10, + 0xc1, 0x2b, 0x86, 0x6f, 0xf4, 0x82, 0x71, 0x4e, 0x6e, 0x1d, 0x2a, 0x7d, 0xdd, 0xf5, 0x42, 0xab, + 0x67, 0xd8, 0x98, 0xd7, 0xb5, 0x0a, 0x2f, 0x00, 0x0f, 0xb9, 0x18, 0x88, 0xb2, 0x72, 0xff, 0x65, + 0xf5, 0x93, 0xbc, 0x0a, 0x93, 0xa2, 0x7c, 0xc4, 0x73, 0xfc, 0xd9, 0xc2, 0xd8, 0x55, 0xb4, 0xbf, + 0x11, 0x70, 0xca, 0x24, 0x14, 0xf9, 0x0a, 0x4c, 0x05, 0xb6, 0xeb, 0xf1, 0xf3, 0x78, 0x23, 0xf8, + 0x5c, 0x61, 0x50, 0xbc, 0xb2, 0x52, 0x28, 0x94, 0x21, 0x5c, 0x0c, 0xbc, 0x8e, 0x41, 0x6f, 0x3c, + 0xe0, 0xf5, 0x08, 0x78, 0x9d, 0xbc, 0x0a, 0x8b, 0xdc, 0x91, 0x5e, 0x95, 0xbd, 0xe7, 0x98, 0x92, + 0x07, 0x7e, 0x23, 0x29, 0x67, 0xf2, 0x46, 0x51, 0x46, 0x14, 0x39, 0x73, 0xdf, 0xc1, 0xa1, 0x1a, + 0x8d, 0x12, 0xea, 0x55, 0x41, 0xeb, 0x42, 0x61, 0x81, 0x49, 0xd6, 0xe7, 0xa5, 0x96, 0x01, 0xbd, + 0x5d, 0xe8, 0xfa, 0x3a, 0xcc, 0x62, 0x1f, 0xaa, 0xbc, 0x5c, 0xf8, 0x7e, 0x4a, 0x31, 0x5a, 0xcc, + 0x30, 0x8a, 0x34, 0x3f, 0xa3, 0xda, 0x57, 0x95, 0xfe, 0x87, 0x98, 0xad, 0x63, 0x50, 0xfa, 0x44, + 0x98, 0xad, 0x67, 0x99, 0xad, 0x93, 0x2b, 0x30, 0x61, 0x87, 0x7b, 0x18, 0x97, 0x9e, 0x29, 0xcc, + 0x02, 0x30, 0xee, 0x85, 0x7b, 0x94, 0x09, 0x20, 0xf2, 0xb6, 0x06, 0x4b, 0x51, 0x05, 0x26, 0x8b, + 0xc2, 0x6b, 0x3e, 0x0f, 0xae, 0xb9, 0xb6, 0x89, 0xf1, 0xe8, 0x4a, 0x61, 0x16, 0x51, 0xb9, 0x99, + 0x07, 0x4a, 0xd9, 0x62, 0x8a, 0xbe, 0x1d, 0x91, 0xc9, 0x1b, 0x50, 0x4b, 0x8f, 0xf7, 0xb8, 0x63, + 0xd8, 0xe1, 0x3e, 0x86, 0xa6, 0xad, 0xc2, 0x22, 0x2c, 0x8f, 0x8a, 0x80, 0x90, 0x94, 0x91, 0x14, + 0xf5, 0x15, 0x45, 0x14, 0x71, 0x31, 0x3d, 0xb6, 0xe3, 0x3a, 0xfd, 0x40, 0x16, 0xd8, 0x63, 0xc4, + 0xc5, 0x11, 0x40, 0xca, 0xe6, 0x53, 0xb4, 0x96, 0x20, 0x89, 0xbc, 0x25, 0xba, 0x0a, 0xd8, 0x31, + 0xba, 0xa1, 0xeb, 0x63, 0x9d, 0xfd, 0x7c, 0x61, 0xae, 0x4b, 0xd9, 0x8b, 0x05, 0x85, 0x46, 0xd9, + 0x2c, 0x12, 0x2e, 0xc9, 0x36, 0x79, 0x0e, 0xa0, 0xab, 0xc7, 0x41, 0xf7, 0x94, 0x0c, 0xba, 0x8f, + 0x1c, 0x0c, 0x1a, 0xe5, 0xcd, 0x24, 0xea, 0x46, 0x95, 0xac, 0x9e, 0xc4, 0xdd, 0x72, 0x57, 0x75, + 0x9b, 0xf4, 0x57, 0x25, 0x38, 0xcd, 0x14, 0x64, 0xab, 0xbf, 0xdf, 0x31, 0xba, 0xd7, 0xe3, 0xa2, + 0x6c, 0x9c, 0x78, 0x9e, 0xd2, 0x03, 0xde, 0xe5, 0x95, 0xc6, 0xcb, 0xdf, 0xb2, 0x68, 0x89, 0x1e, + 0xf0, 0x92, 0xce, 0x81, 0xb9, 0x8e, 0x12, 0x3f, 0xe2, 0x37, 0x31, 0x1e, 0xbf, 0x2c, 0x1a, 0x65, + 0xb3, 0x48, 0x50, 0xfc, 0xe8, 0x3f, 0x27, 0x61, 0x76, 0xa3, 0x2f, 0xef, 0x56, 0xf0, 0xf0, 0x5b, + 0x8d, 0xdf, 0x26, 0x94, 0xaa, 0x16, 0x0e, 0x7d, 0x92, 0xf8, 0x06, 0xd4, 0x0d, 0x35, 0x55, 0x37, + 0xfb, 0xbe, 0x72, 0xa8, 0x80, 0x77, 0x5d, 0xc7, 0x0c, 0x30, 0x19, 0x3f, 0x77, 0x7b, 0xd0, 0x68, + 0xe0, 0xdc, 0x43, 0x46, 0x52, 0xf6, 0x00, 0x76, 0x5d, 0xc0, 0x9e, 0xab, 0xaa, 0x43, 0x9c, 0x1e, + 0x9d, 0xfe, 0xce, 0x0e, 0xf7, 0x51, 0x05, 0xc7, 0x3e, 0x3d, 0x14, 0x0a, 0x65, 0x08, 0x27, 0x8e, + 0xd0, 0x6e, 0x3f, 0xf0, 0xf0, 0xb4, 0x3b, 0xf6, 0x11, 0x2a, 0x30, 0x28, 0x93, 0x50, 0x02, 0x32, + 0x08, 0xb9, 0x87, 0xe7, 0xdc, 0xb3, 0x85, 0x8d, 0x55, 0x8d, 0x02, 0x2c, 0x17, 0x90, 0xe2, 0x0f, + 0xb9, 0x02, 0x35, 0xcf, 0xb7, 0xba, 0x5c, 0xdf, 0xe9, 0x3b, 0x78, 0x2d, 0xb6, 0xef, 0x71, 0xac, + 0x1a, 0x57, 0x92, 0x58, 0x92, 0x33, 0x88, 0xb2, 0x05, 0x49, 0xbd, 0x84, 0x44, 0x79, 0x0d, 0xd0, + 0x84, 0xb2, 0xd9, 0x0f, 0xbb, 0xd7, 0x84, 0x65, 0xa7, 0x87, 0x0b, 0xf0, 0xa8, 0x87, 0xb2, 0x69, + 0xf9, 0xb3, 0x6d, 0x8a, 0x33, 0xb6, 0x63, 0x99, 0xa3, 0x96, 0x55, 0x2f, 0x56, 0xa9, 0x33, 0x36, + 0x6f, 0x14, 0x65, 0xa4, 0x63, 0x99, 0x43, 0x16, 0xa5, 0x1f, 0x69, 0x70, 0xba, 0x85, 0x75, 0x52, + 0x94, 0x5a, 0x87, 0xbe, 0xd1, 0xbd, 0xce, 0x7d, 0xf2, 0x74, 0xee, 0xdb, 0xc9, 0xe9, 0xbb, 0x7a, + 0x35, 0x11, 0x45, 0x4f, 0xb4, 0xaf, 0x54, 0x89, 0x88, 0xe8, 0xe8, 0x39, 0xc7, 0x3e, 0x2a, 0x72, + 0x41, 0x29, 0xab, 0x21, 0x5d, 0x96, 0xa7, 0x11, 0xf5, 0x8f, 0x1a, 0x2c, 0x8a, 0xca, 0x24, 0x7a, + 0x2c, 0x8a, 0x57, 0xf6, 0x64, 0xce, 0xeb, 0xf0, 0xd2, 0x1d, 0x9f, 0x71, 0xde, 0x84, 0x5a, 0x04, + 0x94, 0xae, 0x6b, 0x4a, 0x9f, 0xc6, 0x55, 0x36, 0x41, 0x4e, 0xa9, 0x5a, 0x86, 0xbe, 0xa7, 0xc1, + 0xac, 0xba, 0x8c, 0x6c, 0x19, 0xb6, 0xe1, 0x74, 0xf9, 0x71, 0x4b, 0xf4, 0x37, 0x61, 0x11, 0x2f, + 0x30, 0x3b, 0x0a, 0x48, 0x64, 0x63, 0xa1, 0x88, 0x10, 0x13, 0xab, 0xd5, 0xf5, 0xc7, 0x72, 0xef, + 0x1a, 0x33, 0x8c, 0xaf, 0x8a, 0xe1, 0xad, 0x73, 0xd9, 0x17, 0x92, 0x3c, 0x48, 0xca, 0x48, 0x6f, + 0x64, 0x22, 0xfd, 0x83, 0x06, 0x64, 0x14, 0x6f, 0x9c, 0x33, 0x61, 0x0f, 0xa6, 0x91, 0xaf, 0x34, + 0xc7, 0x91, 0x0f, 0x3b, 0x1b, 0x28, 0xf6, 0x5c, 0x94, 0x76, 0xcb, 0x79, 0x85, 0xde, 0x72, 0x22, + 0x66, 0xf4, 0x0d, 0x98, 0xba, 0xec, 0x9a, 0x2d, 0xc3, 0x26, 0x01, 0xd4, 0x76, 0xfa, 0x8e, 0xa9, + 0x67, 0xb5, 0x50, 0xd7, 0xa4, 0x4a, 0x1b, 0xb9, 0x2a, 0xbd, 0xd4, 0x77, 0x4c, 0x35, 0xbb, 0x45, + 0x51, 0x26, 0x0c, 0x20, 0x39, 0x48, 0x94, 0x2d, 0xec, 0xa8, 0xf1, 0x89, 0xda, 0xe8, 0x0f, 0x34, + 0x80, 0xe8, 0x84, 0x35, 0x6c, 0xf2, 0x2d, 0x58, 0x94, 0x33, 0xa3, 0x3d, 0x92, 0x15, 0xe2, 0xdc, + 0xa1, 0x42, 0x24, 0x10, 0xc3, 0x36, 0xcd, 0x83, 0xa3, 0x8c, 0xec, 0x64, 0x26, 0x49, 0xe2, 0xf7, + 0x27, 0x00, 0x92, 0x05, 0x8d, 0x63, 0xcb, 0x94, 0x53, 0x97, 0x0a, 0x38, 0x75, 0xe6, 0x99, 0x73, + 0xe2, 0xb3, 0xff, 0x36, 0xc2, 0xe4, 0x9e, 0x2b, 0xef, 0x7c, 0xad, 0x1e, 0x97, 0xe7, 0x58, 0xa1, + 0x6f, 0x23, 0xd2, 0xb3, 0xf1, 0xdb, 0x08, 0x24, 0xc9, 0xf7, 0x95, 0xc7, 0x61, 0x4a, 0xe8, 0x9c, + 0xfb, 0x78, 0x9c, 0xa5, 0x32, 0x00, 0x45, 0xa7, 0x0c, 0x07, 0xd0, 0xbf, 0x94, 0x60, 0x2e, 0x6b, + 0xd4, 0x71, 0x8c, 0x91, 0xd1, 0x6a, 0xe9, 0x1e, 0x6b, 0x75, 0xe2, 0x53, 0xd3, 0xea, 0xe4, 0x9d, + 0xb4, 0xfa, 0xe1, 0x14, 0x9c, 0xda, 0xb0, 0x6d, 0x54, 0xea, 0xd8, 0xf1, 0xea, 0x17, 0x1a, 0xa4, + 0x1e, 0xb7, 0xf5, 0x1d, 0xdf, 0xed, 0xc5, 0xdb, 0x2c, 0x74, 0xe5, 0xd5, 0x1a, 0xf7, 0x03, 0x3c, + 0x5a, 0xbe, 0x5e, 0x38, 0x77, 0x79, 0x7c, 0xf8, 0xf9, 0xfc, 0x30, 0x0e, 0x94, 0x3d, 0x1c, 0xbf, + 0x95, 0x5f, 0xf2, 0xdd, 0x1e, 0xae, 0x6f, 0xdb, 0xdd, 0x52, 0xfd, 0xe4, 0x97, 0x1a, 0x9c, 0x3b, + 0x0c, 0x66, 0xc7, 0xf5, 0x75, 0x4c, 0x14, 0xf1, 0x54, 0x7f, 0xbd, 0xb0, 0xa4, 0x9f, 0x3b, 0x5a, + 0xd2, 0x14, 0x0b, 0xca, 0x56, 0xf2, 0x44, 0xbd, 0xe4, 0xfa, 0x98, 0x2c, 0x93, 0x9f, 0x68, 0xb0, + 0x1c, 0xbb, 0x9c, 0xc2, 0xb1, 0xad, 0x1b, 0x71, 0x81, 0x38, 0x39, 0xde, 0xfd, 0xe3, 0xe1, 0xc8, + 0x22, 0x5f, 0x46, 0x97, 0x15, 0x82, 0x6d, 0x59, 0x37, 0xa2, 0x5a, 0xf1, 0x1d, 0x0d, 0x1e, 0x1c, + 0x9a, 0xe7, 0x73, 0xcf, 0xd8, 0xef, 0x71, 0x27, 0x0c, 0x70, 0x2b, 0xb3, 0xc2, 0x02, 0x9d, 0xcd, + 0x15, 0x28, 0x01, 0x1e, 0x92, 0x87, 0xc5, 0x1d, 0xe4, 0x67, 0x1a, 0x9c, 0x51, 0xf7, 0xa8, 0x29, + 0x85, 0xa7, 0xfc, 0x4d, 0x5d, 0x48, 0x6f, 0x17, 0x96, 0x88, 0xa6, 0xaf, 0x68, 0x73, 0xa1, 0x29, + 0x3b, 0x2d, 0x7b, 0x37, 0x22, 0x13, 0xc6, 0x2e, 0x46, 0x7f, 0xaf, 0x41, 0x3d, 0xf5, 0x7c, 0x72, + 0xd5, 0x72, 0x76, 0x6d, 0xfe, 0x5f, 0xf2, 0x88, 0x72, 0xd7, 0x5f, 0xd9, 0x88, 0xf3, 0xaf, 0x22, + 0xc4, 0x12, 0x03, 0x83, 0xfb, 0x8f, 0xd0, 0x85, 0x1e, 0xa1, 0x0f, 0x79, 0x8d, 0x3b, 0x79, 0xac, + 0xd7, 0xb8, 0xdf, 0x68, 0x30, 0x9f, 0xae, 0x02, 0xc6, 0xbd, 0x6e, 0xb8, 0x0e, 0xb3, 0xea, 0xe9, + 0x29, 0x2a, 0x60, 0x4a, 0xe3, 0x7d, 0xbe, 0x96, 0x01, 0xa3, 0x4c, 0x7e, 0x53, 0x19, 0x57, 0x2c, + 0x7f, 0xd6, 0x60, 0x26, 0x2d, 0xfc, 0x71, 0x1d, 0xe9, 0x87, 0x1a, 0x90, 0x4c, 0x85, 0xa4, 0xec, + 0xa8, 0x12, 0xfc, 0xff, 0xcf, 0xb5, 0xe3, 0xb0, 0xce, 0x5a, 0x4f, 0x89, 0x15, 0x1e, 0x0c, 0x1a, + 0x23, 0xda, 0x4c, 0x0c, 0x32, 0xca, 0x82, 0xb2, 0x79, 0x6f, 0x68, 0x38, 0xfd, 0x9d, 0x06, 0x0b, + 0x23, 0xe8, 0xe3, 0x98, 0xe4, 0x06, 0x9c, 0xea, 0x64, 0x6b, 0x56, 0x34, 0xca, 0x0b, 0x85, 0x8d, + 0xf2, 0x40, 0xf6, 0xa9, 0x30, 0x36, 0x0b, 0x7e, 0x97, 0x15, 0x1b, 0xe6, 0xaf, 0x1a, 0xcc, 0xa6, + 0xd7, 0xd0, 0x3a, 0xae, 0x65, 0x7e, 0x74, 0x94, 0x65, 0x1e, 0xbd, 0x3b, 0xcb, 0x7c, 0x72, 0xa6, + 0x79, 0x67, 0x0e, 0x6a, 0xa9, 0xb7, 0x96, 0x38, 0x7e, 0xdd, 0x7f, 0x6e, 0xb9, 0xff, 0xdc, 0x72, + 0xff, 0xb9, 0xe5, 0xfe, 0x73, 0xcb, 0xfd, 0xe7, 0x96, 0xff, 0x99, 0xe7, 0x96, 0xe1, 0xe4, 0x71, + 0xfe, 0x13, 0x49, 0x1e, 0x17, 0xc6, 0x4f, 0x1e, 0xc9, 0x3d, 0x49, 0x1e, 0x6b, 0xc7, 0x49, 0x1e, + 0x5b, 0x2f, 0xbc, 0x7f, 0xb0, 0xa2, 0x7d, 0x70, 0xb0, 0xa2, 0xfd, 0xfd, 0x60, 0x45, 0x7b, 0xf7, + 0xe3, 0x95, 0x13, 0x1f, 0x7c, 0xbc, 0x72, 0xe2, 0xc3, 0x8f, 0x57, 0x4e, 0x7c, 0xad, 0x99, 0x31, + 0xb7, 0x58, 0xc9, 0x13, 0xee, 0xce, 0x8e, 0xd5, 0xb5, 0x0c, 0x1b, 0xdb, 0x6b, 0xf8, 0x7f, 0x50, + 0xd2, 0xf4, 0x9d, 0x29, 0x79, 0x3b, 0xf1, 0x85, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x6c, 0xb0, + 0x53, 0x62, 0x23, 0x35, 0x00, 0x00, } func (m *LendAsset) Marshal() (dAtA []byte, err error) { @@ -3546,201 +3654,309 @@ func (m *PoolInterestB) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func encodeVarintLend(dAtA []byte, offset int, v uint64) int { - offset -= sovLend(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *LendAsset) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.ID != 0 { - n += 1 + sovLend(uint64(m.ID)) - } - if m.AssetID != 0 { - n += 1 + sovLend(uint64(m.AssetID)) - } - if m.PoolID != 0 { - n += 1 + sovLend(uint64(m.PoolID)) - } - l = len(m.Owner) - if l > 0 { - n += 1 + l + sovLend(uint64(l)) - } - l = m.AmountIn.Size() - n += 1 + l + sovLend(uint64(l)) - l = github_com_gogo_protobuf_types.SizeOfStdTime(m.LendingTime) - n += 1 + l + sovLend(uint64(l)) - l = m.AvailableToBorrow.Size() - n += 1 + l + sovLend(uint64(l)) - if m.AppID != 0 { - n += 1 + sovLend(uint64(m.AppID)) - } - l = m.GlobalIndex.Size() - n += 1 + l + sovLend(uint64(l)) - l = github_com_gogo_protobuf_types.SizeOfStdTime(m.LastInteractionTime) - n += 1 + l + sovLend(uint64(l)) - l = len(m.CPoolName) - if l > 0 { - n += 1 + l + sovLend(uint64(l)) +func (m *AssetRatesPoolPairs) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } - l = m.TotalRewards.Size() - n += 1 + l + sovLend(uint64(l)) - return n + return dAtA[:n], nil } -func (m *BorrowAsset) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.ID != 0 { - n += 1 + sovLend(uint64(m.ID)) - } - if m.LendingID != 0 { - n += 1 + sovLend(uint64(m.LendingID)) - } - if m.IsStableBorrow { - n += 2 - } - if m.PairID != 0 { - n += 1 + sovLend(uint64(m.PairID)) - } - l = m.AmountIn.Size() - n += 1 + l + sovLend(uint64(l)) - l = m.AmountOut.Size() - n += 1 + l + sovLend(uint64(l)) - l = m.BridgedAssetAmount.Size() - n += 1 + l + sovLend(uint64(l)) - l = github_com_gogo_protobuf_types.SizeOfStdTime(m.BorrowingTime) - n += 1 + l + sovLend(uint64(l)) - l = m.StableBorrowRate.Size() - n += 1 + l + sovLend(uint64(l)) - l = m.InterestAccumulated.Size() - n += 1 + l + sovLend(uint64(l)) - l = m.GlobalIndex.Size() - n += 1 + l + sovLend(uint64(l)) - l = m.ReserveGlobalIndex.Size() - n += 1 + l + sovLend(uint64(l)) - l = github_com_gogo_protobuf_types.SizeOfStdTime(m.LastInteractionTime) - n += 1 + l + sovLend(uint64(l)) - l = len(m.CPoolName) - if l > 0 { - n += 1 + l + sovLend(uint64(l)) - } - if m.IsLiquidated { - n += 2 - } - return n +func (m *AssetRatesPoolPairs) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *Pool) Size() (n int) { - if m == nil { - return 0 - } +func (m *AssetRatesPoolPairs) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - if m.PoolID != 0 { - n += 1 + sovLend(uint64(m.PoolID)) - } - l = len(m.ModuleName) - if l > 0 { - n += 1 + l + sovLend(uint64(l)) - } - l = len(m.CPoolName) - if l > 0 { - n += 1 + l + sovLend(uint64(l)) + if m.MinUsdValueLeft != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.MinUsdValueLeft)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x98 } if len(m.AssetData) > 0 { - for _, e := range m.AssetData { - l = e.Size() - n += 1 + l + sovLend(uint64(l)) + for iNdEx := len(m.AssetData) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AssetData[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintLend(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x92 } } - return n -} - -func (m *UserAssetLendBorrowMapping) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Owner) - if l > 0 { - n += 1 + l + sovLend(uint64(l)) + if len(m.CPoolName) > 0 { + i -= len(m.CPoolName) + copy(dAtA[i:], m.CPoolName) + i = encodeVarintLend(dAtA, i, uint64(len(m.CPoolName))) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x8a } - if m.LendId != 0 { - n += 1 + sovLend(uint64(m.LendId)) + if len(m.ModuleName) > 0 { + i -= len(m.ModuleName) + copy(dAtA[i:], m.ModuleName) + i = encodeVarintLend(dAtA, i, uint64(len(m.ModuleName))) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x82 } - if m.PoolId != 0 { - n += 1 + sovLend(uint64(m.PoolId)) + if m.CAssetID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.CAssetID)) + i-- + dAtA[i] = 0x78 } - if len(m.BorrowId) > 0 { - l = 0 - for _, e := range m.BorrowId { - l += sovLend(uint64(e)) + { + size := m.ReserveFactor.Size() + i -= size + if _, err := m.ReserveFactor.MarshalTo(dAtA[i:]); err != nil { + return 0, err } - n += 1 + sovLend(uint64(l)) + l + i = encodeVarintLend(dAtA, i, uint64(size)) } - return n + i-- + dAtA[i] = 0x72 + { + size := m.LiquidationBonus.Size() + i -= size + if _, err := m.LiquidationBonus.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintLend(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x6a + { + size := m.LiquidationPenalty.Size() + i -= size + if _, err := m.LiquidationPenalty.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintLend(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x62 + { + size := m.LiquidationThreshold.Size() + i -= size + if _, err := m.LiquidationThreshold.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintLend(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x5a + { + size := m.Ltv.Size() + i -= size + if _, err := m.Ltv.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintLend(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + { + size := m.StableSlope2.Size() + i -= size + if _, err := m.StableSlope2.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintLend(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + { + size := m.StableSlope1.Size() + i -= size + if _, err := m.StableSlope1.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintLend(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + { + size := m.StableBase.Size() + i -= size + if _, err := m.StableBase.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintLend(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + if m.EnableStableBorrow { + i-- + if m.EnableStableBorrow { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x30 + } + { + size := m.Slope2.Size() + i -= size + if _, err := m.Slope2.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintLend(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + { + size := m.Slope1.Size() + i -= size + if _, err := m.Slope1.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintLend(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + { + size := m.Base.Size() + i -= size + if _, err := m.Base.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintLend(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + { + size := m.UOptimal.Size() + i -= size + if _, err := m.UOptimal.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintLend(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if m.AssetID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.AssetID)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil } -func (m *AssetDataPoolMapping) Size() (n int) { +func encodeVarintLend(dAtA []byte, offset int, v uint64) int { + offset -= sovLend(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *LendAsset) Size() (n int) { if m == nil { return 0 } var l int _ = l + if m.ID != 0 { + n += 1 + sovLend(uint64(m.ID)) + } if m.AssetID != 0 { n += 1 + sovLend(uint64(m.AssetID)) } - if m.AssetTransitType != 0 { - n += 1 + sovLend(uint64(m.AssetTransitType)) + if m.PoolID != 0 { + n += 1 + sovLend(uint64(m.PoolID)) } - l = m.SupplyCap.Size() + l = len(m.Owner) + if l > 0 { + n += 1 + l + sovLend(uint64(l)) + } + l = m.AmountIn.Size() + n += 1 + l + sovLend(uint64(l)) + l = github_com_gogo_protobuf_types.SizeOfStdTime(m.LendingTime) + n += 1 + l + sovLend(uint64(l)) + l = m.AvailableToBorrow.Size() + n += 1 + l + sovLend(uint64(l)) + if m.AppID != 0 { + n += 1 + sovLend(uint64(m.AppID)) + } + l = m.GlobalIndex.Size() + n += 1 + l + sovLend(uint64(l)) + l = github_com_gogo_protobuf_types.SizeOfStdTime(m.LastInteractionTime) + n += 1 + l + sovLend(uint64(l)) + l = len(m.CPoolName) + if l > 0 { + n += 1 + l + sovLend(uint64(l)) + } + l = m.TotalRewards.Size() n += 1 + l + sovLend(uint64(l)) return n } -func (m *Extended_Pair) Size() (n int) { +func (m *BorrowAsset) Size() (n int) { if m == nil { return 0 } var l int _ = l - if m.Id != 0 { - n += 1 + sovLend(uint64(m.Id)) - } - if m.AssetIn != 0 { - n += 1 + sovLend(uint64(m.AssetIn)) + if m.ID != 0 { + n += 1 + sovLend(uint64(m.ID)) } - if m.AssetOut != 0 { - n += 1 + sovLend(uint64(m.AssetOut)) + if m.LendingID != 0 { + n += 1 + sovLend(uint64(m.LendingID)) } - if m.IsInterPool { + if m.IsStableBorrow { n += 2 } - if m.AssetOutPoolID != 0 { - n += 1 + sovLend(uint64(m.AssetOutPoolID)) + if m.PairID != 0 { + n += 1 + sovLend(uint64(m.PairID)) } - if m.MinUsdValueLeft != 0 { - n += 1 + sovLend(uint64(m.MinUsdValueLeft)) + l = m.AmountIn.Size() + n += 1 + l + sovLend(uint64(l)) + l = m.AmountOut.Size() + n += 1 + l + sovLend(uint64(l)) + l = m.BridgedAssetAmount.Size() + n += 1 + l + sovLend(uint64(l)) + l = github_com_gogo_protobuf_types.SizeOfStdTime(m.BorrowingTime) + n += 1 + l + sovLend(uint64(l)) + l = m.StableBorrowRate.Size() + n += 1 + l + sovLend(uint64(l)) + l = m.InterestAccumulated.Size() + n += 1 + l + sovLend(uint64(l)) + l = m.GlobalIndex.Size() + n += 1 + l + sovLend(uint64(l)) + l = m.ReserveGlobalIndex.Size() + n += 1 + l + sovLend(uint64(l)) + l = github_com_gogo_protobuf_types.SizeOfStdTime(m.LastInteractionTime) + n += 1 + l + sovLend(uint64(l)) + l = len(m.CPoolName) + if l > 0 { + n += 1 + l + sovLend(uint64(l)) + } + if m.IsLiquidated { + n += 2 } return n } -func (m *AssetToPairMapping) Size() (n int) { +func (m *Pool) Size() (n int) { if m == nil { return 0 } @@ -3749,39 +3965,135 @@ func (m *AssetToPairMapping) Size() (n int) { if m.PoolID != 0 { n += 1 + sovLend(uint64(m.PoolID)) } - if m.AssetID != 0 { - n += 1 + sovLend(uint64(m.AssetID)) + l = len(m.ModuleName) + if l > 0 { + n += 1 + l + sovLend(uint64(l)) } - if len(m.PairID) > 0 { - l = 0 - for _, e := range m.PairID { - l += sovLend(uint64(e)) + l = len(m.CPoolName) + if l > 0 { + n += 1 + l + sovLend(uint64(l)) + } + if len(m.AssetData) > 0 { + for _, e := range m.AssetData { + l = e.Size() + n += 1 + l + sovLend(uint64(l)) } - n += 1 + sovLend(uint64(l)) + l } return n } -func (m *PoolAssetLBMapping) Size() (n int) { +func (m *UserAssetLendBorrowMapping) Size() (n int) { if m == nil { return 0 } var l int _ = l - if m.PoolID != 0 { - n += 1 + sovLend(uint64(m.PoolID)) + l = len(m.Owner) + if l > 0 { + n += 1 + l + sovLend(uint64(l)) } - if m.AssetID != 0 { - n += 1 + sovLend(uint64(m.AssetID)) + if m.LendId != 0 { + n += 1 + sovLend(uint64(m.LendId)) } - if len(m.LendIds) > 0 { + if m.PoolId != 0 { + n += 1 + sovLend(uint64(m.PoolId)) + } + if len(m.BorrowId) > 0 { l = 0 - for _, e := range m.LendIds { + for _, e := range m.BorrowId { l += sovLend(uint64(e)) } n += 1 + sovLend(uint64(l)) + l } - if len(m.BorrowIds) > 0 { + return n +} + +func (m *AssetDataPoolMapping) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AssetID != 0 { + n += 1 + sovLend(uint64(m.AssetID)) + } + if m.AssetTransitType != 0 { + n += 1 + sovLend(uint64(m.AssetTransitType)) + } + l = m.SupplyCap.Size() + n += 1 + l + sovLend(uint64(l)) + return n +} + +func (m *Extended_Pair) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Id != 0 { + n += 1 + sovLend(uint64(m.Id)) + } + if m.AssetIn != 0 { + n += 1 + sovLend(uint64(m.AssetIn)) + } + if m.AssetOut != 0 { + n += 1 + sovLend(uint64(m.AssetOut)) + } + if m.IsInterPool { + n += 2 + } + if m.AssetOutPoolID != 0 { + n += 1 + sovLend(uint64(m.AssetOutPoolID)) + } + if m.MinUsdValueLeft != 0 { + n += 1 + sovLend(uint64(m.MinUsdValueLeft)) + } + return n +} + +func (m *AssetToPairMapping) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.PoolID != 0 { + n += 1 + sovLend(uint64(m.PoolID)) + } + if m.AssetID != 0 { + n += 1 + sovLend(uint64(m.AssetID)) + } + if len(m.PairID) > 0 { + l = 0 + for _, e := range m.PairID { + l += sovLend(uint64(e)) + } + n += 1 + sovLend(uint64(l)) + l + } + return n +} + +func (m *PoolAssetLBMapping) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.PoolID != 0 { + n += 1 + sovLend(uint64(m.PoolID)) + } + if m.AssetID != 0 { + n += 1 + sovLend(uint64(m.AssetID)) + } + if len(m.LendIds) > 0 { + l = 0 + for _, e := range m.LendIds { + l += sovLend(uint64(e)) + } + n += 1 + sovLend(uint64(l)) + l + } + if len(m.BorrowIds) > 0 { l = 0 for _, e := range m.BorrowIds { l += sovLend(uint64(e)) @@ -4161,6 +4473,65 @@ func (m *PoolInterestB) Size() (n int) { return n } +func (m *AssetRatesPoolPairs) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AssetID != 0 { + n += 1 + sovLend(uint64(m.AssetID)) + } + l = m.UOptimal.Size() + n += 1 + l + sovLend(uint64(l)) + l = m.Base.Size() + n += 1 + l + sovLend(uint64(l)) + l = m.Slope1.Size() + n += 1 + l + sovLend(uint64(l)) + l = m.Slope2.Size() + n += 1 + l + sovLend(uint64(l)) + if m.EnableStableBorrow { + n += 2 + } + l = m.StableBase.Size() + n += 1 + l + sovLend(uint64(l)) + l = m.StableSlope1.Size() + n += 1 + l + sovLend(uint64(l)) + l = m.StableSlope2.Size() + n += 1 + l + sovLend(uint64(l)) + l = m.Ltv.Size() + n += 1 + l + sovLend(uint64(l)) + l = m.LiquidationThreshold.Size() + n += 1 + l + sovLend(uint64(l)) + l = m.LiquidationPenalty.Size() + n += 1 + l + sovLend(uint64(l)) + l = m.LiquidationBonus.Size() + n += 1 + l + sovLend(uint64(l)) + l = m.ReserveFactor.Size() + n += 1 + l + sovLend(uint64(l)) + if m.CAssetID != 0 { + n += 1 + sovLend(uint64(m.CAssetID)) + } + l = len(m.ModuleName) + if l > 0 { + n += 2 + l + sovLend(uint64(l)) + } + l = len(m.CPoolName) + if l > 0 { + n += 2 + l + sovLend(uint64(l)) + } + if len(m.AssetData) > 0 { + for _, e := range m.AssetData { + l = e.Size() + n += 2 + l + sovLend(uint64(l)) + } + } + if m.MinUsdValueLeft != 0 { + n += 2 + sovLend(uint64(m.MinUsdValueLeft)) + } + return n +} + func sovLend(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -4177,30 +4548,531 @@ func (m *LendAsset) Unmarshal(dAtA []byte) error { if shift >= 64 { return ErrIntOverflowLend } - if iNdEx >= l { + 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: LendAsset: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LendAsset: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) + } + m.ID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ID |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) + } + m.AssetID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AssetID |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) + } + m.PoolID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PoolID |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Owner", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + 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 ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Owner = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AmountIn", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.AmountIn.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LendingTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.LendingTime, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AvailableToBorrow", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + 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 ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.AvailableToBorrow.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AppID", wireType) + } + m.AppID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AppID |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GlobalIndex", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + 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 ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.GlobalIndex.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastInteractionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.LastInteractionTime, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CPoolName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + 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 ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CPoolName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TotalRewards", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + 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 ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.TotalRewards.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipLend(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthLend + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *BorrowAsset) 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 ErrIntOverflowLend + } + 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: BorrowAsset: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: BorrowAsset: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) + } + m.ID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ID |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field LendingID", wireType) + } + m.LendingID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.LendingID |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsStableBorrow", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.IsStableBorrow = bool(v != 0) + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PairID", wireType) + } + m.PairID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PairID |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AmountIn", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { return io.ErrUnexpectedEOF } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break + if err := m.AmountIn.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: LendAsset: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: LendAsset: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AmountOut", wireType) } - m.ID = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -4210,16 +5082,30 @@ func (m *LendAsset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ID |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) + if msglen < 0 { + return ErrInvalidLengthLend } - m.AssetID = 0 + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.AmountOut.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BridgedAssetAmount", wireType) + } + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -4229,16 +5115,30 @@ func (m *LendAsset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AssetID |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) + if msglen < 0 { + return ErrInvalidLengthLend } - m.PoolID = 0 + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.BridgedAssetAmount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BorrowingTime", wireType) + } + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -4248,14 +5148,28 @@ func (m *LendAsset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.PoolID |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - case 4: + if msglen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.BorrowingTime, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Owner", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field StableBorrowRate", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -4283,13 +5197,15 @@ func (m *LendAsset) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Owner = string(dAtA[iNdEx:postIndex]) + if err := m.StableBorrowRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex - case 5: + case 10: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AmountIn", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field InterestAccumulated", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -4299,28 +5215,97 @@ func (m *LendAsset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthLend } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthLend } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.AmountIn.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.InterestAccumulated.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 6: + case 11: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LendingTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field GlobalIndex", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + 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 ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.GlobalIndex.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ReserveGlobalIndex", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + 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 ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ReserveGlobalIndex.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastInteractionTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -4347,13 +5332,13 @@ func (m *LendAsset) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.LendingTime, dAtA[iNdEx:postIndex]); err != nil { + if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.LastInteractionTime, dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 7: + case 14: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AvailableToBorrow", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CPoolName", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -4381,15 +5366,83 @@ func (m *LendAsset) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.AvailableToBorrow.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.CPoolName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 15: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsLiquidated", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.IsLiquidated = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipLend(dAtA[iNdEx:]) + if err != nil { return err } - iNdEx = postIndex - case 8: + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthLend + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Pool) 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 ErrIntOverflowLend + } + 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: Pool: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Pool: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AppID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) } - m.AppID = 0 + m.PoolID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -4399,14 +5452,14 @@ func (m *LendAsset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AppID |= uint64(b&0x7F) << shift + m.PoolID |= uint64(b&0x7F) << shift if b < 0x80 { break } } - case 9: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field GlobalIndex", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ModuleName", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -4434,44 +5487,9 @@ func (m *LendAsset) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.GlobalIndex.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 10: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInteractionTime", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLend - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthLend - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthLend - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.LastInteractionTime, dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.ModuleName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 11: + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field CPoolName", wireType) } @@ -4503,11 +5521,11 @@ func (m *LendAsset) Unmarshal(dAtA []byte) error { } m.CPoolName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 12: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TotalRewards", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AssetData", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -4517,23 +5535,23 @@ func (m *LendAsset) 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 ErrInvalidLengthLend } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthLend } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.TotalRewards.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.AssetData = append(m.AssetData, &AssetDataPoolMapping{}) + if err := m.AssetData[len(m.AssetData)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -4558,7 +5576,7 @@ func (m *LendAsset) Unmarshal(dAtA []byte) error { } return nil } -func (m *BorrowAsset) Unmarshal(dAtA []byte) error { +func (m *UserAssetLendBorrowMapping) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -4581,17 +5599,17 @@ func (m *BorrowAsset) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: BorrowAsset: wiretype end group for non-group") + return fmt.Errorf("proto: UserAssetLendBorrowMapping: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: BorrowAsset: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: UserAssetLendBorrowMapping: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Owner", wireType) } - m.ID = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -4601,16 +5619,29 @@ func (m *BorrowAsset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ID |= uint64(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Owner = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex case 2: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field LendingID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LendId", wireType) } - m.LendingID = 0 + m.LendId = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -4620,16 +5651,16 @@ func (m *BorrowAsset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.LendingID |= uint64(b&0x7F) << shift + m.LendId |= uint64(b&0x7F) << shift if b < 0x80 { break } } case 3: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field IsStableBorrow", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PoolId", wireType) } - var v int + m.PoolId = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -4639,17 +5670,142 @@ func (m *BorrowAsset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + m.PoolId |= uint64(b&0x7F) << shift if b < 0x80 { break } } - m.IsStableBorrow = bool(v != 0) case 4: + if wireType == 0 { + var v uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.BorrowId = append(m.BorrowId, v) + } else if wireType == 2 { + var packedLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + packedLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if packedLen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + packedLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var elementCount int + var count int + for _, integer := range dAtA[iNdEx:postIndex] { + if integer < 128 { + count++ + } + } + elementCount = count + if elementCount != 0 && len(m.BorrowId) == 0 { + m.BorrowId = make([]uint64, 0, elementCount) + } + for iNdEx < postIndex { + var v uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.BorrowId = append(m.BorrowId, v) + } + } else { + return fmt.Errorf("proto: wrong wireType = %d for field BorrowId", wireType) + } + default: + iNdEx = preIndex + skippy, err := skipLend(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthLend + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AssetDataPoolMapping) 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 ErrIntOverflowLend + } + 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: AssetDataPoolMapping: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AssetDataPoolMapping: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PairID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) } - m.PairID = 0 + m.AssetID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -4659,16 +5815,16 @@ func (m *BorrowAsset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.PairID |= uint64(b&0x7F) << shift + m.AssetID |= uint64(b&0x7F) << shift if b < 0x80 { break } } - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AmountIn", wireType) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AssetTransitType", wireType) } - var msglen int + m.AssetTransitType = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -4678,30 +5834,16 @@ func (m *BorrowAsset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + m.AssetTransitType |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthLend - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthLend - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.AmountIn.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 6: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AmountOut", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SupplyCap", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -4711,63 +5853,81 @@ func (m *BorrowAsset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthLend } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthLend } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.AmountOut.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.SupplyCap.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 7: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BridgedAssetAmount", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLend - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } + default: + iNdEx = preIndex + skippy, err := skipLend(dAtA[iNdEx:]) + if err != nil { + return err } - if msglen < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthLend } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthLend + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF } - if postIndex > l { + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Extended_Pair) 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 ErrIntOverflowLend + } + if iNdEx >= l { return io.ErrUnexpectedEOF } - if err := m.BridgedAssetAmount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break } - iNdEx = postIndex - case 8: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BorrowingTime", wireType) + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Extended_Pair: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Extended_Pair: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) } - var msglen int + m.Id = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -4777,30 +5937,16 @@ func (m *BorrowAsset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + m.Id |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthLend - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthLend - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.BorrowingTime, dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 9: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field StableBorrowRate", wireType) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AssetIn", wireType) } - var stringLen uint64 + m.AssetIn = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -4810,31 +5956,16 @@ func (m *BorrowAsset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.AssetIn |= uint64(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthLend - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthLend - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.StableBorrowRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 10: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field InterestAccumulated", wireType) + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AssetOut", wireType) } - var stringLen uint64 + m.AssetOut = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -4844,31 +5975,16 @@ func (m *BorrowAsset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.AssetOut |= uint64(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthLend - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthLend - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.InterestAccumulated.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 11: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field GlobalIndex", wireType) + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsInterPool", wireType) } - var stringLen uint64 + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -4878,31 +5994,17 @@ func (m *BorrowAsset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthLend - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthLend - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.GlobalIndex.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 12: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ReserveGlobalIndex", wireType) + m.IsInterPool = bool(v != 0) + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AssetOutPoolID", wireType) } - var stringLen uint64 + m.AssetOutPoolID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -4912,31 +6014,16 @@ func (m *BorrowAsset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.AssetOutPoolID |= uint64(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthLend - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthLend - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.ReserveGlobalIndex.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 13: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInteractionTime", wireType) + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MinUsdValueLeft", wireType) } - var msglen int + m.MinUsdValueLeft = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -4946,30 +6033,66 @@ func (m *BorrowAsset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + m.MinUsdValueLeft |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthLend + default: + iNdEx = preIndex + skippy, err := skipLend(dAtA[iNdEx:]) + if err != nil { + return err } - postIndex := iNdEx + msglen - if postIndex < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthLend } - if postIndex > l { + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AssetToPairMapping) 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 ErrIntOverflowLend + } + if iNdEx >= l { return io.ErrUnexpectedEOF } - if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.LastInteractionTime, dAtA[iNdEx:postIndex]); err != nil { - return err + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break } - iNdEx = postIndex - case 14: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CPoolName", wireType) + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AssetToPairMapping: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AssetToPairMapping: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) } - var stringLen uint64 + m.PoolID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -4979,29 +6102,16 @@ func (m *BorrowAsset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.PoolID |= uint64(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthLend - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthLend - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.CPoolName = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 15: + case 2: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field IsLiquidated", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) } - var v int + m.AssetID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -5011,12 +6121,87 @@ func (m *BorrowAsset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + m.AssetID |= uint64(b&0x7F) << shift if b < 0x80 { break } } - m.IsLiquidated = bool(v != 0) + case 3: + if wireType == 0 { + var v uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.PairID = append(m.PairID, v) + } else if wireType == 2 { + var packedLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + packedLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if packedLen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + packedLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var elementCount int + var count int + for _, integer := range dAtA[iNdEx:postIndex] { + if integer < 128 { + count++ + } + } + elementCount = count + if elementCount != 0 && len(m.PairID) == 0 { + m.PairID = make([]uint64, 0, elementCount) + } + for iNdEx < postIndex { + var v uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.PairID = append(m.PairID, v) + } + } else { + return fmt.Errorf("proto: wrong wireType = %d for field PairID", wireType) + } default: iNdEx = preIndex skippy, err := skipLend(dAtA[iNdEx:]) @@ -5038,7 +6223,7 @@ func (m *BorrowAsset) Unmarshal(dAtA []byte) error { } return nil } -func (m *Pool) Unmarshal(dAtA []byte) error { +func (m *PoolAssetLBMapping) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -5061,10 +6246,10 @@ func (m *Pool) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Pool: wiretype end group for non-group") + return fmt.Errorf("proto: PoolAssetLBMapping: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Pool: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: PoolAssetLBMapping: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -5076,19 +6261,190 @@ func (m *Pool) Unmarshal(dAtA []byte) error { if shift >= 64 { return ErrIntOverflowLend } - if iNdEx >= l { + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PoolID |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) + } + m.AssetID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AssetID |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType == 0 { + var v uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.LendIds = append(m.LendIds, v) + } else if wireType == 2 { + var packedLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + packedLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if packedLen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + packedLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var elementCount int + var count int + for _, integer := range dAtA[iNdEx:postIndex] { + if integer < 128 { + count++ + } + } + elementCount = count + if elementCount != 0 && len(m.LendIds) == 0 { + m.LendIds = make([]uint64, 0, elementCount) + } + for iNdEx < postIndex { + var v uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.LendIds = append(m.LendIds, v) + } + } else { + return fmt.Errorf("proto: wrong wireType = %d for field LendIds", wireType) + } + case 4: + if wireType == 0 { + var v uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.BorrowIds = append(m.BorrowIds, v) + } else if wireType == 2 { + var packedLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + packedLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if packedLen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + packedLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { return io.ErrUnexpectedEOF } - b := dAtA[iNdEx] - iNdEx++ - m.PoolID |= uint64(b&0x7F) << shift - if b < 0x80 { - break + var elementCount int + var count int + for _, integer := range dAtA[iNdEx:postIndex] { + if integer < 128 { + count++ + } + } + elementCount = count + if elementCount != 0 && len(m.BorrowIds) == 0 { + m.BorrowIds = make([]uint64, 0, elementCount) + } + for iNdEx < postIndex { + var v uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.BorrowIds = append(m.BorrowIds, v) } + } else { + return fmt.Errorf("proto: wrong wireType = %d for field BorrowIds", wireType) } - case 2: + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ModuleName", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TotalBorrowed", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -5116,11 +6472,13 @@ func (m *Pool) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ModuleName = string(dAtA[iNdEx:postIndex]) + if err := m.TotalBorrowed.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex - case 3: + case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CPoolName", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TotalStableBorrowed", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -5148,95 +6506,13 @@ func (m *Pool) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.CPoolName = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetData", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLend - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthLend - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthLend - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.AssetData = append(m.AssetData, &AssetDataPoolMapping{}) - if err := m.AssetData[len(m.AssetData)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.TotalStableBorrowed.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipLend(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthLend - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *UserAssetLendBorrowMapping) 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 ErrIntOverflowLend - } - 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: UserAssetLendBorrowMapping: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: UserAssetLendBorrowMapping: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + case 7: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Owner", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TotalLend", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -5264,177 +6540,83 @@ func (m *UserAssetLendBorrowMapping) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Owner = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field LendId", wireType) - } - m.LendId = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLend - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.LendId |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } + if err := m.TotalLend.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PoolId", wireType) + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TotalInterestAccumulated", wireType) } - m.PoolId = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowLend - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.PoolId |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 4: - if wireType == 0 { - var v uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLend - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.BorrowId = append(m.BorrowId, v) - } else if wireType == 2 { - var packedLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLend - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - packedLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if packedLen < 0 { - return ErrInvalidLengthLend - } - postIndex := iNdEx + packedLen - if postIndex < 0 { - return ErrInvalidLengthLend + return ErrIntOverflowLend } - if postIndex > l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - var elementCount int - var count int - for _, integer := range dAtA[iNdEx:postIndex] { - if integer < 128 { - count++ - } - } - elementCount = count - if elementCount != 0 && len(m.BorrowId) == 0 { - m.BorrowId = make([]uint64, 0, elementCount) - } - for iNdEx < postIndex { - var v uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLend - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.BorrowId = append(m.BorrowId, v) + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break } - } else { - return fmt.Errorf("proto: wrong wireType = %d for field BorrowId", wireType) } - default: - iNdEx = preIndex - skippy, err := skipLend(dAtA[iNdEx:]) - if err != nil { - return err + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLend } - if (skippy < 0) || (iNdEx+skippy) < 0 { + postIndex := iNdEx + intStringLen + if postIndex < 0 { return ErrInvalidLengthLend } - if (iNdEx + skippy) > l { + if postIndex > l { return io.ErrUnexpectedEOF } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AssetDataPoolMapping) 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 ErrIntOverflowLend + if err := m.TotalInterestAccumulated.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - if iNdEx >= l { + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LendApr", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + 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 ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { return io.ErrUnexpectedEOF } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break + if err := m.LendApr.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AssetDataPoolMapping: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AssetDataPoolMapping: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BorrowApr", wireType) } - m.AssetID = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -5444,16 +6626,31 @@ func (m *AssetDataPoolMapping) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AssetID |= uint64(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetTransitType", wireType) + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLend } - m.AssetTransitType = 0 + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.BorrowApr.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StableBorrowApr", wireType) + } + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -5463,14 +6660,29 @@ func (m *AssetDataPoolMapping) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AssetTransitType |= uint64(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - case 3: + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.StableBorrowApr.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 12: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SupplyCap", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UtilisationRatio", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -5498,7 +6710,7 @@ func (m *AssetDataPoolMapping) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.SupplyCap.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.UtilisationRatio.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -5523,7 +6735,7 @@ func (m *AssetDataPoolMapping) Unmarshal(dAtA []byte) error { } return nil } -func (m *Extended_Pair) Unmarshal(dAtA []byte) error { +func (m *AssetRatesParams) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -5546,17 +6758,17 @@ func (m *Extended_Pair) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Extended_Pair: wiretype end group for non-group") + return fmt.Errorf("proto: AssetRatesParams: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Extended_Pair: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AssetRatesParams: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) } - m.Id = 0 + m.AssetID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -5566,16 +6778,16 @@ func (m *Extended_Pair) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Id |= uint64(b&0x7F) << shift + m.AssetID |= uint64(b&0x7F) << shift if b < 0x80 { break } } case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetIn", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UOptimal", wireType) } - m.AssetIn = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -5585,16 +6797,31 @@ func (m *Extended_Pair) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AssetIn |= uint64(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.UOptimal.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetOut", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Base", wireType) } - m.AssetOut = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -5604,36 +6831,31 @@ func (m *Extended_Pair) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AssetOut |= uint64(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field IsInterPool", wireType) + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLend } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLend - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend } - m.IsInterPool = bool(v != 0) - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetOutPoolID", wireType) + if postIndex > l { + return io.ErrUnexpectedEOF } - m.AssetOutPoolID = 0 + if err := m.Base.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Slope1", wireType) + } + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -5643,16 +6865,31 @@ func (m *Extended_Pair) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AssetOutPoolID |= uint64(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - case 6: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field MinUsdValueLeft", wireType) + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLend } - m.MinUsdValueLeft = 0 + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Slope1.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Slope2", wireType) + } + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -5662,66 +6899,31 @@ func (m *Extended_Pair) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.MinUsdValueLeft |= uint64(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - default: - iNdEx = preIndex - skippy, err := skipLend(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthLend } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AssetToPairMapping) 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 ErrIntOverflowLend + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend } - if iNdEx >= l { + if postIndex > l { return io.ErrUnexpectedEOF } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break + if err := m.Slope2.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AssetToPairMapping: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AssetToPairMapping: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + iNdEx = postIndex + case 6: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field EnableStableBorrow", wireType) } - m.PoolID = 0 + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -5731,16 +6933,17 @@ func (m *AssetToPairMapping) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.PoolID |= uint64(b&0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } } - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) + m.EnableStableBorrow = bool(v != 0) + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StableBase", wireType) } - m.AssetID = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -5750,142 +6953,65 @@ func (m *AssetToPairMapping) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AssetID |= uint64(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - case 3: - if wireType == 0 { - var v uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLend - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.PairID = append(m.PairID, v) - } else if wireType == 2 { - var packedLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLend - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - packedLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if packedLen < 0 { - return ErrInvalidLengthLend - } - postIndex := iNdEx + packedLen - if postIndex < 0 { - return ErrInvalidLengthLend + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.StableBase.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StableSlope1", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend } - if postIndex > l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - var elementCount int - var count int - for _, integer := range dAtA[iNdEx:postIndex] { - if integer < 128 { - count++ - } - } - elementCount = count - if elementCount != 0 && len(m.PairID) == 0 { - m.PairID = make([]uint64, 0, elementCount) - } - for iNdEx < postIndex { - var v uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLend - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.PairID = append(m.PairID, v) + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break } - } else { - return fmt.Errorf("proto: wrong wireType = %d for field PairID", wireType) } - default: - iNdEx = preIndex - skippy, err := skipLend(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthLend } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *PoolAssetLBMapping) 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 ErrIntOverflowLend + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend } - if iNdEx >= l { + if postIndex > l { return io.ErrUnexpectedEOF } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break + if err := m.StableSlope1.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: PoolAssetLBMapping: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: PoolAssetLBMapping: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StableSlope2", wireType) } - m.PoolID = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -5895,16 +7021,31 @@ func (m *PoolAssetLBMapping) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.PoolID |= uint64(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLend } - m.AssetID = 0 + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.StableSlope2.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ltv", wireType) + } + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -5914,166 +7055,29 @@ func (m *PoolAssetLBMapping) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AssetID |= uint64(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - case 3: - if wireType == 0 { - var v uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLend - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.LendIds = append(m.LendIds, v) - } else if wireType == 2 { - var packedLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLend - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - packedLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if packedLen < 0 { - return ErrInvalidLengthLend - } - postIndex := iNdEx + packedLen - if postIndex < 0 { - return ErrInvalidLengthLend - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - var elementCount int - var count int - for _, integer := range dAtA[iNdEx:postIndex] { - if integer < 128 { - count++ - } - } - elementCount = count - if elementCount != 0 && len(m.LendIds) == 0 { - m.LendIds = make([]uint64, 0, elementCount) - } - for iNdEx < postIndex { - var v uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLend - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.LendIds = append(m.LendIds, v) - } - } else { - return fmt.Errorf("proto: wrong wireType = %d for field LendIds", wireType) + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLend } - case 4: - if wireType == 0 { - var v uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLend - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.BorrowIds = append(m.BorrowIds, v) - } else if wireType == 2 { - var packedLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLend - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - packedLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if packedLen < 0 { - return ErrInvalidLengthLend - } - postIndex := iNdEx + packedLen - if postIndex < 0 { - return ErrInvalidLengthLend - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - var elementCount int - var count int - for _, integer := range dAtA[iNdEx:postIndex] { - if integer < 128 { - count++ - } - } - elementCount = count - if elementCount != 0 && len(m.BorrowIds) == 0 { - m.BorrowIds = make([]uint64, 0, elementCount) - } - for iNdEx < postIndex { - var v uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLend - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.BorrowIds = append(m.BorrowIds, v) - } - } else { - return fmt.Errorf("proto: wrong wireType = %d for field BorrowIds", wireType) + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend } - case 5: + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Ltv.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TotalBorrowed", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LiquidationThreshold", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -6101,13 +7105,13 @@ func (m *PoolAssetLBMapping) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.TotalBorrowed.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LiquidationThreshold.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 6: + case 12: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TotalStableBorrowed", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LiquidationPenalty", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -6135,13 +7139,13 @@ func (m *PoolAssetLBMapping) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.TotalStableBorrowed.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LiquidationPenalty.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 7: + case 13: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TotalLend", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LiquidationBonus", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -6169,13 +7173,13 @@ func (m *PoolAssetLBMapping) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.TotalLend.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LiquidationBonus.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 8: + case 14: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TotalInterestAccumulated", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ReserveFactor", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -6203,15 +7207,15 @@ func (m *PoolAssetLBMapping) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.TotalInterestAccumulated.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ReserveFactor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 9: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LendApr", wireType) + case 15: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CAssetID", wireType) } - var stringLen uint64 + m.CAssetID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -6221,31 +7225,66 @@ func (m *PoolAssetLBMapping) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.CAssetID |= uint64(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthLend + default: + iNdEx = preIndex + skippy, err := skipLend(dAtA[iNdEx:]) + if err != nil { + return err } - postIndex := iNdEx + intStringLen - if postIndex < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthLend } - if postIndex > l { + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ReserveBuybackAssetData) 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 ErrIntOverflowLend + } + if iNdEx >= l { return io.ErrUnexpectedEOF } - if err := m.LendApr.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break } - iNdEx = postIndex - case 10: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BorrowApr", wireType) + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReserveBuybackAssetData: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReserveBuybackAssetData: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) } - var stringLen uint64 + m.AssetID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -6255,29 +7294,14 @@ func (m *PoolAssetLBMapping) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.AssetID |= uint64(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthLend - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthLend - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.BorrowApr.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 11: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field StableBorrowApr", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ReserveAmount", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -6305,13 +7329,13 @@ func (m *PoolAssetLBMapping) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.StableBorrowApr.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ReserveAmount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 12: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UtilisationRatio", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field BuybackAmount", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -6339,7 +7363,7 @@ func (m *PoolAssetLBMapping) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.UtilisationRatio.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.BuybackAmount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -6364,7 +7388,7 @@ func (m *PoolAssetLBMapping) Unmarshal(dAtA []byte) error { } return nil } -func (m *AssetRatesParams) Unmarshal(dAtA []byte) error { +func (m *AuctionParams) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -6387,17 +7411,17 @@ func (m *AssetRatesParams) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AssetRatesParams: wiretype end group for non-group") + return fmt.Errorf("proto: AuctionParams: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AssetRatesParams: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AuctionParams: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AppId", wireType) } - m.AssetID = 0 + m.AppId = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -6407,16 +7431,16 @@ func (m *AssetRatesParams) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AssetID |= uint64(b&0x7F) << shift + m.AppId |= uint64(b&0x7F) << shift if b < 0x80 { break } } case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UOptimal", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AuctionDurationSeconds", wireType) } - var stringLen uint64 + m.AuctionDurationSeconds = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -6426,29 +7450,14 @@ func (m *AssetRatesParams) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.AuctionDurationSeconds |= uint64(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthLend - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthLend - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.UOptimal.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Base", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Buffer", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -6476,13 +7485,13 @@ func (m *AssetRatesParams) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Base.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Buffer.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Slope1", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Cusp", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -6510,13 +7519,13 @@ func (m *AssetRatesParams) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Slope1.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Cusp.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Slope2", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Step", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -6544,15 +7553,15 @@ func (m *AssetRatesParams) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Slope2.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Step.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 6: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field EnableStableBorrow", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PriceFunctionType", wireType) } - var v int + m.PriceFunctionType = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -6562,17 +7571,16 @@ func (m *AssetRatesParams) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + m.PriceFunctionType |= uint64(b&0x7F) << shift if b < 0x80 { break } } - m.EnableStableBorrow = bool(v != 0) case 7: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field StableBase", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DutchId", wireType) } - var stringLen uint64 + m.DutchId = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -6582,31 +7590,16 @@ func (m *AssetRatesParams) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.DutchId |= uint64(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthLend - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthLend - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.StableBase.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex case 8: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field StableSlope1", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BidDurationSeconds", wireType) } - var stringLen uint64 + m.BidDurationSeconds = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -6616,65 +7609,66 @@ func (m *AssetRatesParams) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.BidDurationSeconds |= uint64(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthLend + default: + iNdEx = preIndex + skippy, err := skipLend(dAtA[iNdEx:]) + if err != nil { + return err } - postIndex := iNdEx + intStringLen - if postIndex < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthLend } - if postIndex > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - if err := m.StableSlope1.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 9: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field StableSlope2", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLend - } - 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 ErrInvalidLengthLend - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthLend + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *BorrowInterestTracker) 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 ErrIntOverflowLend } - if postIndex > l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - if err := m.StableSlope2.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break } - iNdEx = postIndex - case 10: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Ltv", wireType) + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Borrow_interest_tracker: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Borrow_interest_tracker: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BorrowingId", wireType) } - var stringLen uint64 + m.BorrowingId = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -6684,29 +7678,14 @@ func (m *AssetRatesParams) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.BorrowingId |= uint64(b&0x7F) << shift if b < 0x80 { break } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthLend - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthLend - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Ltv.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 11: + } + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LiquidationThreshold", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ReservePoolInterest", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -6734,15 +7713,65 @@ func (m *AssetRatesParams) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.LiquidationThreshold.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ReservePoolInterest.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 12: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LiquidationPenalty", wireType) + default: + iNdEx = preIndex + skippy, err := skipLend(dAtA[iNdEx:]) + if err != nil { + return err } - var stringLen uint64 + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthLend + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LendRewardsTracker) 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 ErrIntOverflowLend + } + 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: Lend_rewards_tracker: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Lend_rewards_tracker: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field LendingId", wireType) + } + m.LendingId = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -6752,29 +7781,14 @@ func (m *AssetRatesParams) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.LendingId |= uint64(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthLend - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthLend - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.LiquidationPenalty.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 13: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LiquidationBonus", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RewardsAccumulated", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -6802,15 +7816,65 @@ func (m *AssetRatesParams) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.LiquidationBonus.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.RewardsAccumulated.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 14: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ReserveFactor", wireType) + default: + iNdEx = preIndex + skippy, err := skipLend(dAtA[iNdEx:]) + if err != nil { + return err } - var stringLen uint64 + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthLend + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ModuleBalance) 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 ErrIntOverflowLend + } + 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: ModuleBalance: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ModuleBalance: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) + } + m.PoolID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -6820,31 +7884,16 @@ func (m *AssetRatesParams) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.PoolID |= uint64(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthLend - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthLend - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.ReserveFactor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 15: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field CAssetID", wireType) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ModuleBalanceStats", wireType) } - m.CAssetID = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -6854,11 +7903,26 @@ func (m *AssetRatesParams) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.CAssetID |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } + if msglen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ModuleBalanceStats = append(m.ModuleBalanceStats, ModuleBalanceStats{}) + if err := m.ModuleBalanceStats[len(m.ModuleBalanceStats)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipLend(dAtA[iNdEx:]) @@ -6880,7 +7944,7 @@ func (m *AssetRatesParams) Unmarshal(dAtA []byte) error { } return nil } -func (m *ReserveBuybackAssetData) Unmarshal(dAtA []byte) error { +func (m *ModuleBalanceStats) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -6903,10 +7967,10 @@ func (m *ReserveBuybackAssetData) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ReserveBuybackAssetData: wiretype end group for non-group") + return fmt.Errorf("proto: ModuleBalanceStats: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ReserveBuybackAssetData: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ModuleBalanceStats: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -6930,9 +7994,9 @@ func (m *ReserveBuybackAssetData) Unmarshal(dAtA []byte) error { } case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ReserveAmount", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Balance", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -6942,31 +8006,80 @@ func (m *ReserveBuybackAssetData) 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 ErrInvalidLengthLend } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthLend } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ReserveAmount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Balance.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: + default: + iNdEx = preIndex + skippy, err := skipLend(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthLend + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ModBal) 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 ErrIntOverflowLend + } + 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: ModBal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ModBal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BuybackAmount", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field FundModuleBalance", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -6976,23 +8089,23 @@ func (m *ReserveBuybackAssetData) 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 ErrInvalidLengthLend } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthLend } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.BuybackAmount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.FundModuleBalance = append(m.FundModuleBalance, FundModBal{}) + if err := m.FundModuleBalance[len(m.FundModuleBalance)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -7017,7 +8130,7 @@ func (m *ReserveBuybackAssetData) Unmarshal(dAtA []byte) error { } return nil } -func (m *AuctionParams) Unmarshal(dAtA []byte) error { +func (m *ReserveBal) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -7040,55 +8153,17 @@ func (m *AuctionParams) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AuctionParams: wiretype end group for non-group") + return fmt.Errorf("proto: ReserveBal: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AuctionParams: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ReserveBal: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AppId", wireType) - } - m.AppId = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLend - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.AppId |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AuctionDurationSeconds", wireType) - } - m.AuctionDurationSeconds = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLend - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.AuctionDurationSeconds |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Buffer", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field FundReserveBalance", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -7098,99 +8173,81 @@ func (m *AuctionParams) 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 ErrInvalidLengthLend } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthLend } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Buffer.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.FundReserveBalance = append(m.FundReserveBalance, FundReserveBal{}) + if err := m.FundReserveBalance[len(m.FundReserveBalance)-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 Cusp", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLend - } - 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 ErrInvalidLengthLend + default: + iNdEx = preIndex + skippy, err := skipLend(dAtA[iNdEx:]) + if err != nil { + return err } - postIndex := iNdEx + intStringLen - if postIndex < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthLend } - if postIndex > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - if err := m.Cusp.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Step", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLend - } - 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 ErrInvalidLengthLend - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthLend + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *FundModBal) 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 ErrIntOverflowLend } - if postIndex > l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - if err := m.Step.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break } - iNdEx = postIndex - case 6: + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: FundModBal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: FundModBal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PriceFunctionType", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) } - m.PriceFunctionType = 0 + m.AssetID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -7200,16 +8257,16 @@ func (m *AuctionParams) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.PriceFunctionType |= uint64(b&0x7F) << shift + m.AssetID |= uint64(b&0x7F) << shift if b < 0x80 { break } } - case 7: + case 2: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field DutchId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) } - m.DutchId = 0 + m.PoolID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -7219,16 +8276,16 @@ func (m *AuctionParams) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.DutchId |= uint64(b&0x7F) << shift + m.PoolID |= uint64(b&0x7F) << shift if b < 0x80 { break } } - case 8: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field BidDurationSeconds", wireType) + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AmountIn", wireType) } - m.BidDurationSeconds = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -7238,66 +8295,30 @@ func (m *AuctionParams) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.BidDurationSeconds |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - default: - iNdEx = preIndex - skippy, err := skipLend(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { + if msglen < 0 { return ErrInvalidLengthLend } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *BorrowInterestTracker) 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 ErrIntOverflowLend + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthLend } - if iNdEx >= l { + if postIndex > l { return io.ErrUnexpectedEOF } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break + if err := m.AmountIn.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Borrow_interest_tracker: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Borrow_interest_tracker: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field BorrowingId", wireType) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DepositTime", wireType) } - m.BorrowingId = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -7307,14 +8328,28 @@ func (m *BorrowInterestTracker) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.BorrowingId |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - case 3: + if msglen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.DepositTime, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ReservePoolInterest", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Funder", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -7342,9 +8377,7 @@ func (m *BorrowInterestTracker) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ReservePoolInterest.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Funder = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -7367,7 +8400,7 @@ func (m *BorrowInterestTracker) Unmarshal(dAtA []byte) error { } return nil } -func (m *LendRewardsTracker) Unmarshal(dAtA []byte) error { +func (m *FundReserveBal) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -7390,17 +8423,17 @@ func (m *LendRewardsTracker) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Lend_rewards_tracker: wiretype end group for non-group") + return fmt.Errorf("proto: FundReserveBal: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Lend_rewards_tracker: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: FundReserveBal: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field LendingId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) } - m.LendingId = 0 + m.AssetID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -7410,16 +8443,16 @@ func (m *LendRewardsTracker) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.LendingId |= uint64(b&0x7F) << shift + m.AssetID |= uint64(b&0x7F) << shift if b < 0x80 { break } } case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RewardsAccumulated", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AmountIn", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -7429,81 +8462,30 @@ func (m *LendRewardsTracker) 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 ErrInvalidLengthLend } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthLend } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.RewardsAccumulated.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.AmountIn.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipLend(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthLend - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ModuleBalance) 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 ErrIntOverflowLend - } - 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: ModuleBalance: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ModuleBalance: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DepositTime", wireType) } - m.PoolID = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -7513,16 +8495,30 @@ func (m *ModuleBalance) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.PoolID |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - case 2: + if msglen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.DepositTime, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ModuleBalanceStats", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Funder", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -7532,25 +8528,23 @@ func (m *ModuleBalance) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthLend } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthLend } if postIndex > l { return io.ErrUnexpectedEOF } - m.ModuleBalanceStats = append(m.ModuleBalanceStats, ModuleBalanceStats{}) - if err := m.ModuleBalanceStats[len(m.ModuleBalanceStats)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Funder = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -7573,7 +8567,7 @@ func (m *ModuleBalance) Unmarshal(dAtA []byte) error { } return nil } -func (m *ModuleBalanceStats) Unmarshal(dAtA []byte) error { +func (m *AllReserveStats) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -7596,10 +8590,10 @@ func (m *ModuleBalanceStats) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ModuleBalanceStats: wiretype end group for non-group") + return fmt.Errorf("proto: AllReserveStats: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ModuleBalanceStats: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AllReserveStats: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -7623,9 +8617,9 @@ func (m *ModuleBalanceStats) Unmarshal(dAtA []byte) error { } case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Balance", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AmountOutFromReserveToLenders", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -7635,80 +8629,133 @@ func (m *ModuleBalanceStats) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthLend } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthLend } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Balance.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.AmountOutFromReserveToLenders.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipLend(dAtA[iNdEx:]) - if err != nil { + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AmountOutFromReserveForAuction", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + 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 ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.AmountOutFromReserveForAuction.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - if (skippy < 0) || (iNdEx+skippy) < 0 { + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AmountInFromLiqPenalty", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + 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 ErrInvalidLengthLend } - if (iNdEx + skippy) > l { + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { return io.ErrUnexpectedEOF } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ModBal) 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 ErrIntOverflowLend + if err := m.AmountInFromLiqPenalty.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AmountInFromRepayments", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } } - if iNdEx >= l { + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { return io.ErrUnexpectedEOF } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break + if err := m.AmountInFromRepayments.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ModBal: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ModBal: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + iNdEx = postIndex + case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field FundModuleBalance", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TotalAmountOutToLenders", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -7718,23 +8765,23 @@ func (m *ModBal) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthLend } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthLend } if postIndex > l { return io.ErrUnexpectedEOF } - m.FundModuleBalance = append(m.FundModuleBalance, FundModBal{}) - if err := m.FundModuleBalance[len(m.FundModuleBalance)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.TotalAmountOutToLenders.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -7759,7 +8806,7 @@ func (m *ModBal) Unmarshal(dAtA []byte) error { } return nil } -func (m *ReserveBal) Unmarshal(dAtA []byte) error { +func (m *AssetToPairSingleMapping) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -7782,17 +8829,17 @@ func (m *ReserveBal) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ReserveBal: wiretype end group for non-group") + return fmt.Errorf("proto: AssetToPairSingleMapping: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ReserveBal: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AssetToPairSingleMapping: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field FundReserveBalance", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) } - var msglen int + m.PoolID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -7802,26 +8849,49 @@ func (m *ReserveBal) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + m.PoolID |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthLend + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthLend + m.AssetID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AssetID |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } } - if postIndex > l { - return io.ErrUnexpectedEOF + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PairID", wireType) } - m.FundReserveBalance = append(m.FundReserveBalance, FundReserveBal{}) - if err := m.FundReserveBalance[len(m.FundReserveBalance)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + m.PairID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PairID |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipLend(dAtA[iNdEx:]) @@ -7843,7 +8913,7 @@ func (m *ReserveBal) Unmarshal(dAtA []byte) error { } return nil } -func (m *FundModBal) Unmarshal(dAtA []byte) error { +func (m *PoolPairs) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -7866,17 +8936,17 @@ func (m *FundModBal) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: FundModBal: wiretype end group for non-group") + return fmt.Errorf("proto: PoolPairs: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: FundModBal: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: PoolPairs: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) } - m.AssetID = 0 + m.PoolID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -7886,16 +8956,16 @@ func (m *FundModBal) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AssetID |= uint64(b&0x7F) << shift + m.PoolID |= uint64(b&0x7F) << shift if b < 0x80 { break } } case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ModuleName", wireType) } - m.PoolID = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -7905,16 +8975,29 @@ func (m *FundModBal) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.PoolID |= uint64(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ModuleName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AmountIn", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CPoolName", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -7924,28 +9007,27 @@ func (m *FundModBal) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthLend } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthLend } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.AmountIn.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.CPoolName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DepositTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AssetData", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -7972,15 +9054,16 @@ func (m *FundModBal) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.DepositTime, dAtA[iNdEx:postIndex]); err != nil { + m.AssetData = append(m.AssetData, &AssetDataPoolMapping{}) + if err := m.AssetData[len(m.AssetData)-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 Funder", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MinUsdValueLeft", wireType) } - var stringLen uint64 + m.MinUsdValueLeft = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -7990,24 +9073,11 @@ func (m *FundModBal) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.MinUsdValueLeft |= uint64(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthLend - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthLend - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Funder = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipLend(dAtA[iNdEx:]) @@ -8029,7 +9099,7 @@ func (m *FundModBal) Unmarshal(dAtA []byte) error { } return nil } -func (m *FundReserveBal) Unmarshal(dAtA []byte) error { +func (m *PoolInterestData) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -8052,10 +9122,10 @@ func (m *FundReserveBal) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: FundReserveBal: wiretype end group for non-group") + return fmt.Errorf("proto: PoolInterestData: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: FundReserveBal: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: PoolInterestData: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -8079,9 +9149,9 @@ func (m *FundReserveBal) Unmarshal(dAtA []byte) error { } case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AmountIn", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LendInterest", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -8091,30 +9161,81 @@ func (m *FundReserveBal) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthLend } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthLend } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.AmountIn.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LendInterest.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DepositTime", wireType) + default: + iNdEx = preIndex + skippy, err := skipLend(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthLend + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PoolInterest) 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 ErrIntOverflowLend + } + 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: PoolInterest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PoolInterest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) } - var msglen int + m.PoolID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -8124,30 +9245,16 @@ func (m *FundReserveBal) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + m.PoolID |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthLend - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthLend - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.DepositTime, dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Funder", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PoolInterestData", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -8157,23 +9264,25 @@ func (m *FundReserveBal) 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 ErrInvalidLengthLend } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthLend } if postIndex > l { return io.ErrUnexpectedEOF } - m.Funder = string(dAtA[iNdEx:postIndex]) + m.PoolInterestData = append(m.PoolInterestData, PoolInterestData{}) + if err := m.PoolInterestData[len(m.PoolInterestData)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -8196,7 +9305,7 @@ func (m *FundReserveBal) Unmarshal(dAtA []byte) error { } return nil } -func (m *AllReserveStats) Unmarshal(dAtA []byte) error { +func (m *PoolInterestDataB) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -8219,10 +9328,10 @@ func (m *AllReserveStats) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AllReserveStats: wiretype end group for non-group") + return fmt.Errorf("proto: PoolInterestDataB: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AllReserveStats: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: PoolInterestDataB: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -8246,7 +9355,7 @@ func (m *AllReserveStats) Unmarshal(dAtA []byte) error { } case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AmountOutFromReserveToLenders", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field BorrowInterest", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -8274,83 +9383,65 @@ func (m *AllReserveStats) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.AmountOutFromReserveToLenders.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.BorrowInterest.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AmountOutFromReserveForAuction", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLend - } - 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 ErrInvalidLengthLend + default: + iNdEx = preIndex + skippy, err := skipLend(dAtA[iNdEx:]) + if err != nil { + return err } - postIndex := iNdEx + intStringLen - if postIndex < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthLend } - if postIndex > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - if err := m.AmountOutFromReserveForAuction.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AmountInFromLiqPenalty", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLend - } - 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 ErrInvalidLengthLend - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthLend + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PoolInterestB) 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 ErrIntOverflowLend } - if postIndex > l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - if err := m.AmountInFromLiqPenalty.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break } - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AmountInFromRepayments", wireType) + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PoolInterestB: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PoolInterestB: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) } - var stringLen uint64 + m.PoolID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -8360,31 +9451,16 @@ func (m *AllReserveStats) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.PoolID |= uint64(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthLend - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthLend - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.AmountInFromRepayments.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 6: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TotalAmountOutToLenders", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PoolInterestData", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -8394,23 +9470,23 @@ func (m *AllReserveStats) 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 ErrInvalidLengthLend } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthLend } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.TotalAmountOutToLenders.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.PoolInterestData = append(m.PoolInterestData, PoolInterestDataB{}) + if err := m.PoolInterestData[len(m.PoolInterestData)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -8435,7 +9511,7 @@ func (m *AllReserveStats) Unmarshal(dAtA []byte) error { } return nil } -func (m *AssetToPairSingleMapping) Unmarshal(dAtA []byte) error { +func (m *AssetRatesPoolPairs) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -8454,21 +9530,74 @@ func (m *AssetToPairSingleMapping) Unmarshal(dAtA []byte) error { if b < 0x80 { break } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AssetToPairSingleMapping: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AssetToPairSingleMapping: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AssetRatesPoolPairs: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AssetRatesPoolPairs: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) + } + m.AssetID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AssetID |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UOptimal", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + 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 ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.UOptimal.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Base", wireType) } - m.PoolID = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -8478,16 +9607,31 @@ func (m *AssetToPairSingleMapping) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.PoolID |= uint64(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLend } - m.AssetID = 0 + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Base.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Slope1", wireType) + } + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -8497,16 +9641,31 @@ func (m *AssetToPairSingleMapping) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AssetID |= uint64(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PairID", wireType) + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLend } - m.PairID = 0 + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Slope1.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Slope2", wireType) + } + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -8516,66 +9675,31 @@ func (m *AssetToPairSingleMapping) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.PairID |= uint64(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - default: - iNdEx = preIndex - skippy, err := skipLend(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthLend } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *PoolPairs) 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 ErrIntOverflowLend + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend } - if iNdEx >= l { + if postIndex > l { return io.ErrUnexpectedEOF } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break + if err := m.Slope2.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: PoolPairs: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: PoolPairs: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + iNdEx = postIndex + case 6: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field EnableStableBorrow", wireType) } - m.PoolID = 0 + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -8585,14 +9709,15 @@ func (m *PoolPairs) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.PoolID |= uint64(b&0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } } - case 2: + m.EnableStableBorrow = bool(v != 0) + case 7: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ModuleName", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field StableBase", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -8620,11 +9745,13 @@ func (m *PoolPairs) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ModuleName = string(dAtA[iNdEx:postIndex]) + if err := m.StableBase.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex - case 3: + case 8: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CPoolName", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field StableSlope1", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -8652,13 +9779,15 @@ func (m *PoolPairs) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.CPoolName = string(dAtA[iNdEx:postIndex]) + if err := m.StableSlope1.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex - case 4: + case 9: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetData", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field StableSlope2", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -8668,31 +9797,31 @@ func (m *PoolPairs) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthLend } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthLend } if postIndex > l { return io.ErrUnexpectedEOF } - m.AssetData = append(m.AssetData, &AssetDataPoolMapping{}) - if err := m.AssetData[len(m.AssetData)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.StableSlope2.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field MinUsdValueLeft", wireType) + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ltv", wireType) } - m.MinUsdValueLeft = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -8702,66 +9831,31 @@ func (m *PoolPairs) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.MinUsdValueLeft |= uint64(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - default: - iNdEx = preIndex - skippy, err := skipLend(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthLend } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *PoolInterestData) 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 ErrIntOverflowLend + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend } - if iNdEx >= l { + if postIndex > l { return io.ErrUnexpectedEOF } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break + if err := m.Ltv.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: PoolInterestData: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: PoolInterestData: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LiquidationThreshold", wireType) } - m.AssetID = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -8771,14 +9865,29 @@ func (m *PoolInterestData) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AssetID |= uint64(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - case 2: + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LiquidationThreshold.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 12: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LendInterest", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LiquidationPenalty", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -8806,65 +9915,15 @@ func (m *PoolInterestData) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.LendInterest.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LiquidationPenalty.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipLend(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthLend - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *PoolInterest) 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 ErrIntOverflowLend - } - 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: PoolInterest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: PoolInterest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LiquidationBonus", wireType) } - m.PoolID = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -8874,16 +9933,31 @@ func (m *PoolInterest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.PoolID |= uint64(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - case 2: + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LiquidationBonus.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 14: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PoolInterestData", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ReserveFactor", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -8893,81 +9967,31 @@ func (m *PoolInterest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthLend } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthLend } if postIndex > l { return io.ErrUnexpectedEOF } - m.PoolInterestData = append(m.PoolInterestData, PoolInterestData{}) - if err := m.PoolInterestData[len(m.PoolInterestData)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ReserveFactor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipLend(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthLend - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *PoolInterestDataB) 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 ErrIntOverflowLend - } - 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: PoolInterestDataB: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: PoolInterestDataB: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + case 15: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CAssetID", wireType) } - m.AssetID = 0 + m.CAssetID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -8977,14 +10001,14 @@ func (m *PoolInterestDataB) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AssetID |= uint64(b&0x7F) << shift + m.CAssetID |= uint64(b&0x7F) << shift if b < 0x80 { break } } - case 2: + case 16: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BorrowInterest", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ModuleName", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -9012,65 +10036,13 @@ func (m *PoolInterestDataB) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.BorrowInterest.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.ModuleName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipLend(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthLend - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *PoolInterestB) 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 ErrIntOverflowLend - } - 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: PoolInterestB: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: PoolInterestB: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) + case 17: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CPoolName", wireType) } - m.PoolID = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -9080,14 +10052,27 @@ func (m *PoolInterestB) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.PoolID |= uint64(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - case 2: + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CPoolName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 18: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PoolInterestData", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AssetData", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -9114,11 +10099,30 @@ func (m *PoolInterestB) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.PoolInterestData = append(m.PoolInterestData, PoolInterestDataB{}) - if err := m.PoolInterestData[len(m.PoolInterestData)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.AssetData = append(m.AssetData, &AssetDataPoolMapping{}) + if err := m.AssetData[len(m.AssetData)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex + case 19: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MinUsdValueLeft", wireType) + } + m.MinUsdValueLeft = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.MinUsdValueLeft |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipLend(dAtA[iNdEx:]) diff --git a/x/lend/types/pair.go b/x/lend/types/pair.go index 8d08bcc8f..bc08cdb35 100644 --- a/x/lend/types/pair.go +++ b/x/lend/types/pair.go @@ -111,3 +111,55 @@ func (m *PoolPairs) Validate() error { } return nil } + +func (m *AssetRatesPoolPairs) Validate() error { + if m.AssetID == 0 { + return fmt.Errorf("assetID cannot be zero") + } + if m.UOptimal.LTE(sdk.ZeroDec()) { + return fmt.Errorf("UOptimal cannot be zero") + } + if m.Base.LTE(sdk.ZeroDec()) { + return fmt.Errorf("base cannot be zero") + } + if m.Slope1.LTE(sdk.ZeroDec()) { + return fmt.Errorf("slope1 cannot be zero") + } + if m.Slope2.LTE(sdk.ZeroDec()) { + return fmt.Errorf("slope2 cannot be zero") + } + if m.StableBase.LT(sdk.ZeroDec()) { + return fmt.Errorf("StableBase cannot be less than zero") + } + if m.StableSlope1.LT(sdk.ZeroDec()) { + return fmt.Errorf("StableSlope1 cannot be less than zero") + } + if m.StableSlope2.LT(sdk.ZeroDec()) { + return fmt.Errorf("StableSlope2 cannot be less than zero") + } + if m.LiquidationThreshold.LTE(sdk.ZeroDec()) { + return fmt.Errorf("LiquidationThreshold cannot be zero") + } + if m.LiquidationBonus.LTE(sdk.ZeroDec()) { + return fmt.Errorf("LiquidationBonus cannot be zero") + } + if m.LiquidationPenalty.LTE(sdk.ZeroDec()) { + return fmt.Errorf("LiquidationPenalty cannot be zero") + } + if m.Ltv.LTE(sdk.ZeroDec()) { + return fmt.Errorf("ltv cannot be zero") + } + if m.ReserveFactor.LTE(sdk.ZeroDec()) { + return fmt.Errorf("ReserveFactor cannot be zero") + } + if m.CAssetID == 0 { + return fmt.Errorf("cAssetID cannot be zero") + } + if len(m.CPoolName) >= 20 { + return ErrInvalidLengthCPoolName + } + if m.AssetData == nil { + return fmt.Errorf("AssetData cannot be nil") + } + return nil +} From e7ae369c528f04d85441ff4ae7bc6ae8352a24d6 Mon Sep 17 00:00:00 2001 From: Vishnu Kumavat Date: Fri, 17 Feb 2023 00:18:01 +0530 Subject: [PATCH 08/12] total active and queued farmed pool coins queries added --- proto/comdex/liquidity/v1beta1/query.proto | 28 + x/liquidity/client/cli/query.go | 46 + x/liquidity/keeper/grpc_query.go | 41 + x/liquidity/types/query.pb.go | 1030 ++++++++++++++++---- x/liquidity/types/query.pb.gw.go | 101 ++ 5 files changed, 1069 insertions(+), 177 deletions(-) diff --git a/proto/comdex/liquidity/v1beta1/query.proto b/proto/comdex/liquidity/v1beta1/query.proto index dc8546641..c6e180a1c 100644 --- a/proto/comdex/liquidity/v1beta1/query.proto +++ b/proto/comdex/liquidity/v1beta1/query.proto @@ -364,6 +364,29 @@ message OrderBookTickResponse { [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false]; } +message TotalActiveAndQueuedPoolCoins { + uint64 pool_id = 1; + cosmos.base.v1beta1.Coin total_active_pool_coin = 2 [ + (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coin", + (gogoproto.nullable) = false + ]; + cosmos.base.v1beta1.Coin total_queued_pool_coin = 3 [ + (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coin", + (gogoproto.nullable) = false + ]; +} + +message QueryAllFarmedPoolCoinsRequest { + uint64 app_id = 1; +} + +message QueryAllFarmedPoolCoinsResponse { + uint64 app_id = 1; + repeated TotalActiveAndQueuedPoolCoins total_active_and_queued_coins = 2; +} + + + // Query defines the gRPC querier service. service Query { // Params returns parameters of the module. @@ -461,6 +484,11 @@ service Query { option (google.api.http).get = "/comdex/liquidity/v1beta1/farmed_coin/{app_id}/{pool_id}"; } + // TotalActiveAndQueuedPoolCoin returns the total number of active and queued farmed pool coins in each pool. + rpc TotalActiveAndQueuedPoolCoin(QueryAllFarmedPoolCoinsRequest) returns (QueryAllFarmedPoolCoinsResponse) { + option (google.api.http).get = "/comdex/liquidity/v1beta1/all_farmed_coin/{app_id}"; + } + rpc OrderBooks(QueryOrderBooksRequest) returns (QueryOrderBooksResponse) { option (google.api.http).get = "/comdex/liquidity/v1beta1/order_books/{app_id}"; } diff --git a/x/liquidity/client/cli/query.go b/x/liquidity/client/cli/query.go index 42ac5ca2e..448125759 100644 --- a/x/liquidity/client/cli/query.go +++ b/x/liquidity/client/cli/query.go @@ -42,6 +42,7 @@ func GetQueryCmd() *cobra.Command { NewQueryDeserializePoolCoinCmd(), NewQueryPoolIncentivesCmd(), NewQueryFarmedPoolCoinCmd(), + NewQueryTotalActiveAndQueuedPoolCoinCmd(), ) return cmd @@ -1022,3 +1023,48 @@ $ %s query %s farmed-coin 1 1 return cmd } + +// NewQueryTotalActiveAndQueuedPoolCoinCmd implements the total-farmed-coin query command. +func NewQueryTotalActiveAndQueuedPoolCoinCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "total-farmed-coin [app-id]", + Args: cobra.ExactArgs(1), + Short: "Query total active and queued coins being farmed in each pool", + Long: strings.TrimSpace( + fmt.Sprintf(`Query total active and queued coins being farmed in each pool. +Example: +$ %s query %s total-farmed-coin 1 +`, + version.AppName, types.ModuleName, + ), + ), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + appID, err := strconv.ParseUint(args[0], 10, 64) + if err != nil { + return fmt.Errorf("parse app id: %w", err) + } + + queryClient := types.NewQueryClient(clientCtx) + + res, err := queryClient.TotalActiveAndQueuedPoolCoin( + cmd.Context(), + &types.QueryAllFarmedPoolCoinsRequest{ + AppId: appID, + }) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} diff --git a/x/liquidity/keeper/grpc_query.go b/x/liquidity/keeper/grpc_query.go index e95ffeb72..c68d26f32 100644 --- a/x/liquidity/keeper/grpc_query.go +++ b/x/liquidity/keeper/grpc_query.go @@ -720,6 +720,47 @@ func (k Querier) FarmedPoolCoin(c context.Context, req *types.QueryFarmedPoolCoi return &types.QueryFarmedPoolCoinResponse{Coin: farmedCoins}, nil } +// TotalActiveAndQueuedPoolCoin returns the total number of active and queued farmed pool coins in each pool. +func (k Querier) TotalActiveAndQueuedPoolCoin(c context.Context, req *types.QueryAllFarmedPoolCoinsRequest) (*types.QueryAllFarmedPoolCoinsResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "empty request") + } + + if req.AppId == 0 { + return nil, status.Error(codes.InvalidArgument, "app id cannot be 0") + } + + ctx := sdk.UnwrapSDKContext(c) + + var totalActiveAndQueuedPoolCoins []*types.TotalActiveAndQueuedPoolCoins + + pools := k.GetAllPools(ctx, req.AppId) + for _, pool := range pools { + totalActiveCoin := sdk.NewCoin(pool.PoolCoinDenom, sdk.ZeroInt()) + allActiveFarmers := k.GetAllActiveFarmers(ctx, req.AppId, pool.Id) + for _, afarmer := range allActiveFarmers { + totalActiveCoin = totalActiveCoin.Add(afarmer.FarmedPoolCoin) + } + + totalQueuedCoin := sdk.NewCoin(pool.PoolCoinDenom, sdk.ZeroInt()) + allQueuedFarmers := k.GetAllQueuedFarmers(ctx, req.AppId, pool.Id) + for _, qfarmer := range allQueuedFarmers { + for _, qCoin := range qfarmer.QueudCoins { + totalQueuedCoin = totalQueuedCoin.Add(qCoin.FarmedPoolCoin) + } + } + + totalActiveAndQueuedPoolCoins = append(totalActiveAndQueuedPoolCoins, + &types.TotalActiveAndQueuedPoolCoins{ + PoolId: pool.Id, + TotalActivePoolCoin: totalActiveCoin, + TotalQueuedPoolCoin: totalQueuedCoin, + }, + ) + } + return &types.QueryAllFarmedPoolCoinsResponse{AppId: req.AppId, TotalActiveAndQueuedCoins: totalActiveAndQueuedPoolCoins}, nil +} + // OrderBooks queries virtual order books from user orders and pools. func (k Querier) OrderBooks(c context.Context, req *types.QueryOrderBooksRequest) (*types.QueryOrderBooksResponse, error) { if req == nil { diff --git a/x/liquidity/types/query.pb.go b/x/liquidity/types/query.pb.go index 7117fe68a..c3221d8c9 100644 --- a/x/liquidity/types/query.pb.go +++ b/x/liquidity/types/query.pb.go @@ -2498,6 +2498,162 @@ func (m *OrderBookTickResponse) XXX_DiscardUnknown() { var xxx_messageInfo_OrderBookTickResponse proto.InternalMessageInfo +type TotalActiveAndQueuedPoolCoins struct { + PoolId uint64 `protobuf:"varint,1,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty"` + TotalActivePoolCoin types.Coin `protobuf:"bytes,2,opt,name=total_active_pool_coin,json=totalActivePoolCoin,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coin" json:"total_active_pool_coin"` + TotalQueuedPoolCoin types.Coin `protobuf:"bytes,3,opt,name=total_queued_pool_coin,json=totalQueuedPoolCoin,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coin" json:"total_queued_pool_coin"` +} + +func (m *TotalActiveAndQueuedPoolCoins) Reset() { *m = TotalActiveAndQueuedPoolCoins{} } +func (m *TotalActiveAndQueuedPoolCoins) String() string { return proto.CompactTextString(m) } +func (*TotalActiveAndQueuedPoolCoins) ProtoMessage() {} +func (*TotalActiveAndQueuedPoolCoins) Descriptor() ([]byte, []int) { + return fileDescriptor_d297ec7fcddea2d4, []int{44} +} +func (m *TotalActiveAndQueuedPoolCoins) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TotalActiveAndQueuedPoolCoins) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TotalActiveAndQueuedPoolCoins.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 *TotalActiveAndQueuedPoolCoins) XXX_Merge(src proto.Message) { + xxx_messageInfo_TotalActiveAndQueuedPoolCoins.Merge(m, src) +} +func (m *TotalActiveAndQueuedPoolCoins) XXX_Size() int { + return m.Size() +} +func (m *TotalActiveAndQueuedPoolCoins) XXX_DiscardUnknown() { + xxx_messageInfo_TotalActiveAndQueuedPoolCoins.DiscardUnknown(m) +} + +var xxx_messageInfo_TotalActiveAndQueuedPoolCoins proto.InternalMessageInfo + +func (m *TotalActiveAndQueuedPoolCoins) GetPoolId() uint64 { + if m != nil { + return m.PoolId + } + return 0 +} + +func (m *TotalActiveAndQueuedPoolCoins) GetTotalActivePoolCoin() types.Coin { + if m != nil { + return m.TotalActivePoolCoin + } + return types.Coin{} +} + +func (m *TotalActiveAndQueuedPoolCoins) GetTotalQueuedPoolCoin() types.Coin { + if m != nil { + return m.TotalQueuedPoolCoin + } + return types.Coin{} +} + +type QueryAllFarmedPoolCoinsRequest struct { + AppId uint64 `protobuf:"varint,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` +} + +func (m *QueryAllFarmedPoolCoinsRequest) Reset() { *m = QueryAllFarmedPoolCoinsRequest{} } +func (m *QueryAllFarmedPoolCoinsRequest) String() string { return proto.CompactTextString(m) } +func (*QueryAllFarmedPoolCoinsRequest) ProtoMessage() {} +func (*QueryAllFarmedPoolCoinsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_d297ec7fcddea2d4, []int{45} +} +func (m *QueryAllFarmedPoolCoinsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryAllFarmedPoolCoinsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryAllFarmedPoolCoinsRequest.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 *QueryAllFarmedPoolCoinsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllFarmedPoolCoinsRequest.Merge(m, src) +} +func (m *QueryAllFarmedPoolCoinsRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryAllFarmedPoolCoinsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllFarmedPoolCoinsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryAllFarmedPoolCoinsRequest proto.InternalMessageInfo + +func (m *QueryAllFarmedPoolCoinsRequest) GetAppId() uint64 { + if m != nil { + return m.AppId + } + return 0 +} + +type QueryAllFarmedPoolCoinsResponse struct { + AppId uint64 `protobuf:"varint,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` + TotalActiveAndQueuedCoins []*TotalActiveAndQueuedPoolCoins `protobuf:"bytes,2,rep,name=total_active_and_queued_coins,json=totalActiveAndQueuedCoins,proto3" json:"total_active_and_queued_coins,omitempty"` +} + +func (m *QueryAllFarmedPoolCoinsResponse) Reset() { *m = QueryAllFarmedPoolCoinsResponse{} } +func (m *QueryAllFarmedPoolCoinsResponse) String() string { return proto.CompactTextString(m) } +func (*QueryAllFarmedPoolCoinsResponse) ProtoMessage() {} +func (*QueryAllFarmedPoolCoinsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d297ec7fcddea2d4, []int{46} +} +func (m *QueryAllFarmedPoolCoinsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryAllFarmedPoolCoinsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryAllFarmedPoolCoinsResponse.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 *QueryAllFarmedPoolCoinsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllFarmedPoolCoinsResponse.Merge(m, src) +} +func (m *QueryAllFarmedPoolCoinsResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryAllFarmedPoolCoinsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllFarmedPoolCoinsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryAllFarmedPoolCoinsResponse proto.InternalMessageInfo + +func (m *QueryAllFarmedPoolCoinsResponse) GetAppId() uint64 { + if m != nil { + return m.AppId + } + return 0 +} + +func (m *QueryAllFarmedPoolCoinsResponse) GetTotalActiveAndQueuedCoins() []*TotalActiveAndQueuedPoolCoins { + if m != nil { + return m.TotalActiveAndQueuedCoins + } + return nil +} + func init() { proto.RegisterType((*QueryParamsRequest)(nil), "comdex.liquidity.v1beta1.QueryParamsRequest") proto.RegisterType((*QueryParamsResponse)(nil), "comdex.liquidity.v1beta1.QueryParamsResponse") @@ -2543,6 +2699,9 @@ func init() { proto.RegisterType((*OrderBookPairResponse)(nil), "comdex.liquidity.v1beta1.OrderBookPairResponse") proto.RegisterType((*OrderBookResponse)(nil), "comdex.liquidity.v1beta1.OrderBookResponse") proto.RegisterType((*OrderBookTickResponse)(nil), "comdex.liquidity.v1beta1.OrderBookTickResponse") + proto.RegisterType((*TotalActiveAndQueuedPoolCoins)(nil), "comdex.liquidity.v1beta1.TotalActiveAndQueuedPoolCoins") + proto.RegisterType((*QueryAllFarmedPoolCoinsRequest)(nil), "comdex.liquidity.v1beta1.QueryAllFarmedPoolCoinsRequest") + proto.RegisterType((*QueryAllFarmedPoolCoinsResponse)(nil), "comdex.liquidity.v1beta1.QueryAllFarmedPoolCoinsResponse") } func init() { @@ -2550,171 +2709,179 @@ func init() { } var fileDescriptor_d297ec7fcddea2d4 = []byte{ - // 2624 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x59, 0x4f, 0x6c, 0x1b, 0x59, - 0x19, 0xef, 0x38, 0xb6, 0x6b, 0x7f, 0x49, 0xec, 0xe4, 0xf5, 0x9f, 0xeb, 0x96, 0x38, 0x0c, 0xa5, - 0x35, 0xfd, 0x63, 0xb7, 0xe9, 0x9f, 0xdd, 0xcd, 0xee, 0x56, 0xad, 0x37, 0x6d, 0x37, 0xdb, 0x56, - 0xb4, 0xd3, 0x56, 0xbb, 0x54, 0x05, 0x33, 0xf6, 0xbc, 0xa4, 0xa3, 0xda, 0x7e, 0x93, 0x99, 0x71, - 0xd3, 0x6c, 0x14, 0x21, 0x21, 0x71, 0x41, 0x48, 0xac, 0xb4, 0x2c, 0x02, 0x21, 0x0e, 0x20, 0x24, - 0x04, 0x1c, 0xb8, 0xc0, 0x85, 0x0b, 0x12, 0x07, 0xb4, 0x07, 0x56, 0xec, 0xaa, 0x17, 0xc4, 0xa1, - 0x0b, 0x2d, 0x5c, 0xb8, 0xb1, 0x12, 0x17, 0x4e, 0xe8, 0xfd, 0x99, 0xf1, 0xcc, 0x64, 0x26, 0x33, - 0x8e, 0x1c, 0x2e, 0x4d, 0xfd, 0xe6, 0x7d, 0xdf, 0xf7, 0xfb, 0xfe, 0xbc, 0xef, 0x7d, 0xef, 0xfb, - 0xe0, 0x48, 0x9b, 0x74, 0x35, 0xfc, 0xa4, 0xde, 0xd1, 0x57, 0xfa, 0xba, 0xa6, 0xdb, 0x6b, 0xf5, - 0xc7, 0x67, 0x5a, 0xd8, 0x56, 0xcf, 0xd4, 0x57, 0xfa, 0xd8, 0x5c, 0xab, 0x19, 0x26, 0xb1, 0x09, - 0x2a, 0xf1, 0x5d, 0x35, 0x77, 0x57, 0x4d, 0xec, 0x2a, 0xef, 0x5d, 0x26, 0xcb, 0x84, 0x6d, 0xaa, - 0xd3, 0xff, 0xf1, 0xfd, 0xe5, 0xc3, 0xcb, 0x84, 0x2c, 0x77, 0x70, 0x5d, 0x35, 0xf4, 0xba, 0xda, - 0xeb, 0x11, 0x5b, 0xb5, 0x75, 0xd2, 0xb3, 0xc4, 0xd7, 0x99, 0x36, 0xb1, 0xba, 0xc4, 0xaa, 0xb7, - 0x54, 0x0b, 0xbb, 0xe2, 0xda, 0x44, 0xef, 0x89, 0xef, 0xc7, 0xbd, 0xdf, 0x19, 0x0c, 0x77, 0x97, - 0xa1, 0x2e, 0xeb, 0x3d, 0xc6, 0x4c, 0xec, 0xad, 0x46, 0xe2, 0x1f, 0x60, 0xe5, 0x3b, 0xbf, 0x18, - 0xb9, 0xd3, 0x50, 0x4d, 0xb5, 0xeb, 0x80, 0xab, 0x08, 0xe8, 0xec, 0x57, 0xab, 0xbf, 0x54, 0xb7, - 0xf5, 0x2e, 0xb6, 0x6c, 0xb5, 0x6b, 0x38, 0xe8, 0x83, 0x1b, 0xb4, 0xbe, 0xe9, 0x41, 0x24, 0xef, - 0x05, 0x74, 0x9b, 0x62, 0xbe, 0xc5, 0xb8, 0x2a, 0x78, 0xa5, 0x8f, 0x2d, 0x5b, 0xbe, 0x07, 0x7b, - 0x7c, 0xab, 0x96, 0x41, 0x7a, 0x16, 0x46, 0x17, 0x21, 0xcb, 0xa5, 0x97, 0xa4, 0x59, 0xa9, 0x3a, - 0x3e, 0x37, 0x5b, 0x8b, 0xb2, 0x74, 0x8d, 0x53, 0x36, 0xd2, 0x1f, 0x3e, 0xab, 0xec, 0x52, 0x04, - 0x95, 0x3c, 0x07, 0x07, 0x19, 0xdb, 0x6b, 0xb8, 0x87, 0x4d, 0xbd, 0xed, 0x93, 0x89, 0xf6, 0x41, - 0x56, 0x35, 0x8c, 0xa6, 0xae, 0x31, 0xe6, 0x69, 0x25, 0xa3, 0x1a, 0xc6, 0xa2, 0x26, 0xb7, 0xa1, - 0x1c, 0x46, 0x23, 0x10, 0x5d, 0x09, 0x20, 0x3a, 0x16, 0x8d, 0xc8, 0xc7, 0x20, 0x00, 0xec, 0xe7, - 0x12, 0x4c, 0x73, 0x85, 0x09, 0xe9, 0xb8, 0x88, 0x0e, 0xc0, 0x6e, 0x43, 0xd5, 0xcd, 0x01, 0xa4, - 0x2c, 0xfd, 0xb9, 0xa8, 0xa1, 0x32, 0xe4, 0x34, 0xdd, 0x52, 0x5b, 0x1d, 0xac, 0x95, 0x52, 0xb3, - 0x52, 0x35, 0xaf, 0xb8, 0xbf, 0xd1, 0x55, 0x80, 0x81, 0xdb, 0x4b, 0x63, 0x0c, 0xd5, 0xd1, 0x1a, - 0x8f, 0x91, 0x1a, 0x8d, 0x91, 0x1a, 0x0f, 0xd5, 0x81, 0xa1, 0x96, 0xb1, 0x10, 0xa8, 0x78, 0x28, - 0x3d, 0xe6, 0x48, 0x7b, 0xcd, 0xf1, 0x13, 0xc9, 0x71, 0x18, 0x47, 0x2a, 0xec, 0xd0, 0x80, 0x8c, - 0x41, 0x17, 0x4a, 0xd2, 0xec, 0x98, 0x10, 0x18, 0xe5, 0x18, 0x42, 0x3a, 0x0e, 0x99, 0xb0, 0x02, - 0x27, 0x45, 0xd7, 0x7c, 0xc8, 0x53, 0xae, 0x3d, 0xb7, 0x46, 0xce, 0x39, 0x79, 0xa1, 0xcb, 0x0d, - 0x98, 0x72, 0x21, 0x7a, 0x6d, 0x49, 0x48, 0xc7, 0x6b, 0x4b, 0x42, 0x3a, 0x8b, 0x9a, 0x47, 0xcf, - 0x94, 0x57, 0xcf, 0x7b, 0x1e, 0x87, 0xb8, 0x5a, 0x5e, 0x82, 0x34, 0xa5, 0x12, 0xbe, 0x1e, 0x4e, - 0x49, 0x46, 0x29, 0xb7, 0x60, 0xd6, 0x65, 0xdb, 0x58, 0x53, 0xb0, 0x85, 0xcd, 0xc7, 0xf8, 0xb2, - 0xa6, 0x99, 0xd8, 0x72, 0xdd, 0x7e, 0x0c, 0x8a, 0x26, 0xff, 0xd0, 0x54, 0xf9, 0x17, 0x26, 0x30, - 0xaf, 0x14, 0x4c, 0xdf, 0xfe, 0x28, 0xe8, 0x5f, 0x87, 0x8a, 0x47, 0x06, 0xfd, 0xf7, 0x0d, 0xa2, - 0xf7, 0x16, 0x70, 0x8f, 0x74, 0x1d, 0x11, 0x47, 0xa1, 0xc8, 0xac, 0x41, 0xd3, 0x48, 0x53, 0xa3, - 0x5f, 0x84, 0x88, 0x49, 0xc3, 0xbb, 0x3d, 0x4a, 0xc2, 0xb7, 0xdd, 0x70, 0x55, 0x75, 0xd3, 0xc5, - 0xbd, 0x1f, 0xb2, 0x8c, 0x15, 0x0f, 0x82, 0xbc, 0x22, 0x7e, 0x05, 0x22, 0x32, 0x35, 0x82, 0x88, - 0x1c, 0xf3, 0x82, 0xf9, 0xa1, 0x1b, 0x91, 0x1c, 0x8c, 0xf0, 0xd5, 0x3c, 0x64, 0xe8, 0x69, 0x71, - 0x22, 0x72, 0x66, 0xab, 0x54, 0xa1, 0x9b, 0x6e, 0x24, 0x52, 0x92, 0x1d, 0x88, 0x44, 0x55, 0x37, - 0x63, 0x4f, 0x75, 0x84, 0xb1, 0x6f, 0x7a, 0x6c, 0xed, 0x6a, 0xf7, 0x32, 0xa4, 0x29, 0x95, 0x88, - 0xc4, 0x64, 0xca, 0x31, 0x0a, 0xf9, 0x03, 0x09, 0x0e, 0x31, 0x7e, 0x0b, 0xd8, 0x20, 0x96, 0x6e, - 0x0b, 0x58, 0xd6, 0x36, 0x0f, 0xca, 0xa8, 0xf2, 0x8d, 0xfc, 0x07, 0x09, 0x0e, 0x87, 0xe3, 0x12, - 0x2a, 0x7f, 0x05, 0xa6, 0x34, 0xfe, 0xa9, 0x69, 0x8a, 0x6f, 0xc2, 0xb7, 0xd5, 0x68, 0xf5, 0xfd, - 0xcc, 0x84, 0x21, 0x8a, 0x9a, 0x5f, 0xc4, 0xe8, 0xfc, 0xfd, 0x40, 0x5c, 0x16, 0x7e, 0xb1, 0xb1, - 0xa6, 0x2d, 0x40, 0xca, 0x35, 0x6b, 0x4a, 0xd7, 0xa2, 0x22, 0xfd, 0x71, 0xa8, 0xe7, 0x5c, 0x03, - 0xbd, 0x0d, 0xc5, 0x80, 0x81, 0x44, 0x78, 0x0c, 0x6b, 0x9f, 0x82, 0xdf, 0x3e, 0xf2, 0xf7, 0x1d, - 0xd7, 0xbc, 0xad, 0xdb, 0x0f, 0x35, 0x53, 0x5d, 0x4d, 0x1c, 0x33, 0x3b, 0x7c, 0xf4, 0xff, 0x28, - 0xc1, 0xe7, 0x22, 0x80, 0x09, 0x9b, 0x3c, 0x80, 0xe9, 0x55, 0xf1, 0x2d, 0x18, 0x35, 0x5f, 0x8a, - 0xb6, 0x4a, 0x80, 0x9d, 0x30, 0xcb, 0xd4, 0x6a, 0x40, 0xca, 0xe8, 0xe2, 0xe6, 0xab, 0xc2, 0xb3, - 0x01, 0xc1, 0xa3, 0x0a, 0x9c, 0x77, 0xc3, 0xfd, 0xe7, 0x5a, 0xe9, 0x3e, 0x4c, 0x05, 0xad, 0x24, - 0x42, 0x67, 0x68, 0x23, 0x15, 0x03, 0x46, 0x92, 0xbf, 0xe3, 0xa4, 0xe7, 0x2f, 0x9b, 0x1a, 0x36, - 0xe3, 0x6b, 0x9b, 0x1d, 0x0e, 0x99, 0x1f, 0x4b, 0xa2, 0xb4, 0x74, 0xe0, 0x08, 0x13, 0xbc, 0x0e, - 0x59, 0xc2, 0x56, 0x44, 0x74, 0x54, 0xa2, 0x15, 0x67, 0x94, 0x4e, 0x01, 0xc7, 0x89, 0x46, 0x17, - 0x09, 0x77, 0x44, 0xb6, 0x67, 0x42, 0x62, 0x8d, 0x95, 0xd0, 0xff, 0xb7, 0xbd, 0x2e, 0x70, 0x55, - 0x7e, 0x15, 0x32, 0x0c, 0xbd, 0x70, 0x75, 0x42, 0x8d, 0x39, 0x8d, 0xfc, 0x6b, 0xe7, 0x1a, 0xe1, - 0x76, 0x6c, 0xf0, 0xbf, 0x03, 0xc8, 0x25, 0xd8, 0x4d, 0xf8, 0x8a, 0xa8, 0x2c, 0x9c, 0x9f, 0x5e, - 0x65, 0x52, 0x5b, 0x78, 0x7e, 0xe4, 0x95, 0xeb, 0x7f, 0x32, 0x30, 0xe1, 0xab, 0xe6, 0xb8, 0xf1, - 0x24, 0xd7, 0x78, 0x91, 0xc0, 0x42, 0x0a, 0xb2, 0xb1, 0xd0, 0x82, 0x2c, 0xa4, 0xac, 0x4a, 0x87, - 0x95, 0x55, 0x6f, 0x42, 0xae, 0xa5, 0x76, 0xd4, 0x5e, 0x1b, 0x5b, 0xa5, 0x4c, 0x92, 0x5a, 0xb2, - 0x21, 0x76, 0x0b, 0x1f, 0xb8, 0xd4, 0xe8, 0x3c, 0x1c, 0xe8, 0xa8, 0x96, 0xdd, 0x0c, 0x24, 0x7e, - 0xaa, 0x43, 0x96, 0xe9, 0xb0, 0x97, 0x7e, 0xf6, 0x67, 0xf9, 0x45, 0x0d, 0xbd, 0x04, 0x25, 0x46, - 0x16, 0x3c, 0xf5, 0x94, 0x6e, 0x37, 0xa3, 0xdb, 0x47, 0xbf, 0x07, 0x8e, 0xb8, 0xaf, 0x08, 0xc8, - 0x79, 0x8b, 0x80, 0x0b, 0x90, 0xb6, 0xd7, 0x0c, 0x5c, 0xca, 0xcf, 0x4a, 0xd5, 0xc2, 0x9c, 0xbc, - 0xb5, 0x32, 0x77, 0xd7, 0x0c, 0xac, 0xb0, 0xfd, 0x34, 0x4a, 0xda, 0x26, 0x56, 0x6d, 0x62, 0x96, - 0x80, 0x47, 0x89, 0xf8, 0x89, 0xde, 0x81, 0xa9, 0x81, 0x29, 0xad, 0xbe, 0x61, 0x74, 0xd6, 0x4a, - 0xe3, 0x74, 0x4b, 0xa3, 0x46, 0x4d, 0xf0, 0xd7, 0x67, 0x95, 0xa3, 0xcb, 0xba, 0xfd, 0xb0, 0xdf, - 0xa2, 0xb2, 0xea, 0xe2, 0x09, 0xcc, 0xff, 0x9c, 0xb2, 0xb4, 0x47, 0x75, 0xca, 0xde, 0xaa, 0x2d, - 0xf6, 0x6c, 0xa5, 0xe0, 0xd8, 0xfe, 0x0e, 0xe3, 0x82, 0xae, 0x41, 0xbe, 0xab, 0xf7, 0x9a, 0x86, - 0xa9, 0xb7, 0x71, 0x69, 0x82, 0xb1, 0x3c, 0x9e, 0x90, 0xdd, 0x02, 0x6e, 0x2b, 0xb9, 0xae, 0xde, - 0xbb, 0x45, 0x69, 0x19, 0x23, 0xf5, 0x89, 0x60, 0x34, 0xb9, 0x0d, 0x46, 0xea, 0x13, 0xce, 0xe8, - 0x12, 0x64, 0x38, 0x93, 0xc2, 0xd0, 0x4c, 0x38, 0xa1, 0xef, 0x41, 0x58, 0x9c, 0x95, 0xaa, 0xb9, - 0xc1, 0x83, 0x90, 0x26, 0xe0, 0x09, 0x6f, 0x0c, 0xa1, 0xd7, 0x20, 0x4f, 0x4f, 0x13, 0x33, 0xad, - 0x38, 0xfb, 0x07, 0x7d, 0xc7, 0xcc, 0x71, 0x16, 0x35, 0xda, 0x20, 0xe2, 0x2c, 0x4c, 0x7f, 0xa3, - 0x8b, 0x00, 0x2b, 0x7d, 0x62, 0x0b, 0xf2, 0x54, 0x32, 0xf2, 0x3c, 0x23, 0xa1, 0x0b, 0xf2, 0x03, - 0x91, 0x8b, 0xae, 0xaa, 0x66, 0x77, 0x90, 0x2e, 0xc2, 0x1f, 0xdf, 0xde, 0x8b, 0x2f, 0xe5, 0xbb, - 0xf8, 0xf6, 0x43, 0x76, 0x89, 0x31, 0x10, 0x27, 0x51, 0xfc, 0x92, 0x3f, 0x92, 0xa0, 0x70, 0xbb, - 0x8f, 0xfb, 0x58, 0x73, 0xde, 0x3d, 0x68, 0x19, 0xf2, 0x6e, 0x24, 0xc5, 0xab, 0x5b, 0xa7, 0x78, - 0x7f, 0xf9, 0x69, 0xe5, 0x58, 0x02, 0x07, 0x50, 0x02, 0x25, 0xe7, 0x84, 0x17, 0x52, 0x20, 0xa7, - 0x51, 0x75, 0x9a, 0xaa, 0x2d, 0xec, 0x52, 0xae, 0xf1, 0xee, 0x47, 0xcd, 0xe9, 0x7e, 0xd4, 0xee, - 0x3a, 0xed, 0x91, 0xc6, 0x21, 0x2a, 0xe8, 0xb3, 0x67, 0x95, 0xe2, 0x9a, 0xda, 0xed, 0xcc, 0xcb, - 0x0e, 0xa5, 0xfc, 0xde, 0xa7, 0x15, 0x49, 0xd9, 0xcd, 0x7e, 0x5e, 0xb6, 0xe5, 0x7f, 0x3a, 0xd7, - 0x95, 0x63, 0x2e, 0x91, 0xbb, 0x6c, 0x98, 0x52, 0xdb, 0xb6, 0xfe, 0x18, 0x37, 0x77, 0x52, 0xb7, - 0x02, 0x97, 0xe1, 0x9a, 0xf2, 0x1d, 0x98, 0x5a, 0x61, 0xc6, 0xf5, 0x48, 0x4d, 0xc5, 0x95, 0xe0, - 0x7e, 0x77, 0x38, 0x25, 0xe6, 0x8a, 0x6f, 0x55, 0x5e, 0x17, 0x6f, 0xd6, 0x05, 0x9a, 0x50, 0x75, - 0xb5, 0xa3, 0xbf, 0xeb, 0x4a, 0x8d, 0x2d, 0x82, 0xaa, 0xde, 0x54, 0xa1, 0x76, 0x49, 0xbf, 0x67, - 0x8b, 0x68, 0x71, 0x8f, 0xfe, 0x65, 0xb6, 0x1a, 0x75, 0x3d, 0x7e, 0x4b, 0x12, 0xaf, 0xf2, 0x50, - 0xe9, 0xc2, 0xe2, 0x2a, 0x64, 0xa8, 0x00, 0xa7, 0x3e, 0xd8, 0xc2, 0xcc, 0xa7, 0x85, 0x99, 0xab, - 0x09, 0xcd, 0x6c, 0x29, 0x9c, 0xb3, 0x7c, 0x4e, 0x5c, 0xa9, 0xac, 0xb5, 0xb2, 0xd8, 0x6b, 0xe3, - 0x1e, 0xb5, 0x7e, 0x5c, 0x83, 0xea, 0x4f, 0x19, 0x98, 0xa4, 0x14, 0x2e, 0x41, 0xb4, 0xa5, 0x2a, - 0x30, 0xde, 0x55, 0x2d, 0x1b, 0x9b, 0xcc, 0x7f, 0xcc, 0x48, 0x39, 0x05, 0xf8, 0x12, 0x65, 0x81, - 0x8e, 0x40, 0xa1, 0xfd, 0x50, 0xef, 0x08, 0xff, 0xea, 0x1a, 0xbd, 0xe8, 0xc6, 0xaa, 0x69, 0x65, - 0x82, 0xad, 0x32, 0x29, 0x9a, 0x85, 0x08, 0x4c, 0xda, 0xc4, 0x56, 0x3b, 0x4d, 0x13, 0xaf, 0xaa, - 0xa6, 0x66, 0xb1, 0x4b, 0x6e, 0xb4, 0x91, 0x37, 0xc1, 0x04, 0x28, 0x9c, 0x3f, 0x5a, 0x87, 0x3d, - 0x9a, 0x6e, 0xd9, 0xa6, 0xde, 0xea, 0xdb, 0x58, 0x73, 0xc5, 0x66, 0x46, 0x2e, 0x16, 0x79, 0xc4, - 0x38, 0xc2, 0x3f, 0x0f, 0x1c, 0x4c, 0x13, 0x1b, 0xa4, 0xfd, 0xd0, 0x12, 0xf7, 0xea, 0x38, 0x5b, - 0xbb, 0xc2, 0x96, 0xd0, 0x17, 0x60, 0x72, 0x49, 0xef, 0x74, 0xb0, 0xe6, 0xec, 0xe1, 0x77, 0xe8, - 0x04, 0x5f, 0x14, 0x9b, 0xbe, 0x01, 0x05, 0xf6, 0xb5, 0xe9, 0x74, 0x40, 0xd9, 0x15, 0x4a, 0xf1, - 0x07, 0x93, 0xc4, 0x82, 0xd8, 0xd0, 0x78, 0x9d, 0xe2, 0xff, 0xd7, 0xb3, 0x4a, 0xc9, 0x4f, 0x78, - 0x92, 0x74, 0x75, 0x1b, 0x77, 0x0d, 0x7b, 0xed, 0xb3, 0x67, 0x95, 0x7d, 0x3c, 0x7f, 0xf8, 0x77, - 0xc8, 0x3f, 0xa0, 0x59, 0x64, 0x92, 0x2d, 0x3a, 0xdc, 0x50, 0x17, 0xa6, 0x7b, 0xf8, 0x89, 0xdd, - 0x74, 0x75, 0xa4, 0x18, 0xf2, 0xb1, 0x89, 0xea, 0x88, 0x48, 0x54, 0x25, 0x2e, 0x68, 0x13, 0x0b, - 0x9e, 0xb1, 0xa6, 0xe8, 0xfa, 0x82, 0x67, 0x19, 0xcd, 0xc0, 0xb8, 0x6e, 0x35, 0xad, 0x55, 0xd5, - 0x68, 0x2e, 0x61, 0xcc, 0xee, 0xf7, 0x9c, 0x92, 0xd7, 0xad, 0x3b, 0xab, 0xaa, 0x71, 0x15, 0x63, - 0x4f, 0x38, 0x8f, 0x7b, 0xc3, 0x99, 0x78, 0x0e, 0x81, 0xf7, 0x0c, 0x88, 0x63, 0x78, 0x4b, 0x94, - 0x58, 0xba, 0xfb, 0x49, 0x1c, 0xc8, 0x63, 0x5b, 0x17, 0x1d, 0x2e, 0x2b, 0x9e, 0x14, 0x06, 0x9c, - 0xe5, 0x1b, 0xe2, 0xcd, 0xce, 0x32, 0xac, 0x96, 0x38, 0xeb, 0x44, 0x74, 0x6b, 0x36, 0x04, 0xfc, - 0x20, 0x37, 0x01, 0xff, 0x6b, 0x90, 0xde, 0xa1, 0x5c, 0xcd, 0xf8, 0xca, 0xef, 0x4b, 0xb0, 0x7f, - 0x50, 0x96, 0x37, 0x08, 0x79, 0x14, 0x93, 0x3e, 0xd0, 0x41, 0xc8, 0x89, 0xaa, 0xd7, 0x62, 0xb9, - 0x3c, 0xad, 0xec, 0xe6, 0x65, 0xaf, 0x85, 0x8e, 0xc3, 0x34, 0x2b, 0x2f, 0x9a, 0xfd, 0x9e, 0x6e, - 0x37, 0x0d, 0xb2, 0x4a, 0x9f, 0x47, 0x34, 0x21, 0x4c, 0x2a, 0x45, 0xf6, 0xe1, 0x5e, 0x4f, 0xb7, - 0x6f, 0xb1, 0x65, 0x74, 0x08, 0xf2, 0xbd, 0x7e, 0xb7, 0x69, 0xeb, 0xed, 0x47, 0x3c, 0x1f, 0x4c, - 0x2a, 0xb9, 0x5e, 0xbf, 0x7b, 0x97, 0xfe, 0x96, 0x97, 0xe0, 0xc0, 0x26, 0x50, 0xc2, 0x20, 0xd7, - 0x9d, 0x36, 0x1d, 0xbf, 0x47, 0xea, 0x71, 0x8f, 0x10, 0x42, 0x1e, 0x79, 0x1b, 0x61, 0xbe, 0xbe, - 0x9d, 0xfc, 0x54, 0x82, 0x7d, 0xa1, 0xdb, 0xa2, 0x5f, 0x50, 0x37, 0x01, 0x58, 0x31, 0xc4, 0x0b, - 0xb0, 0xd4, 0xd0, 0x15, 0x26, 0x2d, 0xc2, 0x58, 0x39, 0xc5, 0x4b, 0x39, 0x05, 0xc6, 0xd9, 0x3b, - 0xa7, 0xd9, 0xa2, 0x5a, 0x32, 0x63, 0x8d, 0xcf, 0x9d, 0x48, 0xa0, 0x54, 0x40, 0x21, 0x20, 0xae, - 0xa9, 0xe4, 0xff, 0x4a, 0x30, 0xbd, 0x69, 0x1f, 0x05, 0x3e, 0x70, 0x0e, 0x7f, 0x63, 0x0d, 0x0f, - 0xdc, 0xf5, 0x22, 0xf5, 0x83, 0x85, 0x3b, 0x9d, 0x61, 0xfc, 0x40, 0x7d, 0x1b, 0xf4, 0x03, 0xe3, - 0x81, 0x16, 0x21, 0xdd, 0xea, 0xaf, 0x39, 0xea, 0x6f, 0x93, 0x17, 0x63, 0x21, 0x7f, 0x90, 0xf2, - 0xb8, 0xd4, 0xbb, 0x0b, 0x2d, 0x38, 0x55, 0xf3, 0xf6, 0x74, 0x17, 0x95, 0xf3, 0x7d, 0x98, 0xee, - 0x5b, 0xd8, 0x6c, 0x72, 0xaf, 0x79, 0xaa, 0x87, 0xe1, 0x1f, 0x1a, 0x45, 0xca, 0x88, 0x61, 0x15, - 0xe5, 0xc6, 0x7d, 0x98, 0x66, 0xb9, 0xc3, 0xc7, 0x7b, 0x6c, 0x7b, 0xbc, 0x29, 0x23, 0x0f, 0xef, - 0xb9, 0x7f, 0x1f, 0x86, 0x0c, 0x3b, 0x53, 0xe8, 0xbb, 0x12, 0x64, 0xf9, 0x50, 0x09, 0x9d, 0xdc, - 0xb2, 0x0a, 0x0b, 0x0c, 0xd9, 0xca, 0xa7, 0x12, 0xee, 0xe6, 0xf6, 0x96, 0xab, 0xdf, 0x7c, 0xfa, - 0x8f, 0xf7, 0x53, 0x32, 0x9a, 0xad, 0xc7, 0x8c, 0x06, 0xd1, 0x6f, 0x25, 0x98, 0xf4, 0x4d, 0xbb, - 0xd0, 0xd9, 0x18, 0x51, 0x61, 0x03, 0xb9, 0xf2, 0xb9, 0xe1, 0x88, 0x04, 0xcc, 0x57, 0x18, 0xcc, - 0xb3, 0xe8, 0x4c, 0x34, 0xcc, 0x65, 0x4e, 0xd8, 0xe4, 0x70, 0xeb, 0xeb, 0x3c, 0x2d, 0x6e, 0xa0, - 0xef, 0x49, 0x90, 0x61, 0xb5, 0x17, 0x3a, 0x11, 0x67, 0x1a, 0xcf, 0x98, 0xae, 0x7c, 0x32, 0xd9, - 0x66, 0x81, 0xef, 0x34, 0xc3, 0x77, 0x1c, 0x55, 0xb7, 0x30, 0x23, 0x25, 0x18, 0xc0, 0xfa, 0x91, - 0x04, 0x69, 0x56, 0x9d, 0x1d, 0x4f, 0x20, 0xc8, 0x01, 0x75, 0x22, 0xd1, 0x5e, 0x81, 0x69, 0x9e, - 0x61, 0x3a, 0x87, 0xe6, 0x92, 0x62, 0xaa, 0xaf, 0x8b, 0x4b, 0x71, 0x03, 0x3d, 0x95, 0x60, 0x6f, - 0xd8, 0x34, 0x0b, 0xcd, 0x27, 0x40, 0x10, 0x31, 0x02, 0x1b, 0x0e, 0xbd, 0xc2, 0xd0, 0xdf, 0x40, - 0x6f, 0x25, 0x46, 0x1f, 0xe8, 0xe6, 0xd4, 0xd7, 0x03, 0x0b, 0x1b, 0xe8, 0x13, 0x09, 0xf6, 0x84, - 0xcc, 0xcf, 0xd0, 0x2b, 0x89, 0x94, 0x0a, 0x9b, 0xb9, 0xed, 0xb4, 0x4e, 0x81, 0xc6, 0x93, 0xf0, - 0xd0, 0x60, 0x41, 0x84, 0x37, 0x9b, 0x6f, 0xc5, 0x42, 0xf1, 0x8c, 0xf5, 0xe2, 0xc3, 0xdb, 0x3b, - 0x76, 0x4b, 0x14, 0xde, 0x94, 0x20, 0x10, 0xde, 0xaa, 0x6e, 0xc6, 0x87, 0xf7, 0x60, 0x88, 0x56, - 0x3e, 0x91, 0x68, 0xef, 0x10, 0xe1, 0xed, 0xc3, 0x54, 0x5f, 0x17, 0xc5, 0xc2, 0x06, 0xfa, 0x48, - 0x82, 0x62, 0x60, 0x22, 0x85, 0xce, 0xc7, 0x08, 0x0f, 0x9f, 0xac, 0x95, 0x2f, 0x0c, 0x4b, 0x26, - 0xe0, 0x5f, 0x67, 0xf0, 0xaf, 0xa0, 0x37, 0x86, 0x3f, 0x9d, 0xf5, 0xe0, 0xc4, 0x0c, 0xfd, 0x59, - 0x82, 0x82, 0x5f, 0x10, 0x3a, 0x37, 0x14, 0x2e, 0x47, 0x9b, 0xf3, 0x43, 0x52, 0x09, 0x65, 0x6e, - 0x31, 0x65, 0xde, 0x42, 0x6f, 0x8e, 0x40, 0x99, 0xfa, 0x3a, 0xf5, 0xd0, 0x27, 0x12, 0x4c, 0x05, - 0xe7, 0x3f, 0x28, 0xce, 0xd6, 0x11, 0x93, 0xac, 0xf2, 0x4b, 0x43, 0xd3, 0x09, 0xbd, 0x6e, 0x30, - 0xbd, 0xae, 0xa2, 0x85, 0x6d, 0xe8, 0xb5, 0x69, 0x42, 0x45, 0x93, 0x6a, 0x31, 0x20, 0x2a, 0x36, - 0xea, 0xc2, 0x67, 0x47, 0xe5, 0x0b, 0xc3, 0x92, 0x09, 0x85, 0x6e, 0x33, 0x85, 0xae, 0xa3, 0xc5, - 0x51, 0x28, 0xc4, 0x3d, 0xf5, 0x53, 0x09, 0xb2, 0x7c, 0x5c, 0x10, 0x5b, 0xa9, 0xf8, 0x86, 0x45, - 0xb1, 0x95, 0x8a, 0x7f, 0x96, 0x23, 0xbf, 0xca, 0xa0, 0x9f, 0x47, 0x67, 0xa3, 0xa1, 0xf3, 0xb1, - 0x4d, 0xd8, 0x81, 0xff, 0x99, 0x04, 0x19, 0xc6, 0x2f, 0x36, 0x4b, 0x7a, 0x47, 0x34, 0xe5, 0x93, - 0xc9, 0x36, 0x0b, 0x84, 0x97, 0x18, 0xc2, 0x79, 0xf4, 0xf2, 0x36, 0x10, 0x72, 0x5b, 0xfe, 0x46, - 0x82, 0x62, 0x60, 0xf4, 0x12, 0x1b, 0x21, 0xe1, 0xa3, 0x9a, 0xff, 0x87, 0x75, 0xc5, 0xec, 0x67, - 0x03, 0xfd, 0x4a, 0x82, 0x2c, 0x6f, 0x65, 0xc6, 0x86, 0x80, 0xaf, 0x41, 0x1c, 0x0b, 0xd2, 0xdf, - 0x1f, 0x95, 0x17, 0x18, 0xc8, 0x8b, 0xe8, 0xb5, 0x68, 0x90, 0xbc, 0x63, 0x1c, 0x16, 0xbe, 0xeb, - 0xfc, 0xd3, 0x06, 0xfa, 0xbb, 0x04, 0x7b, 0x42, 0x7a, 0x82, 0xb1, 0x55, 0x40, 0x74, 0x17, 0xb3, - 0x3c, 0xbf, 0x1d, 0x52, 0xa1, 0xd4, 0x1d, 0xa6, 0xd4, 0x4d, 0x74, 0x3d, 0x5a, 0x29, 0x6d, 0x40, - 0x1e, 0xaa, 0x59, 0xb0, 0x51, 0xba, 0x81, 0x7e, 0x27, 0x41, 0xc1, 0xdf, 0x6b, 0x89, 0x8d, 0xa3, - 0xf0, 0xfe, 0x64, 0x39, 0x09, 0xd9, 0xe6, 0x8e, 0x4e, 0xd2, 0xe2, 0xd3, 0xd3, 0xf1, 0x19, 0xd4, - 0x0e, 0xbf, 0x97, 0xa0, 0xe0, 0xef, 0xb4, 0xc4, 0xde, 0x66, 0xa1, 0x6d, 0x9e, 0x58, 0xec, 0xe1, - 0xed, 0x9c, 0x24, 0xe7, 0x98, 0xc5, 0x92, 0xc6, 0x6c, 0x1e, 0x56, 0x3e, 0xff, 0x42, 0x02, 0x18, - 0xb4, 0x45, 0xd0, 0xe9, 0x24, 0x67, 0xd1, 0xdb, 0xd6, 0x29, 0x9f, 0x19, 0x82, 0x42, 0xa0, 0xbe, - 0xc0, 0x50, 0x9f, 0x46, 0xb5, 0x98, 0x13, 0xcc, 0x9b, 0x18, 0x2e, 0xea, 0xc6, 0xcd, 0x0f, 0x9f, - 0xcf, 0x48, 0x1f, 0x3f, 0x9f, 0x91, 0xfe, 0xf6, 0x7c, 0x46, 0x7a, 0xef, 0xc5, 0xcc, 0xae, 0x8f, - 0x5f, 0xcc, 0xec, 0xfa, 0xcb, 0x8b, 0x99, 0x5d, 0xf7, 0xcf, 0xfa, 0x9e, 0xb1, 0x94, 0xe7, 0x29, - 0xb2, 0xb4, 0xa4, 0xb7, 0x75, 0xb5, 0xe3, 0xc8, 0xf0, 0x4a, 0x61, 0xef, 0xda, 0x56, 0x96, 0x35, - 0x1b, 0xcf, 0xfe, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x77, 0x73, 0xbb, 0xdc, 0x55, 0x2b, 0x00, 0x00, + // 2752 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x59, 0x4d, 0x6c, 0x1c, 0x49, + 0xf5, 0x4f, 0x8f, 0x67, 0x1c, 0xfb, 0xd9, 0x9e, 0xb1, 0x2b, 0x5f, 0x93, 0x49, 0x32, 0xe3, 0x7f, + 0xff, 0x43, 0x32, 0xe4, 0x63, 0x26, 0x71, 0xbe, 0xbd, 0xbb, 0x51, 0x3c, 0xeb, 0x24, 0xeb, 0x4d, + 0x22, 0x92, 0x4e, 0xa2, 0x5d, 0xa2, 0xc0, 0xd0, 0x33, 0x5d, 0x76, 0x5a, 0xe9, 0xe9, 0x6e, 0x77, + 0xf7, 0xc4, 0xf1, 0x5a, 0xd6, 0x4a, 0x48, 0x5c, 0x10, 0x12, 0x2b, 0x2d, 0x8b, 0x40, 0x88, 0x03, + 0x08, 0x09, 0x01, 0x07, 0x0e, 0xc0, 0x65, 0x2f, 0x48, 0x20, 0xa1, 0x3d, 0xb0, 0xda, 0x5d, 0xe5, + 0x82, 0x38, 0x64, 0x21, 0x81, 0x0b, 0xc7, 0x95, 0xb8, 0x70, 0x42, 0xf5, 0xd1, 0x3d, 0xdd, 0xed, + 0x6e, 0x77, 0x8f, 0x35, 0xe6, 0xe2, 0x71, 0x57, 0xd5, 0x7b, 0xef, 0xf7, 0x3e, 0xea, 0xd5, 0xab, + 0x7a, 0x70, 0xb8, 0x6d, 0x74, 0x14, 0xfc, 0xb4, 0xae, 0xa9, 0xcb, 0x5d, 0x55, 0x51, 0x9d, 0xd5, + 0xfa, 0x93, 0xd3, 0x2d, 0xec, 0xc8, 0xa7, 0xeb, 0xcb, 0x5d, 0x6c, 0xad, 0xd6, 0x4c, 0xcb, 0x70, + 0x0c, 0x54, 0x64, 0xab, 0x6a, 0xde, 0xaa, 0x1a, 0x5f, 0x55, 0xda, 0xbd, 0x64, 0x2c, 0x19, 0x74, + 0x51, 0x9d, 0xfc, 0xc7, 0xd6, 0x97, 0x0e, 0x2e, 0x19, 0xc6, 0x92, 0x86, 0xeb, 0xb2, 0xa9, 0xd6, + 0x65, 0x5d, 0x37, 0x1c, 0xd9, 0x51, 0x0d, 0xdd, 0xe6, 0xb3, 0xe5, 0xb6, 0x61, 0x77, 0x0c, 0xbb, + 0xde, 0x92, 0x6d, 0xec, 0x89, 0x6b, 0x1b, 0xaa, 0xce, 0xe7, 0x8f, 0xf9, 0xe7, 0x29, 0x0c, 0x6f, + 0x95, 0x29, 0x2f, 0xa9, 0x3a, 0x65, 0xc6, 0xd7, 0x56, 0x63, 0xf1, 0xf7, 0xb0, 0xb2, 0x95, 0x5f, + 0x8a, 0x5d, 0x69, 0xca, 0x96, 0xdc, 0x71, 0xc1, 0x55, 0x38, 0x74, 0xfa, 0xd5, 0xea, 0x2e, 0xd6, + 0x1d, 0xb5, 0x83, 0x6d, 0x47, 0xee, 0x98, 0x2e, 0xfa, 0xf0, 0x02, 0xa5, 0x6b, 0xf9, 0x10, 0x89, + 0xbb, 0x01, 0xdd, 0x21, 0x98, 0x6f, 0x53, 0xae, 0x12, 0x5e, 0xee, 0x62, 0xdb, 0x11, 0xef, 0xc3, + 0xae, 0xc0, 0xa8, 0x6d, 0x1a, 0xba, 0x8d, 0xd1, 0x65, 0x18, 0x66, 0xd2, 0x8b, 0xc2, 0xb4, 0x50, + 0x1d, 0x9b, 0x99, 0xae, 0xc5, 0x59, 0xba, 0xc6, 0x28, 0x1b, 0xd9, 0x8f, 0x9e, 0x57, 0x76, 0x48, + 0x9c, 0x4a, 0x9c, 0x81, 0xfd, 0x94, 0xed, 0x75, 0xac, 0x63, 0x4b, 0x6d, 0x07, 0x64, 0xa2, 0x3d, + 0x30, 0x2c, 0x9b, 0x66, 0x53, 0x55, 0x28, 0xf3, 0xac, 0x94, 0x93, 0x4d, 0x73, 0x41, 0x11, 0xdb, + 0x50, 0x8a, 0xa2, 0xe1, 0x88, 0xae, 0x86, 0x10, 0x1d, 0x8d, 0x47, 0x14, 0x60, 0x10, 0x02, 0xf6, + 0x73, 0x01, 0xa6, 0x98, 0xc2, 0x86, 0xa1, 0x79, 0x88, 0xf6, 0xc1, 0x4e, 0x53, 0x56, 0xad, 0x1e, + 0xa4, 0x61, 0xf2, 0xb9, 0xa0, 0xa0, 0x12, 0x8c, 0x28, 0xaa, 0x2d, 0xb7, 0x34, 0xac, 0x14, 0x33, + 0xd3, 0x42, 0x75, 0x54, 0xf2, 0xbe, 0xd1, 0x35, 0x80, 0x9e, 0xdb, 0x8b, 0x43, 0x14, 0xd5, 0x91, + 0x1a, 0x8b, 0x91, 0x1a, 0x89, 0x91, 0x1a, 0x0b, 0xd5, 0x9e, 0xa1, 0x96, 0x30, 0x17, 0x28, 0xf9, + 0x28, 0x7d, 0xe6, 0xc8, 0xfa, 0xcd, 0xf1, 0x13, 0xc1, 0x75, 0x18, 0x43, 0xca, 0xed, 0xd0, 0x80, + 0x9c, 0x49, 0x06, 0x8a, 0xc2, 0xf4, 0x10, 0x17, 0x18, 0xe7, 0x18, 0xc3, 0xd0, 0x5c, 0x32, 0x6e, + 0x05, 0x46, 0x8a, 0xae, 0x07, 0x90, 0x67, 0x3c, 0x7b, 0x6e, 0x8e, 0x9c, 0x71, 0xf2, 0x43, 0x17, + 0x1b, 0x30, 0xe9, 0x41, 0xf4, 0xdb, 0xd2, 0x30, 0x34, 0xbf, 0x2d, 0x0d, 0x43, 0x5b, 0x50, 0x7c, + 0x7a, 0x66, 0xfc, 0x7a, 0xde, 0xf7, 0x39, 0xc4, 0xd3, 0xf2, 0x0a, 0x64, 0x09, 0x15, 0xf7, 0x75, + 0x7f, 0x4a, 0x52, 0x4a, 0xb1, 0x05, 0xd3, 0x1e, 0xdb, 0xc6, 0xaa, 0x84, 0x6d, 0x6c, 0x3d, 0xc1, + 0x73, 0x8a, 0x62, 0x61, 0xdb, 0x73, 0xfb, 0x51, 0x28, 0x58, 0x6c, 0xa2, 0x29, 0xb3, 0x19, 0x2a, + 0x70, 0x54, 0xca, 0x5b, 0x81, 0xf5, 0x71, 0xd0, 0xbf, 0x01, 0x15, 0x9f, 0x0c, 0xf2, 0xf7, 0x75, + 0x43, 0xd5, 0xe7, 0xb1, 0x6e, 0x74, 0x5c, 0x11, 0x47, 0xa0, 0x40, 0xad, 0x41, 0xd2, 0x48, 0x53, + 0x21, 0x33, 0x5c, 0xc4, 0x84, 0xe9, 0x5f, 0x1e, 0x27, 0xe1, 0xdb, 0x5e, 0xb8, 0xca, 0xaa, 0xe5, + 0xe1, 0xde, 0x0b, 0xc3, 0x94, 0x15, 0x0b, 0x82, 0x51, 0x89, 0x7f, 0x85, 0x22, 0x32, 0x33, 0x80, + 0x88, 0x1c, 0xf2, 0x83, 0xf9, 0xa1, 0x17, 0x91, 0x0c, 0x0c, 0xf7, 0xd5, 0x2c, 0xe4, 0xc8, 0x6e, + 0x71, 0x23, 0xb2, 0xbc, 0x59, 0xaa, 0x50, 0x2d, 0x2f, 0x12, 0x09, 0xc9, 0x36, 0x44, 0xa2, 0xac, + 0x5a, 0x89, 0xbb, 0x3a, 0xc6, 0xd8, 0xb7, 0x7c, 0xb6, 0xf6, 0xb4, 0xbb, 0x08, 0x59, 0x42, 0xc5, + 0x23, 0x31, 0x9d, 0x72, 0x94, 0x42, 0xfc, 0x40, 0x80, 0x03, 0x94, 0xdf, 0x3c, 0x36, 0x0d, 0x5b, + 0x75, 0x38, 0x2c, 0x7b, 0x8b, 0x1b, 0x65, 0x50, 0xf9, 0x46, 0xfc, 0x83, 0x00, 0x07, 0xa3, 0x71, + 0x71, 0x95, 0xbf, 0x0a, 0x93, 0x0a, 0x9b, 0x6a, 0x5a, 0x7c, 0x8e, 0xfb, 0xb6, 0x1a, 0xaf, 0x7e, + 0x90, 0x19, 0x37, 0x44, 0x41, 0x09, 0x8a, 0x18, 0x9c, 0xbf, 0x1f, 0xf2, 0xc3, 0x22, 0x28, 0x36, + 0xd1, 0xb4, 0x79, 0xc8, 0x78, 0x66, 0xcd, 0xa8, 0x4a, 0x5c, 0xa4, 0x3f, 0x89, 0xf4, 0x9c, 0x67, + 0xa0, 0xb7, 0xa0, 0x10, 0x32, 0x10, 0x0f, 0x8f, 0x7e, 0xed, 0x93, 0x0f, 0xda, 0x47, 0xfc, 0xbe, + 0xeb, 0x9a, 0xb7, 0x54, 0xe7, 0x91, 0x62, 0xc9, 0x2b, 0xa9, 0x63, 0x66, 0x9b, 0xb7, 0xfe, 0x9f, + 0x04, 0x38, 0x14, 0x03, 0x8c, 0xdb, 0xe4, 0x21, 0x4c, 0xad, 0xf0, 0xb9, 0x70, 0xd4, 0x7c, 0x39, + 0xde, 0x2a, 0x21, 0x76, 0xdc, 0x2c, 0x93, 0x2b, 0x21, 0x29, 0x83, 0x8b, 0x9b, 0xaf, 0x71, 0xcf, + 0x86, 0x04, 0x0f, 0x2a, 0x70, 0xde, 0x89, 0xf6, 0x9f, 0x67, 0xa5, 0x07, 0x30, 0x19, 0xb6, 0x12, + 0x0f, 0x9d, 0xbe, 0x8d, 0x54, 0x08, 0x19, 0x49, 0xfc, 0x8e, 0x9b, 0x9e, 0xbf, 0x62, 0x29, 0xd8, + 0x4a, 0xae, 0x6d, 0xb6, 0x39, 0x64, 0x7e, 0x2c, 0xf0, 0xd2, 0xd2, 0x85, 0xc3, 0x4d, 0xf0, 0x1a, + 0x0c, 0x1b, 0x74, 0x84, 0x47, 0x47, 0x25, 0x5e, 0x71, 0x4a, 0xe9, 0x16, 0x70, 0x8c, 0x68, 0x70, + 0x91, 0x70, 0x97, 0x67, 0x7b, 0x2a, 0x24, 0xd1, 0x58, 0x29, 0xfd, 0x7f, 0xc7, 0xef, 0x02, 0x4f, + 0xe5, 0x57, 0x20, 0x47, 0xd1, 0x73, 0x57, 0xa7, 0xd4, 0x98, 0xd1, 0x88, 0xbf, 0x76, 0x8f, 0x11, + 0x66, 0xc7, 0x06, 0xfb, 0xed, 0x41, 0x2e, 0xc2, 0x4e, 0x83, 0x8d, 0xf0, 0xca, 0xc2, 0xfd, 0xf4, + 0x2b, 0x93, 0xd9, 0xc4, 0xf3, 0x03, 0xaf, 0x5c, 0xff, 0x9d, 0x83, 0xf1, 0x40, 0x35, 0xc7, 0x8c, + 0x27, 0x78, 0xc6, 0x8b, 0x05, 0x16, 0x51, 0x90, 0x0d, 0x45, 0x16, 0x64, 0x11, 0x65, 0x55, 0x36, + 0xaa, 0xac, 0x7a, 0x03, 0x46, 0x5a, 0xb2, 0x26, 0xeb, 0x6d, 0x6c, 0x17, 0x73, 0x69, 0x6a, 0xc9, + 0x06, 0x5f, 0xcd, 0x7d, 0xe0, 0x51, 0xa3, 0x73, 0xb0, 0x4f, 0x93, 0x6d, 0xa7, 0x19, 0x4a, 0xfc, + 0x44, 0x87, 0x61, 0xaa, 0xc3, 0x6e, 0x32, 0x1d, 0xcc, 0xf2, 0x0b, 0x0a, 0xba, 0x00, 0x45, 0x4a, + 0x16, 0xde, 0xf5, 0x84, 0x6e, 0x27, 0xa5, 0xdb, 0x43, 0xe6, 0x43, 0x5b, 0x3c, 0x50, 0x04, 0x8c, + 0xf8, 0x8b, 0x80, 0xf3, 0x90, 0x75, 0x56, 0x4d, 0x5c, 0x1c, 0x9d, 0x16, 0xaa, 0xf9, 0x19, 0x71, + 0x73, 0x65, 0xee, 0xad, 0x9a, 0x58, 0xa2, 0xeb, 0x49, 0x94, 0xb4, 0x2d, 0x2c, 0x3b, 0x86, 0x55, + 0x04, 0x16, 0x25, 0xfc, 0x13, 0xbd, 0x0d, 0x93, 0x3d, 0x53, 0xda, 0x5d, 0xd3, 0xd4, 0x56, 0x8b, + 0x63, 0x64, 0x49, 0xa3, 0x46, 0x4c, 0xf0, 0xd7, 0xe7, 0x95, 0x23, 0x4b, 0xaa, 0xf3, 0xa8, 0xdb, + 0x22, 0xb2, 0xea, 0xfc, 0x0a, 0xcc, 0x7e, 0x4e, 0xda, 0xca, 0xe3, 0x3a, 0x61, 0x6f, 0xd7, 0x16, + 0x74, 0x47, 0xca, 0xbb, 0xb6, 0xbf, 0x4b, 0xb9, 0xa0, 0xeb, 0x30, 0xda, 0x51, 0xf5, 0xa6, 0x69, + 0xa9, 0x6d, 0x5c, 0x1c, 0xa7, 0x2c, 0x8f, 0xa5, 0x64, 0x37, 0x8f, 0xdb, 0xd2, 0x48, 0x47, 0xd5, + 0x6f, 0x13, 0x5a, 0xca, 0x48, 0x7e, 0xca, 0x19, 0x4d, 0x6c, 0x81, 0x91, 0xfc, 0x94, 0x31, 0xba, + 0x02, 0x39, 0xc6, 0x24, 0xdf, 0x37, 0x13, 0x46, 0x18, 0xb8, 0x10, 0x16, 0xa6, 0x85, 0xea, 0x48, + 0xef, 0x42, 0x48, 0x12, 0xf0, 0xb8, 0x3f, 0x86, 0xd0, 0xab, 0x30, 0x4a, 0x76, 0x13, 0x35, 0x2d, + 0xdf, 0xfb, 0xfb, 0x03, 0xdb, 0xcc, 0x75, 0x16, 0x31, 0x5a, 0x2f, 0xe2, 0x6c, 0x4c, 0xbe, 0xd1, + 0x65, 0x80, 0xe5, 0xae, 0xe1, 0x70, 0xf2, 0x4c, 0x3a, 0xf2, 0x51, 0x4a, 0x42, 0x06, 0xc4, 0x87, + 0x3c, 0x17, 0x5d, 0x93, 0xad, 0x4e, 0x2f, 0x5d, 0x44, 0x5f, 0xbe, 0xfd, 0x07, 0x5f, 0x26, 0x70, + 0xf0, 0xed, 0x85, 0xe1, 0x45, 0xca, 0x80, 0xef, 0x44, 0xfe, 0x25, 0x7e, 0x2c, 0x40, 0xfe, 0x4e, + 0x17, 0x77, 0xb1, 0xe2, 0xde, 0x7b, 0xd0, 0x12, 0x8c, 0x7a, 0x91, 0x94, 0xac, 0x6e, 0x9d, 0xe0, + 0xfd, 0xe5, 0xe7, 0x95, 0xa3, 0x29, 0x1c, 0x40, 0x08, 0xa4, 0x11, 0x37, 0xbc, 0x90, 0x04, 0x23, + 0x0a, 0x51, 0xa7, 0x29, 0x3b, 0xdc, 0x2e, 0xa5, 0x1a, 0x7b, 0xfd, 0xa8, 0xb9, 0xaf, 0x1f, 0xb5, + 0x7b, 0xee, 0xf3, 0x48, 0xe3, 0x00, 0x11, 0xf4, 0xc5, 0xf3, 0x4a, 0x61, 0x55, 0xee, 0x68, 0xb3, + 0xa2, 0x4b, 0x29, 0xbe, 0xf7, 0x79, 0x45, 0x90, 0x76, 0xd2, 0xcf, 0x39, 0x47, 0xfc, 0xa7, 0x7b, + 0x5c, 0xb9, 0xe6, 0xe2, 0xb9, 0xcb, 0x81, 0x49, 0xb9, 0xed, 0xa8, 0x4f, 0x70, 0x73, 0x3b, 0x75, + 0xcb, 0x33, 0x19, 0x9e, 0x29, 0xdf, 0x86, 0xc9, 0x65, 0x6a, 0x5c, 0x9f, 0xd4, 0x4c, 0x52, 0x09, + 0x1e, 0x74, 0x87, 0x5b, 0x62, 0x2e, 0x07, 0x46, 0xc5, 0x35, 0x7e, 0x67, 0x9d, 0x27, 0x09, 0x55, + 0x95, 0x35, 0xf5, 0x1d, 0x4f, 0x6a, 0x62, 0x11, 0x54, 0xf5, 0xa7, 0x0a, 0xb9, 0x63, 0x74, 0x75, + 0x87, 0x47, 0x8b, 0xb7, 0xf5, 0xe7, 0xe8, 0x68, 0xdc, 0xf1, 0xf8, 0x2d, 0x81, 0xdf, 0xca, 0x23, + 0xa5, 0x73, 0x8b, 0xcb, 0x90, 0x23, 0x02, 0xdc, 0xfa, 0x60, 0x13, 0x33, 0x9f, 0xe2, 0x66, 0xae, + 0xa6, 0x34, 0xb3, 0x2d, 0x31, 0xce, 0xe2, 0x59, 0x7e, 0xa4, 0xd2, 0xa7, 0x95, 0x05, 0xbd, 0x8d, + 0x75, 0x62, 0xfd, 0xa4, 0x07, 0xaa, 0x3f, 0xe7, 0x60, 0x82, 0x50, 0x78, 0x04, 0xf1, 0x96, 0xaa, + 0xc0, 0x58, 0x47, 0xb6, 0x1d, 0x6c, 0x51, 0xff, 0x51, 0x23, 0x8d, 0x48, 0xc0, 0x86, 0x08, 0x0b, + 0x74, 0x18, 0xf2, 0xed, 0x47, 0xaa, 0xc6, 0xfd, 0xab, 0x2a, 0xe4, 0xa0, 0x1b, 0xaa, 0x66, 0xa5, + 0x71, 0x3a, 0x4a, 0xa5, 0x28, 0x36, 0x32, 0x60, 0xc2, 0x31, 0x1c, 0x59, 0x6b, 0x5a, 0x78, 0x45, + 0xb6, 0x14, 0x9b, 0x1e, 0x72, 0x83, 0x8d, 0xbc, 0x71, 0x2a, 0x40, 0x62, 0xfc, 0xd1, 0x1a, 0xec, + 0x52, 0x54, 0xdb, 0xb1, 0xd4, 0x56, 0xd7, 0xc1, 0x8a, 0x27, 0x36, 0x37, 0x70, 0xb1, 0xc8, 0x27, + 0xc6, 0x15, 0xfe, 0x7f, 0xc0, 0xc0, 0x34, 0xb1, 0x69, 0xb4, 0x1f, 0xd9, 0xfc, 0x5c, 0x1d, 0xa3, + 0x63, 0x57, 0xe9, 0x10, 0xfa, 0x7f, 0x98, 0x58, 0x54, 0x35, 0x0d, 0x2b, 0xee, 0x1a, 0x76, 0x86, + 0x8e, 0xb3, 0x41, 0xbe, 0xe8, 0x5d, 0xc8, 0xd3, 0xd9, 0xa6, 0xfb, 0x02, 0x4a, 0x8f, 0x50, 0x82, + 0x3f, 0x9c, 0x24, 0xe6, 0xf9, 0x82, 0xc6, 0x6b, 0x04, 0xff, 0xbf, 0x9e, 0x57, 0x8a, 0x41, 0xc2, + 0x13, 0x46, 0x47, 0x75, 0x70, 0xc7, 0x74, 0x56, 0xbf, 0x78, 0x5e, 0xd9, 0xc3, 0xf2, 0x47, 0x70, + 0x85, 0xf8, 0x03, 0x92, 0x45, 0x26, 0xe8, 0xa0, 0xcb, 0x0d, 0x75, 0x60, 0x4a, 0xc7, 0x4f, 0x9d, + 0xa6, 0xa7, 0x23, 0xc1, 0x30, 0x9a, 0x98, 0xa8, 0x0e, 0xf3, 0x44, 0x55, 0x64, 0x82, 0x36, 0xb0, + 0x60, 0x19, 0x6b, 0x92, 0x8c, 0xcf, 0xfb, 0x86, 0x51, 0x19, 0xc6, 0x54, 0xbb, 0x69, 0xaf, 0xc8, + 0x66, 0x73, 0x11, 0x63, 0x7a, 0xbe, 0x8f, 0x48, 0xa3, 0xaa, 0x7d, 0x77, 0x45, 0x36, 0xaf, 0x61, + 0xec, 0x0b, 0xe7, 0x31, 0x7f, 0x38, 0x1b, 0xbe, 0x4d, 0xe0, 0xdf, 0x03, 0x7c, 0x1b, 0xde, 0xe6, + 0x25, 0x96, 0xea, 0x4d, 0xf1, 0x0d, 0x79, 0x74, 0xf3, 0xa2, 0xc3, 0x63, 0xc5, 0x92, 0x42, 0x8f, + 0xb3, 0x78, 0x93, 0xdf, 0xd9, 0x69, 0x86, 0x55, 0x52, 0x67, 0x9d, 0x98, 0xd7, 0x9a, 0x75, 0x0e, + 0x3f, 0xcc, 0x8d, 0xc3, 0xff, 0x3a, 0x64, 0xb7, 0x29, 0x57, 0x53, 0xbe, 0xe2, 0xfb, 0x02, 0xec, + 0xed, 0x95, 0xe5, 0x0d, 0xc3, 0x78, 0x9c, 0x90, 0x3e, 0xd0, 0x7e, 0x18, 0xe1, 0x55, 0xaf, 0x4d, + 0x73, 0x79, 0x56, 0xda, 0xc9, 0xca, 0x5e, 0x1b, 0x1d, 0x83, 0x29, 0x5a, 0x5e, 0x34, 0xbb, 0xba, + 0xea, 0x34, 0x4d, 0x63, 0x85, 0x5c, 0x8f, 0x48, 0x42, 0x98, 0x90, 0x0a, 0x74, 0xe2, 0xbe, 0xae, + 0x3a, 0xb7, 0xe9, 0x30, 0x3a, 0x00, 0xa3, 0x7a, 0xb7, 0xd3, 0x74, 0xd4, 0xf6, 0x63, 0x96, 0x0f, + 0x26, 0xa4, 0x11, 0xbd, 0xdb, 0xb9, 0x47, 0xbe, 0xc5, 0x45, 0xd8, 0xb7, 0x01, 0x14, 0x37, 0xc8, + 0x0d, 0xf7, 0x99, 0x8e, 0x9d, 0x23, 0xf5, 0xa4, 0x4b, 0x88, 0x61, 0x3c, 0xf6, 0x3f, 0x84, 0x05, + 0xde, 0xed, 0xc4, 0x67, 0x02, 0xec, 0x89, 0x5c, 0x16, 0x7f, 0x83, 0xba, 0x05, 0x40, 0x8b, 0x21, + 0x56, 0x80, 0x65, 0xfa, 0xae, 0x30, 0x49, 0x11, 0x46, 0xcb, 0x29, 0x56, 0xca, 0x49, 0x30, 0x46, + 0xef, 0x39, 0xcd, 0x16, 0xd1, 0x92, 0x1a, 0x6b, 0x6c, 0xe6, 0x78, 0x0a, 0xa5, 0x42, 0x0a, 0x81, + 0xe1, 0x99, 0x4a, 0xfc, 0x8f, 0x00, 0x53, 0x1b, 0xd6, 0x11, 0xe0, 0x3d, 0xe7, 0xb0, 0x3b, 0x56, + 0xff, 0xc0, 0x3d, 0x2f, 0x12, 0x3f, 0xd8, 0x58, 0xd3, 0xfa, 0xf1, 0x03, 0xf1, 0x6d, 0xd8, 0x0f, + 0x94, 0x07, 0x5a, 0x80, 0x6c, 0xab, 0xbb, 0xea, 0xaa, 0xbf, 0x45, 0x5e, 0x94, 0x85, 0xf8, 0x41, + 0xc6, 0xe7, 0x52, 0xff, 0x2a, 0x34, 0xef, 0x56, 0xcd, 0x5b, 0xd3, 0x9d, 0x57, 0xce, 0x0f, 0x60, + 0xaa, 0x6b, 0x63, 0xab, 0xc9, 0xbc, 0xe6, 0xab, 0x1e, 0xfa, 0xbf, 0x68, 0x14, 0x08, 0x23, 0x8a, + 0x95, 0x97, 0x1b, 0x0f, 0x60, 0x8a, 0xe6, 0x8e, 0x00, 0xef, 0xa1, 0xad, 0xf1, 0x26, 0x8c, 0x7c, + 0xbc, 0xc5, 0x0f, 0x33, 0x70, 0xe8, 0x1e, 0x39, 0x82, 0xe6, 0x68, 0x89, 0x36, 0xa7, 0x2b, 0xc1, + 0x3a, 0xcb, 0x8e, 0xcf, 0x5c, 0xef, 0xc2, 0x5e, 0x76, 0xa0, 0x6d, 0xa8, 0x20, 0x33, 0x03, 0xcf, + 0x4a, 0xbb, 0x9c, 0x1e, 0x46, 0xaf, 0x8c, 0xf4, 0x00, 0x6c, 0x28, 0x26, 0x87, 0xb6, 0x09, 0x40, + 0xd0, 0x36, 0xe2, 0x05, 0x28, 0xd3, 0x7c, 0x34, 0xa7, 0x69, 0xc1, 0x3c, 0x9d, 0x54, 0x6b, 0xfd, + 0x46, 0xe0, 0x75, 0x6a, 0x14, 0x25, 0x8f, 0xcb, 0x98, 0x3c, 0xbb, 0x0a, 0x87, 0x02, 0x56, 0x97, + 0x75, 0xc5, 0xd5, 0x9f, 0xd5, 0x95, 0x6c, 0xe3, 0x5d, 0x88, 0xdf, 0x2c, 0x9b, 0xba, 0x5b, 0xda, + 0xef, 0x44, 0x4c, 0xd3, 0xa9, 0x99, 0x3f, 0x96, 0x21, 0x47, 0x51, 0xa3, 0xef, 0x0a, 0x30, 0xcc, + 0x1a, 0x90, 0xe8, 0xc4, 0xa6, 0x15, 0x7b, 0xa8, 0x21, 0x5b, 0x3a, 0x99, 0x72, 0x35, 0xb3, 0x81, + 0x58, 0xfd, 0xe6, 0xb3, 0x7f, 0xbc, 0x9f, 0x11, 0xd1, 0x74, 0x3d, 0xa1, 0x8d, 0x8c, 0x7e, 0x27, + 0xc0, 0x44, 0xa0, 0x33, 0x8a, 0xce, 0x24, 0x88, 0x8a, 0x6a, 0xde, 0x96, 0xce, 0xf6, 0x47, 0xc4, + 0x61, 0x5e, 0xa2, 0x30, 0xcf, 0xa0, 0xd3, 0xf1, 0x30, 0x97, 0x18, 0x61, 0x93, 0xc1, 0xad, 0xaf, + 0x31, 0xd7, 0xae, 0xa3, 0xef, 0x09, 0x90, 0xa3, 0x75, 0x3a, 0x3a, 0x9e, 0x64, 0x1a, 0x5f, 0x4b, + 0xb7, 0x74, 0x22, 0xdd, 0x62, 0x8e, 0xef, 0x14, 0xc5, 0x77, 0x0c, 0x55, 0x37, 0x31, 0x23, 0x21, + 0xe8, 0xc1, 0xfa, 0x91, 0x00, 0x59, 0x5a, 0xc9, 0x1f, 0x4b, 0x21, 0xc8, 0x05, 0x75, 0x3c, 0xd5, + 0x5a, 0x8e, 0x69, 0x96, 0x62, 0x3a, 0x8b, 0x66, 0xd2, 0x62, 0xaa, 0xaf, 0xf1, 0x34, 0xb4, 0x8e, + 0x9e, 0x09, 0xb0, 0x3b, 0xaa, 0xf3, 0x89, 0x66, 0x53, 0x20, 0x88, 0x69, 0x97, 0xf6, 0x87, 0x5e, + 0xa2, 0xe8, 0x6f, 0xa2, 0x37, 0x53, 0xa3, 0x0f, 0xbd, 0xfc, 0xd5, 0xd7, 0x42, 0x03, 0xeb, 0xe8, + 0x33, 0x01, 0x76, 0x45, 0xf4, 0x5a, 0xd1, 0xa5, 0x54, 0x4a, 0x45, 0xf5, 0x67, 0xb7, 0x5b, 0xa7, + 0xd0, 0x23, 0x25, 0xf7, 0x50, 0x6f, 0x80, 0x87, 0x37, 0xed, 0x85, 0x26, 0x42, 0xf1, 0xb5, 0x80, + 0x93, 0xc3, 0xdb, 0xdf, 0xa2, 0x4d, 0x15, 0xde, 0x84, 0x20, 0x14, 0xde, 0xb2, 0x6a, 0x25, 0x87, + 0x77, 0xaf, 0xe1, 0x5a, 0x3a, 0x9e, 0x6a, 0x6d, 0x1f, 0xe1, 0x1d, 0xc0, 0x54, 0x5f, 0xe3, 0x85, + 0xe5, 0x3a, 0xfa, 0x58, 0x80, 0x42, 0xa8, 0x7b, 0x89, 0xce, 0x25, 0x08, 0x8f, 0xee, 0xc2, 0x96, + 0xce, 0xf7, 0x4b, 0xc6, 0xe1, 0xdf, 0xa0, 0xf0, 0xaf, 0xa2, 0xd7, 0xfb, 0xdf, 0x9d, 0xf5, 0x70, + 0x77, 0x15, 0x7d, 0x22, 0x40, 0x3e, 0x28, 0x08, 0x9d, 0xed, 0x0b, 0x97, 0xab, 0xcd, 0xb9, 0x3e, + 0xa9, 0xb8, 0x32, 0xb7, 0xa9, 0x32, 0x6f, 0xa2, 0x37, 0x06, 0xa0, 0x4c, 0x7d, 0x8d, 0x78, 0xe8, + 0x33, 0x01, 0x26, 0xc3, 0xbd, 0x42, 0x94, 0x64, 0xeb, 0x98, 0xae, 0x67, 0xe9, 0x42, 0xdf, 0x74, + 0x5c, 0xaf, 0x9b, 0x54, 0xaf, 0x6b, 0x68, 0x7e, 0x0b, 0x7a, 0x6d, 0xe8, 0x66, 0x92, 0xa4, 0x5a, + 0x08, 0x89, 0x4a, 0x8c, 0xba, 0xe8, 0x3e, 0x63, 0xe9, 0x7c, 0xbf, 0x64, 0x5c, 0xa1, 0x3b, 0x54, + 0xa1, 0x1b, 0x68, 0x61, 0x10, 0x0a, 0x31, 0x4f, 0xfd, 0x54, 0x80, 0x61, 0xd6, 0x5a, 0x4a, 0xac, + 0x54, 0x02, 0x8d, 0xc5, 0xc4, 0x4a, 0x25, 0xd8, 0xf7, 0x13, 0x5f, 0xa1, 0xd0, 0xcf, 0xa1, 0x33, + 0xf1, 0xd0, 0x59, 0x8b, 0x2f, 0x6a, 0xc3, 0xff, 0x4c, 0x80, 0x1c, 0xe5, 0x97, 0x98, 0x25, 0xfd, + 0xed, 0xbc, 0xd2, 0x89, 0x74, 0x8b, 0x39, 0xc2, 0x2b, 0x14, 0xe1, 0x2c, 0xba, 0xb8, 0x05, 0x84, + 0xcc, 0x96, 0xbf, 0x15, 0xa0, 0x10, 0x6a, 0xd3, 0x25, 0x46, 0x48, 0x74, 0x5b, 0xef, 0x7f, 0x61, + 0x5d, 0xde, 0x27, 0x5c, 0x47, 0xbf, 0x12, 0x60, 0x98, 0x3d, 0x7b, 0x27, 0x86, 0x40, 0xa0, 0x99, + 0x90, 0x08, 0x32, 0xf8, 0x96, 0x2e, 0xce, 0x53, 0x90, 0x97, 0xd1, 0xab, 0xf1, 0x20, 0x59, 0x77, + 0x21, 0x2a, 0x7c, 0xd7, 0xd8, 0xd4, 0x3a, 0xfa, 0xbb, 0x00, 0xbb, 0x22, 0xde, 0x8f, 0x13, 0xab, + 0x80, 0xf8, 0x17, 0xef, 0xd2, 0xec, 0x56, 0x48, 0xb9, 0x52, 0x77, 0xa9, 0x52, 0xb7, 0xd0, 0x8d, + 0x78, 0xa5, 0x94, 0x1e, 0x79, 0xa4, 0x66, 0xe1, 0x47, 0xf5, 0x75, 0xf4, 0xa1, 0x00, 0xf9, 0xe0, + 0xbb, 0x5c, 0x62, 0x1c, 0x45, 0xbf, 0x65, 0x97, 0xd2, 0x90, 0x6d, 0x7c, 0xfd, 0x4b, 0x5b, 0x7c, + 0xfa, 0x5e, 0x07, 0x7b, 0xb5, 0xc3, 0xef, 0x05, 0xc8, 0x07, 0xef, 0x6c, 0x89, 0xa7, 0x59, 0xe4, + 0x93, 0x60, 0x22, 0xf6, 0xe8, 0xa7, 0xbf, 0x34, 0xfb, 0x98, 0xc6, 0x12, 0xbb, 0x0f, 0x46, 0x95, + 0xcf, 0x9f, 0x08, 0x70, 0x70, 0xb3, 0x4b, 0x20, 0xba, 0x98, 0x80, 0x2c, 0xf6, 0xbe, 0x5b, 0xba, + 0xb4, 0x05, 0xca, 0xf4, 0x3e, 0x91, 0x35, 0xad, 0x19, 0xa5, 0x1b, 0xfa, 0x85, 0x00, 0xd0, 0x7b, + 0x14, 0x44, 0xa7, 0xd2, 0x64, 0x17, 0xff, 0xa3, 0x66, 0xe9, 0x74, 0x1f, 0x14, 0x1c, 0xef, 0x79, + 0x8a, 0xf7, 0x14, 0xaa, 0x25, 0xe4, 0x24, 0xf6, 0x84, 0xe7, 0x61, 0x6d, 0xdc, 0xfa, 0xe8, 0x45, + 0x59, 0xf8, 0xf4, 0x45, 0x59, 0xf8, 0xdb, 0x8b, 0xb2, 0xf0, 0xde, 0xcb, 0xf2, 0x8e, 0x4f, 0x5f, + 0x96, 0x77, 0xfc, 0xe5, 0x65, 0x79, 0xc7, 0x83, 0x33, 0x81, 0xc7, 0x08, 0xc2, 0xf3, 0xa4, 0xb1, + 0xb8, 0xa8, 0xb6, 0x55, 0x59, 0x73, 0x65, 0xf8, 0xa5, 0xd0, 0xd7, 0x89, 0xd6, 0x30, 0x7d, 0x6a, + 0x3f, 0xf3, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1c, 0xc2, 0x6a, 0x91, 0x53, 0x2e, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -2767,6 +2934,8 @@ type QueryClient interface { PoolIncentives(ctx context.Context, in *QueryPoolsIncentivesRequest, opts ...grpc.CallOption) (*QueryPoolIncentivesResponse, error) // FarmedPoolCoin returns the total farmed pool coins. FarmedPoolCoin(ctx context.Context, in *QueryFarmedPoolCoinRequest, opts ...grpc.CallOption) (*QueryFarmedPoolCoinResponse, error) + // TotalActiveAndQueuedPoolCoin returns the total number of active and queued farmed pool coins in each pool. + TotalActiveAndQueuedPoolCoin(ctx context.Context, in *QueryAllFarmedPoolCoinsRequest, opts ...grpc.CallOption) (*QueryAllFarmedPoolCoinsResponse, error) OrderBooks(ctx context.Context, in *QueryOrderBooksRequest, opts ...grpc.CallOption) (*QueryOrderBooksResponse, error) } @@ -2949,6 +3118,15 @@ func (c *queryClient) FarmedPoolCoin(ctx context.Context, in *QueryFarmedPoolCoi return out, nil } +func (c *queryClient) TotalActiveAndQueuedPoolCoin(ctx context.Context, in *QueryAllFarmedPoolCoinsRequest, opts ...grpc.CallOption) (*QueryAllFarmedPoolCoinsResponse, error) { + out := new(QueryAllFarmedPoolCoinsResponse) + err := c.cc.Invoke(ctx, "/comdex.liquidity.v1beta1.Query/TotalActiveAndQueuedPoolCoin", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *queryClient) OrderBooks(ctx context.Context, in *QueryOrderBooksRequest, opts ...grpc.CallOption) (*QueryOrderBooksResponse, error) { out := new(QueryOrderBooksResponse) err := c.cc.Invoke(ctx, "/comdex.liquidity.v1beta1.Query/OrderBooks", in, out, opts...) @@ -2998,6 +3176,8 @@ type QueryServer interface { PoolIncentives(context.Context, *QueryPoolsIncentivesRequest) (*QueryPoolIncentivesResponse, error) // FarmedPoolCoin returns the total farmed pool coins. FarmedPoolCoin(context.Context, *QueryFarmedPoolCoinRequest) (*QueryFarmedPoolCoinResponse, error) + // TotalActiveAndQueuedPoolCoin returns the total number of active and queued farmed pool coins in each pool. + TotalActiveAndQueuedPoolCoin(context.Context, *QueryAllFarmedPoolCoinsRequest) (*QueryAllFarmedPoolCoinsResponse, error) OrderBooks(context.Context, *QueryOrderBooksRequest) (*QueryOrderBooksResponse, error) } @@ -3062,6 +3242,9 @@ func (*UnimplementedQueryServer) PoolIncentives(ctx context.Context, req *QueryP func (*UnimplementedQueryServer) FarmedPoolCoin(ctx context.Context, req *QueryFarmedPoolCoinRequest) (*QueryFarmedPoolCoinResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method FarmedPoolCoin not implemented") } +func (*UnimplementedQueryServer) TotalActiveAndQueuedPoolCoin(ctx context.Context, req *QueryAllFarmedPoolCoinsRequest) (*QueryAllFarmedPoolCoinsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TotalActiveAndQueuedPoolCoin not implemented") +} func (*UnimplementedQueryServer) OrderBooks(ctx context.Context, req *QueryOrderBooksRequest) (*QueryOrderBooksResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method OrderBooks not implemented") } @@ -3412,6 +3595,24 @@ func _Query_FarmedPoolCoin_Handler(srv interface{}, ctx context.Context, dec fun return interceptor(ctx, in, info, handler) } +func _Query_TotalActiveAndQueuedPoolCoin_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryAllFarmedPoolCoinsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).TotalActiveAndQueuedPoolCoin(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/comdex.liquidity.v1beta1.Query/TotalActiveAndQueuedPoolCoin", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).TotalActiveAndQueuedPoolCoin(ctx, req.(*QueryAllFarmedPoolCoinsRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Query_OrderBooks_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(QueryOrderBooksRequest) if err := dec(in); err != nil { @@ -3510,6 +3711,10 @@ var _Query_serviceDesc = grpc.ServiceDesc{ MethodName: "FarmedPoolCoin", Handler: _Query_FarmedPoolCoin_Handler, }, + { + MethodName: "TotalActiveAndQueuedPoolCoin", + Handler: _Query_TotalActiveAndQueuedPoolCoin_Handler, + }, { MethodName: "OrderBooks", Handler: _Query_OrderBooks_Handler, @@ -5490,6 +5695,124 @@ func (m *OrderBookTickResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *TotalActiveAndQueuedPoolCoins) 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 *TotalActiveAndQueuedPoolCoins) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TotalActiveAndQueuedPoolCoins) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.TotalQueuedPoolCoin.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + { + size, err := m.TotalActivePoolCoin.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if m.PoolId != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.PoolId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *QueryAllFarmedPoolCoinsRequest) 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 *QueryAllFarmedPoolCoinsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryAllFarmedPoolCoinsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.AppId != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.AppId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *QueryAllFarmedPoolCoinsResponse) 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 *QueryAllFarmedPoolCoinsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryAllFarmedPoolCoinsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.TotalActiveAndQueuedCoins) > 0 { + for iNdEx := len(m.TotalActiveAndQueuedCoins) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TotalActiveAndQueuedCoins[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if m.AppId != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.AppId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { offset -= sovQuery(v) base := offset @@ -6285,20 +6608,66 @@ func (m *OrderBookTickResponse) Size() (n int) { return n } -func sovQuery(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 +func (m *TotalActiveAndQueuedPoolCoins) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.PoolId != 0 { + n += 1 + sovQuery(uint64(m.PoolId)) + } + l = m.TotalActivePoolCoin.Size() + n += 1 + l + sovQuery(uint64(l)) + l = m.TotalQueuedPoolCoin.Size() + n += 1 + l + sovQuery(uint64(l)) + return n } -func sozQuery(x uint64) (n int) { - return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) + +func (m *QueryAllFarmedPoolCoinsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AppId != 0 { + n += 1 + sovQuery(uint64(m.AppId)) + } + return n } -func (m *QueryParamsRequest) 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 { + +func (m *QueryAllFarmedPoolCoinsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AppId != 0 { + n += 1 + sovQuery(uint64(m.AppId)) + } + if len(m.TotalActiveAndQueuedCoins) > 0 { + for _, e := range m.TotalActiveAndQueuedCoins { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func sovQuery(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozQuery(x uint64) (n int) { + return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *QueryParamsRequest) 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 ErrIntOverflowQuery } if iNdEx >= l { @@ -11689,6 +12058,313 @@ func (m *OrderBookTickResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *TotalActiveAndQueuedPoolCoins) 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 ErrIntOverflowQuery + } + 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: TotalActiveAndQueuedPoolCoins: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TotalActiveAndQueuedPoolCoins: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PoolId", wireType) + } + m.PoolId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PoolId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TotalActivePoolCoin", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.TotalActivePoolCoin.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TotalQueuedPoolCoin", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.TotalQueuedPoolCoin.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryAllFarmedPoolCoinsRequest) 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 ErrIntOverflowQuery + } + 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: QueryAllFarmedPoolCoinsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryAllFarmedPoolCoinsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AppId", wireType) + } + m.AppId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AppId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryAllFarmedPoolCoinsResponse) 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 ErrIntOverflowQuery + } + 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: QueryAllFarmedPoolCoinsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryAllFarmedPoolCoinsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AppId", wireType) + } + m.AppId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AppId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TotalActiveAndQueuedCoins", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TotalActiveAndQueuedCoins = append(m.TotalActiveAndQueuedCoins, &TotalActiveAndQueuedPoolCoins{}) + if err := m.TotalActiveAndQueuedCoins[len(m.TotalActiveAndQueuedCoins)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipQuery(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/liquidity/types/query.pb.gw.go b/x/liquidity/types/query.pb.gw.go index 760ad6601..517e34123 100644 --- a/x/liquidity/types/query.pb.gw.go +++ b/x/liquidity/types/query.pb.gw.go @@ -1549,6 +1549,60 @@ func local_request_Query_FarmedPoolCoin_0(ctx context.Context, marshaler runtime } +func request_Query_TotalActiveAndQueuedPoolCoin_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAllFarmedPoolCoinsRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["app_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "app_id") + } + + protoReq.AppId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "app_id", err) + } + + msg, err := client.TotalActiveAndQueuedPoolCoin(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_TotalActiveAndQueuedPoolCoin_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAllFarmedPoolCoinsRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["app_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "app_id") + } + + protoReq.AppId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "app_id", err) + } + + msg, err := server.TotalActiveAndQueuedPoolCoin(ctx, &protoReq) + return msg, metadata, err + +} + var ( filter_Query_OrderBooks_0 = &utilities.DoubleArray{Encoding: map[string]int{"app_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} ) @@ -2064,6 +2118,29 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv }) + mux.Handle("GET", pattern_Query_TotalActiveAndQueuedPoolCoin_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_TotalActiveAndQueuedPoolCoin_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_TotalActiveAndQueuedPoolCoin_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_Query_OrderBooks_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -2508,6 +2585,26 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) + mux.Handle("GET", pattern_Query_TotalActiveAndQueuedPoolCoin_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_TotalActiveAndQueuedPoolCoin_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_TotalActiveAndQueuedPoolCoin_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_Query_OrderBooks_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -2570,6 +2667,8 @@ var ( pattern_Query_FarmedPoolCoin_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"comdex", "liquidity", "v1beta1", "farmed_coin", "app_id", "pool_id"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_TotalActiveAndQueuedPoolCoin_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"comdex", "liquidity", "v1beta1", "all_farmed_coin", "app_id"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_OrderBooks_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"comdex", "liquidity", "v1beta1", "order_books", "app_id"}, "", runtime.AssumeColonVerbOpt(false))) ) @@ -2612,5 +2711,7 @@ var ( forward_Query_FarmedPoolCoin_0 = runtime.ForwardResponseMessage + forward_Query_TotalActiveAndQueuedPoolCoin_0 = runtime.ForwardResponseMessage + forward_Query_OrderBooks_0 = runtime.ForwardResponseMessage ) From e7cc002189383d3f092006a768791d9a4f0f579a Mon Sep 17 00:00:00 2001 From: Pratik Date: Fri, 17 Feb 2023 09:33:09 +0530 Subject: [PATCH 09/12] adding upgrade code for testnet --- app/app.go | 2 +- app/upgrades/testnet/v8_0_0/upgrades.go | 51 +++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/app/app.go b/app/app.go index 70c98c730..e7cf70bfc 100644 --- a/app/app.go +++ b/app/app.go @@ -1215,7 +1215,7 @@ func (a *App) ModuleAccountsPermissions() map[string][]string { func (a *App) registerUpgradeHandlers() { a.UpgradeKeeper.SetUpgradeHandler( tv8.UpgradeName820Beta, - tv8.CreateUpgradeHandlerV820Beta(a.mm, a.configurator), + tv8.CreateUpgradeHandlerV820Beta(a.mm, a.configurator, a.AssetKeeper), ) // When a planned update height is reached, the old binary will panic // writing on disk the height and name of the update that triggered it diff --git a/app/upgrades/testnet/v8_0_0/upgrades.go b/app/upgrades/testnet/v8_0_0/upgrades.go index f0f836d64..e0e6aca38 100644 --- a/app/upgrades/testnet/v8_0_0/upgrades.go +++ b/app/upgrades/testnet/v8_0_0/upgrades.go @@ -1,20 +1,71 @@ package v8_0_0 //nolint:revive,stylecheck import ( + assetkeeper "github.com/comdex-official/comdex/x/asset/keeper" + assettypes "github.com/comdex-official/comdex/x/asset/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" ) +func UpdateDenomAndAddAsset(ctx sdk.Context, assetKeeper assetkeeper.Keeper) { + asset, found := assetKeeper.GetAsset(ctx, 17) + if found { + asset.Denom = "ibc/50EF138042B553362774A8A9DE967F610E52CAEB3BA864881C9A1436DED98075" + assetKeeper.SetAsset(ctx, asset) + } + + assetGDAI := assettypes.Asset{Name: "GDAI", Denom: "ibc/109DD45CF4093BEB472784A0C5B5F4643140900020B74B102B842A4BE2AE45DA", Decimals: sdk.NewInt(1000000000000000000), IsOnChain: false, IsOraclePriceRequired: true, IsCdpMintable: false} + + err := assetKeeper.AddAssetRecords(ctx, assetGDAI) + if err != nil { + return + } + getGDAI, found := assetKeeper.GetAssetForDenom(ctx, "ibc/109DD45CF4093BEB472784A0C5B5F4643140900020B74B102B842A4BE2AE45DA") + if !found { + return + } + var ( + id = assetKeeper.GetPairID(ctx) + pairGDAI = assettypes.Pair{ + Id: id + 1, + AssetIn: getGDAI.Id, + AssetOut: 3, + } + ) + + assetKeeper.SetPairID(ctx, pairGDAI.Id) + assetKeeper.SetPair(ctx, pairGDAI) + + getSTOSMO, found := assetKeeper.GetAssetForDenom(ctx, "ibc/CC482813CC038C614C2615A997621EA5E605ADCCD4040B83B0468BD72533A165") + if !found { + return + } + + var ( + id2 = assetKeeper.GetPairID(ctx) + pairSTOSMO = assettypes.Pair{ + Id: id2 + 1, + AssetIn: getSTOSMO.Id, + AssetOut: 3, + } + ) + + assetKeeper.SetPairID(ctx, pairSTOSMO.Id) + assetKeeper.SetPair(ctx, pairSTOSMO) +} + func CreateUpgradeHandlerV820Beta( mm *module.Manager, configurator module.Configurator, + assetKeeper assetkeeper.Keeper, ) upgradetypes.UpgradeHandler { return func(ctx sdk.Context, _ upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) { vm, err := mm.RunMigrations(ctx, configurator, fromVM) if err != nil { return nil, err } + UpdateDenomAndAddAsset(ctx, assetKeeper) return vm, err } } From fdf3d7039ec2f69fbd4634c539fb1eccf5a3eea6 Mon Sep 17 00:00:00 2001 From: Pratik Date: Fri, 17 Feb 2023 11:31:16 +0530 Subject: [PATCH 10/12] v8.beta -> v9.beta updating version name --- app/app.go | 8 ++++---- app/upgrades/testnet/{v8_0_0 => v9_0_0}/constants.go | 4 ++-- app/upgrades/testnet/{v8_0_0 => v9_0_0}/upgrades.go | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) rename app/upgrades/testnet/{v8_0_0 => v9_0_0}/constants.go (71%) rename app/upgrades/testnet/{v8_0_0 => v9_0_0}/upgrades.go (96%) diff --git a/app/app.go b/app/app.go index e7cf70bfc..e59c7ec85 100644 --- a/app/app.go +++ b/app/app.go @@ -169,7 +169,7 @@ import ( mv6 "github.com/comdex-official/comdex/app/upgrades/mainnet/v6" mv7 "github.com/comdex-official/comdex/app/upgrades/mainnet/v7" mv8 "github.com/comdex-official/comdex/app/upgrades/mainnet/v8" - tv8 "github.com/comdex-official/comdex/app/upgrades/testnet/v8_0_0" + tv9 "github.com/comdex-official/comdex/app/upgrades/testnet/v9_0_0" ) const ( @@ -1214,8 +1214,8 @@ func (a *App) ModuleAccountsPermissions() map[string][]string { func (a *App) registerUpgradeHandlers() { a.UpgradeKeeper.SetUpgradeHandler( - tv8.UpgradeName820Beta, - tv8.CreateUpgradeHandlerV820Beta(a.mm, a.configurator, a.AssetKeeper), + tv9.UpgradeName820Beta, + tv9.CreateUpgradeHandlerV900Beta(a.mm, a.configurator, a.AssetKeeper), ) // When a planned update height is reached, the old binary will panic // writing on disk the height and name of the update that triggered it @@ -1278,7 +1278,7 @@ func upgradeHandlers(upgradeInfo storetypes.UpgradeInfo, a *App, storeUpgrades * case upgradeInfo.Name == mv8.UpgradeName811 && !a.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height): storeUpgrades = &storetypes.StoreUpgrades{} - case upgradeInfo.Name == tv8.UpgradeName820Beta && !a.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height): + case upgradeInfo.Name == tv9.UpgradeName820Beta && !a.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height): storeUpgrades = &storetypes.StoreUpgrades{} } diff --git a/app/upgrades/testnet/v8_0_0/constants.go b/app/upgrades/testnet/v9_0_0/constants.go similarity index 71% rename from app/upgrades/testnet/v8_0_0/constants.go rename to app/upgrades/testnet/v9_0_0/constants.go index 01c05e63c..16278e16f 100644 --- a/app/upgrades/testnet/v8_0_0/constants.go +++ b/app/upgrades/testnet/v9_0_0/constants.go @@ -1,7 +1,7 @@ -package v8_0_0 //nolint:revive,stylecheck +package v9_0_0 //nolint:revive,stylecheck const ( - UpgradeName820Beta = "v8.2.0.beta" + UpgradeName820Beta = "v9.0.0.beta" UpgradeHeight = "" UpgradeInfo = `'{ "binaries": { diff --git a/app/upgrades/testnet/v8_0_0/upgrades.go b/app/upgrades/testnet/v9_0_0/upgrades.go similarity index 96% rename from app/upgrades/testnet/v8_0_0/upgrades.go rename to app/upgrades/testnet/v9_0_0/upgrades.go index e0e6aca38..c55bce4d4 100644 --- a/app/upgrades/testnet/v8_0_0/upgrades.go +++ b/app/upgrades/testnet/v9_0_0/upgrades.go @@ -1,4 +1,4 @@ -package v8_0_0 //nolint:revive,stylecheck +package v9_0_0 //nolint:revive,stylecheck import ( assetkeeper "github.com/comdex-official/comdex/x/asset/keeper" @@ -55,7 +55,7 @@ func UpdateDenomAndAddAsset(ctx sdk.Context, assetKeeper assetkeeper.Keeper) { assetKeeper.SetPair(ctx, pairSTOSMO) } -func CreateUpgradeHandlerV820Beta( +func CreateUpgradeHandlerV900Beta( mm *module.Manager, configurator module.Configurator, assetKeeper assetkeeper.Keeper, From 264ee3b06c027d019e896a7f0ebfc7150f637340 Mon Sep 17 00:00:00 2001 From: Pratik Date: Fri, 17 Feb 2023 12:14:53 +0530 Subject: [PATCH 11/12] updating comments --- x/asset/client/cli/tx.go | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/x/asset/client/cli/tx.go b/x/asset/client/cli/tx.go index d6069583f..d3de6e90f 100644 --- a/x/asset/client/cli/tx.go +++ b/x/asset/client/cli/tx.go @@ -816,18 +816,18 @@ func NewCmdSubmitAddMultipleAssetsPairsProposal() *cobra.Command { Use: "add-multiple-assets-pairs [flags]", Args: cobra.ExactArgs(0), Short: "Submit multiple assets and pairs", - Long: `Must provide path to a add assets in JSON file (--add-assets) describing the asset in app to be created + Long: `Must provide path to a add assets and pairs in JSON file (--add-assets-pairs-file) describing the assets and pairs to be created Sample json content { - "name" :"ATOM,CMDX,CMST,OSMO,cATOM,cCMDX,cCMST,cOSMO,HARBOR", - "denom" :"uatom,ucmdx,ucmst,uosmo,ucatom,uccmdx,uccmst,ucosmo,uharbor", - "decimals" :"1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000", - "is_on_chain" :"0,0,0,0,0,0,0,0,1", - "asset_oracle_price" :"1,1,0,1,0,0,0,0,0", - "is_cdp_mintable" :"1,1,0,1,0,0,0,0,0", - "asset_out" :"3,3,3,3,3,3,3,3,3", + "name" :"ATOM,CMDX,OSMO,cATOM,cCMDX,cCMST,cOSMO,HARBOR", + "denom" :"uatom,ucmdx,uosmo,ucatom,uccmdx,uccmst,ucosmo,uharbor", + "decimals" :"1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000", + "is_on_chain" :"0,0,0,0,0,0,0,1", + "asset_oracle_price" :"1,1,1,0,0,0,0,0", + "is_cdp_mintable" :"1,1,1,0,0,0,0,0", + "asset_out" :"3,3,3,3,3,3,3,3", "title" :"Add assets and pairs for applications to be deployed on comdex testnet", - "description" :"This proposal it to add following assets ATOM,CMDX,CMST,OSMO,cATOM,cCMDX,cCMST,cOSMO,HARBOR to be then used on harbor, commodo and cswap apps", + "description" :"This proposal it to add following assets ATOM,CMDX,CMST,OSMO,cATOM,cCMDX,cCMST,cOSMO,HARBOR with pairs to be then used on harbor, commodo and cswap apps", "deposit" :"1000000000ucmdx" }`, RunE: func(cmd *cobra.Command, args []string) error { @@ -856,7 +856,7 @@ Sample json content func NewCreateMultipleAssetsPairs(clientCtx client.Context, txf tx.Factory, fs *flag.FlagSet) (tx.Factory, sdk.Msg, error) { assetsPairsMapping, err := parseAssetsPairsMappingFlags(fs) if err != nil { - return txf, nil, fmt.Errorf("failed to parse assetsMapping: %w", err) + return txf, nil, fmt.Errorf("failed to parse assetsPairs: %w", err) } names, err := ParseStringFromString(assetsPairsMapping.Name, ",") From 75b1e5d9e99bb4d94e4dd31c3ce82c2e120f3be5 Mon Sep 17 00:00:00 2001 From: Vishnu Kumavat Date: Fri, 17 Feb 2023 16:15:16 +0530 Subject: [PATCH 12/12] plan name update for testnet upgrade --- app/app.go | 7 ++++--- app/upgrades/testnet/v9_0_0/constants.go | 6 +++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/app/app.go b/app/app.go index e59c7ec85..a25a5a453 100644 --- a/app/app.go +++ b/app/app.go @@ -2,7 +2,6 @@ package app import ( "fmt" - paramsclient "github.com/cosmos/cosmos-sdk/x/params/client" "io" "net/http" "os" @@ -10,6 +9,8 @@ import ( "sort" "strings" + paramsclient "github.com/cosmos/cosmos-sdk/x/params/client" + "github.com/gorilla/mux" "github.com/spf13/cast" @@ -1214,7 +1215,7 @@ func (a *App) ModuleAccountsPermissions() map[string][]string { func (a *App) registerUpgradeHandlers() { a.UpgradeKeeper.SetUpgradeHandler( - tv9.UpgradeName820Beta, + tv9.UpgradeName, tv9.CreateUpgradeHandlerV900Beta(a.mm, a.configurator, a.AssetKeeper), ) // When a planned update height is reached, the old binary will panic @@ -1278,7 +1279,7 @@ func upgradeHandlers(upgradeInfo storetypes.UpgradeInfo, a *App, storeUpgrades * case upgradeInfo.Name == mv8.UpgradeName811 && !a.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height): storeUpgrades = &storetypes.StoreUpgrades{} - case upgradeInfo.Name == tv9.UpgradeName820Beta && !a.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height): + case upgradeInfo.Name == tv9.UpgradeName && !a.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height): storeUpgrades = &storetypes.StoreUpgrades{} } diff --git a/app/upgrades/testnet/v9_0_0/constants.go b/app/upgrades/testnet/v9_0_0/constants.go index 16278e16f..cf1a9f356 100644 --- a/app/upgrades/testnet/v9_0_0/constants.go +++ b/app/upgrades/testnet/v9_0_0/constants.go @@ -1,9 +1,9 @@ package v9_0_0 //nolint:revive,stylecheck const ( - UpgradeName820Beta = "v9.0.0.beta" - UpgradeHeight = "" - UpgradeInfo = `'{ + UpgradeName = "v9.0.0" + UpgradeHeight = "" + UpgradeInfo = `'{ "binaries": { "darwin/arm64":"", "darwin/x86_64":"",