From 27595925be1aa069341152034f81e77488137613 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Tue, 27 Feb 2024 08:34:54 +0100 Subject: [PATCH 01/18] refactor(x/bank): remove duplicate logger (#19572) --- simapp/app.go | 1 - tests/integration/bank/keeper/deterministic_test.go | 1 - .../distribution/keeper/msg_server_test.go | 1 - .../integration/evidence/keeper/infraction_test.go | 1 - tests/integration/gov/keeper/keeper_test.go | 1 - tests/integration/slashing/keeper/keeper_test.go | 1 - tests/integration/staking/keeper/common_test.go | 1 - .../staking/keeper/deterministic_test.go | 1 - x/accounts/keeper.go | 3 --- x/auth/keeper/keeper.go | 6 +++--- x/auth/keeper/migrations.go | 4 ++-- x/bank/depinject.go | 3 --- x/bank/keeper/collections_test.go | 1 - x/bank/keeper/keeper.go | 13 +++++-------- x/bank/keeper/keeper_test.go | 2 -- x/bank/keeper/send.go | 6 +----- x/bank/keeper/view.go | 6 ++---- 17 files changed, 13 insertions(+), 39 deletions(-) diff --git a/simapp/app.go b/simapp/app.go index c806c50216ee..a37ccf732404 100644 --- a/simapp/app.go +++ b/simapp/app.go @@ -308,7 +308,6 @@ func NewSimApp( app.AuthKeeper, BlockedAddresses(), authtypes.NewModuleAddress(govtypes.ModuleName).String(), - logger, ) // optional: enable sign mode textual by overwriting the default tx config (after setting the bank keeper) diff --git a/tests/integration/bank/keeper/deterministic_test.go b/tests/integration/bank/keeper/deterministic_test.go index 0cc58318230e..3023f5f9248f 100644 --- a/tests/integration/bank/keeper/deterministic_test.go +++ b/tests/integration/bank/keeper/deterministic_test.go @@ -96,7 +96,6 @@ func initDeterministicFixture(t *testing.T) *deterministicFixture { accountKeeper, blockedAddresses, authority.String(), - log.NewNopLogger(), ) authModule := auth.NewAppModule(cdc, accountKeeper, authsims.RandomGenesisAccounts) diff --git a/tests/integration/distribution/keeper/msg_server_test.go b/tests/integration/distribution/keeper/msg_server_test.go index 073f0bb5896d..ac6197269770 100644 --- a/tests/integration/distribution/keeper/msg_server_test.go +++ b/tests/integration/distribution/keeper/msg_server_test.go @@ -102,7 +102,6 @@ func initFixture(t *testing.T) *fixture { accountKeeper, blockedAddresses, authority.String(), - log.NewNopLogger(), ) stakingKeeper := stakingkeeper.NewKeeper(cdc, runtime.NewEnvironment(runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), log.NewNopLogger()), accountKeeper, bankKeeper, authority.String(), addresscodec.NewBech32Codec(sdk.Bech32PrefixValAddr), addresscodec.NewBech32Codec(sdk.Bech32PrefixConsAddr)) diff --git a/tests/integration/evidence/keeper/infraction_test.go b/tests/integration/evidence/keeper/infraction_test.go index 1da4a4235288..1b0241ff87f8 100644 --- a/tests/integration/evidence/keeper/infraction_test.go +++ b/tests/integration/evidence/keeper/infraction_test.go @@ -122,7 +122,6 @@ func initFixture(tb testing.TB) *fixture { accountKeeper, blockedAddresses, authority.String(), - log.NewNopLogger(), ) stakingKeeper := stakingkeeper.NewKeeper(cdc, runtime.NewEnvironment(runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), log.NewNopLogger()), accountKeeper, bankKeeper, authority.String(), addresscodec.NewBech32Codec(sdk.Bech32PrefixValAddr), addresscodec.NewBech32Codec(sdk.Bech32PrefixConsAddr)) diff --git a/tests/integration/gov/keeper/keeper_test.go b/tests/integration/gov/keeper/keeper_test.go index 81986763f6a0..39756b834f34 100644 --- a/tests/integration/gov/keeper/keeper_test.go +++ b/tests/integration/gov/keeper/keeper_test.go @@ -89,7 +89,6 @@ func initFixture(tb testing.TB) *fixture { accountKeeper, blockedAddresses, authority.String(), - log.NewNopLogger(), ) stakingKeeper := stakingkeeper.NewKeeper(cdc, runtime.NewEnvironment(runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), log.NewNopLogger()), accountKeeper, bankKeeper, authority.String(), addresscodec.NewBech32Codec(sdk.Bech32PrefixValAddr), addresscodec.NewBech32Codec(sdk.Bech32PrefixConsAddr)) diff --git a/tests/integration/slashing/keeper/keeper_test.go b/tests/integration/slashing/keeper/keeper_test.go index 7ef26ef130d9..14936367c4a8 100644 --- a/tests/integration/slashing/keeper/keeper_test.go +++ b/tests/integration/slashing/keeper/keeper_test.go @@ -90,7 +90,6 @@ func initFixture(tb testing.TB) *fixture { accountKeeper, blockedAddresses, authority.String(), - log.NewNopLogger(), ) stakingKeeper := stakingkeeper.NewKeeper(cdc, runtime.NewEnvironment(runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), log.NewNopLogger()), accountKeeper, bankKeeper, authority.String(), addresscodec.NewBech32Codec(sdk.Bech32PrefixValAddr), addresscodec.NewBech32Codec(sdk.Bech32PrefixConsAddr)) diff --git a/tests/integration/staking/keeper/common_test.go b/tests/integration/staking/keeper/common_test.go index 8c4e7233df2a..35f617450db3 100644 --- a/tests/integration/staking/keeper/common_test.go +++ b/tests/integration/staking/keeper/common_test.go @@ -139,7 +139,6 @@ func initFixture(tb testing.TB) *fixture { accountKeeper, blockedAddresses, authority.String(), - log.NewNopLogger(), ) stakingKeeper := stakingkeeper.NewKeeper(cdc, runtime.NewEnvironment(runtime.NewKVStoreService(keys[types.StoreKey]), log.NewNopLogger()), accountKeeper, bankKeeper, authority.String(), addresscodec.NewBech32Codec(sdk.Bech32PrefixValAddr), addresscodec.NewBech32Codec(sdk.Bech32PrefixConsAddr)) diff --git a/tests/integration/staking/keeper/deterministic_test.go b/tests/integration/staking/keeper/deterministic_test.go index c7fc7bed5e3f..b8b9d134196d 100644 --- a/tests/integration/staking/keeper/deterministic_test.go +++ b/tests/integration/staking/keeper/deterministic_test.go @@ -103,7 +103,6 @@ func initDeterministicFixture(t *testing.T) *deterministicFixture { accountKeeper, blockedAddresses, authority.String(), - log.NewNopLogger(), ) stakingKeeper := stakingkeeper.NewKeeper(cdc, runtime.NewEnvironment(runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), log.NewNopLogger()), accountKeeper, bankKeeper, authority.String(), addresscodec.NewBech32Codec(sdk.Bech32PrefixValAddr), addresscodec.NewBech32Codec(sdk.Bech32PrefixConsAddr)) diff --git a/x/accounts/keeper.go b/x/accounts/keeper.go index 58afcd2b47df..463c8664957b 100644 --- a/x/accounts/keeper.go +++ b/x/accounts/keeper.go @@ -14,7 +14,6 @@ import ( "cosmossdk.io/collections" "cosmossdk.io/core/address" "cosmossdk.io/core/appmodule" - "cosmossdk.io/log" "cosmossdk.io/x/accounts/accountstd" "cosmossdk.io/x/accounts/internal/implementation" @@ -74,7 +73,6 @@ func NewKeeper( sb := collections.NewSchemaBuilder(env.KVStoreService) keeper := Keeper{ environment: env, - logger: env.Logger, addressCodec: addressCodec, msgRouter: execRouter, signerProvider: signerProvider, @@ -108,7 +106,6 @@ type Keeper struct { signerProvider SignerProvider queryRouter QueryRouter makeSendCoinsMsg coinsTransferMsgFunc - logger log.Logger accounts map[string]implementation.Implementation diff --git a/x/auth/keeper/keeper.go b/x/auth/keeper/keeper.go index 6196236df2e7..9f03b175fcb4 100644 --- a/x/auth/keeper/keeper.go +++ b/x/auth/keeper/keeper.go @@ -82,7 +82,7 @@ func (a AccountsIndexes) IndexesList() []collections.Index[sdk.AccAddress, sdk.A type AccountKeeper struct { addressCodec address.Codec - Environment appmodule.Environment + environment appmodule.Environment cdc codec.BinaryCodec permAddrs map[string]types.PermissionsForAddress bech32Prefix string @@ -124,7 +124,7 @@ func NewAccountKeeper( ak := AccountKeeper{ addressCodec: ac, bech32Prefix: bech32Prefix, - Environment: env, + environment: env, proto: proto, cdc: cdc, permAddrs: permAddrs, @@ -154,7 +154,7 @@ func (ak AccountKeeper) AddressCodec() address.Codec { // Logger returns a module-specific logger. func (ak AccountKeeper) Logger(ctx context.Context) log.Logger { - return ak.Environment.Logger.With("module", "x/"+types.ModuleName) + return ak.environment.Logger.With("module", "x/"+types.ModuleName) } // GetPubKey Returns the PubKey of the account at address diff --git a/x/auth/keeper/migrations.go b/x/auth/keeper/migrations.go index cad0b5742691..998fdbe87b98 100644 --- a/x/auth/keeper/migrations.go +++ b/x/auth/keeper/migrations.go @@ -42,7 +42,7 @@ func (m Migrator) Migrate3to4(ctx context.Context) error { // It migrates the GlobalAccountNumber from being a protobuf defined value to a // big-endian encoded uint64, it also migrates it to use a more canonical prefix. func (m Migrator) Migrate4To5(ctx context.Context) error { - return v5.Migrate(ctx, m.keeper.Environment.KVStoreService, m.keeper.AccountNumber) + return v5.Migrate(ctx, m.keeper.environment.KVStoreService, m.keeper.AccountNumber) } // V45_SetAccount implements V45_SetAccount @@ -51,7 +51,7 @@ func (m Migrator) Migrate4To5(ctx context.Context) error { // NOTE: This is used for testing purposes only. func (m Migrator) V45SetAccount(ctx context.Context, acc sdk.AccountI) error { addr := acc.GetAddress() - store := m.keeper.Environment.KVStoreService.OpenKVStore(ctx) + store := m.keeper.environment.KVStoreService.OpenKVStore(ctx) bz, err := m.keeper.Accounts.ValueCodec().Encode(acc) if err != nil { diff --git a/x/bank/depinject.go b/x/bank/depinject.go index 43a806d87add..8a9d3efdd825 100644 --- a/x/bank/depinject.go +++ b/x/bank/depinject.go @@ -5,7 +5,6 @@ import ( "cosmossdk.io/core/appmodule" "cosmossdk.io/depinject" "cosmossdk.io/depinject/appconfig" - "cosmossdk.io/log" authtypes "cosmossdk.io/x/auth/types" "cosmossdk.io/x/bank/keeper" "cosmossdk.io/x/bank/types" @@ -30,7 +29,6 @@ type ModuleInputs struct { Config *modulev1.Module Cdc codec.Codec Environment appmodule.Environment - Logger log.Logger AccountKeeper types.AccountKeeper } @@ -83,7 +81,6 @@ func ProvideModule(in ModuleInputs) ModuleOutputs { in.AccountKeeper, blockedAddresses, authStr, - in.Logger, ) m := NewAppModule(in.Cdc, bankKeeper, in.AccountKeeper) diff --git a/x/bank/keeper/collections_test.go b/x/bank/keeper/collections_test.go index 5afe09912386..b372f4edc84b 100644 --- a/x/bank/keeper/collections_test.go +++ b/x/bank/keeper/collections_test.go @@ -43,7 +43,6 @@ func TestBankStateCompatibility(t *testing.T) { authKeeper, map[string]bool{accAddrs[4].String(): true}, authtypes.NewModuleAddress(banktypes.GovModuleName).String(), - log.NewNopLogger(), ) // test we can decode balances without problems diff --git a/x/bank/keeper/keeper.go b/x/bank/keeper/keeper.go index 16cda899e3c6..e52ae355e61f 100644 --- a/x/bank/keeper/keeper.go +++ b/x/bank/keeper/keeper.go @@ -61,7 +61,6 @@ type BaseKeeper struct { cdc codec.BinaryCodec environment appmodule.Environment mintCoinsRestrictionFn types.MintingRestrictionFn - logger log.Logger } // GetPaginatedTotalSupply queries for the supply, ignoring 0 coins, with a given pagination @@ -88,22 +87,20 @@ func NewBaseKeeper( ak types.AccountKeeper, blockedAddrs map[string]bool, authority string, - logger log.Logger, ) BaseKeeper { if _, err := ak.AddressCodec().StringToBytes(authority); err != nil { panic(fmt.Errorf("invalid bank authority address: %w", err)) } // add the module name to the logger - logger = logger.With(log.ModuleKey, "x/"+types.ModuleName) + env.Logger = env.Logger.With(log.ModuleKey, "x/"+types.ModuleName) return BaseKeeper{ - BaseSendKeeper: NewBaseSendKeeper(env, cdc, ak, blockedAddrs, authority, logger), + BaseSendKeeper: NewBaseSendKeeper(env, cdc, ak, blockedAddrs, authority), ak: ak, cdc: cdc, environment: env, mintCoinsRestrictionFn: types.NoOpMintingRestrictionFn, - logger: logger, } } @@ -351,7 +348,7 @@ func (k BaseKeeper) UndelegateCoinsFromModuleToAccount( func (k BaseKeeper) MintCoins(ctx context.Context, moduleName string, amounts sdk.Coins) error { err := k.mintCoinsRestrictionFn(ctx, amounts) if err != nil { - k.logger.Error(fmt.Sprintf("Module %q attempted to mint coins %s it doesn't have permission for, error %v", moduleName, amounts, err)) + k.Logger().Error(fmt.Sprintf("Module %q attempted to mint coins %s it doesn't have permission for, error %v", moduleName, amounts, err)) return err } acc := k.ak.GetModuleAccount(ctx, moduleName) @@ -374,7 +371,7 @@ func (k BaseKeeper) MintCoins(ctx context.Context, moduleName string, amounts sd k.setSupply(ctx, supply) } - k.logger.Debug("minted coins from module account", "amount", amounts.String(), "from", moduleName) + k.Logger().Debug("minted coins from module account", "amount", amounts.String(), "from", moduleName) addrStr, err := k.ak.AddressCodec().BytesToString(acc.GetAddress()) if err != nil { @@ -414,7 +411,7 @@ func (k BaseKeeper) BurnCoins(ctx context.Context, address []byte, amounts sdk.C k.setSupply(ctx, supply) } - k.logger.Debug("burned tokens from account", "amount", amounts.String(), "from", address) + k.Logger().Debug("burned tokens from account", "amount", amounts.String(), "from", address) addrStr, err := k.ak.AddressCodec().BytesToString(acc.GetAddress()) if err != nil { diff --git a/x/bank/keeper/keeper_test.go b/x/bank/keeper/keeper_test.go index 6f4edfe217fd..7d5e90ccac4b 100644 --- a/x/bank/keeper/keeper_test.go +++ b/x/bank/keeper/keeper_test.go @@ -145,7 +145,6 @@ func (suite *KeeperTestSuite) SetupTest() { suite.authKeeper, map[string]bool{accAddrs[4].String(): true}, authtypes.NewModuleAddress(banktypes.GovModuleName).String(), - log.NewNopLogger(), ) banktypes.RegisterInterfaces(encCfg.InterfaceRegistry) @@ -308,7 +307,6 @@ func (suite *KeeperTestSuite) TestGetAuthority() { suite.authKeeper, nil, authority, - log.NewNopLogger(), ) } diff --git a/x/bank/keeper/send.go b/x/bank/keeper/send.go index b8bf305f57b9..86c88f68d2d2 100644 --- a/x/bank/keeper/send.go +++ b/x/bank/keeper/send.go @@ -8,7 +8,6 @@ import ( "cosmossdk.io/core/appmodule" "cosmossdk.io/core/event" errorsmod "cosmossdk.io/errors" - "cosmossdk.io/log" "cosmossdk.io/math" "cosmossdk.io/x/bank/types" @@ -59,7 +58,6 @@ type BaseSendKeeper struct { cdc codec.BinaryCodec ak types.AccountKeeper environment appmodule.Environment - logger log.Logger // list of addresses that are restricted from receiving transactions blockedAddrs map[string]bool @@ -77,20 +75,18 @@ func NewBaseSendKeeper( ak types.AccountKeeper, blockedAddrs map[string]bool, authority string, - logger log.Logger, ) BaseSendKeeper { if _, err := ak.AddressCodec().StringToBytes(authority); err != nil { panic(fmt.Errorf("invalid bank authority address: %w", err)) } return BaseSendKeeper{ - BaseViewKeeper: NewBaseViewKeeper(env, cdc, ak, logger), + BaseViewKeeper: NewBaseViewKeeper(env, cdc, ak), cdc: cdc, ak: ak, environment: env, blockedAddrs: blockedAddrs, authority: authority, - logger: logger, sendRestriction: newSendRestriction(), } } diff --git a/x/bank/keeper/view.go b/x/bank/keeper/view.go index ab9cfc1703fd..d8eaa737fa14 100644 --- a/x/bank/keeper/view.go +++ b/x/bank/keeper/view.go @@ -59,7 +59,6 @@ type BaseViewKeeper struct { cdc codec.BinaryCodec environment appmodule.Environment ak types.AccountKeeper - logger log.Logger Schema collections.Schema Supply collections.Map[string, math.Int] @@ -70,13 +69,12 @@ type BaseViewKeeper struct { } // NewBaseViewKeeper returns a new BaseViewKeeper. -func NewBaseViewKeeper(env appmodule.Environment, cdc codec.BinaryCodec, ak types.AccountKeeper, logger log.Logger) BaseViewKeeper { +func NewBaseViewKeeper(env appmodule.Environment, cdc codec.BinaryCodec, ak types.AccountKeeper) BaseViewKeeper { sb := collections.NewSchemaBuilder(env.KVStoreService) k := BaseViewKeeper{ cdc: cdc, environment: env, ak: ak, - logger: logger, Supply: collections.NewMap(sb, types.SupplyKey, "supply", collections.StringKey, sdk.IntValue), DenomMetadata: collections.NewMap(sb, types.DenomMetadataPrefix, "denom_metadata", collections.StringKey, codec.CollValue[types.Metadata](cdc)), SendEnabled: collections.NewMap(sb, types.SendEnabledPrefix, "send_enabled", collections.StringKey, codec.BoolValue), // NOTE: we use a bool value which uses protobuf to retain state backwards compat @@ -99,7 +97,7 @@ func (k BaseViewKeeper) HasBalance(ctx context.Context, addr sdk.AccAddress, amt // Logger returns a module-specific logger. func (k BaseViewKeeper) Logger() log.Logger { - return k.logger + return k.environment.Logger } // GetAllBalances returns all the account balances for the given account address. From 6cb34d827af2ff9552efaf360dd2eccf96361d23 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 27 Feb 2024 08:52:03 +0100 Subject: [PATCH 02/18] build(deps): Bump actions/add-to-project from 0.5.0 to 0.6.0 (#19575) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/issues.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/issues.yml b/.github/workflows/issues.yml index 7770ab16ad0b..1ad3f0f1f3ea 100644 --- a/.github/workflows/issues.yml +++ b/.github/workflows/issues.yml @@ -11,7 +11,7 @@ jobs: name: Add issue to project runs-on: ubuntu-latest steps: - - uses: actions/add-to-project@v0.5.0 + - uses: actions/add-to-project@v0.6.0 with: project-url: https://github.com/orgs/cosmos/projects/26 # add all issues opened to the issue board for triage and assignment From 316750cc8cd8b3296fa233f4da2e39cbcdc34517 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Tue, 27 Feb 2024 08:55:37 +0100 Subject: [PATCH 03/18] chore(server): implement comment (#19569) --- server/start.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/start.go b/server/start.go index deeacb5d7cb2..ae64602a19c0 100644 --- a/server/start.go +++ b/server/start.go @@ -273,7 +273,7 @@ func startStandAlone[T types.Application](svrCtx *Context, svrCfg serverconfig.C return err } - if opts.PostSetup != nil { + if opts.PostSetupStandalone != nil { if err := opts.PostSetupStandalone(app, svrCtx, clientCtx, ctx, g); err != nil { return err } From b894603d1597da58b7e7173424fff98cd98d22c4 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Tue, 27 Feb 2024 14:57:48 +0100 Subject: [PATCH 04/18] build: fix `make proto-gen` (#19536) --- buf.work.yaml | 21 + runtime/app.go | 2 +- x/consensus/proto/buf.gen.pulsar.yaml | 1 + x/consensus/proto/buf.lock | 21 +- x/consensus/proto/buf.yaml | 1 + x/staking/proto/buf.gen.pulsar.yaml | 1 + x/staking/proto/buf.lock | 21 +- x/staking/proto/buf.yaml | 1 + x/staking/types/staking.pb.go | 1430 ++++++++++++------------- 9 files changed, 752 insertions(+), 747 deletions(-) diff --git a/buf.work.yaml b/buf.work.yaml index 1878b341beb5..b0f40b567c7c 100644 --- a/buf.work.yaml +++ b/buf.work.yaml @@ -1,3 +1,24 @@ version: v1 directories: - proto + - x/accounts/proto + - x/auth/proto + - x/authz/proto + - x/bank/proto + - x/circuit/proto + - x/consensus/proto + - x/counter/proto + - x/crisis/proto + - x/distribution/proto + - x/evidence/proto + - x/feegrant/proto + - x/genutil/proto + - x/gov/proto + - x/group/proto + - x/mint/proto + - x/nft/proto + - x/params/proto + - x/protocolpool/proto + - x/slashing/proto + - x/staking/proto + - x/upgrade/proto diff --git a/runtime/app.go b/runtime/app.go index 268f3c90f8d6..c0f0e93e66d6 100644 --- a/runtime/app.go +++ b/runtime/app.go @@ -87,7 +87,7 @@ func (a *App) RegisterModules(modules ...module.AppModule) error { // RegisterStores registers the provided store keys. // This method should only be used for registering extra stores -// wiich is necessary for modules that not registered using the app config. +// which is necessary for modules that not registered using the app config. // To be used in combination of RegisterModules. func (a *App) RegisterStores(keys ...storetypes.StoreKey) error { a.storeKeys = append(a.storeKeys, keys...) diff --git a/x/consensus/proto/buf.gen.pulsar.yaml b/x/consensus/proto/buf.gen.pulsar.yaml index 88a5b0419d7f..cb7e2a219c85 100644 --- a/x/consensus/proto/buf.gen.pulsar.yaml +++ b/x/consensus/proto/buf.gen.pulsar.yaml @@ -9,6 +9,7 @@ managed: - buf.build/cosmos/cosmos-proto override: buf.build/cosmos/cosmos-sdk: cosmossdk.io/api + buf.build/tendermint/tendermint: buf.build/gen/go/tendermint/tendermint/protocolbuffers/go plugins: - name: go-pulsar out: .. diff --git a/x/consensus/proto/buf.lock b/x/consensus/proto/buf.lock index 08b5c2ec08aa..329ff17a1eb2 100644 --- a/x/consensus/proto/buf.lock +++ b/x/consensus/proto/buf.lock @@ -6,23 +6,18 @@ deps: repository: cosmos-proto commit: 1935555c206d4afb9e94615dfd0fad31 digest: shake256:c74d91a3ac7ae07d579e90eee33abf9b29664047ac8816500cf22c081fec0d72d62c89ce0bebafc1f6fec7aa5315be72606717740ca95007248425102c365377 - - remote: buf.build - owner: cosmos - repository: cosmos-sdk - commit: cf13c7d232dd405180c2af616fa8a075 - digest: shake256:769a38e306a98339b549bc96991c97fae8bd3ceb1a7646c7bfe9a74e406ab068372970fbc5abda1891e2f3c36527cf2d3a25f631739d36900787226e564bb612 - remote: buf.build owner: cosmos repository: gogo-proto - commit: 5e5b9fdd01804356895f8f79a6f1ddc1 - digest: shake256:0b85da49e2e5f9ebc4806eae058e2f56096ff3b1c59d1fb7c190413dd15f45dd456f0b69ced9059341c80795d2b6c943de15b120a9e0308b499e43e4b5fc2952 + commit: 88ef6483f90f478fb938c37dde52ece3 + digest: shake256:89c45df2aa11e0cff97b0d695436713db3d993d76792e9f8dc1ae90e6ab9a9bec55503d48ceedd6b86069ab07d3041b32001b2bfe0227fa725dd515ff381e5ba - remote: buf.build owner: googleapis repository: googleapis - commit: 28151c0d0a1641bf938a7672c500e01d - digest: shake256:49215edf8ef57f7863004539deff8834cfb2195113f0b890dd1f67815d9353e28e668019165b9d872395871eeafcbab3ccfdb2b5f11734d3cca95be9e8d139de + commit: 7e6f6e774e29406da95bd61cdcdbc8bc + digest: shake256:fe43dd2265ea0c07d76bd925eeba612667cf4c948d2ce53d6e367e1b4b3cb5fa69a51e6acb1a6a50d32f894f054a35e6c0406f6808a483f2752e10c866ffbf73 - remote: buf.build - owner: protocolbuffers - repository: wellknowntypes - commit: 657250e6a39648cbb169d079a60bd9ba - digest: shake256:00de25001b8dd2e29d85fc4bcc3ede7aed886d76d67f5e0f7a9b320b90f871d3eb73507d50818d823a0512f3f8db77a11c043685528403e31ff3fef18323a9fb + owner: tendermint + repository: tendermint + commit: 33ed361a90514289beabf3189e1d7665 + digest: shake256:038267e06294714fd883610626554b04a127b576b4e253befb4206cb72d5d3c1eeccacd4b9ec8e3fb891f7c14e1cb0f770c077d2989638995b0a61c85afedb1d diff --git a/x/consensus/proto/buf.yaml b/x/consensus/proto/buf.yaml index 6c238f2ddc81..3ad17618d145 100644 --- a/x/consensus/proto/buf.yaml +++ b/x/consensus/proto/buf.yaml @@ -2,6 +2,7 @@ version: v1 name: buf.build/mods/consensus deps: - buf.build/cosmos/cosmos-sdk # pin the Cosmos SDK version + - buf.build/tendermint/tendermint:33ed361a90514289beabf3189e1d7665 # CometBFT v0.38 - buf.build/cosmos/cosmos-proto - buf.build/cosmos/gogo-proto - buf.build/googleapis/googleapis diff --git a/x/staking/proto/buf.gen.pulsar.yaml b/x/staking/proto/buf.gen.pulsar.yaml index 88a5b0419d7f..cb7e2a219c85 100644 --- a/x/staking/proto/buf.gen.pulsar.yaml +++ b/x/staking/proto/buf.gen.pulsar.yaml @@ -9,6 +9,7 @@ managed: - buf.build/cosmos/cosmos-proto override: buf.build/cosmos/cosmos-sdk: cosmossdk.io/api + buf.build/tendermint/tendermint: buf.build/gen/go/tendermint/tendermint/protocolbuffers/go plugins: - name: go-pulsar out: .. diff --git a/x/staking/proto/buf.lock b/x/staking/proto/buf.lock index 08b5c2ec08aa..329ff17a1eb2 100644 --- a/x/staking/proto/buf.lock +++ b/x/staking/proto/buf.lock @@ -6,23 +6,18 @@ deps: repository: cosmos-proto commit: 1935555c206d4afb9e94615dfd0fad31 digest: shake256:c74d91a3ac7ae07d579e90eee33abf9b29664047ac8816500cf22c081fec0d72d62c89ce0bebafc1f6fec7aa5315be72606717740ca95007248425102c365377 - - remote: buf.build - owner: cosmos - repository: cosmos-sdk - commit: cf13c7d232dd405180c2af616fa8a075 - digest: shake256:769a38e306a98339b549bc96991c97fae8bd3ceb1a7646c7bfe9a74e406ab068372970fbc5abda1891e2f3c36527cf2d3a25f631739d36900787226e564bb612 - remote: buf.build owner: cosmos repository: gogo-proto - commit: 5e5b9fdd01804356895f8f79a6f1ddc1 - digest: shake256:0b85da49e2e5f9ebc4806eae058e2f56096ff3b1c59d1fb7c190413dd15f45dd456f0b69ced9059341c80795d2b6c943de15b120a9e0308b499e43e4b5fc2952 + commit: 88ef6483f90f478fb938c37dde52ece3 + digest: shake256:89c45df2aa11e0cff97b0d695436713db3d993d76792e9f8dc1ae90e6ab9a9bec55503d48ceedd6b86069ab07d3041b32001b2bfe0227fa725dd515ff381e5ba - remote: buf.build owner: googleapis repository: googleapis - commit: 28151c0d0a1641bf938a7672c500e01d - digest: shake256:49215edf8ef57f7863004539deff8834cfb2195113f0b890dd1f67815d9353e28e668019165b9d872395871eeafcbab3ccfdb2b5f11734d3cca95be9e8d139de + commit: 7e6f6e774e29406da95bd61cdcdbc8bc + digest: shake256:fe43dd2265ea0c07d76bd925eeba612667cf4c948d2ce53d6e367e1b4b3cb5fa69a51e6acb1a6a50d32f894f054a35e6c0406f6808a483f2752e10c866ffbf73 - remote: buf.build - owner: protocolbuffers - repository: wellknowntypes - commit: 657250e6a39648cbb169d079a60bd9ba - digest: shake256:00de25001b8dd2e29d85fc4bcc3ede7aed886d76d67f5e0f7a9b320b90f871d3eb73507d50818d823a0512f3f8db77a11c043685528403e31ff3fef18323a9fb + owner: tendermint + repository: tendermint + commit: 33ed361a90514289beabf3189e1d7665 + digest: shake256:038267e06294714fd883610626554b04a127b576b4e253befb4206cb72d5d3c1eeccacd4b9ec8e3fb891f7c14e1cb0f770c077d2989638995b0a61c85afedb1d diff --git a/x/staking/proto/buf.yaml b/x/staking/proto/buf.yaml index 471e1b5f384c..f5efe85f6c5c 100644 --- a/x/staking/proto/buf.yaml +++ b/x/staking/proto/buf.yaml @@ -2,6 +2,7 @@ version: v1 name: buf.build/mods/staking deps: - buf.build/cosmos/cosmos-sdk # pin the Cosmos SDK version + - buf.build/tendermint/tendermint:33ed361a90514289beabf3189e1d7665 # CometBFT v0.38 - buf.build/cosmos/cosmos-proto - buf.build/cosmos/gogo-proto - buf.build/googleapis/googleapis diff --git a/x/staking/types/staking.pb.go b/x/staking/types/staking.pb.go index 51d148a4f59e..0494f43106ad 100644 --- a/x/staking/types/staking.pb.go +++ b/x/staking/types/staking.pb.go @@ -1588,726 +1588,716 @@ func (this *Pool) Description() (desc *github_com_cosmos_gogoproto_protoc_gen_go func StakingDescription() (desc *github_com_cosmos_gogoproto_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_cosmos_gogoproto_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 11501 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x6b, 0x94, 0x1c, 0xc7, - 0x75, 0x1f, 0xbe, 0x3d, 0xef, 0xb9, 0xf3, 0xea, 0xad, 0x5d, 0x00, 0x83, 0x01, 0x89, 0x5d, 0x36, - 0x45, 0x12, 0x04, 0xc9, 0x05, 0x09, 0x12, 0x20, 0xb9, 0x90, 0xc4, 0xff, 0xcc, 0xec, 0x00, 0x3b, - 0xe0, 0xbe, 0xd8, 0x33, 0x0b, 0x11, 0xb4, 0xad, 0x76, 0x6f, 0x4f, 0xed, 0x6e, 0x13, 0x33, 0xdd, - 0xa3, 0xe9, 0x1e, 0x60, 0x97, 0x1f, 0xfe, 0x47, 0x8e, 0xec, 0x44, 0x86, 0x1f, 0x91, 0x63, 0x1f, - 0x5b, 0xb6, 0x04, 0x5b, 0xb2, 0x63, 0x4b, 0x76, 0xe2, 0xc4, 0xb6, 0x14, 0x3f, 0xe2, 0x13, 0xc7, - 0xce, 0x71, 0x12, 0xdb, 0x27, 0xc9, 0x51, 0xfc, 0x21, 0x71, 0x72, 0x8e, 0x19, 0x5b, 0xf2, 0x89, - 0x14, 0x59, 0x4e, 0xfc, 0x90, 0x13, 0xe7, 0xe8, 0x24, 0x27, 0xa7, 0x5e, 0xfd, 0x98, 0xc7, 0xce, - 0x2c, 0x44, 0xca, 0x8a, 0x9d, 0x2f, 0xc0, 0x74, 0xd5, 0xbd, 0xbf, 0xaa, 0xba, 0x75, 0xeb, 0xd6, - 0xad, 0x5b, 0x8f, 0x85, 0xdf, 0xbf, 0x0a, 0x8b, 0x7b, 0xb6, 0xbd, 0xd7, 0xc6, 0x17, 0xba, 0x3d, - 0xdb, 0xb5, 0x77, 0xfa, 0xbb, 0x17, 0x5a, 0xd8, 0x31, 0x7a, 0x66, 0xd7, 0xb5, 0x7b, 0x4b, 0x34, - 0x0d, 0x15, 0x18, 0xc5, 0x92, 0xa0, 0x50, 0xd6, 0x61, 0xf6, 0xaa, 0xd9, 0xc6, 0x2b, 0x1e, 0x61, - 0x03, 0xbb, 0xe8, 0x05, 0x88, 0xed, 0x9a, 0x6d, 0x5c, 0x94, 0x16, 0xa3, 0xe7, 0x32, 0x17, 0xdf, - 0xb1, 0x34, 0xc0, 0xb4, 0x14, 0xe6, 0xd8, 0x22, 0xc9, 0x2a, 0xe5, 0x50, 0xfe, 0x77, 0x0c, 0xe6, - 0x46, 0xe4, 0x22, 0x04, 0x31, 0x4b, 0xef, 0x10, 0x44, 0xe9, 0x5c, 0x5a, 0xa5, 0xbf, 0x51, 0x11, - 0x92, 0x5d, 0xdd, 0xb8, 0xa5, 0xef, 0xe1, 0x62, 0x84, 0x26, 0x8b, 0x4f, 0x74, 0x16, 0xa0, 0x85, - 0xbb, 0xd8, 0x6a, 0x61, 0xcb, 0x38, 0x2c, 0x46, 0x17, 0xa3, 0xe7, 0xd2, 0x6a, 0x20, 0x05, 0x3d, - 0x01, 0xb3, 0xdd, 0xfe, 0x4e, 0xdb, 0x34, 0xb4, 0x00, 0x19, 0x2c, 0x46, 0xcf, 0xc5, 0x55, 0x99, - 0x65, 0xac, 0xf8, 0xc4, 0x8f, 0x41, 0xe1, 0x0e, 0xd6, 0x6f, 0x05, 0x49, 0x33, 0x94, 0x34, 0x4f, - 0x92, 0x03, 0x84, 0x55, 0xc8, 0x76, 0xb0, 0xe3, 0xe8, 0x7b, 0x58, 0x73, 0x0f, 0xbb, 0xb8, 0x18, - 0xa3, 0xad, 0x5f, 0x1c, 0x6a, 0xfd, 0x60, 0xcb, 0x33, 0x9c, 0xab, 0x79, 0xd8, 0xc5, 0xa8, 0x0c, - 0x69, 0x6c, 0xf5, 0x3b, 0x0c, 0x21, 0x3e, 0x46, 0x7e, 0x35, 0xab, 0xdf, 0x19, 0x44, 0x49, 0x11, - 0x36, 0x0e, 0x91, 0x74, 0x70, 0xef, 0xb6, 0x69, 0xe0, 0x62, 0x82, 0x02, 0x3c, 0x36, 0x04, 0xd0, - 0x60, 0xf9, 0x83, 0x18, 0x82, 0x0f, 0x55, 0x21, 0x8d, 0x0f, 0x5c, 0x6c, 0x39, 0xa6, 0x6d, 0x15, - 0x93, 0x14, 0xe4, 0x91, 0x11, 0xbd, 0x88, 0xdb, 0xad, 0x41, 0x08, 0x9f, 0x0f, 0x5d, 0x86, 0xa4, - 0xdd, 0x75, 0x4d, 0xdb, 0x72, 0x8a, 0xa9, 0x45, 0xe9, 0x5c, 0xe6, 0xe2, 0x03, 0x23, 0x15, 0x61, - 0x93, 0xd1, 0xa8, 0x82, 0x18, 0xd5, 0x41, 0x76, 0xec, 0x7e, 0xcf, 0xc0, 0x9a, 0x61, 0xb7, 0xb0, - 0x66, 0x5a, 0xbb, 0x76, 0x31, 0x4d, 0x01, 0x16, 0x86, 0x1b, 0x42, 0x09, 0xab, 0x76, 0x0b, 0xd7, - 0xad, 0x5d, 0x5b, 0xcd, 0x3b, 0xa1, 0x6f, 0x74, 0x12, 0x12, 0xce, 0xa1, 0xe5, 0xea, 0x07, 0xc5, - 0x2c, 0xd5, 0x10, 0xfe, 0x45, 0x54, 0x07, 0xb7, 0x4c, 0x52, 0x5c, 0x31, 0xc7, 0x54, 0x87, 0x7f, - 0x2a, 0xbf, 0x94, 0x80, 0xc2, 0x34, 0xca, 0x77, 0x05, 0xe2, 0xbb, 0xa4, 0xfd, 0xc5, 0xc8, 0x71, - 0xa4, 0xc3, 0x78, 0xc2, 0xe2, 0x4d, 0xdc, 0xa7, 0x78, 0xcb, 0x90, 0xb1, 0xb0, 0xe3, 0xe2, 0x16, - 0xd3, 0x95, 0xe8, 0x94, 0xda, 0x06, 0x8c, 0x69, 0x58, 0xd9, 0x62, 0xf7, 0xa5, 0x6c, 0xaf, 0x42, - 0xc1, 0xab, 0x92, 0xd6, 0xd3, 0xad, 0x3d, 0xa1, 0xb5, 0x17, 0x26, 0xd5, 0x64, 0xa9, 0x26, 0xf8, - 0x54, 0xc2, 0xa6, 0xe6, 0x71, 0xe8, 0x1b, 0xad, 0x00, 0xd8, 0x16, 0xb6, 0x77, 0xb5, 0x16, 0x36, - 0xda, 0xc5, 0xd4, 0x18, 0x29, 0x6d, 0x12, 0x92, 0x21, 0x29, 0xd9, 0x2c, 0xd5, 0x68, 0xa3, 0x17, - 0x7d, 0x25, 0x4c, 0x8e, 0xd1, 0xa1, 0x75, 0x36, 0xfc, 0x86, 0xf4, 0x70, 0x1b, 0xf2, 0x3d, 0x4c, - 0x46, 0x04, 0x6e, 0xf1, 0x96, 0xa5, 0x69, 0x25, 0x96, 0x26, 0xb6, 0x4c, 0xe5, 0x6c, 0xac, 0x61, - 0xb9, 0x5e, 0xf0, 0x13, 0x3d, 0x0c, 0x5e, 0x82, 0x46, 0xd5, 0x0a, 0xa8, 0x7d, 0xca, 0x8a, 0xc4, - 0x0d, 0xbd, 0x83, 0x4b, 0x6f, 0x40, 0x3e, 0x2c, 0x1e, 0x34, 0x0f, 0x71, 0xc7, 0xd5, 0x7b, 0x2e, - 0xd5, 0xc2, 0xb8, 0xca, 0x3e, 0x90, 0x0c, 0x51, 0x6c, 0xb5, 0xa8, 0xfd, 0x8b, 0xab, 0xe4, 0x27, - 0xfa, 0xff, 0xfc, 0x06, 0x47, 0x69, 0x83, 0x1f, 0x1d, 0xee, 0xd1, 0x10, 0xf2, 0x60, 0xbb, 0x4b, - 0xcf, 0x43, 0x2e, 0xd4, 0x80, 0x69, 0x8b, 0x56, 0x7e, 0x3a, 0x06, 0x27, 0x46, 0x62, 0xa3, 0x57, - 0x61, 0xbe, 0x6f, 0x99, 0x96, 0x8b, 0x7b, 0xdd, 0x1e, 0x26, 0x2a, 0xcb, 0xca, 0x2a, 0x7e, 0x3e, - 0x39, 0x46, 0xe9, 0xb6, 0x83, 0xd4, 0x0c, 0x45, 0x9d, 0xeb, 0x0f, 0x27, 0xa2, 0x9b, 0x90, 0x21, - 0xfa, 0xa1, 0xf7, 0x74, 0x0a, 0xc8, 0x46, 0xe3, 0xc5, 0xe9, 0x9a, 0xbc, 0xb4, 0xe2, 0x73, 0x56, - 0xa2, 0x1f, 0x94, 0x22, 0x6a, 0x10, 0x0b, 0xed, 0x43, 0xf6, 0x36, 0xee, 0x99, 0xbb, 0xa6, 0xc1, - 0xb0, 0x89, 0x38, 0xf3, 0x17, 0x5f, 0x98, 0x12, 0xfb, 0x46, 0x80, 0xb5, 0xe1, 0xea, 0x2e, 0x5e, - 0x86, 0xed, 0x8d, 0x1b, 0x35, 0xb5, 0x7e, 0xb5, 0x5e, 0x5b, 0x51, 0x43, 0xc8, 0xa5, 0x4f, 0x49, - 0x90, 0x09, 0xd4, 0x85, 0x98, 0x2d, 0xab, 0xdf, 0xd9, 0xc1, 0x3d, 0x2e, 0x71, 0xfe, 0x85, 0xce, - 0x40, 0x7a, 0xb7, 0xdf, 0x6e, 0x33, 0xb5, 0x61, 0x73, 0x5e, 0x8a, 0x24, 0x10, 0x95, 0x21, 0x56, - 0x8a, 0x1b, 0x02, 0x6a, 0xa5, 0xc8, 0x6f, 0xf4, 0x30, 0x64, 0x4c, 0x47, 0xeb, 0xe1, 0x2e, 0xd6, - 0x5d, 0xdc, 0x2a, 0xc6, 0x16, 0xa5, 0x73, 0xa9, 0x4a, 0xa4, 0x28, 0xa9, 0x60, 0x3a, 0x2a, 0x4f, - 0x45, 0x25, 0x48, 0x09, 0xdd, 0x2b, 0xc6, 0x09, 0x85, 0xea, 0x7d, 0xb3, 0x3c, 0xce, 0x9d, 0x10, - 0x79, 0xec, 0x5b, 0x79, 0x0e, 0x66, 0x87, 0x1a, 0x89, 0x0a, 0x90, 0x59, 0xa9, 0x55, 0xd7, 0xca, - 0x6a, 0xb9, 0x59, 0xdf, 0xdc, 0x90, 0x67, 0x50, 0x1e, 0x02, 0xed, 0x96, 0xa5, 0xf3, 0xe9, 0xd4, - 0x17, 0x92, 0xf2, 0xfb, 0xdf, 0xff, 0xfe, 0xf7, 0x47, 0x94, 0x5f, 0x4b, 0xc0, 0xfc, 0x28, 0x2b, - 0x37, 0xd2, 0xe0, 0xfa, 0x32, 0x89, 0x86, 0x64, 0x52, 0x86, 0x78, 0x5b, 0xdf, 0xc1, 0x6d, 0xda, - 0xb8, 0xfc, 0xc5, 0x27, 0xa6, 0xb2, 0xa3, 0x4b, 0x6b, 0x84, 0x45, 0x65, 0x9c, 0xe8, 0xdd, 0x5c, - 0x72, 0x71, 0x8a, 0x70, 0x7e, 0x3a, 0x04, 0x62, 0xfd, 0xb8, 0x94, 0xcf, 0x40, 0x9a, 0xfc, 0xcf, - 0xba, 0x25, 0xc1, 0xba, 0x85, 0x24, 0xd0, 0x6e, 0x29, 0x41, 0x8a, 0x1a, 0xb6, 0x16, 0xf6, 0xba, - 0x4c, 0x7c, 0x13, 0x53, 0xd0, 0xc2, 0xbb, 0x7a, 0xbf, 0xed, 0x6a, 0xb7, 0xf5, 0x76, 0x1f, 0x53, - 0x13, 0x95, 0x56, 0xb3, 0x3c, 0xf1, 0x06, 0x49, 0x43, 0x0b, 0x90, 0x61, 0x76, 0xd0, 0xb4, 0x5a, - 0xf8, 0x80, 0xce, 0x84, 0x71, 0x95, 0x99, 0xc6, 0x3a, 0x49, 0x21, 0xc5, 0xbf, 0xee, 0xd8, 0x96, - 0x30, 0x26, 0xb4, 0x08, 0x92, 0x40, 0x8b, 0x7f, 0x7e, 0x70, 0x12, 0x7e, 0x70, 0x74, 0xf3, 0x86, - 0xac, 0xdf, 0x63, 0x50, 0xa0, 0x14, 0xcf, 0xf2, 0xb1, 0xaa, 0xb7, 0x8b, 0xb3, 0x54, 0x01, 0xf2, - 0x2c, 0x79, 0x93, 0xa7, 0x2a, 0x3f, 0x1f, 0x81, 0x18, 0x9d, 0x0a, 0x0a, 0x90, 0x69, 0xde, 0xdc, - 0xaa, 0x69, 0x2b, 0x9b, 0xdb, 0x95, 0xb5, 0x9a, 0x2c, 0x91, 0xae, 0xa7, 0x09, 0x57, 0xd7, 0x36, - 0xcb, 0x4d, 0x39, 0xe2, 0x7d, 0xd7, 0x37, 0x9a, 0x97, 0x9f, 0x93, 0xa3, 0x1e, 0xc3, 0x36, 0x4b, - 0x88, 0x05, 0x09, 0x9e, 0xbd, 0x28, 0xc7, 0x91, 0x0c, 0x59, 0x06, 0x50, 0x7f, 0xb5, 0xb6, 0x72, - 0xf9, 0x39, 0x39, 0x11, 0x4e, 0x79, 0xf6, 0xa2, 0x9c, 0x44, 0x39, 0x48, 0xd3, 0x94, 0xca, 0xe6, - 0xe6, 0x9a, 0x9c, 0xf2, 0x30, 0x1b, 0x4d, 0xb5, 0xbe, 0x71, 0x4d, 0x4e, 0x7b, 0x98, 0xd7, 0xd4, - 0xcd, 0xed, 0x2d, 0x19, 0x3c, 0x84, 0xf5, 0x5a, 0xa3, 0x51, 0xbe, 0x56, 0x93, 0x33, 0x1e, 0x45, - 0xe5, 0x66, 0xb3, 0xd6, 0x90, 0xb3, 0xa1, 0x6a, 0x3d, 0x7b, 0x51, 0xce, 0x79, 0x45, 0xd4, 0x36, - 0xb6, 0xd7, 0xe5, 0x3c, 0x9a, 0x85, 0x1c, 0x2b, 0x42, 0x54, 0xa2, 0x30, 0x90, 0x74, 0xf9, 0x39, - 0x59, 0xf6, 0x2b, 0xc2, 0x50, 0x66, 0x43, 0x09, 0x97, 0x9f, 0x93, 0x91, 0x52, 0x85, 0x38, 0x55, - 0x43, 0x84, 0x20, 0xbf, 0x56, 0xae, 0xd4, 0xd6, 0xb4, 0xcd, 0x2d, 0x32, 0x68, 0xca, 0x6b, 0xb2, - 0xe4, 0xa7, 0xa9, 0xb5, 0x57, 0xb6, 0xeb, 0x6a, 0x6d, 0x45, 0x8e, 0x04, 0xd3, 0xb6, 0x6a, 0xe5, - 0x66, 0x6d, 0x45, 0x8e, 0x2a, 0x06, 0xcc, 0x8f, 0x9a, 0x02, 0x47, 0x0e, 0xa1, 0x80, 0x2e, 0x44, - 0xc6, 0xe8, 0x02, 0xc5, 0x1a, 0xd4, 0x05, 0xe5, 0x73, 0x11, 0x98, 0x1b, 0xe1, 0x06, 0x8c, 0x2c, - 0xe4, 0x25, 0x88, 0x33, 0x5d, 0x66, 0xa6, 0xf8, 0xf1, 0x91, 0xfe, 0x04, 0xd5, 0xec, 0x21, 0xe7, - 0x88, 0xf2, 0x05, 0xdd, 0xc6, 0xe8, 0x18, 0xb7, 0x91, 0x40, 0x0c, 0x29, 0xec, 0x37, 0x0d, 0x4d, - 0xd7, 0xcc, 0xa3, 0xb9, 0x3c, 0x8d, 0x47, 0x43, 0xd3, 0x8e, 0x37, 0x6d, 0xc7, 0x47, 0x4c, 0xdb, - 0x57, 0x60, 0x76, 0x08, 0x68, 0xea, 0xe9, 0xf3, 0x03, 0x12, 0x14, 0xc7, 0x09, 0x67, 0x82, 0x49, - 0x8c, 0x84, 0x4c, 0xe2, 0x95, 0x41, 0x09, 0x3e, 0x34, 0xbe, 0x13, 0x86, 0xfa, 0xfa, 0x13, 0x12, - 0x9c, 0x1c, 0xbd, 0x3c, 0x18, 0x59, 0x87, 0x77, 0x43, 0xa2, 0x83, 0xdd, 0x7d, 0x5b, 0x38, 0xc2, - 0x8f, 0x8e, 0x70, 0xaf, 0x48, 0xf6, 0x60, 0x67, 0x73, 0xae, 0xa0, 0x7f, 0x16, 0x1d, 0xe7, 0xe3, - 0xb3, 0xda, 0x0c, 0xd5, 0xf4, 0xdb, 0x23, 0x70, 0x62, 0x24, 0xf8, 0xc8, 0x8a, 0x3e, 0x08, 0x60, - 0x5a, 0xdd, 0xbe, 0xcb, 0x9c, 0x5d, 0x66, 0x89, 0xd3, 0x34, 0x85, 0x1a, 0x2f, 0x62, 0x65, 0xfb, - 0xae, 0x97, 0xcf, 0x26, 0x51, 0x60, 0x49, 0x94, 0xe0, 0x05, 0xbf, 0xa2, 0x31, 0x5a, 0xd1, 0xb3, - 0x63, 0x5a, 0x3a, 0xa4, 0x98, 0x4f, 0x83, 0x6c, 0xb4, 0x4d, 0x6c, 0xb9, 0x9a, 0xe3, 0xf6, 0xb0, - 0xde, 0x31, 0xad, 0x3d, 0x36, 0xcf, 0x2e, 0xc7, 0x77, 0xf5, 0xb6, 0x83, 0xd5, 0x02, 0xcb, 0x6e, - 0x88, 0x5c, 0xc2, 0x41, 0x15, 0xa8, 0x17, 0xe0, 0x48, 0x84, 0x38, 0x58, 0xb6, 0xc7, 0xa1, 0x7c, - 0x4f, 0x1a, 0x32, 0x81, 0xc5, 0x14, 0x7a, 0x08, 0xb2, 0xaf, 0xeb, 0xb7, 0x75, 0x4d, 0x2c, 0x90, - 0x99, 0x24, 0x32, 0x24, 0x6d, 0x8b, 0x2f, 0x92, 0x9f, 0x86, 0x79, 0x4a, 0x62, 0xf7, 0x5d, 0xdc, - 0xd3, 0x8c, 0xb6, 0xee, 0x38, 0x54, 0x68, 0x29, 0x4a, 0x8a, 0x48, 0xde, 0x26, 0xc9, 0xaa, 0x8a, - 0x1c, 0x74, 0x09, 0xe6, 0x28, 0x47, 0xa7, 0xdf, 0x76, 0xcd, 0x6e, 0x1b, 0x6b, 0x64, 0xc9, 0xee, - 0xd0, 0x29, 0xc7, 0xab, 0xd9, 0x2c, 0xa1, 0x58, 0xe7, 0x04, 0xa4, 0x46, 0x0e, 0x5a, 0x81, 0x07, - 0x29, 0xdb, 0x1e, 0xb6, 0x70, 0x4f, 0x77, 0xb1, 0x86, 0xdf, 0xd7, 0xd7, 0xdb, 0x8e, 0xa6, 0x5b, - 0x2d, 0x6d, 0x5f, 0x77, 0xf6, 0x8b, 0xf3, 0x9e, 0x5b, 0x72, 0x9a, 0x10, 0x5e, 0xe3, 0x74, 0x35, - 0x4a, 0x56, 0xb6, 0x5a, 0xab, 0xba, 0xb3, 0x8f, 0x96, 0xe1, 0x24, 0x45, 0x71, 0xdc, 0x9e, 0x69, - 0xed, 0x69, 0xc6, 0x3e, 0x36, 0x6e, 0x69, 0x7d, 0x77, 0xf7, 0x85, 0xe2, 0x99, 0x60, 0xf9, 0xb4, - 0x86, 0x0d, 0x4a, 0x53, 0x25, 0x24, 0xdb, 0xee, 0xee, 0x0b, 0xa8, 0x01, 0x59, 0xd2, 0x19, 0x1d, - 0xf3, 0x0d, 0xac, 0xed, 0xda, 0x3d, 0x3a, 0x87, 0xe6, 0x47, 0x98, 0xa6, 0x80, 0x04, 0x97, 0x36, - 0x39, 0xc3, 0xba, 0xdd, 0xc2, 0xcb, 0xf1, 0xc6, 0x56, 0xad, 0xb6, 0xa2, 0x66, 0x04, 0xca, 0x55, - 0xbb, 0x47, 0x14, 0x6a, 0xcf, 0xf6, 0x04, 0x9c, 0x61, 0x0a, 0xb5, 0x67, 0x0b, 0xf1, 0x5e, 0x82, - 0x39, 0xc3, 0x60, 0x6d, 0x36, 0x0d, 0x8d, 0x2f, 0xac, 0x9d, 0xa2, 0x1c, 0x12, 0x96, 0x61, 0x5c, - 0x63, 0x04, 0x5c, 0xc7, 0x1d, 0xf4, 0x22, 0x9c, 0xf0, 0x85, 0x15, 0x64, 0x9c, 0x1d, 0x6a, 0xe5, - 0x20, 0xeb, 0x25, 0x98, 0xeb, 0x1e, 0x0e, 0x33, 0xa2, 0x50, 0x89, 0xdd, 0xc3, 0x41, 0xb6, 0xe7, - 0x61, 0xbe, 0xbb, 0xdf, 0x1d, 0xe6, 0x3b, 0x1f, 0xe4, 0x43, 0xdd, 0xfd, 0xee, 0x20, 0xe3, 0x23, - 0x34, 0xca, 0xd2, 0xc3, 0x06, 0xf5, 0x0e, 0x4f, 0x05, 0xc9, 0x03, 0x19, 0x68, 0x09, 0x64, 0xc3, - 0xd0, 0xb0, 0xa5, 0xef, 0xb4, 0xb1, 0xa6, 0xf7, 0xb0, 0xa5, 0x3b, 0xc5, 0x05, 0x4a, 0x1c, 0x73, - 0x7b, 0x7d, 0xac, 0xe6, 0x0d, 0xa3, 0x46, 0x33, 0xcb, 0x34, 0x0f, 0x9d, 0x87, 0x59, 0x7b, 0xe7, - 0x75, 0x83, 0x69, 0xa4, 0xd6, 0xed, 0xe1, 0x5d, 0xf3, 0xa0, 0xf8, 0x0e, 0x2a, 0xde, 0x02, 0xc9, - 0xa0, 0xfa, 0xb8, 0x45, 0x93, 0xd1, 0xe3, 0x20, 0x1b, 0xce, 0xbe, 0xde, 0xeb, 0x52, 0x93, 0xec, - 0x74, 0x75, 0x03, 0x17, 0x1f, 0x61, 0xa4, 0x2c, 0x7d, 0x43, 0x24, 0x93, 0x11, 0xe1, 0xdc, 0x31, - 0x77, 0x5d, 0x81, 0xf8, 0x18, 0x1b, 0x11, 0x34, 0x8d, 0xa3, 0x9d, 0x03, 0x99, 0x48, 0x22, 0x54, - 0xf0, 0x39, 0x4a, 0x96, 0xef, 0xee, 0x77, 0x83, 0xe5, 0x3e, 0x0c, 0x39, 0x42, 0xe9, 0x17, 0xfa, - 0x38, 0x73, 0xdc, 0xba, 0xfb, 0x81, 0x12, 0x9f, 0x83, 0x93, 0x84, 0xa8, 0x83, 0x5d, 0xbd, 0xa5, - 0xbb, 0x7a, 0x80, 0xfa, 0x49, 0x4a, 0x4d, 0xc4, 0xbe, 0xce, 0x33, 0x43, 0xf5, 0xec, 0xf5, 0x77, - 0x0e, 0x3d, 0xc5, 0x7a, 0x8a, 0xd5, 0x93, 0xa4, 0x09, 0xd5, 0x7a, 0xdb, 0x56, 0x53, 0xca, 0x32, - 0x64, 0x83, 0x7a, 0x8f, 0xd2, 0xc0, 0x34, 0x5f, 0x96, 0x88, 0x13, 0x54, 0xdd, 0x5c, 0x21, 0xee, - 0xcb, 0x6b, 0x35, 0x39, 0x42, 0xdc, 0xa8, 0xb5, 0x7a, 0xb3, 0xa6, 0xa9, 0xdb, 0x1b, 0xcd, 0xfa, - 0x7a, 0x4d, 0x8e, 0x06, 0x1c, 0xfb, 0xeb, 0xb1, 0xd4, 0xa3, 0xf2, 0x63, 0xca, 0x2f, 0x47, 0x21, - 0x1f, 0x5e, 0x5b, 0xa3, 0x77, 0xc2, 0x29, 0x11, 0x22, 0x73, 0xb0, 0xab, 0xdd, 0x31, 0x7b, 0x74, - 0x40, 0x76, 0x74, 0x36, 0x39, 0x7a, 0xfa, 0x33, 0xcf, 0xa9, 0x1a, 0xd8, 0x7d, 0x8f, 0xd9, 0x23, - 0xc3, 0xad, 0xa3, 0xbb, 0x68, 0x0d, 0x16, 0x2c, 0x5b, 0x73, 0x5c, 0xdd, 0x6a, 0xe9, 0xbd, 0x96, - 0xe6, 0x07, 0x27, 0x35, 0xdd, 0x30, 0xb0, 0xe3, 0xd8, 0x6c, 0x22, 0xf4, 0x50, 0x1e, 0xb0, 0xec, - 0x06, 0x27, 0xf6, 0x67, 0x88, 0x32, 0x27, 0x1d, 0x50, 0xdf, 0xe8, 0x38, 0xf5, 0x3d, 0x03, 0xe9, - 0x8e, 0xde, 0xd5, 0xb0, 0xe5, 0xf6, 0x0e, 0xa9, 0x7f, 0x9e, 0x52, 0x53, 0x1d, 0xbd, 0x5b, 0x23, - 0xdf, 0xe8, 0x06, 0x3c, 0xea, 0x93, 0x6a, 0x6d, 0xbc, 0xa7, 0x1b, 0x87, 0x1a, 0x75, 0xc6, 0x69, - 0xa0, 0x47, 0x33, 0x6c, 0x6b, 0xb7, 0x6d, 0x1a, 0xae, 0x43, 0xed, 0x03, 0xb3, 0x71, 0x8a, 0xcf, - 0xb1, 0x46, 0x19, 0xae, 0x3b, 0xb6, 0x45, 0x7d, 0xf0, 0xaa, 0xa0, 0x7e, 0xfb, 0x7a, 0x38, 0xdc, - 0x4b, 0x31, 0x39, 0x7e, 0x3d, 0x96, 0x8a, 0xcb, 0x89, 0xeb, 0xb1, 0x54, 0x42, 0x4e, 0x5e, 0x8f, - 0xa5, 0x52, 0x72, 0xfa, 0x7a, 0x2c, 0x95, 0x96, 0x41, 0xf9, 0xb6, 0x34, 0x64, 0x83, 0x2b, 0x03, - 0xb2, 0xd0, 0x32, 0xe8, 0xdc, 0x28, 0x51, 0xeb, 0xf9, 0xf0, 0x91, 0xeb, 0x88, 0xa5, 0x2a, 0x99, - 0x34, 0x97, 0x13, 0xcc, 0x0d, 0x57, 0x19, 0x27, 0x71, 0x58, 0x88, 0x5a, 0x63, 0xe6, 0xf6, 0xa4, - 0x54, 0xfe, 0x85, 0xae, 0x41, 0xe2, 0x75, 0x87, 0x62, 0x27, 0x28, 0xf6, 0x3b, 0x8e, 0xc6, 0xbe, - 0xde, 0xa0, 0xe0, 0xe9, 0xeb, 0x0d, 0x6d, 0x63, 0x53, 0x5d, 0x2f, 0xaf, 0xa9, 0x9c, 0x1d, 0x9d, - 0x86, 0x58, 0x5b, 0x7f, 0xe3, 0x30, 0x3c, 0xbd, 0xd2, 0x24, 0xb4, 0x04, 0x85, 0xbe, 0xc5, 0x56, - 0xdd, 0xa4, 0xab, 0x08, 0x55, 0x21, 0x48, 0x95, 0xf7, 0x73, 0xd7, 0x08, 0xfd, 0x94, 0xea, 0x71, - 0x1a, 0x62, 0x77, 0xb0, 0x7e, 0x2b, 0x3c, 0x09, 0xd2, 0x24, 0x74, 0x0e, 0xb2, 0x2d, 0xbc, 0xd3, - 0xdf, 0xd3, 0x7a, 0xb8, 0xa5, 0x1b, 0x6e, 0xd8, 0xf4, 0x67, 0x68, 0x96, 0x4a, 0x73, 0xd0, 0xcb, - 0x90, 0x26, 0x7d, 0x64, 0xd1, 0x3e, 0x9e, 0xa5, 0x22, 0x78, 0xea, 0x68, 0x11, 0xf0, 0x2e, 0x16, - 0x4c, 0xaa, 0xcf, 0x8f, 0xae, 0x43, 0xc2, 0xd5, 0x7b, 0x7b, 0xd8, 0xa5, 0x96, 0x3f, 0x3f, 0x22, - 0x5c, 0x35, 0x02, 0xa9, 0x49, 0x39, 0x88, 0x58, 0xa9, 0x8e, 0x72, 0x04, 0xb4, 0x0a, 0x49, 0xf6, - 0xcb, 0x29, 0xce, 0x2d, 0x46, 0x8f, 0x0f, 0xa6, 0x0a, 0xf6, 0xb7, 0xd1, 0x66, 0x5d, 0x80, 0x38, - 0x55, 0x36, 0x04, 0xc0, 0xd5, 0x4d, 0x9e, 0x41, 0x29, 0x88, 0x55, 0x37, 0x55, 0x62, 0xb7, 0x64, - 0xc8, 0xb2, 0x54, 0x6d, 0xab, 0x5e, 0xab, 0xd6, 0xe4, 0x88, 0x72, 0x09, 0x12, 0x4c, 0x83, 0x88, - 0x4d, 0xf3, 0x74, 0x48, 0x9e, 0xe1, 0x9f, 0x1c, 0x43, 0x12, 0xb9, 0xdb, 0xeb, 0x95, 0x9a, 0x2a, - 0x47, 0x94, 0x6d, 0x28, 0x0c, 0x48, 0x1d, 0x9d, 0x80, 0x59, 0xb5, 0xd6, 0xac, 0x6d, 0x90, 0x55, - 0x9b, 0xb6, 0xbd, 0xf1, 0xf2, 0xc6, 0xe6, 0x7b, 0x36, 0xe4, 0x99, 0x70, 0xb2, 0x30, 0x90, 0x12, - 0x9a, 0x07, 0xd9, 0x4f, 0x6e, 0x6c, 0x6e, 0xab, 0xb4, 0x36, 0xdf, 0x19, 0x01, 0x79, 0x50, 0x6c, - 0xe8, 0x14, 0xcc, 0x35, 0xcb, 0xea, 0xb5, 0x5a, 0x53, 0x63, 0x2b, 0x51, 0x0f, 0x7a, 0x1e, 0xe4, - 0x60, 0xc6, 0xd5, 0x3a, 0x5d, 0x68, 0x2f, 0xc0, 0x99, 0x60, 0x6a, 0xed, 0xd5, 0x66, 0x6d, 0xa3, - 0x41, 0x0b, 0x2f, 0x6f, 0x5c, 0x23, 0xd6, 0x7a, 0x00, 0x4f, 0xac, 0x7d, 0xa3, 0xa4, 0xaa, 0x61, - 0xbc, 0xda, 0xda, 0x8a, 0x1c, 0x1b, 0x4c, 0xde, 0xdc, 0xa8, 0x6d, 0x5e, 0x95, 0xe3, 0x83, 0xa5, - 0xd3, 0xf5, 0x70, 0x02, 0x95, 0xe0, 0xe4, 0x60, 0xaa, 0x56, 0xdb, 0x68, 0xaa, 0x37, 0xe5, 0xe4, - 0x60, 0xc1, 0x8d, 0x9a, 0x7a, 0xa3, 0x5e, 0xad, 0xc9, 0x29, 0x74, 0x12, 0x50, 0xb8, 0x46, 0xcd, - 0xd5, 0xcd, 0x15, 0x39, 0x3d, 0x64, 0x9f, 0x14, 0x07, 0xb2, 0xc1, 0x45, 0xe9, 0xd7, 0xc4, 0x34, - 0x2a, 0x1f, 0x8e, 0x40, 0x26, 0xb0, 0xc8, 0x24, 0xab, 0x03, 0xbd, 0xdd, 0xb6, 0xef, 0x68, 0x7a, - 0xdb, 0xd4, 0x1d, 0x6e, 0xbd, 0x80, 0x26, 0x95, 0x49, 0xca, 0xb4, 0xd6, 0x62, 0xfa, 0xf9, 0x22, - 0xf1, 0xf5, 0x38, 0x5f, 0xc4, 0xe5, 0x84, 0xf2, 0xc3, 0x12, 0xc8, 0x83, 0xab, 0xc7, 0x81, 0xe6, - 0x4b, 0xe3, 0x9a, 0xff, 0x35, 0xe9, 0xbb, 0x8f, 0x4a, 0x90, 0x0f, 0x2f, 0x19, 0x07, 0xaa, 0xf7, - 0xd0, 0x5f, 0x6a, 0xf5, 0x7e, 0x2f, 0x02, 0xb9, 0xd0, 0x42, 0x71, 0xda, 0xda, 0xbd, 0x0f, 0x66, - 0xcd, 0x16, 0xee, 0x74, 0x6d, 0x17, 0x5b, 0xc6, 0xa1, 0xd6, 0xc6, 0xb7, 0x71, 0xbb, 0xa8, 0x50, - 0x13, 0x7f, 0xe1, 0xe8, 0xa5, 0xe8, 0x52, 0xdd, 0xe7, 0x5b, 0x23, 0x6c, 0xcb, 0x73, 0xf5, 0x95, - 0xda, 0xfa, 0xd6, 0x66, 0xb3, 0xb6, 0x51, 0xbd, 0x29, 0xac, 0x8b, 0x2a, 0x9b, 0x03, 0x64, 0x6f, - 0xa3, 0xd1, 0xde, 0x02, 0x79, 0xb0, 0x52, 0xc4, 0x56, 0x8c, 0xa8, 0x96, 0x3c, 0x83, 0xe6, 0xa0, - 0xb0, 0xb1, 0xa9, 0x35, 0xea, 0x2b, 0x35, 0xad, 0x76, 0xf5, 0x6a, 0xad, 0xda, 0x6c, 0xb0, 0xe0, - 0xa2, 0x47, 0xdd, 0x94, 0x23, 0x41, 0x11, 0xff, 0x50, 0x14, 0xe6, 0x46, 0xd4, 0x04, 0x95, 0x79, - 0x58, 0x80, 0x45, 0x2a, 0x9e, 0x9a, 0xa6, 0xf6, 0x4b, 0xc4, 0x31, 0xdf, 0xd2, 0x7b, 0x2e, 0x8f, - 0x22, 0x3c, 0x0e, 0x44, 0x4a, 0x96, 0x4b, 0xfc, 0x84, 0x1e, 0x0f, 0xda, 0xb2, 0x58, 0x41, 0xc1, - 0x4f, 0x67, 0x71, 0xdb, 0x27, 0x01, 0x75, 0x6d, 0xc7, 0x74, 0xcd, 0xdb, 0x58, 0x33, 0x2d, 0x11, - 0xe1, 0x8d, 0x2d, 0x4a, 0xe7, 0x62, 0xaa, 0x2c, 0x72, 0xea, 0x96, 0xeb, 0x51, 0x5b, 0x78, 0x4f, - 0x1f, 0xa0, 0x26, 0x7e, 0x4c, 0x54, 0x95, 0x45, 0x8e, 0x47, 0xfd, 0x10, 0x64, 0x5b, 0x76, 0x9f, - 0x2c, 0xa8, 0x18, 0x1d, 0xb1, 0x16, 0x92, 0x9a, 0x61, 0x69, 0x1e, 0x09, 0x5f, 0x2a, 0xfb, 0xa1, - 0xe5, 0xac, 0x9a, 0x61, 0x69, 0x8c, 0xe4, 0x31, 0x28, 0xe8, 0x7b, 0x7b, 0x3d, 0x02, 0x2e, 0x80, - 0xd8, 0xe2, 0x3f, 0xef, 0x25, 0x53, 0xc2, 0xd2, 0x75, 0x48, 0x09, 0x39, 0x10, 0x7f, 0x98, 0x48, - 0x42, 0xeb, 0xb2, 0x88, 0x56, 0xe4, 0x5c, 0x5a, 0x4d, 0x59, 0x22, 0xf3, 0x21, 0xc8, 0x9a, 0x8e, - 0xe6, 0xef, 0x6d, 0x46, 0x16, 0x23, 0xe7, 0x52, 0x6a, 0xc6, 0x74, 0xbc, 0x3d, 0x12, 0xe5, 0x13, - 0x11, 0xc8, 0x87, 0x77, 0x6d, 0xd1, 0x0a, 0xa4, 0xda, 0x36, 0xdf, 0x64, 0x61, 0x47, 0x06, 0xce, - 0x4d, 0xd8, 0xe8, 0x5d, 0x5a, 0xe3, 0xf4, 0xaa, 0xc7, 0x59, 0xfa, 0x37, 0x12, 0xa4, 0x44, 0x32, - 0x3a, 0x09, 0xb1, 0xae, 0xee, 0xee, 0x53, 0xb8, 0x78, 0x25, 0x22, 0x4b, 0x2a, 0xfd, 0x26, 0xe9, - 0x4e, 0x57, 0x67, 0xfb, 0x44, 0x3c, 0x9d, 0x7c, 0x93, 0x7e, 0x6d, 0x63, 0xbd, 0x45, 0x23, 0x0b, - 0x76, 0xa7, 0x83, 0x2d, 0xd7, 0x11, 0xfd, 0xca, 0xd3, 0xab, 0x3c, 0x19, 0x3d, 0x01, 0xb3, 0x6e, - 0x4f, 0x37, 0xdb, 0x21, 0xda, 0x18, 0xa5, 0x95, 0x45, 0x86, 0x47, 0xbc, 0x0c, 0xa7, 0x05, 0x6e, - 0x0b, 0xbb, 0xba, 0xb1, 0x8f, 0x5b, 0x3e, 0x53, 0x82, 0x46, 0x10, 0x4f, 0x71, 0x82, 0x15, 0x9e, - 0x2f, 0x78, 0x95, 0xcf, 0x44, 0x60, 0x56, 0xc4, 0x42, 0x5a, 0x9e, 0xb0, 0xd6, 0x01, 0x74, 0xcb, - 0xb2, 0xdd, 0xa0, 0xb8, 0x86, 0x55, 0x79, 0x88, 0x6f, 0xa9, 0xec, 0x31, 0xa9, 0x01, 0x80, 0xd2, - 0x1f, 0x4a, 0x00, 0x7e, 0xd6, 0x58, 0xb9, 0x2d, 0x40, 0x86, 0xef, 0xc9, 0xd3, 0x83, 0x1d, 0x2c, - 0x7c, 0x06, 0x2c, 0xe9, 0xaa, 0xd9, 0xa6, 0x41, 0xce, 0x1d, 0xbc, 0x67, 0x5a, 0x7c, 0x77, 0x86, - 0x7d, 0x88, 0x20, 0x67, 0xcc, 0xdf, 0x9e, 0x54, 0x21, 0xe5, 0xe0, 0x8e, 0x6e, 0xb9, 0xa6, 0xc1, - 0xf7, 0x5b, 0x2e, 0x1f, 0xab, 0xf2, 0x4b, 0x0d, 0xce, 0xad, 0x7a, 0x38, 0xca, 0x39, 0x48, 0x89, - 0x54, 0xe2, 0xf8, 0x6d, 0x6c, 0x6e, 0xd4, 0xe4, 0x19, 0x94, 0x84, 0x68, 0xa3, 0xd6, 0x94, 0x25, - 0xb2, 0x88, 0x2d, 0xaf, 0xd5, 0xcb, 0x0d, 0x39, 0x52, 0xf9, 0xff, 0x61, 0xce, 0xb0, 0x3b, 0x83, - 0x05, 0x56, 0xe4, 0x81, 0x00, 0xa2, 0xb3, 0x2a, 0xbd, 0xf6, 0x14, 0x27, 0xda, 0xb3, 0xdb, 0xba, - 0xb5, 0xb7, 0x64, 0xf7, 0xf6, 0xfc, 0x63, 0x31, 0x64, 0xad, 0xe1, 0x04, 0x0e, 0xc7, 0x74, 0x77, - 0xfe, 0x42, 0x92, 0x7e, 0x34, 0x12, 0xbd, 0xb6, 0x55, 0xf9, 0xa9, 0x48, 0xe9, 0x1a, 0x63, 0xdc, - 0x12, 0xcd, 0x51, 0xf1, 0x6e, 0x1b, 0x1b, 0xa4, 0xf2, 0xf0, 0x47, 0x4f, 0xc0, 0xfc, 0x9e, 0xbd, - 0x67, 0x53, 0xa4, 0x0b, 0xe4, 0x17, 0x3f, 0x57, 0x93, 0xf6, 0x52, 0x4b, 0x13, 0x0f, 0xe1, 0x2c, - 0x6f, 0xc0, 0x1c, 0x27, 0xd6, 0xe8, 0xf6, 0x3d, 0x0b, 0x55, 0xa0, 0x23, 0xe3, 0xe4, 0xc5, 0x9f, - 0xfd, 0x03, 0xea, 0x95, 0xa8, 0xb3, 0x9c, 0x95, 0xe4, 0xb1, 0x68, 0xc6, 0xb2, 0x0a, 0x27, 0x42, - 0x78, 0xcc, 0x46, 0xe0, 0xde, 0x04, 0xc4, 0x7f, 0xce, 0x11, 0xe7, 0x02, 0x88, 0x0d, 0xce, 0xba, - 0x5c, 0x85, 0xdc, 0x71, 0xb0, 0xfe, 0x05, 0xc7, 0xca, 0xe2, 0x20, 0xc8, 0x35, 0x28, 0x50, 0x10, - 0xa3, 0xef, 0xb8, 0x76, 0x87, 0x1a, 0xe0, 0xa3, 0x61, 0xfe, 0xe5, 0x1f, 0xb0, 0x41, 0x9b, 0x27, - 0x6c, 0x55, 0x8f, 0x6b, 0x79, 0x19, 0xe8, 0x89, 0x85, 0x16, 0x36, 0xda, 0x13, 0x10, 0x7e, 0x83, - 0x57, 0xc4, 0xa3, 0x5f, 0xbe, 0x01, 0xf3, 0xe4, 0x37, 0xb5, 0x8f, 0xc1, 0x9a, 0x4c, 0x0e, 0xaa, - 0x17, 0xff, 0xed, 0x07, 0x98, 0x5d, 0x98, 0xf3, 0x00, 0x02, 0x75, 0x0a, 0xf4, 0xe2, 0x1e, 0x76, - 0x5d, 0xdc, 0x73, 0x34, 0xbd, 0x3d, 0xaa, 0x7a, 0x81, 0xa8, 0x64, 0xf1, 0x07, 0xbf, 0x14, 0xee, - 0xc5, 0x6b, 0x8c, 0xb3, 0xdc, 0x6e, 0x2f, 0x6f, 0xc3, 0xa9, 0x11, 0x5a, 0x31, 0x05, 0xe6, 0x0f, - 0x71, 0xcc, 0xf9, 0x21, 0xcd, 0x20, 0xb0, 0x5b, 0x20, 0xd2, 0xbd, 0xbe, 0x9c, 0x02, 0xf3, 0x23, - 0x1c, 0x13, 0x71, 0x5e, 0xd1, 0xa5, 0x04, 0xf1, 0x3a, 0xcc, 0xde, 0xc6, 0xbd, 0x1d, 0xdb, 0xe1, - 0x91, 0xe0, 0x29, 0xe0, 0x3e, 0xca, 0xe1, 0x0a, 0x9c, 0x91, 0x86, 0x86, 0x09, 0xd6, 0x8b, 0x90, - 0xda, 0xd5, 0x0d, 0x3c, 0x05, 0xc4, 0x3d, 0x0e, 0x91, 0x24, 0xf4, 0x84, 0xb5, 0x0c, 0xd9, 0x3d, - 0x9b, 0x4f, 0x91, 0x93, 0xd9, 0x7f, 0x98, 0xb3, 0x67, 0x04, 0x0f, 0x87, 0xe8, 0xda, 0xdd, 0x7e, - 0x9b, 0xcc, 0x9f, 0x93, 0x21, 0x7e, 0x44, 0x40, 0x08, 0x1e, 0x0e, 0x71, 0x0c, 0xb1, 0x7e, 0x4c, - 0x40, 0x38, 0x01, 0x79, 0xbe, 0x04, 0x19, 0xdb, 0x6a, 0x1f, 0xda, 0xd6, 0x34, 0x95, 0xf8, 0x38, - 0x47, 0x00, 0xce, 0x42, 0x00, 0xae, 0x40, 0x7a, 0xda, 0x8e, 0xf8, 0xf1, 0x2f, 0x89, 0xe1, 0x21, - 0x7a, 0xe0, 0x1a, 0x14, 0x84, 0x81, 0x32, 0x6d, 0x6b, 0x0a, 0x88, 0x9f, 0xe0, 0x10, 0xf9, 0x00, - 0x1b, 0x6f, 0x86, 0x8b, 0x1d, 0x77, 0x0f, 0x4f, 0x03, 0xf2, 0x09, 0xd1, 0x0c, 0xce, 0xc2, 0x45, - 0xb9, 0x83, 0x2d, 0x63, 0x7f, 0x3a, 0x84, 0x4f, 0x0a, 0x51, 0x0a, 0x1e, 0x02, 0x51, 0x85, 0x5c, - 0x47, 0xef, 0x39, 0xfb, 0x7a, 0x7b, 0xaa, 0xee, 0xf8, 0x49, 0x8e, 0x91, 0xf5, 0x98, 0xb8, 0x44, - 0xfa, 0xd6, 0x71, 0x60, 0x7e, 0x4a, 0x48, 0x24, 0xc0, 0xc6, 0x87, 0x9e, 0xe3, 0xd2, 0xb0, 0xf9, - 0x71, 0xd0, 0xfe, 0x9e, 0x18, 0x7a, 0x8c, 0x77, 0x3d, 0x88, 0x78, 0x05, 0xd2, 0x8e, 0xf9, 0xc6, - 0x54, 0x30, 0x7f, 0x5f, 0xf4, 0x34, 0x65, 0x20, 0xcc, 0x37, 0xe1, 0xf4, 0xc8, 0x69, 0x62, 0x0a, - 0xb0, 0x9f, 0xe6, 0x60, 0x27, 0x47, 0x4c, 0x15, 0xdc, 0x24, 0x1c, 0x17, 0xf2, 0x1f, 0x08, 0x93, - 0x80, 0x07, 0xb0, 0xb6, 0xc8, 0xa2, 0xc5, 0xd1, 0x77, 0x8f, 0x27, 0xb5, 0x7f, 0x28, 0xa4, 0xc6, - 0x78, 0x43, 0x52, 0x6b, 0xc2, 0x49, 0x8e, 0x78, 0xbc, 0x7e, 0xfd, 0x19, 0x61, 0x58, 0x19, 0xf7, - 0x76, 0xb8, 0x77, 0xbf, 0x01, 0x4a, 0x9e, 0x38, 0x85, 0x77, 0xec, 0x68, 0x1d, 0xbd, 0x3b, 0x05, - 0xf2, 0xcf, 0x72, 0x64, 0x61, 0xf1, 0x3d, 0xf7, 0xda, 0x59, 0xd7, 0xbb, 0x04, 0xfc, 0x55, 0x28, - 0x0a, 0xf0, 0xbe, 0xd5, 0xc3, 0x86, 0xbd, 0x67, 0x99, 0x6f, 0xe0, 0xd6, 0x14, 0xd0, 0x3f, 0x37, - 0xd0, 0x55, 0xdb, 0x01, 0x76, 0x82, 0x5c, 0x07, 0xd9, 0xf3, 0x55, 0x34, 0xb3, 0xd3, 0xb5, 0x7b, - 0xee, 0x04, 0xc4, 0x4f, 0x89, 0x9e, 0xf2, 0xf8, 0xea, 0x94, 0x6d, 0xb9, 0x06, 0xec, 0x2c, 0xc9, - 0xb4, 0x2a, 0xf9, 0x69, 0x0e, 0x94, 0xf3, 0xb9, 0xb8, 0xe1, 0x30, 0xec, 0x4e, 0x57, 0xef, 0x4d, - 0x63, 0xff, 0xfe, 0x91, 0x30, 0x1c, 0x9c, 0x85, 0x1b, 0x0e, 0xe2, 0xd1, 0x91, 0xd9, 0x7e, 0x0a, - 0x84, 0x9f, 0x17, 0x86, 0x43, 0xf0, 0x70, 0x08, 0xe1, 0x30, 0x4c, 0x01, 0xf1, 0x0b, 0x02, 0x42, - 0xf0, 0x10, 0x88, 0x57, 0xfc, 0x89, 0xb6, 0x87, 0xf7, 0x4c, 0xc7, 0xe5, 0x87, 0xc1, 0x8e, 0x86, - 0xfa, 0xc5, 0x2f, 0x85, 0x9d, 0x30, 0x35, 0xc0, 0x4a, 0x2c, 0x11, 0xdf, 0x48, 0xa1, 0x4b, 0xb6, - 0xc9, 0x15, 0xfb, 0x25, 0x61, 0x89, 0x02, 0x6c, 0xa4, 0x6e, 0x01, 0x0f, 0x91, 0x88, 0xdd, 0x20, - 0x0b, 0x95, 0x29, 0xe0, 0xfe, 0xf1, 0x40, 0xe5, 0x1a, 0x82, 0x97, 0x60, 0x06, 0xfc, 0x9f, 0xbe, - 0x75, 0x0b, 0x1f, 0x4e, 0xa5, 0x9d, 0xbf, 0x3c, 0xe0, 0xff, 0x6c, 0x33, 0x4e, 0x66, 0x43, 0x0a, - 0x03, 0xfe, 0x14, 0x9a, 0x74, 0xd6, 0xb3, 0xf8, 0x2d, 0x5f, 0xe6, 0xed, 0x0d, 0xbb, 0x53, 0xcb, - 0x6b, 0x44, 0xc9, 0xc3, 0x4e, 0xcf, 0x64, 0xb0, 0x0f, 0x7c, 0xd9, 0xd3, 0xf3, 0x90, 0xcf, 0xb3, - 0x7c, 0x15, 0x72, 0x21, 0x87, 0x67, 0x32, 0xd4, 0xb7, 0x72, 0xa8, 0x6c, 0xd0, 0xdf, 0x59, 0xbe, - 0x04, 0x31, 0xe2, 0xbc, 0x4c, 0x66, 0xff, 0x36, 0xce, 0x4e, 0xc9, 0x97, 0xdf, 0x05, 0x29, 0xe1, - 0xb4, 0x4c, 0x66, 0xfd, 0x9b, 0x9c, 0xd5, 0x63, 0x21, 0xec, 0xc2, 0x61, 0x99, 0xcc, 0xfe, 0xb7, - 0x04, 0xbb, 0x60, 0x21, 0xec, 0xd3, 0x8b, 0xf0, 0x57, 0xbf, 0x23, 0xc6, 0x27, 0x1d, 0x21, 0xbb, - 0x2b, 0x90, 0xe4, 0x9e, 0xca, 0x64, 0xee, 0x6f, 0xe7, 0x85, 0x0b, 0x8e, 0xe5, 0xe7, 0x21, 0x3e, - 0xa5, 0xc0, 0xbf, 0x8b, 0xb3, 0x32, 0xfa, 0xe5, 0x2a, 0x64, 0x02, 0xde, 0xc9, 0x64, 0xf6, 0xef, - 0xe6, 0xec, 0x41, 0x2e, 0x52, 0x75, 0xee, 0x9d, 0x4c, 0x06, 0xf8, 0xdb, 0xa2, 0xea, 0x9c, 0x83, - 0x88, 0x4d, 0x38, 0x26, 0x93, 0xb9, 0x3f, 0x24, 0xa4, 0x2e, 0x58, 0x96, 0x5f, 0x82, 0xb4, 0x37, - 0xd9, 0x4c, 0xe6, 0xff, 0x1e, 0xce, 0xef, 0xf3, 0x10, 0x09, 0x04, 0x26, 0xbb, 0xc9, 0x10, 0x7f, - 0x47, 0x48, 0x20, 0xc0, 0x45, 0x86, 0xd1, 0xa0, 0x03, 0x33, 0x19, 0xe9, 0x7b, 0xc5, 0x30, 0x1a, - 0xf0, 0x5f, 0x48, 0x6f, 0x52, 0x9b, 0x3f, 0x19, 0xe2, 0xfb, 0x44, 0x6f, 0x52, 0x7a, 0x52, 0x8d, - 0x41, 0x8f, 0x60, 0x32, 0xc6, 0x0f, 0x88, 0x6a, 0x0c, 0x38, 0x04, 0xcb, 0x5b, 0x80, 0x86, 0xbd, - 0x81, 0xc9, 0x78, 0x1f, 0xe6, 0x78, 0xb3, 0x43, 0xce, 0xc0, 0xf2, 0x7b, 0xe0, 0xe4, 0x68, 0x4f, - 0x60, 0x32, 0xea, 0x0f, 0x7e, 0x79, 0x60, 0xed, 0x16, 0x74, 0x04, 0x96, 0x9b, 0xfe, 0x94, 0x12, - 0xf4, 0x02, 0x26, 0xc3, 0xfe, 0xd0, 0x97, 0xc3, 0x86, 0x3b, 0xe8, 0x04, 0x2c, 0x97, 0x01, 0xfc, - 0x09, 0x78, 0x32, 0xd6, 0x47, 0x39, 0x56, 0x80, 0x89, 0x0c, 0x0d, 0x3e, 0xff, 0x4e, 0xe6, 0xbf, - 0x27, 0x86, 0x06, 0xe7, 0x20, 0x43, 0x43, 0x4c, 0xbd, 0x93, 0xb9, 0x7f, 0x58, 0x0c, 0x0d, 0xc1, - 0x42, 0x34, 0x3b, 0x30, 0xbb, 0x4d, 0x46, 0xf8, 0xb8, 0xd0, 0xec, 0x00, 0xd7, 0xf2, 0x06, 0xcc, - 0x0e, 0x4d, 0x88, 0x93, 0xa1, 0x7e, 0x94, 0x43, 0xc9, 0x83, 0xf3, 0x61, 0x70, 0xf2, 0xe2, 0x93, - 0xe1, 0x64, 0xb4, 0x1f, 0x1b, 0x98, 0xbc, 0xf8, 0x5c, 0xb8, 0x7c, 0x05, 0x52, 0x56, 0xbf, 0xdd, - 0x26, 0x83, 0x07, 0x1d, 0x7d, 0xda, 0xb7, 0xf8, 0x5f, 0xbe, 0xc2, 0xa5, 0x23, 0x18, 0x96, 0x2f, - 0x41, 0x1c, 0x77, 0x76, 0x70, 0x6b, 0x12, 0xe7, 0x17, 0xbf, 0x22, 0x0c, 0x26, 0xa1, 0x5e, 0x7e, - 0x09, 0x80, 0x85, 0x46, 0xe8, 0x36, 0xfc, 0x04, 0xde, 0x3f, 0xfc, 0x0a, 0x3f, 0x5e, 0xe7, 0xb3, - 0xf8, 0x00, 0xec, 0xb0, 0xde, 0xd1, 0x00, 0x5f, 0x0a, 0x03, 0xd0, 0x1e, 0x79, 0x11, 0x92, 0xaf, - 0x3b, 0xb6, 0xe5, 0xea, 0x7b, 0x93, 0xb8, 0xff, 0x88, 0x73, 0x0b, 0x7a, 0x22, 0xb0, 0x8e, 0xdd, - 0xc3, 0xae, 0xbe, 0xe7, 0x4c, 0xe2, 0xfd, 0xaf, 0x9c, 0xd7, 0x63, 0x20, 0xcc, 0x86, 0xee, 0xb8, - 0xd3, 0xb4, 0xfb, 0xbf, 0x09, 0x66, 0xc1, 0x40, 0x2a, 0x4d, 0x7e, 0xdf, 0xc2, 0x87, 0x93, 0x78, - 0xff, 0x58, 0x54, 0x9a, 0xd3, 0x2f, 0xbf, 0x0b, 0xd2, 0xe4, 0x27, 0x3b, 0x33, 0x3b, 0x81, 0xf9, - 0x4f, 0x38, 0xb3, 0xcf, 0x41, 0x4a, 0x76, 0xdc, 0x96, 0x6b, 0x4e, 0x16, 0xf6, 0x9f, 0xf2, 0x9e, - 0x16, 0xf4, 0xcb, 0x65, 0xc8, 0x38, 0x6e, 0xab, 0xd5, 0xe7, 0xfe, 0xe9, 0x04, 0xf6, 0x3f, 0xfb, - 0x8a, 0x17, 0xb2, 0xf0, 0x78, 0x48, 0x6f, 0xdf, 0xb9, 0xe5, 0x76, 0x6d, 0xba, 0xdf, 0x32, 0x09, - 0xe1, 0xcb, 0x1c, 0x21, 0xc0, 0xb2, 0x5c, 0x85, 0x2c, 0x69, 0x8b, 0xb8, 0x8b, 0x30, 0x09, 0xe2, - 0xcf, 0xb9, 0x00, 0x42, 0x4c, 0x95, 0x6f, 0xfe, 0x8d, 0xcf, 0x9e, 0x95, 0x3e, 0xf3, 0xd9, 0xb3, - 0xd2, 0xef, 0x7d, 0xf6, 0xac, 0xf4, 0xa1, 0xcf, 0x9d, 0x9d, 0xf9, 0xcc, 0xe7, 0xce, 0xce, 0xfc, - 0xce, 0xe7, 0xce, 0xce, 0x8c, 0x8e, 0x12, 0xc3, 0x35, 0xfb, 0x9a, 0xcd, 0xe2, 0xc3, 0xaf, 0x3d, - 0xb2, 0x67, 0xba, 0xfb, 0xfd, 0x9d, 0x25, 0xc3, 0xee, 0x5c, 0x30, 0x6c, 0xa7, 0x63, 0x3b, 0x17, - 0xc2, 0x71, 0x5d, 0xfa, 0x0b, 0xfe, 0x97, 0x44, 0xd6, 0xcc, 0xe1, 0x70, 0xae, 0x6e, 0x1d, 0x8e, - 0xbb, 0x4c, 0x79, 0x19, 0xa2, 0x65, 0xeb, 0x10, 0x9d, 0x66, 0x06, 0x4e, 0xeb, 0xf7, 0xda, 0xfc, - 0xe0, 0x66, 0x92, 0x7c, 0x6f, 0xf7, 0xda, 0x68, 0xde, 0x3f, 0x5d, 0x2d, 0x9d, 0xcb, 0xf2, 0x23, - 0xd3, 0x95, 0xef, 0x96, 0x8e, 0xd7, 0x92, 0x54, 0xd9, 0x3a, 0xa4, 0x0d, 0xd9, 0x92, 0x5e, 0x7b, - 0x72, 0x62, 0x9c, 0xfb, 0x96, 0x65, 0xdf, 0xb1, 0x48, 0xb5, 0xbb, 0x3b, 0x22, 0xc6, 0x7d, 0x76, - 0x30, 0xc6, 0xfd, 0x1e, 0xdc, 0x6e, 0xbf, 0x4c, 0xe8, 0x9a, 0x84, 0x65, 0x27, 0xc1, 0xee, 0x08, - 0xc0, 0xf7, 0x46, 0xe0, 0xec, 0x50, 0x38, 0x9b, 0x2b, 0xc1, 0x38, 0x21, 0x2c, 0x43, 0x6a, 0x45, - 0xe8, 0x56, 0x11, 0x92, 0x0e, 0x36, 0x6c, 0xab, 0xe5, 0x50, 0x41, 0x44, 0x55, 0xf1, 0x49, 0x04, - 0x61, 0xe9, 0x96, 0xed, 0xf0, 0xa3, 0xcf, 0xec, 0xa3, 0xf2, 0x91, 0x63, 0x0a, 0x22, 0x27, 0x4a, - 0x12, 0xd2, 0x78, 0x66, 0x4a, 0x69, 0x88, 0x46, 0x84, 0x22, 0xff, 0xd3, 0x4a, 0xe5, 0x07, 0x22, - 0xb0, 0x30, 0x28, 0x15, 0x32, 0xb2, 0x1c, 0x57, 0xef, 0x74, 0xc7, 0x89, 0xe5, 0x0a, 0xa4, 0x9b, - 0x82, 0xe6, 0xd8, 0x72, 0xb9, 0x77, 0x4c, 0xb9, 0xe4, 0xbd, 0xa2, 0x84, 0x60, 0x2e, 0x4e, 0x29, - 0x18, 0xaf, 0x1d, 0xf7, 0x25, 0x99, 0xff, 0x99, 0x80, 0xd3, 0x6c, 0x38, 0x69, 0x6c, 0x28, 0xb1, - 0x0f, 0x2e, 0x93, 0x6c, 0x30, 0x6b, 0xf2, 0x3e, 0x89, 0xf2, 0x32, 0xcc, 0xd5, 0x89, 0xb5, 0x20, - 0xab, 0x20, 0x7f, 0x87, 0x67, 0xe4, 0xe9, 0xf0, 0xc5, 0x90, 0xc3, 0xcf, 0xf7, 0xb7, 0x82, 0x49, - 0xca, 0xb7, 0x48, 0x20, 0x37, 0x0c, 0xbd, 0xad, 0xf7, 0xbe, 0x5a, 0x28, 0xf4, 0x3c, 0x00, 0x3b, - 0xee, 0xe1, 0x5d, 0xdc, 0xcc, 0x5f, 0x2c, 0x2e, 0x05, 0x1b, 0xb7, 0xc4, 0x4a, 0xa2, 0x47, 0xa8, - 0xd2, 0x94, 0x96, 0xfc, 0x3c, 0xff, 0x2a, 0x80, 0x9f, 0x81, 0xce, 0xc0, 0xa9, 0x46, 0xb5, 0xbc, - 0x56, 0x56, 0xc5, 0x21, 0xa1, 0xc6, 0x56, 0xad, 0xca, 0xae, 0x59, 0xcd, 0xa0, 0x93, 0x80, 0x82, - 0x99, 0xde, 0xa1, 0xa6, 0x13, 0x30, 0x1b, 0x4c, 0x67, 0x77, 0x5e, 0x22, 0xc4, 0x53, 0x34, 0x3b, - 0xdd, 0x36, 0xa6, 0x3b, 0x8f, 0x9a, 0x29, 0xa4, 0x36, 0xd9, 0x09, 0xf9, 0xcd, 0x7f, 0xc7, 0xee, - 0x41, 0xcc, 0xf9, 0xec, 0x9e, 0xcc, 0x97, 0xd7, 0x60, 0x56, 0x37, 0x0c, 0xdc, 0x0d, 0x41, 0x4e, - 0x30, 0xd5, 0x04, 0x90, 0xee, 0xa5, 0x72, 0x4e, 0x1f, 0xed, 0x79, 0x48, 0x38, 0xb4, 0xf5, 0x93, - 0x20, 0x7e, 0x8b, 0x43, 0x70, 0xf2, 0x65, 0x0b, 0x66, 0xd9, 0xbd, 0x3e, 0x1c, 0xa8, 0xc6, 0xd1, - 0x71, 0x86, 0x7f, 0xf2, 0xa9, 0xa7, 0xe9, 0xce, 0xea, 0x43, 0xe1, 0x6e, 0x19, 0xa1, 0x4e, 0xaa, - 0xcc, 0xb1, 0xfd, 0x8a, 0x62, 0xc8, 0x8b, 0xf2, 0x78, 0x85, 0x8f, 0x2e, 0xec, 0x57, 0x78, 0x61, - 0x67, 0x47, 0xe9, 0x40, 0xa0, 0xa4, 0x1c, 0x47, 0x65, 0x19, 0x95, 0xda, 0xb8, 0x31, 0xfd, 0xda, - 0x13, 0xc3, 0xb3, 0x13, 0xfb, 0xef, 0x29, 0x8a, 0x7c, 0x25, 0x58, 0x8c, 0x37, 0xf6, 0x3e, 0x12, - 0x83, 0x59, 0xbd, 0x63, 0x5a, 0xf6, 0x05, 0xfa, 0x2f, 0x1f, 0x73, 0x71, 0xfa, 0x31, 0xc5, 0xa6, - 0xe4, 0x65, 0x36, 0x14, 0x26, 0x6b, 0xcc, 0x9f, 0x7c, 0xe7, 0x4f, 0xc4, 0xfd, 0xe1, 0xb2, 0xbc, - 0x0e, 0xb2, 0x38, 0x12, 0x8c, 0x2d, 0xc3, 0x6e, 0x4d, 0x15, 0xa5, 0xf8, 0x53, 0x81, 0x21, 0xe2, - 0x5b, 0x35, 0xce, 0xba, 0xfc, 0x4e, 0x48, 0x79, 0x30, 0x93, 0x3c, 0x13, 0x01, 0xe2, 0x71, 0x10, - 0xbf, 0x84, 0x8d, 0xcc, 0x69, 0xbc, 0xd0, 0x2f, 0x0b, 0x7e, 0x36, 0x42, 0x37, 0x48, 0x6b, 0xae, - 0x41, 0xbe, 0x65, 0x5b, 0xae, 0x66, 0x77, 0x4c, 0x17, 0x77, 0xba, 0xee, 0x44, 0xbf, 0xee, 0xcf, - 0x19, 0x48, 0x4a, 0xcd, 0x11, 0xbe, 0x4d, 0xc1, 0x46, 0x6a, 0xc2, 0x6e, 0xfd, 0x4d, 0x53, 0x93, - 0xff, 0xee, 0xd5, 0x84, 0xf2, 0x90, 0x9a, 0xdc, 0x97, 0x76, 0x38, 0xad, 0x5b, 0xdc, 0x98, 0xbb, - 0x07, 0x4c, 0x0b, 0x3c, 0xed, 0xf8, 0x44, 0x14, 0xce, 0x72, 0xe2, 0x1d, 0xdd, 0xc1, 0x17, 0x6e, - 0x3f, 0xb3, 0x83, 0x5d, 0xfd, 0x99, 0x0b, 0x86, 0x6d, 0x8a, 0x99, 0x7c, 0x8e, 0x1b, 0x6b, 0x92, - 0xbf, 0xc4, 0xf3, 0x4b, 0x23, 0xb7, 0xbb, 0x4b, 0xe3, 0x8d, 0x7c, 0x69, 0x58, 0x07, 0x95, 0x36, - 0xc4, 0xaa, 0xb6, 0x69, 0x91, 0xb9, 0xad, 0x85, 0x2d, 0xbb, 0xc3, 0xcd, 0x2d, 0xfb, 0x40, 0xab, - 0x90, 0xd0, 0x3b, 0x76, 0xdf, 0x72, 0x99, 0xa9, 0xad, 0x3c, 0xfd, 0x1b, 0x6f, 0x2e, 0xcc, 0xfc, - 0xc7, 0x37, 0x17, 0x4e, 0x30, 0x58, 0xa7, 0x75, 0x6b, 0xc9, 0xb4, 0x2f, 0x74, 0x74, 0x77, 0x9f, - 0x0c, 0xdf, 0xdf, 0xfe, 0xf4, 0x53, 0xc0, 0xcb, 0xab, 0x5b, 0xee, 0x27, 0x3f, 0xff, 0x33, 0xe7, - 0x25, 0x95, 0xf3, 0x2f, 0xc7, 0xbe, 0xf0, 0xb1, 0x05, 0x49, 0xe9, 0x42, 0x72, 0x05, 0x1b, 0x47, - 0x14, 0x58, 0x1f, 0x28, 0xf0, 0x19, 0x5e, 0xe0, 0x99, 0xe1, 0x02, 0xd9, 0x81, 0xbd, 0x15, 0x6c, - 0x04, 0x8a, 0x5d, 0xc1, 0x46, 0xb8, 0xc4, 0xca, 0xca, 0xef, 0xfc, 0xfe, 0xd9, 0x99, 0xf7, 0x7f, - 0xf6, 0xec, 0xcc, 0xd8, 0x2e, 0x53, 0x26, 0x77, 0x99, 0xd7, 0x53, 0x3f, 0x11, 0x83, 0x07, 0xe9, - 0xfd, 0xd2, 0x5e, 0xc7, 0xb4, 0xdc, 0x0b, 0x46, 0xef, 0xb0, 0xeb, 0xda, 0x64, 0xe0, 0xda, 0xbb, - 0xbc, 0xa3, 0x66, 0xfd, 0xec, 0x25, 0x96, 0x3d, 0xba, 0x9b, 0x94, 0x5d, 0x88, 0x6f, 0x11, 0x3e, - 0x22, 0x08, 0xd7, 0x76, 0xf5, 0x36, 0xf7, 0x36, 0xd8, 0x07, 0x49, 0x65, 0x77, 0x52, 0x23, 0x2c, - 0xd5, 0x14, 0xd7, 0x51, 0xdb, 0x58, 0xdf, 0x65, 0x57, 0x7b, 0xa2, 0xd4, 0x4d, 0x4d, 0x91, 0x04, - 0x7a, 0x8b, 0x67, 0x1e, 0xe2, 0x7a, 0x9f, 0x1d, 0x98, 0x89, 0x12, 0xff, 0x95, 0x7e, 0x28, 0x2f, - 0x43, 0x92, 0xef, 0x9b, 0x23, 0x19, 0xa2, 0xb7, 0xf0, 0x21, 0x2d, 0x27, 0xab, 0x92, 0x9f, 0x68, - 0x09, 0xe2, 0xb4, 0xf2, 0xfc, 0xce, 0x62, 0x71, 0x69, 0xa8, 0xf6, 0x4b, 0xb4, 0x92, 0x2a, 0x23, - 0x53, 0xae, 0x43, 0x6a, 0xc5, 0x26, 0xda, 0x13, 0x46, 0x4b, 0x33, 0x34, 0x5a, 0xe7, 0x6e, 0x9f, - 0xf7, 0x9d, 0xca, 0x3e, 0xd0, 0x49, 0x48, 0xb0, 0xab, 0x5e, 0xfc, 0xd0, 0x0f, 0xff, 0x52, 0xaa, - 0x90, 0xa4, 0xd8, 0x9b, 0x5d, 0xef, 0x7a, 0xb5, 0x14, 0xb8, 0x5e, 0xcd, 0xe1, 0x23, 0x7e, 0x65, - 0x11, 0xc4, 0x5a, 0xba, 0xab, 0xf3, 0x76, 0xd3, 0xdf, 0xca, 0xbb, 0x21, 0xc5, 0x41, 0x1c, 0x74, - 0x11, 0xa2, 0x76, 0xd7, 0xe1, 0xc7, 0x76, 0x4a, 0xe3, 0x9a, 0xb2, 0xd9, 0xad, 0xc4, 0x88, 0x52, - 0xa9, 0x84, 0xb8, 0xb2, 0x31, 0x56, 0x2d, 0x9e, 0x0b, 0xa9, 0x45, 0x07, 0xbb, 0x3b, 0xbb, 0xae, - 0xff, 0x83, 0x75, 0xe7, 0x90, 0x2a, 0x78, 0x8a, 0x72, 0x2f, 0x02, 0x67, 0x03, 0xb9, 0xb7, 0x71, - 0xcf, 0x31, 0x6d, 0x8b, 0x69, 0x13, 0xd7, 0x14, 0x14, 0xa8, 0x20, 0xcf, 0x1f, 0xa3, 0x2a, 0xef, - 0x82, 0x68, 0xb9, 0xdb, 0x45, 0x25, 0x48, 0xd1, 0x6f, 0xc3, 0x66, 0xba, 0x12, 0x53, 0xbd, 0x6f, - 0x92, 0xe7, 0xd8, 0xbb, 0xee, 0x1d, 0xbd, 0xe7, 0xdd, 0x84, 0x16, 0xdf, 0xca, 0x8b, 0x90, 0xae, - 0xda, 0x96, 0x83, 0x2d, 0xa7, 0x4f, 0x7d, 0xd8, 0x9d, 0xb6, 0x6d, 0xdc, 0xe2, 0x08, 0xec, 0x83, - 0x08, 0x5b, 0xef, 0x76, 0x29, 0x67, 0x4c, 0x25, 0x3f, 0xf9, 0xe8, 0xd9, 0x1c, 0x2b, 0x9e, 0x4b, - 0xc7, 0x13, 0x0f, 0x6f, 0xa0, 0xef, 0x8c, 0x4a, 0xf0, 0xc0, 0xf0, 0x40, 0xba, 0x85, 0x0f, 0x9d, - 0xe3, 0x8e, 0xa3, 0x57, 0x21, 0xbd, 0x45, 0x9f, 0x95, 0x79, 0x19, 0x1f, 0xa2, 0x12, 0x24, 0x71, - 0xeb, 0xe2, 0xa5, 0x4b, 0xcf, 0xbc, 0xc8, 0xb4, 0x7c, 0x75, 0x46, 0x15, 0x09, 0xe8, 0x2c, 0xa4, - 0x1d, 0x6c, 0x74, 0x2f, 0x5e, 0xba, 0x7c, 0xeb, 0x19, 0xa6, 0x56, 0xab, 0x33, 0xaa, 0x9f, 0xb4, - 0x9c, 0x22, 0x2d, 0xfe, 0xc2, 0xc7, 0x17, 0xa4, 0x4a, 0x1c, 0xa2, 0x4e, 0xbf, 0xf3, 0xb6, 0xe9, - 0xc6, 0x1f, 0x27, 0x60, 0x31, 0x90, 0xcb, 0x26, 0x85, 0xdb, 0x7a, 0xdb, 0x6c, 0xe9, 0xfe, 0x63, - 0x40, 0x72, 0xa0, 0xfd, 0x94, 0x62, 0x8c, 0xb5, 0x3f, 0x52, 0x8a, 0xca, 0xcf, 0x49, 0x90, 0xbd, - 0x21, 0x90, 0x1b, 0xd8, 0x45, 0x57, 0x00, 0xbc, 0x92, 0xc4, 0x50, 0x39, 0xb3, 0x34, 0x58, 0xd6, - 0x92, 0xc7, 0xa3, 0x06, 0xc8, 0xd1, 0xf3, 0x54, 0x01, 0xbb, 0xb6, 0xc3, 0x6f, 0xc5, 0x4e, 0x60, - 0xf5, 0x88, 0xd1, 0x93, 0x80, 0xa8, 0x55, 0xd3, 0x6e, 0xdb, 0xae, 0x69, 0xed, 0x69, 0x5d, 0xfb, - 0x0e, 0x7f, 0x6b, 0x20, 0xaa, 0xca, 0x34, 0xe7, 0x06, 0xcd, 0xd8, 0x22, 0xe9, 0xa4, 0xd2, 0x69, - 0x0f, 0x85, 0x2c, 0xc7, 0xf4, 0x56, 0xab, 0x87, 0x1d, 0x87, 0x1b, 0x2e, 0xf1, 0x89, 0xae, 0x40, - 0xb2, 0xdb, 0xdf, 0xd1, 0x84, 0x95, 0xc8, 0x5c, 0x7c, 0x60, 0xd4, 0x98, 0x17, 0xba, 0xc1, 0x47, - 0x7d, 0xa2, 0xdb, 0xdf, 0x21, 0x9a, 0xf2, 0x10, 0x64, 0x47, 0x54, 0x26, 0x73, 0xdb, 0xaf, 0x07, - 0x7d, 0xc9, 0x88, 0xb7, 0x40, 0xeb, 0xf6, 0x4c, 0xbb, 0x67, 0xba, 0x87, 0xf4, 0xb8, 0x5d, 0x54, - 0x95, 0x45, 0xc6, 0x16, 0x4f, 0x57, 0x6e, 0x41, 0xa1, 0x41, 0xdd, 0x74, 0xbf, 0xe6, 0x97, 0xfc, - 0xfa, 0x49, 0x93, 0xeb, 0x37, 0xb6, 0x66, 0x91, 0xa1, 0x9a, 0x9d, 0xff, 0xf7, 0x12, 0x64, 0x2a, - 0x64, 0xe0, 0xd6, 0x57, 0xae, 0xb6, 0xf5, 0x3d, 0xf4, 0x0c, 0x9c, 0xa8, 0xac, 0x6d, 0x56, 0x5f, - 0xd6, 0xea, 0x2b, 0xda, 0xd5, 0xb5, 0xf2, 0x35, 0xff, 0x7c, 0x6f, 0xe9, 0xe4, 0xdd, 0x7b, 0x8b, - 0x28, 0x40, 0xbb, 0x6d, 0xd1, 0xb5, 0x24, 0xba, 0x00, 0xf3, 0x61, 0x96, 0x72, 0xa5, 0x51, 0xdb, - 0x68, 0xca, 0x52, 0xe9, 0xc4, 0xdd, 0x7b, 0x8b, 0xb3, 0x01, 0x8e, 0xf2, 0x8e, 0x83, 0x2d, 0x77, - 0x98, 0xa1, 0xba, 0xb9, 0xbe, 0x5e, 0x6f, 0xca, 0x91, 0x21, 0x86, 0xaa, 0xdd, 0xe9, 0x98, 0x2e, - 0x7a, 0x1c, 0x66, 0xc3, 0x0c, 0x1b, 0xf5, 0x35, 0x39, 0x5a, 0x42, 0x77, 0xef, 0x2d, 0xe6, 0x03, - 0xd4, 0x1b, 0x66, 0xbb, 0x94, 0xfa, 0xe0, 0x8f, 0x9d, 0x9d, 0xf9, 0xe4, 0xdf, 0x3d, 0x2b, 0x55, - 0xd6, 0xc7, 0x8e, 0xb9, 0x67, 0x8f, 0x37, 0xe6, 0xc2, 0xf3, 0xf6, 0x57, 0x1e, 0x08, 0x99, 0x1b, - 0xee, 0x87, 0x05, 0x8c, 0xf1, 0xb4, 0xc3, 0x6d, 0x52, 0x6c, 0xa1, 0x74, 0xb4, 0x7b, 0x50, 0x9a, - 0x30, 0x29, 0x94, 0x26, 0x1a, 0x06, 0xe5, 0x45, 0xc8, 0x6d, 0xe9, 0x3d, 0xb7, 0x81, 0xdd, 0x55, - 0xac, 0xb7, 0x70, 0x2f, 0xec, 0x3f, 0xe4, 0x84, 0xff, 0x80, 0x20, 0x46, 0x9d, 0x04, 0x36, 0x7f, - 0xd2, 0xdf, 0xca, 0x3e, 0xc4, 0xe8, 0x49, 0x62, 0xcf, 0xb7, 0xe0, 0x1c, 0xcc, 0xb7, 0x20, 0x33, - 0xc3, 0xa1, 0x8b, 0x1d, 0x11, 0xfe, 0xa2, 0x1f, 0xe8, 0x39, 0xe1, 0x21, 0x44, 0x8f, 0xf6, 0x10, - 0xf8, 0xf0, 0xe2, 0x7e, 0x42, 0x1b, 0x92, 0xbc, 0x8b, 0xbd, 0x8a, 0x48, 0x7e, 0x45, 0xd0, 0x3a, - 0x14, 0xba, 0x7a, 0xcf, 0xa5, 0xf7, 0x14, 0xf7, 0x69, 0x2b, 0xf8, 0x08, 0x5e, 0x18, 0xb6, 0x27, - 0xa1, 0xc6, 0xf2, 0x52, 0x72, 0xdd, 0x60, 0xa2, 0xf2, 0x9f, 0x63, 0x90, 0xe0, 0xc2, 0x78, 0x17, - 0x24, 0xb9, 0x58, 0xf9, 0x98, 0x7b, 0x70, 0x69, 0x78, 0x9a, 0x5d, 0xf2, 0xa6, 0x43, 0x8e, 0x27, - 0x78, 0xd0, 0xa3, 0x90, 0x32, 0xf6, 0x75, 0xd3, 0xd2, 0xcc, 0x16, 0x77, 0x40, 0x33, 0x9f, 0x7d, - 0x73, 0x21, 0x59, 0x25, 0x69, 0xf5, 0x15, 0x35, 0x49, 0x33, 0xeb, 0x2d, 0xe2, 0xd3, 0xec, 0x63, - 0x73, 0x6f, 0xdf, 0xe5, 0x76, 0x83, 0x7f, 0xa1, 0x17, 0x20, 0x46, 0x14, 0x82, 0xdf, 0x62, 0x2f, - 0x0d, 0xad, 0x2c, 0xbc, 0xd0, 0x4f, 0x25, 0x45, 0x0a, 0xfe, 0xd0, 0x7f, 0x5a, 0x90, 0x54, 0xca, - 0x81, 0xaa, 0x90, 0x6b, 0xeb, 0x8e, 0xab, 0xd1, 0xf9, 0x98, 0x14, 0x1f, 0xa7, 0x10, 0xa7, 0x87, - 0x05, 0xc2, 0x05, 0xcb, 0xab, 0x9e, 0x21, 0x5c, 0x2c, 0xa9, 0x85, 0xce, 0x81, 0x4c, 0x41, 0x0c, - 0x3a, 0x02, 0x99, 0x97, 0x98, 0xa0, 0x72, 0xcf, 0x93, 0x74, 0x36, 0x30, 0xa9, 0xaf, 0x78, 0x06, - 0xd2, 0xf4, 0xde, 0x2c, 0x25, 0x61, 0xc7, 0xd7, 0x53, 0x24, 0x81, 0x66, 0x3e, 0x06, 0x05, 0xdf, - 0xea, 0x33, 0x92, 0x14, 0x43, 0xf1, 0x93, 0x29, 0xe1, 0xd3, 0x30, 0x6f, 0xe1, 0x03, 0x7a, 0xa0, - 0x3e, 0x44, 0x9d, 0xa6, 0xd4, 0x88, 0xe4, 0xdd, 0x08, 0x73, 0x3c, 0x02, 0x79, 0x43, 0x08, 0x9f, - 0xd1, 0x02, 0xa5, 0xcd, 0x79, 0xa9, 0x94, 0xec, 0x34, 0xa4, 0xf4, 0x6e, 0x97, 0x11, 0x64, 0xb8, - 0xd5, 0xef, 0x76, 0x69, 0xd6, 0x79, 0x98, 0xa5, 0x6d, 0xec, 0x61, 0xa7, 0xdf, 0x76, 0x39, 0x48, - 0x96, 0xd2, 0x14, 0x48, 0x86, 0xca, 0xd2, 0x29, 0xed, 0xc3, 0x90, 0xc3, 0xb7, 0xcd, 0x16, 0xb6, - 0x0c, 0xcc, 0xe8, 0x72, 0x94, 0x2e, 0x2b, 0x12, 0x29, 0xd1, 0xe3, 0xe0, 0x59, 0x73, 0x4d, 0xcc, - 0x34, 0x79, 0x86, 0x27, 0xd2, 0xcb, 0x2c, 0x59, 0x29, 0x42, 0x6c, 0x45, 0x77, 0x75, 0xe2, 0x2e, - 0xb9, 0x07, 0x6c, 0xfa, 0xcc, 0xaa, 0xe4, 0xa7, 0xf2, 0x0b, 0x51, 0x88, 0xdd, 0xb0, 0x5d, 0x8c, - 0x9e, 0x0d, 0xb8, 0xb2, 0xf9, 0x51, 0xfa, 0xdc, 0x30, 0xf7, 0x2c, 0xdc, 0x5a, 0x77, 0xf6, 0x02, - 0x8f, 0xdc, 0xf8, 0xea, 0x14, 0x09, 0xa9, 0xd3, 0x3c, 0xc4, 0x7b, 0x76, 0xdf, 0x6a, 0x89, 0x83, - 0xdf, 0xf4, 0x03, 0xd5, 0x20, 0xe5, 0x69, 0x49, 0x6c, 0x92, 0x96, 0x14, 0x88, 0x96, 0x10, 0x1d, - 0xe6, 0x09, 0x6a, 0x72, 0x87, 0x2b, 0x4b, 0x05, 0xd2, 0x9e, 0xf1, 0xe2, 0xda, 0x36, 0x9d, 0xc2, - 0xfa, 0x6c, 0x64, 0x8a, 0xf4, 0xfa, 0xde, 0x13, 0x1e, 0xd3, 0x38, 0xd9, 0xcb, 0xe0, 0xd2, 0x0b, - 0xa9, 0x15, 0x7f, 0x70, 0x27, 0x49, 0xdb, 0xe5, 0xab, 0x15, 0x7b, 0x74, 0xe7, 0x01, 0x48, 0x3b, - 0xe6, 0x9e, 0xa5, 0xbb, 0xfd, 0x1e, 0xe6, 0x9a, 0xe7, 0x27, 0x90, 0x5c, 0xff, 0x12, 0x04, 0xd3, - 0xb4, 0xc0, 0xcb, 0x6d, 0x17, 0x60, 0xce, 0x7f, 0x33, 0xcd, 0x47, 0x61, 0x5a, 0x86, 0xbc, 0xac, - 0x86, 0xc8, 0x51, 0x7e, 0x55, 0x82, 0x04, 0x9f, 0xb1, 0xfc, 0x6e, 0x90, 0x46, 0x77, 0x43, 0x64, - 0x5c, 0x37, 0x44, 0xef, 0xbf, 0x1b, 0xca, 0x00, 0x5e, 0x35, 0x1d, 0xfe, 0xac, 0xca, 0x08, 0xb7, - 0x8a, 0x55, 0xb1, 0x61, 0xee, 0xf1, 0x71, 0x1f, 0x60, 0x52, 0x7e, 0x57, 0x22, 0x1e, 0x3e, 0xcf, - 0x47, 0x65, 0xc8, 0x89, 0x7a, 0x69, 0xbb, 0x6d, 0x7d, 0x8f, 0xab, 0xe2, 0x83, 0x63, 0x2b, 0x47, - 0x66, 0x61, 0x35, 0xc3, 0xeb, 0x43, 0xfd, 0x89, 0x91, 0xdd, 0x1a, 0x19, 0xd3, 0xad, 0x21, 0x3d, - 0x8a, 0xde, 0x9f, 0x1e, 0x85, 0x7a, 0x3c, 0x36, 0xd0, 0xe3, 0xca, 0xef, 0x4b, 0xfc, 0xc5, 0xb6, - 0x16, 0xbb, 0xc1, 0xf1, 0x97, 0xd5, 0x55, 0xaf, 0x71, 0xdd, 0x6a, 0xe1, 0x96, 0x36, 0xd4, 0x67, - 0x0f, 0x0f, 0x23, 0x86, 0xeb, 0xec, 0xf7, 0x1d, 0x12, 0x28, 0x0d, 0xbf, 0x0f, 0x3f, 0x1d, 0x81, - 0xd9, 0x21, 0xfa, 0xbf, 0x7a, 0x7d, 0x19, 0x1e, 0xbd, 0xf1, 0x29, 0x47, 0x6f, 0x62, 0xec, 0xe8, - 0xfd, 0x54, 0x84, 0x06, 0x00, 0xba, 0xb6, 0xa3, 0xb7, 0xbf, 0x16, 0xb6, 0xf7, 0x0c, 0xa4, 0xbb, - 0x76, 0x5b, 0x63, 0x39, 0xec, 0xea, 0x4d, 0xaa, 0x6b, 0xb7, 0xd5, 0x21, 0x35, 0x8b, 0xbf, 0x45, - 0x86, 0x39, 0xf1, 0x16, 0x74, 0x42, 0x72, 0x70, 0x40, 0xf5, 0x20, 0xcb, 0x44, 0xc1, 0xbd, 0xa6, - 0xa7, 0x89, 0x0c, 0xa8, 0x1b, 0x26, 0x0d, 0x7b, 0x79, 0xac, 0xda, 0x8c, 0x52, 0xe5, 0x74, 0x84, - 0x83, 0x39, 0x19, 0xa3, 0x22, 0x47, 0x41, 0x8b, 0xa5, 0x72, 0x3a, 0xe5, 0xfb, 0x25, 0x80, 0x35, - 0x22, 0x59, 0xda, 0x5e, 0xe2, 0xef, 0x38, 0xb4, 0x0a, 0x5a, 0xa8, 0xe4, 0xb3, 0xe3, 0x3a, 0x8d, - 0x97, 0x9f, 0x75, 0x82, 0xf5, 0xae, 0x42, 0xce, 0xd7, 0x6d, 0x07, 0x8b, 0xca, 0x9c, 0x3d, 0x62, - 0x55, 0xda, 0xc0, 0xae, 0x9a, 0xbd, 0x1d, 0xf8, 0x52, 0xfe, 0x99, 0x04, 0x69, 0x5a, 0xa7, 0x75, - 0xec, 0xea, 0xa1, 0x3e, 0x94, 0xee, 0xbf, 0x0f, 0x1f, 0x04, 0x60, 0x30, 0x8e, 0xf9, 0x06, 0xe6, - 0x9a, 0x95, 0xa6, 0x29, 0x0d, 0xf3, 0x0d, 0x8c, 0x2e, 0x7b, 0x02, 0x8f, 0x1e, 0x2d, 0x70, 0xb1, - 0x6a, 0xe5, 0x62, 0x3f, 0x05, 0x49, 0xfa, 0xa6, 0xe8, 0x81, 0xc3, 0x17, 0xa2, 0x09, 0xab, 0xdf, - 0x69, 0x1e, 0x38, 0xca, 0xeb, 0x90, 0x6c, 0x1e, 0xb0, 0x78, 0xe2, 0x19, 0x48, 0xf7, 0x6c, 0x9b, - 0x7b, 0x7f, 0xcc, 0xeb, 0x4e, 0x91, 0x04, 0xea, 0xec, 0x88, 0x18, 0x5a, 0xc4, 0x8f, 0xa1, 0xf9, - 0x41, 0xc0, 0xe8, 0x54, 0x41, 0x40, 0xb2, 0xfa, 0xcc, 0x85, 0x46, 0x12, 0x7a, 0x12, 0x4e, 0x35, - 0xea, 0xd7, 0x36, 0x6a, 0x2b, 0xda, 0x7a, 0xe3, 0xda, 0xc0, 0xb5, 0xfa, 0x52, 0xe1, 0xee, 0xbd, - 0xc5, 0x0c, 0x5f, 0x76, 0x8e, 0xa3, 0xde, 0x52, 0x6b, 0x37, 0x36, 0x9b, 0x35, 0x59, 0x62, 0xd4, - 0x5b, 0x3d, 0x7c, 0xdb, 0x76, 0xd9, 0xa3, 0xbd, 0x4f, 0xc3, 0xe9, 0x11, 0xd4, 0xde, 0xe2, 0x73, - 0xf6, 0xee, 0xbd, 0xc5, 0xdc, 0x56, 0x0f, 0x33, 0x2d, 0xa3, 0x1c, 0x4b, 0x50, 0x1c, 0xe6, 0xd8, - 0xdc, 0xda, 0x6c, 0x94, 0xd7, 0xe4, 0xc5, 0x92, 0x7c, 0xf7, 0xde, 0x62, 0x56, 0x98, 0x0c, 0x42, - 0xff, 0xf6, 0xaf, 0x3e, 0xbf, 0x3d, 0x15, 0x8a, 0x1a, 0xb3, 0x75, 0x5d, 0x57, 0xef, 0xe9, 0x9d, - 0xe3, 0x2e, 0x3f, 0x27, 0x6c, 0xf8, 0x2b, 0x3f, 0x17, 0x81, 0x82, 0xb7, 0xb8, 0xd9, 0xa2, 0x25, - 0xa0, 0x67, 0x83, 0x11, 0xbf, 0xcc, 0xd8, 0xb9, 0x83, 0x51, 0x8b, 0x80, 0xe0, 0x3b, 0x21, 0x25, - 0x9c, 0x64, 0x3e, 0xa8, 0x16, 0x47, 0xcc, 0x6f, 0x9c, 0x82, 0xb3, 0x7a, 0x1c, 0xe8, 0x25, 0x48, - 0x7b, 0x43, 0xcc, 0x7b, 0x26, 0x6d, 0xfc, 0x98, 0xe4, 0xfc, 0x3e, 0x0f, 0x7a, 0xd1, 0x5f, 0xc6, - 0xc5, 0xc6, 0x2d, 0x0c, 0x6f, 0x30, 0x02, 0xce, 0xec, 0x2d, 0xe1, 0x9e, 0x86, 0x98, 0xbe, 0x63, - 0x98, 0xdc, 0x00, 0x3f, 0x30, 0xcc, 0x57, 0xae, 0x54, 0xeb, 0x9c, 0x89, 0x52, 0x2a, 0x75, 0x1e, - 0x4c, 0xe1, 0xf2, 0xa2, 0x8f, 0xd2, 0x1c, 0x68, 0x6c, 0x2d, 0xcc, 0xbc, 0x8b, 0x54, 0x47, 0x3f, - 0xa8, 0xd0, 0xe5, 0xf0, 0x29, 0x48, 0x92, 0xcc, 0x3d, 0xfe, 0x50, 0x41, 0x54, 0x4d, 0x74, 0xf4, - 0x83, 0x6b, 0xba, 0x73, 0x3d, 0x96, 0x8a, 0xca, 0x31, 0xe5, 0x27, 0x89, 0xa7, 0x12, 0x92, 0x0a, - 0x7a, 0x02, 0x10, 0xe1, 0xd0, 0xf7, 0xb0, 0x46, 0x86, 0x2e, 0x15, 0xaf, 0xc0, 0x2d, 0x74, 0xf4, - 0x83, 0xf2, 0x1e, 0xde, 0xe8, 0x77, 0x68, 0x05, 0x1c, 0xb4, 0x0e, 0xb2, 0x20, 0x16, 0x3d, 0xcb, - 0xc5, 0x7f, 0x7a, 0xf8, 0x61, 0x5c, 0x4e, 0xc0, 0x26, 0x80, 0x0f, 0x93, 0x09, 0x20, 0xcf, 0xf0, - 0xbc, 0x23, 0x1e, 0xa1, 0xa6, 0x44, 0xc3, 0x4d, 0x51, 0x5e, 0x82, 0xc2, 0x40, 0x0f, 0x20, 0x05, - 0x72, 0x3c, 0x62, 0x45, 0xb7, 0xcf, 0xd9, 0x0a, 0x27, 0xad, 0x66, 0x58, 0x64, 0x8a, 0x1e, 0x27, - 0x58, 0x4e, 0xfd, 0xe2, 0xc7, 0x16, 0x24, 0xba, 0x99, 0xf3, 0x04, 0xe4, 0x42, 0x7d, 0x20, 0xa2, - 0xc8, 0x92, 0x1f, 0x45, 0xf6, 0x89, 0x5f, 0x83, 0x2c, 0x31, 0x40, 0xb8, 0xc5, 0x69, 0x1f, 0x85, - 0x02, 0x33, 0x90, 0x83, 0xb2, 0x66, 0x0e, 0xcf, 0xba, 0x10, 0xb8, 0x22, 0x3c, 0xa0, 0xb0, 0xd8, - 0x33, 0x82, 0xea, 0x9a, 0xee, 0x28, 0x9b, 0x00, 0x7e, 0xa7, 0xa2, 0x32, 0x3c, 0x48, 0x8c, 0x47, - 0xf0, 0xb8, 0x27, 0x7f, 0x20, 0x2b, 0xe4, 0x31, 0x96, 0x08, 0x91, 0x7f, 0xa4, 0x93, 0x3d, 0x93, - 0xb5, 0x4a, 0x29, 0x2a, 0xaf, 0x7c, 0xf2, 0xb3, 0x67, 0xa5, 0xb7, 0xc7, 0x16, 0xfc, 0x87, 0x9b, - 0x70, 0x26, 0x90, 0x49, 0x14, 0x30, 0x14, 0x88, 0x2a, 0x04, 0xf4, 0x95, 0x64, 0x4e, 0x0a, 0x28, - 0x1d, 0x19, 0xff, 0x2d, 0x1d, 0x6d, 0x76, 0x26, 0x47, 0x9b, 0x26, 0xc7, 0xbb, 0x46, 0x07, 0xe5, - 0xff, 0x69, 0x1a, 0x92, 0x2a, 0x7e, 0x5f, 0x1f, 0x3b, 0x2e, 0xba, 0x08, 0x31, 0x6c, 0xec, 0xdb, - 0xa3, 0x62, 0xa0, 0xa4, 0x81, 0x4b, 0x9c, 0xae, 0x66, 0xec, 0xdb, 0xab, 0x33, 0x2a, 0xa5, 0x45, - 0x97, 0x20, 0xbe, 0xdb, 0xee, 0xf3, 0xf0, 0xd5, 0x80, 0xcd, 0x0a, 0x32, 0x5d, 0x25, 0x44, 0xab, - 0x33, 0x2a, 0xa3, 0x26, 0x45, 0xd1, 0x17, 0xcd, 0xa3, 0x47, 0x17, 0x55, 0xb7, 0x76, 0x69, 0x51, - 0x84, 0x16, 0x55, 0x00, 0x4c, 0xcb, 0x74, 0x35, 0x1a, 0xda, 0xe1, 0x56, 0xe3, 0xa1, 0xf1, 0x9c, - 0xa6, 0x4b, 0x83, 0x41, 0xab, 0x33, 0x6a, 0xda, 0x14, 0x1f, 0xa4, 0xba, 0xef, 0xeb, 0xe3, 0xde, - 0x21, 0xf7, 0xd6, 0xc6, 0x56, 0xf7, 0x15, 0x42, 0x44, 0xaa, 0x4b, 0xa9, 0x89, 0x91, 0x65, 0x4f, - 0xed, 0xb9, 0x07, 0xfc, 0x01, 0xd9, 0x85, 0x71, 0x9c, 0xf4, 0xbd, 0xbd, 0xe6, 0xc1, 0xea, 0x8c, - 0x9a, 0x34, 0xd8, 0x4f, 0xf4, 0x82, 0xe7, 0x82, 0x65, 0x86, 0xbd, 0x9e, 0x10, 0x2f, 0x0b, 0xfb, - 0xcc, 0x08, 0x57, 0x0c, 0x6d, 0x40, 0xbe, 0x6d, 0x3a, 0xae, 0xe6, 0x58, 0x7a, 0xd7, 0xd9, 0xb7, - 0x5d, 0x87, 0xc6, 0x4f, 0x32, 0x17, 0x1f, 0x19, 0x87, 0xb0, 0x66, 0x3a, 0x6e, 0x43, 0x10, 0xaf, - 0xce, 0xa8, 0xb9, 0x76, 0x30, 0x81, 0xe0, 0xd9, 0xbb, 0xbb, 0xb8, 0xe7, 0x01, 0xd2, 0x38, 0xcb, - 0x11, 0x78, 0x9b, 0x84, 0x5a, 0xf0, 0x13, 0x3c, 0x3b, 0x98, 0x80, 0xbe, 0x01, 0xe6, 0xda, 0xb6, - 0xde, 0xf2, 0xe0, 0x34, 0x63, 0xbf, 0x6f, 0xdd, 0xa2, 0x41, 0x99, 0xcc, 0xc5, 0xc7, 0xc7, 0x56, - 0xd2, 0xd6, 0x5b, 0x02, 0xa2, 0x4a, 0x18, 0x56, 0x67, 0xd4, 0xd9, 0xf6, 0x60, 0x22, 0x7a, 0x2f, - 0xcc, 0xeb, 0xdd, 0x6e, 0xfb, 0x70, 0x10, 0xbd, 0x40, 0xd1, 0xcf, 0x8f, 0x43, 0x2f, 0x13, 0x9e, - 0x41, 0x78, 0xa4, 0x0f, 0xa5, 0xa2, 0x26, 0xc8, 0xdd, 0x1e, 0xa6, 0x37, 0xa6, 0xba, 0xdc, 0xcb, - 0xa0, 0xaf, 0x53, 0x65, 0x2e, 0x3e, 0x36, 0x0e, 0x7b, 0x8b, 0xd1, 0x0b, 0xa7, 0x64, 0x75, 0x46, - 0x2d, 0x74, 0xc3, 0x49, 0x0c, 0xd5, 0x36, 0x30, 0x7d, 0x3c, 0x8f, 0xa3, 0xce, 0x4e, 0x42, 0xa5, - 0xf4, 0x61, 0xd4, 0x50, 0x12, 0xaa, 0x41, 0x86, 0x2d, 0x45, 0x35, 0x62, 0x0c, 0xe9, 0x9b, 0x56, - 0x99, 0x8b, 0xca, 0xd8, 0x11, 0x4a, 0x49, 0x6f, 0xd8, 0x2e, 0x5e, 0x9d, 0x51, 0x01, 0x7b, 0x5f, - 0x48, 0x87, 0x13, 0xf4, 0x79, 0xaf, 0x43, 0x2d, 0x6c, 0x78, 0x8b, 0x73, 0x14, 0xf0, 0x89, 0x71, - 0x80, 0xf4, 0x85, 0xeb, 0xc3, 0x1b, 0x41, 0x3b, 0xbc, 0x3a, 0xa3, 0xce, 0xdd, 0x1e, 0x4e, 0x26, - 0x2a, 0xb6, 0x6b, 0x5a, 0x7a, 0xdb, 0x7c, 0x03, 0xb3, 0x29, 0x94, 0x3e, 0x6c, 0x79, 0x84, 0x8a, - 0x5d, 0xe5, 0xd4, 0x74, 0x62, 0x25, 0x2a, 0xb6, 0x1b, 0x4c, 0xa8, 0x24, 0xf9, 0x59, 0x4f, 0xef, - 0xa1, 0xb6, 0xa4, 0x9c, 0x62, 0x8f, 0xb3, 0x5d, 0x8f, 0xa5, 0x40, 0xce, 0x28, 0x8f, 0x41, 0x26, - 0x60, 0x98, 0x50, 0x11, 0x92, 0xfc, 0x34, 0x8c, 0x38, 0x35, 0xca, 0x3f, 0x95, 0x3c, 0x64, 0x83, - 0xc6, 0x48, 0xf9, 0x90, 0xe4, 0x71, 0xd2, 0x37, 0x25, 0x8a, 0xe1, 0x88, 0x74, 0xda, 0xf7, 0x54, - 0x1e, 0x16, 0x53, 0x9b, 0xc8, 0x67, 0xdb, 0xaf, 0x59, 0x9a, 0xc8, 0x67, 0x56, 0xb4, 0x00, 0x99, - 0xee, 0xc5, 0xae, 0x47, 0x12, 0xa5, 0x24, 0xd0, 0xbd, 0xd8, 0x15, 0x04, 0x0f, 0x41, 0x96, 0xb4, - 0x5b, 0x0b, 0xfa, 0x4b, 0x69, 0x35, 0x43, 0xd2, 0x38, 0x89, 0xf2, 0xaf, 0x22, 0x20, 0x0f, 0x1a, - 0x30, 0x2f, 0x54, 0x2d, 0x1d, 0x3b, 0x54, 0x7d, 0x7a, 0x30, 0x48, 0xee, 0xc7, 0xc5, 0xd7, 0x40, - 0xf6, 0xc3, 0xbb, 0x6c, 0xaa, 0x19, 0xef, 0xff, 0x0d, 0x38, 0xaa, 0x6a, 0xc1, 0x18, 0xf0, 0x5c, - 0xaf, 0x86, 0x36, 0x2b, 0xc5, 0x9f, 0xfc, 0x18, 0xec, 0x70, 0xcf, 0x89, 0xd9, 0xee, 0xb6, 0x74, - 0x17, 0x8b, 0xf8, 0x58, 0x60, 0xdf, 0xf2, 0x51, 0x28, 0xe8, 0xdd, 0xae, 0xe6, 0xb8, 0xba, 0x8b, - 0xb9, 0xaf, 0xc1, 0x22, 0x0f, 0x39, 0xbd, 0xdb, 0xa5, 0x4f, 0xab, 0x33, 0x5f, 0xe3, 0x11, 0xc8, - 0x13, 0x9b, 0x6e, 0xea, 0x6d, 0xe1, 0x2a, 0x24, 0x98, 0x4b, 0xc2, 0x53, 0x99, 0x77, 0xa0, 0xb4, - 0xbc, 0x1e, 0xa7, 0xf6, 0xdc, 0x5b, 0x53, 0x49, 0x81, 0x35, 0x15, 0xe2, 0x6f, 0x7d, 0x30, 0xf9, - 0x88, 0xf7, 0x51, 0x46, 0x6f, 0x1a, 0xcc, 0xd3, 0xf5, 0xd7, 0x6d, 0x16, 0x2c, 0x49, 0xa9, 0xec, - 0x43, 0x51, 0x21, 0x1f, 0xb6, 0xfd, 0x28, 0x0f, 0x11, 0xf7, 0x80, 0x97, 0x12, 0x71, 0x0f, 0x88, - 0xa7, 0xeb, 0xbd, 0xb7, 0x9b, 0x1f, 0x31, 0xdb, 0x71, 0x3e, 0x3f, 0xd6, 0xa1, 0x14, 0x20, 0x17, - 0x9a, 0x13, 0x94, 0x93, 0x30, 0x3f, 0xca, 0xc4, 0x2b, 0xfb, 0x5e, 0x7a, 0xc8, 0x54, 0xa3, 0x4b, - 0x90, 0xf2, 0x6c, 0xfc, 0x88, 0xd5, 0x31, 0x2d, 0x56, 0x10, 0xab, 0x1e, 0x69, 0x28, 0x9c, 0x1f, - 0x09, 0x85, 0xf3, 0x95, 0x6f, 0x86, 0xe2, 0x38, 0xfb, 0x3d, 0x10, 0xe4, 0x8b, 0x79, 0x02, 0x3b, - 0x09, 0x09, 0xfe, 0xb0, 0x65, 0x84, 0x6e, 0x60, 0xf1, 0x2f, 0x22, 0x48, 0x66, 0xcb, 0xa3, 0x6c, - 0x5f, 0x8b, 0x7e, 0x28, 0x1a, 0x9c, 0x1e, 0x6b, 0xc3, 0xc7, 0x6f, 0x85, 0x31, 0x20, 0xbe, 0x15, - 0x66, 0x88, 0xea, 0x38, 0xb4, 0xad, 0xe2, 0x20, 0x0b, 0xfb, 0x52, 0x3e, 0x1c, 0x85, 0x93, 0xa3, - 0x2d, 0x39, 0x5a, 0x84, 0x2c, 0xf1, 0x5b, 0xdd, 0xb0, 0x8b, 0x0b, 0x1d, 0xfd, 0xa0, 0xc9, 0xfd, - 0x5b, 0xbe, 0x95, 0x10, 0xf1, 0xb6, 0x12, 0xd0, 0x36, 0xcc, 0xb6, 0x6d, 0x43, 0x6f, 0x6b, 0x81, - 0xad, 0x1c, 0x3e, 0x88, 0x1e, 0x1e, 0x12, 0x76, 0x38, 0x64, 0x48, 0x0c, 0x0e, 0xd7, 0xff, 0x02, - 0xc5, 0x58, 0xf3, 0x76, 0x7d, 0xd0, 0x0a, 0x64, 0x3a, 0xa6, 0xb3, 0x83, 0xf7, 0xf5, 0xdb, 0xa6, - 0xdd, 0xe3, 0xa3, 0x69, 0x58, 0x69, 0xd6, 0x7d, 0x1a, 0xb1, 0xc3, 0x14, 0x60, 0x0b, 0x74, 0x49, - 0x7c, 0xe4, 0xc6, 0x57, 0xe2, 0xd8, 0xd6, 0x64, 0xdc, 0x1e, 0x52, 0x72, 0xec, 0x1e, 0xd2, 0xa8, - 0x0d, 0x9b, 0xd4, 0xe8, 0x0d, 0x9b, 0x0f, 0x06, 0xbb, 0x26, 0x3c, 0xf7, 0x0d, 0xed, 0xe1, 0xa0, - 0x06, 0xcc, 0x73, 0xfe, 0x56, 0x48, 0xf6, 0x23, 0x8e, 0x3a, 0xb0, 0xf1, 0x35, 0x28, 0x73, 0x24, - 0xd8, 0xc7, 0x8b, 0x3d, 0x7a, 0x7f, 0x62, 0x17, 0x9b, 0xa8, 0xb1, 0xc0, 0x26, 0xea, 0xff, 0x65, - 0x5d, 0xf1, 0x81, 0x28, 0xcc, 0x0e, 0x39, 0x12, 0x23, 0x77, 0x87, 0xc7, 0x45, 0x64, 0x45, 0xc3, - 0xa2, 0xc7, 0x6e, 0x18, 0xef, 0xeb, 0xd8, 0xe4, 0xbe, 0x8e, 0xbf, 0x85, 0x7d, 0x9d, 0xb8, 0xbf, - 0xbe, 0x7e, 0x5b, 0x7b, 0xe1, 0xa3, 0x12, 0x94, 0xc6, 0x7b, 0x5f, 0x23, 0xbb, 0xe3, 0x58, 0x1b, - 0x08, 0xe3, 0xe6, 0xb8, 0x47, 0x20, 0x3f, 0xe0, 0x1b, 0x32, 0x55, 0xce, 0x85, 0x56, 0xe1, 0xca, - 0xb7, 0x46, 0xbd, 0x89, 0x27, 0xe4, 0xc0, 0x8d, 0x18, 0xad, 0xaf, 0xc0, 0x5c, 0x0b, 0x1b, 0x66, - 0xeb, 0x7e, 0x07, 0xeb, 0x2c, 0xe7, 0xfe, 0x7f, 0x63, 0x75, 0x58, 0x4b, 0xbe, 0x0f, 0x20, 0xa5, - 0x62, 0xa7, 0x4b, 0xfc, 0x31, 0x54, 0x81, 0x34, 0x3e, 0x30, 0x70, 0xd7, 0xf5, 0x0f, 0x55, 0x8c, - 0x5a, 0x22, 0x30, 0xea, 0x9a, 0xa0, 0x24, 0x0b, 0x64, 0x8f, 0x0d, 0x3d, 0xcb, 0x63, 0x00, 0xe3, - 0x97, 0xf3, 0x9c, 0x3d, 0x18, 0x04, 0xb8, 0x2c, 0x82, 0x00, 0xd1, 0xb1, 0xeb, 0x5b, 0xc6, 0x35, - 0x10, 0x05, 0x78, 0x96, 0x47, 0x01, 0x62, 0x13, 0x0a, 0x0b, 0x85, 0x01, 0xaa, 0xa1, 0x30, 0x40, - 0x62, 0x42, 0x33, 0xc7, 0xc4, 0x01, 0x2e, 0x8b, 0x38, 0x40, 0x72, 0x42, 0x8d, 0x07, 0x02, 0x01, - 0xef, 0x0a, 0x04, 0x02, 0xd2, 0xc3, 0xd1, 0xd6, 0x10, 0xeb, 0x88, 0x48, 0xc0, 0x8b, 0x5e, 0x24, - 0x20, 0x3b, 0x36, 0x8a, 0xc0, 0x99, 0x07, 0x43, 0x01, 0x9b, 0x43, 0xa1, 0x80, 0x1c, 0xff, 0xc3, - 0x56, 0xe3, 0x20, 0x26, 0xc4, 0x02, 0x36, 0x87, 0x62, 0x01, 0xf9, 0x09, 0x80, 0x13, 0x82, 0x01, - 0xdf, 0x38, 0x3a, 0x18, 0x30, 0x7e, 0xb9, 0xce, 0xab, 0x39, 0x5d, 0x34, 0x40, 0x1b, 0x13, 0x0d, - 0x90, 0xc7, 0xae, 0x5c, 0x19, 0xfc, 0xd4, 0xe1, 0x80, 0xed, 0x11, 0xe1, 0x00, 0xb6, 0x70, 0x3f, - 0x37, 0x16, 0x7c, 0x8a, 0x78, 0xc0, 0xf6, 0x88, 0x78, 0x00, 0x9a, 0x08, 0x3b, 0x31, 0x20, 0x70, - 0x35, 0x1c, 0x10, 0x98, 0x1b, 0xe3, 0x75, 0xfa, 0xa3, 0x7d, 0x4c, 0x44, 0x60, 0x67, 0x5c, 0x44, - 0x80, 0xad, 0xda, 0x9f, 0x1c, 0x8b, 0x78, 0x8c, 0x90, 0xc0, 0xe6, 0x50, 0x48, 0xe0, 0xc4, 0x04, - 0x4d, 0x9b, 0x3e, 0x26, 0xc0, 0x9e, 0x6d, 0x67, 0x0f, 0xb6, 0x83, 0x9c, 0xb9, 0x1e, 0x4b, 0x65, - 0xe4, 0xac, 0xf2, 0x38, 0xf1, 0x60, 0x06, 0xec, 0x1c, 0x59, 0x2b, 0xe0, 0x5e, 0xcf, 0xee, 0x89, - 0x7b, 0x0c, 0xf4, 0x43, 0x39, 0x47, 0xd6, 0x88, 0xbe, 0x4d, 0x3b, 0x22, 0x7e, 0x40, 0xd7, 0x64, - 0x01, 0x3b, 0xa6, 0xfc, 0xa2, 0xe4, 0xf3, 0xd2, 0x08, 0x42, 0x70, 0x7d, 0x99, 0xe6, 0xeb, 0xcb, - 0x40, 0x54, 0x21, 0x12, 0x8e, 0x2a, 0x2c, 0x40, 0x86, 0xac, 0xb5, 0x06, 0x02, 0x06, 0x7a, 0xd7, - 0x0b, 0x18, 0x88, 0x03, 0x54, 0x2c, 0xf6, 0xc0, 0xa7, 0x25, 0xb6, 0x9b, 0x58, 0xf0, 0x0e, 0x93, - 0xb1, 0xa5, 0x2e, 0x7a, 0x0a, 0xe6, 0x02, 0xb4, 0xde, 0x1a, 0x8e, 0xad, 0x9e, 0x65, 0x8f, 0xba, - 0xcc, 0x17, 0x73, 0xbf, 0x2e, 0xf9, 0x12, 0xf2, 0x23, 0x0d, 0xa3, 0x82, 0x02, 0xd2, 0x5b, 0x14, - 0x14, 0x88, 0xdc, 0x77, 0x50, 0x20, 0xb8, 0x26, 0x8d, 0x86, 0xd7, 0xa4, 0xff, 0x43, 0xf2, 0xfb, - 0xc4, 0x5b, 0xe2, 0x1b, 0x76, 0x0b, 0xf3, 0x55, 0x22, 0xfd, 0x4d, 0x5c, 0x92, 0xb6, 0xbd, 0xc7, - 0xd7, 0x82, 0xe4, 0x27, 0xa1, 0xf2, 0x26, 0x9e, 0x34, 0x9f, 0x57, 0xbc, 0x05, 0x66, 0x3c, 0x78, - 0x8f, 0x83, 0x5f, 0x6e, 0x48, 0xf8, 0x97, 0x1b, 0xbc, 0xcb, 0xc7, 0xc9, 0xc0, 0xe5, 0x63, 0xf4, - 0x02, 0xa4, 0x69, 0xb0, 0x5f, 0xb3, 0xbb, 0xe2, 0x6f, 0x8c, 0x9d, 0x19, 0x7f, 0xb1, 0xc1, 0xa1, - 0x47, 0xae, 0xd9, 0x65, 0x08, 0xdf, 0xe3, 0x48, 0x87, 0x3c, 0x8e, 0x07, 0x20, 0x4d, 0x6a, 0xcf, - 0xfe, 0x56, 0x06, 0xf0, 0x9b, 0xeb, 0x22, 0x41, 0xf9, 0xa9, 0x08, 0x14, 0x06, 0x26, 0x9a, 0x91, - 0x6d, 0x1f, 0xb5, 0x8d, 0x3c, 0x9d, 0x3c, 0xce, 0x02, 0xec, 0xe9, 0x8e, 0x76, 0x47, 0xb7, 0x5c, - 0xfe, 0x27, 0xf1, 0xa2, 0x6a, 0x20, 0x05, 0x95, 0x20, 0x45, 0xbe, 0xfa, 0x0e, 0xff, 0xa3, 0x78, - 0x51, 0xd5, 0xfb, 0x46, 0xab, 0x90, 0xc0, 0xb7, 0xe9, 0xeb, 0xae, 0xec, 0x8d, 0xe4, 0x93, 0xc3, - 0xcb, 0x61, 0x92, 0x5d, 0x29, 0x92, 0xce, 0xfe, 0xe2, 0x9b, 0x0b, 0x32, 0xa3, 0x7e, 0xd2, 0xbb, - 0x30, 0xa6, 0x72, 0xfe, 0xb0, 0x14, 0x52, 0x03, 0x52, 0xa0, 0x71, 0xc0, 0xac, 0x58, 0xde, 0x13, - 0x99, 0xb2, 0x33, 0xde, 0x6a, 0xae, 0x83, 0x3b, 0x5d, 0xdb, 0x6e, 0x6b, 0x6c, 0x8c, 0x97, 0x21, - 0x1f, 0x9e, 0x57, 0xd9, 0xdf, 0xb1, 0x72, 0x75, 0xd3, 0xd2, 0x42, 0x4e, 0x70, 0x96, 0x25, 0xb2, - 0x31, 0x75, 0x3d, 0x96, 0x92, 0xe4, 0xc8, 0xf5, 0x58, 0x2a, 0x22, 0x47, 0x95, 0x2d, 0x38, 0x31, - 0x72, 0x5e, 0x45, 0xcf, 0x43, 0xda, 0x9f, 0x92, 0xd9, 0x31, 0xfd, 0x23, 0x22, 0x2d, 0x3e, 0xad, - 0xf2, 0x2b, 0x92, 0x0f, 0x19, 0x8e, 0xdd, 0xd4, 0x20, 0xc1, 0xce, 0x4c, 0xf2, 0xf3, 0x31, 0x4f, - 0x4d, 0x37, 0x23, 0x2f, 0xb1, 0x03, 0x95, 0x2a, 0x67, 0x56, 0xde, 0x0b, 0x09, 0x96, 0x82, 0x32, - 0x90, 0xf4, 0xdf, 0x91, 0x06, 0x48, 0x94, 0xab, 0xd5, 0xda, 0x96, 0x78, 0x14, 0xb6, 0xb2, 0xa9, - 0x36, 0xe5, 0x08, 0x49, 0x56, 0x6b, 0xd7, 0x6b, 0xd5, 0xa6, 0x1c, 0x45, 0xb3, 0x90, 0x63, 0xbf, - 0xb5, 0xab, 0x9b, 0xea, 0x7a, 0xb9, 0x29, 0xc7, 0x02, 0x49, 0x8d, 0xda, 0xc6, 0x4a, 0x4d, 0x95, - 0xe3, 0xca, 0x33, 0x70, 0x7a, 0xec, 0x1c, 0xee, 0x07, 0x66, 0xa4, 0x40, 0x60, 0x46, 0xf9, 0x70, - 0x84, 0x2c, 0x6a, 0xc6, 0x4d, 0xcc, 0xe8, 0xfa, 0x40, 0xc3, 0x2f, 0x1e, 0x63, 0x56, 0x1f, 0x68, - 0x3d, 0x59, 0xc7, 0xf4, 0xf0, 0x2e, 0x76, 0x8d, 0x7d, 0xe6, 0x28, 0x30, 0x0b, 0x94, 0x53, 0x73, - 0x3c, 0x95, 0x32, 0x39, 0x8c, 0xec, 0x75, 0x6c, 0xb8, 0x1a, 0x53, 0x22, 0x87, 0xff, 0xa1, 0xe4, - 0x1c, 0x4b, 0x6d, 0xb0, 0x44, 0xe5, 0x9b, 0x8f, 0x25, 0xcb, 0x34, 0xc4, 0xd5, 0x5a, 0x53, 0xbd, - 0x29, 0x47, 0x11, 0x82, 0x3c, 0xfd, 0xa9, 0x35, 0x36, 0xca, 0x5b, 0x8d, 0xd5, 0x4d, 0x22, 0xcb, - 0x39, 0x28, 0x08, 0x59, 0x8a, 0xc4, 0xb8, 0xf2, 0x04, 0x9c, 0x1a, 0xe3, 0x55, 0x8c, 0x38, 0xc4, - 0xfa, 0x71, 0x29, 0x48, 0x1d, 0xf6, 0x0c, 0x36, 0x21, 0xe1, 0xb8, 0xba, 0xdb, 0x77, 0xb8, 0x10, - 0x9f, 0x9f, 0xd6, 0xcd, 0x58, 0x12, 0x3f, 0x1a, 0x94, 0x5d, 0xe5, 0x30, 0xca, 0x25, 0xc8, 0x87, - 0x73, 0xc6, 0xcb, 0xc0, 0x57, 0xa2, 0x88, 0x72, 0x05, 0xd0, 0xb0, 0xf7, 0x31, 0x62, 0x79, 0x29, - 0x8d, 0x5a, 0x5e, 0xfe, 0xb8, 0x04, 0x67, 0x8e, 0xf0, 0x34, 0xd0, 0x2b, 0x03, 0x8d, 0x7c, 0xf1, - 0x38, 0x7e, 0x0a, 0xfb, 0xab, 0xa4, 0x87, 0x03, 0xcd, 0x7c, 0x16, 0xb2, 0xc1, 0xf4, 0xe9, 0x1a, - 0xf9, 0xc5, 0x88, 0x3f, 0x88, 0xc3, 0xeb, 0x60, 0xdf, 0x04, 0x4a, 0x5f, 0xa5, 0x09, 0x7c, 0x27, - 0x80, 0x7b, 0x20, 0x4e, 0x51, 0xf3, 0x79, 0xf4, 0xc1, 0x11, 0xf1, 0x45, 0x6c, 0x34, 0x0f, 0xf8, - 0x20, 0x48, 0xbb, 0xfc, 0x97, 0x83, 0x1a, 0xc1, 0xa0, 0x40, 0x9f, 0xce, 0xb1, 0x8e, 0xf7, 0x67, - 0x92, 0xa7, 0x9b, 0x8c, 0xfd, 0xe0, 0x01, 0x4b, 0x76, 0xd0, 0x4d, 0x38, 0x35, 0xe0, 0x28, 0x78, - 0xd0, 0xb1, 0x69, 0xfd, 0x85, 0x13, 0x61, 0x7f, 0x41, 0x40, 0x07, 0x67, 0xfb, 0x78, 0x78, 0xb6, - 0xbf, 0x09, 0xe0, 0x07, 0x07, 0xfc, 0x63, 0x7f, 0x52, 0xf0, 0xd8, 0xdf, 0x25, 0x88, 0x13, 0x4d, - 0x12, 0x72, 0x1a, 0x36, 0xc5, 0x44, 0x13, 0x02, 0xc1, 0x05, 0x46, 0xad, 0x98, 0x80, 0x86, 0x03, - 0xb4, 0x63, 0x8a, 0x78, 0x57, 0xb8, 0x88, 0x87, 0xc6, 0x86, 0x7a, 0x47, 0x17, 0xf5, 0x06, 0xc4, - 0x69, 0xcf, 0x8f, 0xbc, 0x4b, 0xf9, 0x4d, 0x00, 0xba, 0xeb, 0xf6, 0xcc, 0x9d, 0xbe, 0x5f, 0xc0, - 0xc2, 0x68, 0xcd, 0x29, 0x0b, 0xba, 0xca, 0x03, 0x5c, 0x85, 0xe6, 0x7d, 0xd6, 0x80, 0x1a, 0x05, - 0x00, 0x95, 0x0d, 0xc8, 0x87, 0x79, 0x47, 0xdf, 0x0d, 0xf5, 0x1f, 0x57, 0x49, 0x0b, 0xff, 0xc6, - 0xf3, 0x8e, 0xf8, 0x83, 0x47, 0xf4, 0x43, 0x79, 0x7f, 0x04, 0xb2, 0x41, 0xc5, 0xfb, 0xeb, 0xe7, - 0x82, 0x28, 0xdf, 0x26, 0x41, 0xca, 0x6b, 0xfe, 0x11, 0x87, 0x9d, 0xfd, 0x3b, 0xc2, 0xde, 0xe6, - 0x05, 0xdb, 0x26, 0x8a, 0x7a, 0xdb, 0x44, 0x57, 0xbc, 0xe9, 0x6f, 0x5c, 0x40, 0x24, 0x28, 0x6b, - 0x71, 0xe0, 0x90, 0xcf, 0xf6, 0x57, 0xa6, 0xbb, 0x8a, 0x37, 0x0f, 0xf1, 0xe0, 0x35, 0x3a, 0xf6, - 0xa1, 0xb4, 0x02, 0x27, 0x8c, 0xd8, 0x40, 0x0c, 0xde, 0xd9, 0x93, 0x8e, 0x7d, 0x67, 0xcf, 0x2b, - 0x25, 0x12, 0x2c, 0xe5, 0x7b, 0x25, 0x48, 0x89, 0x31, 0x81, 0xde, 0x1d, 0x3c, 0x79, 0x26, 0xb6, - 0x36, 0xc7, 0xda, 0x23, 0x8e, 0x1f, 0x38, 0x78, 0x36, 0x74, 0xe0, 0x3a, 0x7a, 0xdc, 0x03, 0xd7, - 0xdc, 0xb3, 0xfb, 0x33, 0x09, 0xe4, 0xc1, 0x11, 0xfb, 0x55, 0xd7, 0x6e, 0x78, 0x9a, 0x8b, 0x8e, - 0x98, 0xe6, 0xc6, 0x9d, 0xa2, 0x8e, 0x8d, 0x3b, 0x45, 0x3d, 0xdc, 0xea, 0xf8, 0x7d, 0xb6, 0xfa, - 0x03, 0x11, 0xc8, 0x04, 0xc2, 0xa3, 0xe8, 0xb9, 0xd0, 0x89, 0xec, 0xc5, 0xa3, 0x42, 0xa9, 0x81, - 0x23, 0xd9, 0x21, 0x31, 0x45, 0x8e, 0x2f, 0xa6, 0xb7, 0xfe, 0x76, 0xd6, 0xe8, 0x0b, 0xac, 0xf1, - 0x31, 0x17, 0x58, 0xff, 0x86, 0x04, 0x29, 0xcf, 0xed, 0x3e, 0xee, 0x26, 0xe6, 0x49, 0x48, 0x70, - 0xcf, 0x92, 0xed, 0x62, 0xf2, 0xaf, 0x91, 0x61, 0xe5, 0x12, 0xa4, 0xc4, 0x5f, 0x40, 0xe4, 0xb3, - 0x9a, 0xf7, 0x7d, 0xfe, 0x45, 0xc8, 0x04, 0x36, 0x80, 0x89, 0x69, 0xdc, 0xa8, 0xbd, 0x47, 0x9e, - 0x29, 0x25, 0xef, 0xde, 0x5b, 0x8c, 0x6e, 0xe0, 0x3b, 0x64, 0x34, 0xab, 0xb5, 0xea, 0x6a, 0xad, - 0xfa, 0xb2, 0x2c, 0x95, 0x32, 0x77, 0xef, 0x2d, 0x26, 0x55, 0x4c, 0x23, 0x8a, 0xe7, 0x5f, 0x86, - 0xc2, 0x40, 0xc7, 0x84, 0xdd, 0x16, 0x04, 0xf9, 0x95, 0xed, 0xad, 0xb5, 0x7a, 0xb5, 0xdc, 0xac, - 0x69, 0xec, 0xdc, 0x2e, 0x3a, 0x05, 0x73, 0x6b, 0xf5, 0x6b, 0xab, 0x4d, 0xad, 0xba, 0x56, 0xaf, - 0x6d, 0x34, 0xb5, 0x72, 0xb3, 0x59, 0xae, 0xbe, 0x2c, 0x47, 0x2e, 0xde, 0xcb, 0x40, 0xac, 0x5c, - 0xa9, 0xd6, 0x51, 0x15, 0x62, 0x34, 0x14, 0x72, 0xe4, 0x09, 0xb0, 0xd2, 0xd1, 0xb1, 0x61, 0x74, - 0x15, 0xe2, 0x34, 0x4a, 0x82, 0x8e, 0x3e, 0x12, 0x56, 0x9a, 0x10, 0x2c, 0x26, 0x95, 0xa1, 0x23, - 0xf2, 0xc8, 0x33, 0x62, 0xa5, 0xa3, 0x63, 0xc7, 0x68, 0x0d, 0x92, 0x62, 0x91, 0x3c, 0xe9, 0xe0, - 0x56, 0x69, 0x62, 0x40, 0x97, 0x34, 0x8d, 0x05, 0x1b, 0x8e, 0x3e, 0x3e, 0x56, 0x9a, 0x10, 0x55, - 0x46, 0x75, 0xef, 0x3e, 0xd3, 0x84, 0x13, 0x61, 0xa5, 0x49, 0x71, 0x62, 0xa4, 0x42, 0xda, 0x0f, - 0xe3, 0x4c, 0x3e, 0x14, 0x57, 0x9a, 0x22, 0x60, 0x8e, 0xde, 0x0b, 0xb9, 0xf0, 0x52, 0x77, 0xba, - 0x53, 0x67, 0xa5, 0x29, 0x23, 0xd2, 0x04, 0x3f, 0xbc, 0xee, 0x9d, 0xee, 0x14, 0x5a, 0x69, 0xca, - 0x00, 0x35, 0x7a, 0x1d, 0x66, 0x87, 0xd7, 0xa5, 0xd3, 0x1f, 0x4a, 0x2b, 0x1d, 0x23, 0x64, 0x8d, - 0x3a, 0x80, 0x46, 0xac, 0x67, 0x8f, 0x71, 0x46, 0xad, 0x74, 0x9c, 0x08, 0x36, 0x6a, 0x41, 0x61, - 0x70, 0x91, 0x38, 0xed, 0x99, 0xb5, 0xd2, 0xd4, 0xd1, 0x6c, 0x56, 0x4a, 0x78, 0x71, 0x39, 0xed, - 0x19, 0xb6, 0xd2, 0xd4, 0xc1, 0x6d, 0xb4, 0x0d, 0x10, 0x58, 0x1f, 0x4e, 0x71, 0xa6, 0xad, 0x34, - 0x4d, 0x98, 0x1b, 0x75, 0x61, 0x6e, 0xd4, 0xc2, 0xf1, 0x38, 0x47, 0xdc, 0x4a, 0xc7, 0x8a, 0x7e, - 0x13, 0x7d, 0x0e, 0x2f, 0x01, 0xa7, 0x3b, 0xf2, 0x56, 0x9a, 0x32, 0x0c, 0x5e, 0x29, 0x8f, 0x3d, - 0xe7, 0xfc, 0xd8, 0x91, 0xe7, 0x9c, 0xfd, 0x93, 0xcb, 0xde, 0xd9, 0xe6, 0x5f, 0x7f, 0x0e, 0xde, - 0xc1, 0x5f, 0xd0, 0x71, 0x5c, 0xfd, 0x96, 0x69, 0xed, 0x79, 0x4f, 0x19, 0xf1, 0x6f, 0x7e, 0xc8, - 0xf9, 0x24, 0x7f, 0xae, 0x47, 0xa4, 0x4e, 0x78, 0xd0, 0x68, 0xec, 0x2b, 0x8f, 0x93, 0xee, 0x43, - 0x4c, 0x3e, 0xbe, 0x7c, 0xc4, 0x63, 0x49, 0x13, 0x9e, 0x64, 0x1a, 0xf1, 0x98, 0x52, 0xe9, 0xc8, - 0x37, 0x06, 0x4a, 0x47, 0x9d, 0xfb, 0x56, 0x7e, 0x40, 0x82, 0xfc, 0xaa, 0xe9, 0xb8, 0x76, 0xcf, - 0x34, 0xf4, 0x36, 0x9d, 0x5e, 0xae, 0x4c, 0x7b, 0x2b, 0xab, 0x92, 0x26, 0xee, 0x0a, 0x7f, 0x6f, - 0x89, 0xdf, 0x14, 0x5a, 0x81, 0xc4, 0x6d, 0xbd, 0xcd, 0xee, 0x44, 0x05, 0x1f, 0x5b, 0x1b, 0x94, - 0x79, 0xc0, 0x8f, 0x0a, 0xa2, 0x30, 0xde, 0xe5, 0x48, 0x51, 0x52, 0xbe, 0x43, 0x02, 0xd9, 0xaf, - 0x99, 0x8a, 0x0d, 0xbb, 0xd7, 0xa2, 0x4b, 0x81, 0x6e, 0x37, 0x70, 0x56, 0x40, 0x7c, 0x52, 0x97, - 0xcf, 0xec, 0x60, 0xcf, 0x6f, 0x1b, 0xef, 0x64, 0xc5, 0x02, 0x0e, 0xd6, 0x88, 0x2b, 0xe7, 0xd1, - 0x51, 0x57, 0xce, 0x95, 0xef, 0xa7, 0x37, 0x5c, 0x3a, 0x1d, 0xd3, 0x21, 0xa3, 0x43, 0xa5, 0x8b, - 0xfb, 0xeb, 0x10, 0xeb, 0xe9, 0x2e, 0x5f, 0xf2, 0x56, 0x2e, 0x1f, 0xfb, 0xc9, 0x28, 0xd6, 0x66, - 0x8a, 0x81, 0x5e, 0x81, 0x54, 0x47, 0x3f, 0xd0, 0x28, 0x5e, 0xe4, 0xab, 0xc2, 0x4b, 0x76, 0xf4, - 0x03, 0x52, 0x3f, 0xf4, 0x5e, 0x28, 0x10, 0x48, 0x63, 0x5f, 0xb7, 0xf6, 0x30, 0x43, 0x8e, 0x7e, - 0x55, 0xc8, 0xb9, 0x8e, 0x7e, 0x50, 0xa5, 0x68, 0x04, 0x9f, 0x3f, 0xad, 0xf5, 0x6b, 0x12, 0x8f, - 0x63, 0x50, 0xc1, 0x20, 0x1d, 0x64, 0xc3, 0xfb, 0xa2, 0x85, 0x8a, 0x4d, 0x97, 0xc7, 0xc6, 0x69, - 0xc2, 0x80, 0x58, 0x2b, 0x39, 0x52, 0xbd, 0xcf, 0xbc, 0xb9, 0x20, 0xb1, 0x52, 0x0b, 0xc6, 0x90, - 0xd8, 0x33, 0x2c, 0x3c, 0xa3, 0x4d, 0xd9, 0xe1, 0x39, 0xe1, 0x55, 0x33, 0x40, 0x60, 0xdc, 0x24, - 0x9f, 0xb7, 0xe1, 0x93, 0x12, 0x64, 0x56, 0x02, 0x8f, 0x39, 0x16, 0x21, 0xd9, 0xb1, 0x2d, 0xf3, - 0x16, 0xee, 0x79, 0xbb, 0x66, 0xec, 0x93, 0x78, 0xbe, 0xec, 0x6f, 0x02, 0xba, 0x87, 0xe2, 0xbd, - 0x23, 0xf1, 0x4d, 0xb8, 0xee, 0xe0, 0x1d, 0xc7, 0x14, 0x72, 0x56, 0xc5, 0x27, 0x7a, 0x1c, 0x64, - 0x07, 0x1b, 0xfd, 0x9e, 0xe9, 0x1e, 0x6a, 0x86, 0x6d, 0xb9, 0xba, 0xe1, 0xf2, 0xc8, 0x40, 0x41, - 0xa4, 0x57, 0x59, 0x32, 0x01, 0x69, 0x61, 0x57, 0x37, 0xdb, 0xec, 0xac, 0x68, 0x5a, 0x15, 0x9f, - 0xbc, 0xaa, 0x77, 0x93, 0xc1, 0x95, 0x71, 0x15, 0x64, 0xbb, 0x8b, 0x7b, 0xa1, 0x23, 0x32, 0x4c, - 0x1b, 0x8b, 0xbf, 0xfd, 0xe9, 0xa7, 0xe6, 0xb9, 0xc0, 0xf9, 0xf1, 0x0a, 0xf6, 0xb7, 0x0b, 0xd4, - 0x82, 0xe0, 0x10, 0x67, 0x67, 0x6e, 0x86, 0xf6, 0xc9, 0xfa, 0x3b, 0xfe, 0xc3, 0x36, 0xf3, 0x43, - 0x42, 0x2d, 0x5b, 0x87, 0x95, 0xe2, 0x6f, 0xf9, 0xd0, 0xfe, 0xca, 0xf9, 0x65, 0x7c, 0x18, 0xdc, - 0x34, 0xa3, 0x30, 0x64, 0x51, 0xf1, 0xba, 0x6e, 0xb6, 0xc5, 0x9f, 0x4f, 0x55, 0xf9, 0x17, 0x5a, - 0xf6, 0x02, 0x9e, 0x31, 0xba, 0x42, 0x53, 0xc6, 0xe9, 0x46, 0xc5, 0xb6, 0x5a, 0xe1, 0xc8, 0x26, - 0xaa, 0x42, 0xc2, 0xb5, 0x6f, 0x61, 0x8b, 0x0b, 0xa8, 0xf2, 0xc4, 0x31, 0xde, 0x86, 0x53, 0x39, - 0x2b, 0xfa, 0x46, 0x90, 0x5b, 0xb8, 0x8d, 0xf7, 0xd8, 0x0d, 0xce, 0x7d, 0xbd, 0x87, 0xd9, 0xfb, - 0x01, 0xf7, 0xf5, 0xf2, 0x5b, 0xc1, 0x83, 0x6a, 0x50, 0x24, 0xb4, 0x15, 0x7e, 0x2e, 0x34, 0xc9, - 0xb7, 0xb3, 0xc7, 0xb4, 0x31, 0xa0, 0x79, 0x41, 0x5b, 0x18, 0x7a, 0x5e, 0xf4, 0x71, 0x90, 0xfb, - 0xd6, 0x8e, 0x6d, 0xd1, 0xbf, 0x3a, 0xc8, 0xd7, 0x75, 0x29, 0xb6, 0x77, 0xea, 0xa5, 0xf3, 0xbd, - 0xd3, 0x2d, 0xc8, 0xfb, 0xa4, 0x74, 0x84, 0xa4, 0x8f, 0x3b, 0x42, 0x72, 0x1e, 0x00, 0x21, 0x41, - 0xeb, 0x00, 0xfe, 0x18, 0xa4, 0x9b, 0x77, 0x99, 0xf1, 0x3d, 0xe6, 0x8f, 0xe6, 0x60, 0x63, 0x02, - 0x00, 0xe8, 0x1b, 0x60, 0xae, 0x63, 0x5a, 0x9a, 0x83, 0xdb, 0xbb, 0x1a, 0x97, 0x1c, 0xc1, 0xcd, - 0x1c, 0xbf, 0x37, 0x67, 0x3b, 0xa6, 0xd5, 0xc0, 0xed, 0xdd, 0x15, 0x0f, 0x05, 0xbd, 0x13, 0xce, - 0xf8, 0xad, 0xb7, 0x2d, 0x6d, 0xdf, 0x6e, 0xb7, 0xb4, 0x1e, 0xde, 0xd5, 0x0c, 0xfa, 0xba, 0x5f, - 0x96, 0xca, 0xec, 0x94, 0x47, 0xb2, 0x69, 0xad, 0xda, 0xed, 0x96, 0x8a, 0x77, 0xab, 0x24, 0x1b, - 0x3d, 0x0c, 0x7e, 0xd3, 0x35, 0xb3, 0xe5, 0x14, 0x73, 0x8b, 0xd1, 0x73, 0x31, 0x35, 0xeb, 0x25, - 0xd6, 0x5b, 0xce, 0x72, 0xea, 0x83, 0x1f, 0x5b, 0x98, 0xf9, 0xc2, 0xc7, 0x16, 0x66, 0x94, 0xab, - 0xf4, 0x95, 0x2b, 0x3e, 0x8e, 0xb0, 0x83, 0x2e, 0x43, 0x5a, 0x17, 0x1f, 0xec, 0x0e, 0xdb, 0x11, - 0xe3, 0xd0, 0x27, 0x55, 0x7e, 0x52, 0x82, 0xc4, 0xca, 0x8d, 0x2d, 0xdd, 0xec, 0xa1, 0x1a, 0xcc, - 0xfa, 0x8a, 0x39, 0xed, 0x90, 0xf6, 0x75, 0x59, 0x8c, 0xe9, 0x8d, 0x71, 0x87, 0xe7, 0xd2, 0x95, - 0x87, 0x7e, 0xfb, 0xd3, 0x4f, 0x3d, 0xc8, 0x61, 0x6e, 0x0c, 0x9c, 0xa3, 0x13, 0x78, 0x83, 0xe7, - 0xeb, 0x02, 0x6d, 0xbe, 0x0e, 0x49, 0x56, 0x55, 0x07, 0xbd, 0x04, 0xf1, 0x2e, 0xf9, 0xc1, 0xf7, - 0x04, 0xce, 0x8e, 0x55, 0x70, 0x4a, 0x1f, 0x54, 0x07, 0xc6, 0xa7, 0x7c, 0x47, 0x04, 0x60, 0xe5, - 0xc6, 0x8d, 0x66, 0xcf, 0xec, 0xb6, 0xb1, 0xfb, 0x56, 0xb5, 0x7d, 0x1b, 0x4e, 0x04, 0x6e, 0x67, - 0xf7, 0x8c, 0xe3, 0xb7, 0x7f, 0xce, 0xbf, 0xa8, 0xdd, 0x33, 0x46, 0xc2, 0xb6, 0x1c, 0xd7, 0x83, - 0x8d, 0x1e, 0x1f, 0x76, 0xc5, 0x71, 0x87, 0x25, 0xfb, 0x2a, 0x64, 0x7c, 0x61, 0x38, 0xa8, 0x0e, - 0x29, 0x97, 0xff, 0xe6, 0x02, 0x56, 0xc6, 0x0b, 0x58, 0xb0, 0x05, 0x85, 0xec, 0xb1, 0x2b, 0x7f, - 0x21, 0x01, 0x04, 0xc6, 0xc8, 0xd7, 0xa7, 0x8e, 0xa1, 0x3a, 0x24, 0xb8, 0x25, 0x8e, 0xde, 0xf7, - 0x1b, 0x9c, 0x0c, 0x20, 0x20, 0xd4, 0xef, 0x8a, 0xc0, 0xdc, 0xb6, 0x18, 0xbd, 0x5f, 0xff, 0x32, - 0xd8, 0x86, 0x24, 0xb6, 0xdc, 0x9e, 0xe9, 0xed, 0x6a, 0x3d, 0x3d, 0xae, 0xcf, 0x47, 0x34, 0xaa, - 0x66, 0xb9, 0xbd, 0xc3, 0xa0, 0x06, 0x08, 0xac, 0x80, 0x3c, 0x3e, 0x12, 0x85, 0xe2, 0x38, 0x56, - 0xe2, 0x0d, 0x1b, 0x3d, 0x4c, 0x13, 0xc2, 0x97, 0x56, 0xf3, 0x22, 0x99, 0xcf, 0x31, 0x2a, 0x10, - 0xaf, 0x8c, 0x28, 0x17, 0x21, 0xbd, 0x3f, 0x37, 0x2c, 0xef, 0x23, 0xd0, 0x59, 0xa6, 0x09, 0x05, - 0x71, 0x0b, 0x66, 0x47, 0x6f, 0xeb, 0x96, 0x21, 0xdc, 0xd5, 0x63, 0x4d, 0x09, 0xe2, 0x26, 0x4d, - 0x85, 0x41, 0xa0, 0x1a, 0x24, 0x05, 0x5a, 0xec, 0xf8, 0x68, 0x82, 0x17, 0x3d, 0x04, 0xd9, 0xe0, - 0xc4, 0x40, 0x5d, 0x8f, 0x98, 0x9a, 0x09, 0xcc, 0x0b, 0x93, 0x66, 0x9e, 0xc4, 0x91, 0x33, 0x0f, - 0xf7, 0xee, 0x7e, 0x84, 0x1e, 0x56, 0x6f, 0xfd, 0xd5, 0xef, 0x96, 0x2d, 0x00, 0x36, 0x54, 0x89, - 0x25, 0xe5, 0x3d, 0x73, 0x1f, 0xe3, 0x3d, 0xcd, 0x40, 0x56, 0x1c, 0xf7, 0x6b, 0xd5, 0x43, 0xbf, - 0x1b, 0x81, 0x6c, 0xb0, 0x87, 0xfe, 0x5a, 0x4e, 0x5a, 0x68, 0xc3, 0x37, 0x53, 0xec, 0x42, 0xcf, - 0xe3, 0xe3, 0xcc, 0xd4, 0x90, 0x36, 0x4f, 0xb0, 0x4f, 0x9f, 0x8f, 0x42, 0x82, 0x9f, 0xb8, 0xdb, - 0x1c, 0x72, 0x64, 0xa5, 0x49, 0x4f, 0x12, 0xe4, 0xc4, 0x93, 0x04, 0x23, 0xfd, 0xd8, 0x47, 0x20, - 0x4f, 0x16, 0xc4, 0xa1, 0x63, 0x7c, 0xd2, 0xb9, 0x1c, 0x5d, 0xd7, 0xfa, 0x87, 0xd6, 0xd1, 0x02, - 0x64, 0x08, 0x99, 0x6f, 0x87, 0x09, 0x0d, 0x74, 0xf4, 0x83, 0x1a, 0x4b, 0x41, 0x4f, 0x01, 0xda, - 0xf7, 0x02, 0x13, 0x9a, 0x2f, 0x08, 0x42, 0x37, 0xeb, 0xe7, 0x08, 0xf2, 0x07, 0x01, 0x48, 0x2d, - 0x34, 0xf6, 0xec, 0x34, 0x7f, 0xd4, 0x9b, 0xa4, 0xac, 0xd0, 0xa7, 0xa7, 0xbf, 0x55, 0x62, 0xfe, - 0xf0, 0xc0, 0xb2, 0x99, 0x2f, 0x47, 0x9a, 0x53, 0x0c, 0x8a, 0x3f, 0x7d, 0x73, 0xa1, 0x74, 0xa8, - 0x77, 0xda, 0xcb, 0xca, 0x08, 0x1c, 0x65, 0xd4, 0x4a, 0x9e, 0x38, 0xce, 0xe1, 0x65, 0x37, 0xaa, - 0x83, 0x7c, 0x0b, 0x1f, 0x6a, 0x3d, 0xfe, 0x37, 0xb9, 0xb5, 0x5d, 0x8c, 0xf9, 0xc2, 0xe5, 0xf4, - 0xd2, 0x88, 0x47, 0xc0, 0x97, 0xaa, 0xb6, 0x69, 0xf1, 0x2d, 0xb0, 0xfc, 0x2d, 0x7c, 0xa8, 0x72, - 0xbe, 0xab, 0x18, 0x2f, 0xbf, 0x83, 0x8c, 0x94, 0xbb, 0x9f, 0xff, 0x99, 0xf3, 0x67, 0x02, 0x0f, - 0x5a, 0x1f, 0x78, 0xb1, 0x39, 0xd6, 0xbd, 0xc4, 0xe9, 0x45, 0xfe, 0x04, 0xe4, 0x1d, 0xfb, 0x5f, - 0x07, 0x08, 0x2c, 0x0a, 0xa4, 0xa3, 0x17, 0x1b, 0x3e, 0x7f, 0x68, 0xb1, 0x11, 0x18, 0x9e, 0xef, - 0xf6, 0xed, 0x7f, 0x64, 0x52, 0x6b, 0x82, 0x9a, 0xc9, 0x99, 0xe8, 0xa8, 0x9f, 0x51, 0xfe, 0xb5, - 0x04, 0xa7, 0x87, 0x34, 0xd9, 0xab, 0xb2, 0x01, 0xa8, 0x17, 0xc8, 0xa4, 0x1a, 0x21, 0xf6, 0x99, - 0xef, 0x6f, 0x60, 0xcc, 0xf6, 0x86, 0x26, 0x81, 0xb7, 0x66, 0x22, 0xe3, 0x56, 0xec, 0x37, 0x25, - 0x98, 0x0f, 0x56, 0xc0, 0x6b, 0x4a, 0x03, 0xb2, 0xc1, 0xa2, 0x79, 0x23, 0xde, 0x31, 0x4d, 0x23, - 0x82, 0xf5, 0x0f, 0x81, 0xa0, 0x1b, 0xbe, 0xb5, 0x60, 0x41, 0xc1, 0x67, 0xa6, 0x16, 0x8a, 0xa8, - 0xd8, 0x48, 0xab, 0xc1, 0xfa, 0xe6, 0x0f, 0x25, 0x88, 0x6d, 0xd9, 0x76, 0x1b, 0xbd, 0x0f, 0x66, - 0x2d, 0xdb, 0xd5, 0xc8, 0xc8, 0xc2, 0x2d, 0x8d, 0xc7, 0x08, 0x98, 0x25, 0xae, 0x1d, 0x29, 0xab, - 0x2f, 0xbe, 0xb9, 0x30, 0xcc, 0x39, 0xea, 0x51, 0xf9, 0x82, 0x65, 0xbb, 0x15, 0x4a, 0xd4, 0x64, - 0x61, 0x84, 0x5d, 0xc8, 0x85, 0x8b, 0x63, 0xd6, 0xba, 0x3c, 0xa9, 0xb8, 0xdc, 0xc4, 0xa2, 0xb2, - 0x3b, 0x81, 0x72, 0xd8, 0x1b, 0xd1, 0x7f, 0x4c, 0x7a, 0xee, 0x26, 0xc8, 0x37, 0x06, 0xcf, 0x2f, - 0xd5, 0x20, 0x29, 0xce, 0x2b, 0x49, 0x53, 0x1e, 0x85, 0x0a, 0x8a, 0x93, 0xf3, 0x2a, 0x9f, 0x89, - 0xc0, 0xe9, 0xaa, 0x6d, 0x39, 0x3c, 0x98, 0xc3, 0x07, 0x34, 0x0b, 0xc1, 0x1e, 0xa2, 0xc7, 0xc7, - 0x84, 0x9a, 0xb2, 0xc3, 0x01, 0xa5, 0x1b, 0x50, 0x20, 0x33, 0xab, 0x61, 0x5b, 0x5f, 0x65, 0x3c, - 0x29, 0x67, 0xb7, 0x5b, 0xbc, 0x46, 0xb7, 0xf0, 0x21, 0xc1, 0xb5, 0xf0, 0x9d, 0x10, 0x6e, 0xf4, - 0xfe, 0x70, 0x2d, 0x7c, 0x27, 0x80, 0xeb, 0x6f, 0x95, 0xc7, 0x42, 0x5b, 0xe5, 0x97, 0x21, 0x4a, - 0xac, 0x60, 0xfc, 0x18, 0x76, 0x83, 0x30, 0x04, 0x66, 0xb3, 0x06, 0x9c, 0xe6, 0x01, 0x02, 0x67, - 0x73, 0x97, 0x4a, 0x14, 0xd3, 0x06, 0xbd, 0x8c, 0x0f, 0x47, 0x44, 0x0b, 0xb2, 0x53, 0x45, 0x0b, - 0xce, 0xff, 0xbc, 0x04, 0xe0, 0xc7, 0xc5, 0xd0, 0x93, 0x70, 0xaa, 0xb2, 0xb9, 0xb1, 0xa2, 0x35, - 0x9a, 0xe5, 0xe6, 0x76, 0x23, 0xfc, 0x27, 0x63, 0xc4, 0x23, 0x58, 0x4e, 0x17, 0x1b, 0xe6, 0xae, - 0x89, 0x5b, 0xe8, 0x51, 0x98, 0x0f, 0x53, 0x93, 0xaf, 0xda, 0x8a, 0x2c, 0x95, 0xb2, 0x77, 0xef, - 0x2d, 0xa6, 0xd8, 0xd2, 0x00, 0xb7, 0xd0, 0x39, 0x38, 0x31, 0x4c, 0x57, 0xdf, 0xb8, 0x26, 0x47, - 0x4a, 0xb9, 0xbb, 0xf7, 0x16, 0xd3, 0xde, 0x1a, 0x02, 0x29, 0x80, 0x82, 0x94, 0x1c, 0x2f, 0x5a, - 0x82, 0xbb, 0xf7, 0x16, 0x13, 0x6c, 0xb4, 0x94, 0x62, 0x1f, 0xfc, 0xb1, 0xb3, 0x33, 0xe7, 0xbf, - 0x09, 0xa0, 0x6e, 0xed, 0xf6, 0x74, 0x83, 0x5a, 0x85, 0x12, 0x9c, 0xac, 0x6f, 0x5c, 0x55, 0xcb, - 0xd5, 0x66, 0x7d, 0x73, 0x63, 0xe0, 0x2f, 0xdd, 0x84, 0xf3, 0x56, 0x36, 0xb7, 0x2b, 0x6b, 0x35, - 0xad, 0x51, 0xbf, 0xb6, 0xc1, 0x76, 0xfc, 0x43, 0x79, 0xef, 0xd9, 0x68, 0xd6, 0xd7, 0x6b, 0x72, - 0xa4, 0x72, 0x79, 0xec, 0x8e, 0xd2, 0x03, 0xa1, 0x71, 0xe8, 0xcf, 0x44, 0xa1, 0x6d, 0xa4, 0xff, - 0x13, 0x00, 0x00, 0xff, 0xff, 0xb6, 0x1a, 0x0c, 0x35, 0x2d, 0xa5, 0x00, 0x00, + // 11335 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x6b, 0x90, 0x1c, 0xd7, + 0x75, 0x18, 0xbc, 0xf3, 0x9e, 0x39, 0xf3, 0xea, 0xbd, 0xbb, 0x00, 0x16, 0x03, 0x12, 0xbb, 0x6c, + 0x8a, 0x24, 0x08, 0x92, 0x0b, 0x12, 0x24, 0x40, 0x71, 0x21, 0x89, 0xdf, 0xcc, 0xec, 0x00, 0x18, + 0x70, 0x5f, 0xec, 0x99, 0x85, 0x48, 0xda, 0x56, 0xbb, 0xb7, 0xe7, 0xee, 0x6e, 0x13, 0x33, 0xdd, + 0xad, 0xee, 0x1e, 0x60, 0x97, 0xf5, 0x55, 0x4a, 0x8e, 0xec, 0x44, 0x86, 0x1f, 0x91, 0x63, 0x97, + 0x2d, 0x5b, 0x82, 0x2d, 0xd9, 0xb1, 0x25, 0x3b, 0x2f, 0x3f, 0x14, 0x3f, 0xe2, 0x8a, 0x63, 0xa7, + 0x9c, 0xc4, 0x76, 0x25, 0x29, 0xc5, 0x3f, 0x12, 0x27, 0x55, 0x66, 0x6c, 0xc9, 0x15, 0x29, 0xb2, + 0x9c, 0xf8, 0x21, 0x27, 0x4e, 0xa9, 0x92, 0x4a, 0xdd, 0x57, 0x3f, 0xe6, 0xb1, 0x33, 0x0b, 0x91, + 0xb2, 0x63, 0xe7, 0x0f, 0x30, 0x7d, 0xee, 0x39, 0xe7, 0xde, 0x7b, 0xee, 0xb9, 0xe7, 0x9e, 0x73, + 0xee, 0x63, 0xe1, 0x77, 0x6b, 0xb0, 0xb4, 0x67, 0x59, 0x7b, 0x5d, 0x7c, 0xc1, 0x76, 0x2c, 0xcf, + 0xda, 0xe9, 0xef, 0x5e, 0xe8, 0x60, 0x57, 0x77, 0x0c, 0xdb, 0xb3, 0x9c, 0x65, 0x0a, 0x43, 0x65, + 0x86, 0xb1, 0x2c, 0x30, 0xe4, 0x75, 0x98, 0xbd, 0x6a, 0x74, 0xf1, 0xaa, 0x8f, 0xd8, 0xc2, 0x1e, + 0x7a, 0x27, 0x24, 0x77, 0x8d, 0x2e, 0x5e, 0x88, 0x2d, 0x25, 0xce, 0xe5, 0x2f, 0xbe, 0x63, 0x79, + 0x80, 0x68, 0x39, 0x4a, 0xb1, 0x45, 0xc0, 0x0a, 0xa5, 0x90, 0xff, 0x77, 0x12, 0xe6, 0x46, 0x94, + 0x22, 0x04, 0x49, 0x53, 0xeb, 0x11, 0x8e, 0xb1, 0x73, 0x39, 0x85, 0xfe, 0x46, 0x0b, 0x90, 0xb1, + 0x35, 0xfd, 0x96, 0xb6, 0x87, 0x17, 0xe2, 0x14, 0x2c, 0x3e, 0xd1, 0x59, 0x80, 0x0e, 0xb6, 0xb1, + 0xd9, 0xc1, 0xa6, 0x7e, 0xb8, 0x90, 0x58, 0x4a, 0x9c, 0xcb, 0x29, 0x21, 0x08, 0x7a, 0x02, 0x66, + 0xed, 0xfe, 0x4e, 0xd7, 0xd0, 0xd5, 0x10, 0x1a, 0x2c, 0x25, 0xce, 0xa5, 0x14, 0x89, 0x15, 0xac, + 0x06, 0xc8, 0x8f, 0x41, 0xf9, 0x0e, 0xd6, 0x6e, 0x85, 0x51, 0xf3, 0x14, 0xb5, 0x44, 0xc0, 0x21, + 0xc4, 0x3a, 0x14, 0x7a, 0xd8, 0x75, 0xb5, 0x3d, 0xac, 0x7a, 0x87, 0x36, 0x5e, 0x48, 0xd2, 0xde, + 0x2f, 0x0d, 0xf5, 0x7e, 0xb0, 0xe7, 0x79, 0x4e, 0xd5, 0x3e, 0xb4, 0x31, 0xaa, 0x42, 0x0e, 0x9b, + 0xfd, 0x1e, 0xe3, 0x90, 0x1a, 0x23, 0xbf, 0x86, 0xd9, 0xef, 0x0d, 0x72, 0xc9, 0x12, 0x32, 0xce, + 0x22, 0xe3, 0x62, 0xe7, 0xb6, 0xa1, 0xe3, 0x85, 0x34, 0x65, 0xf0, 0xd8, 0x10, 0x83, 0x16, 0x2b, + 0x1f, 0xe4, 0x21, 0xe8, 0x50, 0x1d, 0x72, 0xf8, 0xc0, 0xc3, 0xa6, 0x6b, 0x58, 0xe6, 0x42, 0x86, + 0x32, 0x79, 0x64, 0xc4, 0x28, 0xe2, 0x6e, 0x67, 0x90, 0x45, 0x40, 0x87, 0x2e, 0x43, 0xc6, 0xb2, + 0x3d, 0xc3, 0x32, 0xdd, 0x85, 0xec, 0x52, 0xec, 0x5c, 0xfe, 0xe2, 0x03, 0x23, 0x15, 0x61, 0x93, + 0xe1, 0x28, 0x02, 0x19, 0x35, 0x41, 0x72, 0xad, 0xbe, 0xa3, 0x63, 0x55, 0xb7, 0x3a, 0x58, 0x35, + 0xcc, 0x5d, 0x6b, 0x21, 0x47, 0x19, 0x2c, 0x0e, 0x77, 0x84, 0x22, 0xd6, 0xad, 0x0e, 0x6e, 0x9a, + 0xbb, 0x96, 0x52, 0x72, 0x23, 0xdf, 0xe8, 0x24, 0xa4, 0xdd, 0x43, 0xd3, 0xd3, 0x0e, 0x16, 0x0a, + 0x54, 0x43, 0xf8, 0x17, 0x51, 0x1d, 0xdc, 0x31, 0x48, 0x75, 0x0b, 0x45, 0xa6, 0x3a, 0xfc, 0x53, + 0xfe, 0x85, 0x34, 0x94, 0xa7, 0x51, 0xbe, 0x2b, 0x90, 0xda, 0x25, 0xfd, 0x5f, 0x88, 0x1f, 0x47, + 0x3a, 0x8c, 0x26, 0x2a, 0xde, 0xf4, 0x7d, 0x8a, 0xb7, 0x0a, 0x79, 0x13, 0xbb, 0x1e, 0xee, 0x30, + 0x5d, 0x49, 0x4c, 0xa9, 0x6d, 0xc0, 0x88, 0x86, 0x95, 0x2d, 0x79, 0x5f, 0xca, 0xf6, 0x0a, 0x94, + 0xfd, 0x26, 0xa9, 0x8e, 0x66, 0xee, 0x09, 0xad, 0xbd, 0x30, 0xa9, 0x25, 0xcb, 0x0d, 0x41, 0xa7, + 0x10, 0x32, 0xa5, 0x84, 0x23, 0xdf, 0x68, 0x15, 0xc0, 0x32, 0xb1, 0xb5, 0xab, 0x76, 0xb0, 0xde, + 0x5d, 0xc8, 0x8e, 0x91, 0xd2, 0x26, 0x41, 0x19, 0x92, 0x92, 0xc5, 0xa0, 0x7a, 0x17, 0xbd, 0x10, + 0x28, 0x61, 0x66, 0x8c, 0x0e, 0xad, 0xb3, 0xe9, 0x37, 0xa4, 0x87, 0xdb, 0x50, 0x72, 0x30, 0x99, + 0x11, 0xb8, 0xc3, 0x7b, 0x96, 0xa3, 0x8d, 0x58, 0x9e, 0xd8, 0x33, 0x85, 0x93, 0xb1, 0x8e, 0x15, + 0x9d, 0xf0, 0x27, 0x7a, 0x18, 0x7c, 0x80, 0x4a, 0xd5, 0x0a, 0xa8, 0x7d, 0x2a, 0x08, 0xe0, 0x86, + 0xd6, 0xc3, 0x95, 0x37, 0xa0, 0x14, 0x15, 0x0f, 0x9a, 0x87, 0x94, 0xeb, 0x69, 0x8e, 0x47, 0xb5, + 0x30, 0xa5, 0xb0, 0x0f, 0x24, 0x41, 0x02, 0x9b, 0x1d, 0x6a, 0xff, 0x52, 0x0a, 0xf9, 0x89, 0xfe, + 0xbf, 0xa0, 0xc3, 0x09, 0xda, 0xe1, 0x47, 0x87, 0x47, 0x34, 0xc2, 0x79, 0xb0, 0xdf, 0x95, 0xe7, + 0xa1, 0x18, 0xe9, 0xc0, 0xb4, 0x55, 0xcb, 0xff, 0x3f, 0x9c, 0x18, 0xc9, 0x1a, 0xbd, 0x02, 0xf3, + 0x7d, 0xd3, 0x30, 0x3d, 0xec, 0xd8, 0x0e, 0x26, 0x1a, 0xcb, 0xaa, 0x5a, 0xf8, 0x7c, 0x66, 0x8c, + 0xce, 0x6d, 0x87, 0xb1, 0x19, 0x17, 0x65, 0xae, 0x3f, 0x0c, 0x3c, 0x9f, 0xcb, 0x7e, 0x21, 0x23, + 0x7d, 0xe0, 0x03, 0x1f, 0xf8, 0x40, 0x5c, 0xfe, 0x95, 0x34, 0xcc, 0x8f, 0x9a, 0x33, 0x23, 0xa7, + 0xef, 0x49, 0x48, 0x9b, 0xfd, 0xde, 0x0e, 0x76, 0xa8, 0x90, 0x52, 0x0a, 0xff, 0x42, 0x55, 0x48, + 0x75, 0xb5, 0x1d, 0xdc, 0x5d, 0x48, 0x2e, 0xc5, 0xce, 0x95, 0x2e, 0x3e, 0x31, 0xd5, 0xac, 0x5c, + 0x5e, 0x23, 0x24, 0x0a, 0xa3, 0x44, 0xef, 0x81, 0x24, 0x37, 0xde, 0x84, 0xc3, 0xf9, 0xe9, 0x38, + 0x90, 0xb9, 0xa4, 0x50, 0x3a, 0x74, 0x06, 0x72, 0xe4, 0x7f, 0xa6, 0x1b, 0x69, 0xda, 0xe6, 0x2c, + 0x01, 0x10, 0xbd, 0x40, 0x15, 0xc8, 0xd2, 0x69, 0xd2, 0xc1, 0x62, 0xd1, 0xf3, 0xbf, 0x89, 0x62, + 0x75, 0xf0, 0xae, 0xd6, 0xef, 0x7a, 0xea, 0x6d, 0xad, 0xdb, 0xc7, 0x54, 0xe1, 0x73, 0x4a, 0x81, + 0x03, 0x6f, 0x12, 0x18, 0x5a, 0x84, 0x3c, 0x9b, 0x55, 0x86, 0xd9, 0xc1, 0x07, 0xd4, 0xae, 0xa6, + 0x14, 0x36, 0xd1, 0x9a, 0x04, 0x42, 0xaa, 0x7f, 0xdd, 0xb5, 0x4c, 0xa1, 0x9a, 0xb4, 0x0a, 0x02, + 0xa0, 0xd5, 0x3f, 0x3f, 0x68, 0xd2, 0x1f, 0x1c, 0xdd, 0xbd, 0xa1, 0xb9, 0xf4, 0x18, 0x94, 0x29, + 0xc6, 0xb3, 0x7c, 0xe8, 0xb5, 0xee, 0xc2, 0xec, 0x52, 0xec, 0x5c, 0x56, 0x29, 0x31, 0xf0, 0x26, + 0x87, 0xca, 0x3f, 0x1b, 0x87, 0x24, 0x35, 0x2c, 0x65, 0xc8, 0xb7, 0x5f, 0xdd, 0x6a, 0xa8, 0xab, + 0x9b, 0xdb, 0xb5, 0xb5, 0x86, 0x14, 0x43, 0x25, 0x00, 0x0a, 0xb8, 0xba, 0xb6, 0x59, 0x6d, 0x4b, + 0x71, 0xff, 0xbb, 0xb9, 0xd1, 0xbe, 0xfc, 0x9c, 0x94, 0xf0, 0x09, 0xb6, 0x19, 0x20, 0x19, 0x46, + 0x78, 0xf6, 0xa2, 0x94, 0x42, 0x12, 0x14, 0x18, 0x83, 0xe6, 0x2b, 0x8d, 0xd5, 0xcb, 0xcf, 0x49, + 0xe9, 0x28, 0xe4, 0xd9, 0x8b, 0x52, 0x06, 0x15, 0x21, 0x47, 0x21, 0xb5, 0xcd, 0xcd, 0x35, 0x29, + 0xeb, 0xf3, 0x6c, 0xb5, 0x95, 0xe6, 0xc6, 0x35, 0x29, 0xe7, 0xf3, 0xbc, 0xa6, 0x6c, 0x6e, 0x6f, + 0x49, 0xe0, 0x73, 0x58, 0x6f, 0xb4, 0x5a, 0xd5, 0x6b, 0x0d, 0x29, 0xef, 0x63, 0xd4, 0x5e, 0x6d, + 0x37, 0x5a, 0x52, 0x21, 0xd2, 0xac, 0x67, 0x2f, 0x4a, 0x45, 0xbf, 0x8a, 0xc6, 0xc6, 0xf6, 0xba, + 0x54, 0x42, 0xb3, 0x50, 0x64, 0x55, 0x88, 0x46, 0x94, 0x07, 0x40, 0x97, 0x9f, 0x93, 0xa4, 0xa0, + 0x21, 0x8c, 0xcb, 0x6c, 0x04, 0x70, 0xf9, 0x39, 0x09, 0xc9, 0x75, 0x48, 0x51, 0x35, 0x44, 0x08, + 0x4a, 0x6b, 0xd5, 0x5a, 0x63, 0x4d, 0xdd, 0xdc, 0x6a, 0x37, 0x37, 0x37, 0xaa, 0x6b, 0x52, 0x2c, + 0x80, 0x29, 0x8d, 0x97, 0xb7, 0x9b, 0x4a, 0x63, 0x55, 0x8a, 0x87, 0x61, 0x5b, 0x8d, 0x6a, 0xbb, + 0xb1, 0x2a, 0x25, 0x64, 0x1d, 0xe6, 0x47, 0x19, 0xd4, 0x91, 0x53, 0x28, 0xa4, 0x0b, 0xf1, 0x31, + 0xba, 0x40, 0x79, 0x0d, 0xea, 0x82, 0xfc, 0xb9, 0x38, 0xcc, 0x8d, 0x58, 0x54, 0x46, 0x56, 0xf2, + 0x22, 0xa4, 0x98, 0x2e, 0xb3, 0x65, 0xf6, 0xf1, 0x91, 0xab, 0x13, 0xd5, 0xec, 0xa1, 0xa5, 0x96, + 0xd2, 0x85, 0x9d, 0x90, 0xc4, 0x18, 0x27, 0x84, 0xb0, 0x18, 0x52, 0xd8, 0x6f, 0x18, 0x32, 0xfe, + 0x6c, 0x7d, 0xbc, 0x3c, 0xcd, 0xfa, 0x48, 0x61, 0xc7, 0x5b, 0x04, 0x52, 0x23, 0x16, 0x81, 0x2b, + 0x30, 0x3b, 0xc4, 0x68, 0x6a, 0x63, 0xfc, 0xc1, 0x18, 0x2c, 0x8c, 0x13, 0xce, 0x04, 0x93, 0x18, + 0x8f, 0x98, 0xc4, 0x2b, 0x83, 0x12, 0x7c, 0x68, 0xfc, 0x20, 0x0c, 0x8d, 0xf5, 0x27, 0x63, 0x70, + 0x72, 0xb4, 0xb3, 0x39, 0xb2, 0x0d, 0xef, 0x81, 0x74, 0x0f, 0x7b, 0xfb, 0x96, 0x70, 0xab, 0x1e, + 0x1d, 0xb1, 0x58, 0x93, 0xe2, 0xc1, 0xc1, 0xe6, 0x54, 0xe1, 0xd5, 0x3e, 0x31, 0xce, 0x63, 0x64, + 0xad, 0x19, 0x6a, 0xe9, 0xb7, 0xc6, 0xe1, 0xc4, 0x48, 0xe6, 0x23, 0x1b, 0xfa, 0x20, 0x80, 0x61, + 0xda, 0x7d, 0x8f, 0xb9, 0x4e, 0xcc, 0x12, 0xe7, 0x28, 0x84, 0x1a, 0x2f, 0x62, 0x65, 0xfb, 0x9e, + 0x5f, 0x9e, 0xa0, 0xe5, 0xc0, 0x40, 0x14, 0xe1, 0x9d, 0x41, 0x43, 0x93, 0xb4, 0xa1, 0x67, 0xc7, + 0xf4, 0x74, 0x48, 0x31, 0x9f, 0x06, 0x49, 0xef, 0x1a, 0xd8, 0xf4, 0x54, 0xd7, 0x73, 0xb0, 0xd6, + 0x33, 0xcc, 0x3d, 0xba, 0xd4, 0x64, 0x57, 0x52, 0xbb, 0x5a, 0xd7, 0xc5, 0x4a, 0x99, 0x15, 0xb7, + 0x44, 0x29, 0xa1, 0xa0, 0x0a, 0xe4, 0x84, 0x28, 0xd2, 0x11, 0x0a, 0x56, 0xec, 0x53, 0xc8, 0xdf, + 0x95, 0x83, 0x7c, 0xc8, 0x35, 0x47, 0x0f, 0x41, 0xe1, 0x75, 0xed, 0xb6, 0xa6, 0x8a, 0x70, 0x8b, + 0x49, 0x22, 0x4f, 0x60, 0x5b, 0x3c, 0xe4, 0x7a, 0x1a, 0xe6, 0x29, 0x8a, 0xd5, 0xf7, 0xb0, 0xa3, + 0xea, 0x5d, 0xcd, 0x75, 0xa9, 0xd0, 0xb2, 0x14, 0x15, 0x91, 0xb2, 0x4d, 0x52, 0x54, 0x17, 0x25, + 0xe8, 0x12, 0xcc, 0x51, 0x8a, 0x5e, 0xbf, 0xeb, 0x19, 0x76, 0x17, 0xab, 0x24, 0x00, 0x74, 0xe9, + 0x92, 0xe3, 0xb7, 0x6c, 0x96, 0x60, 0xac, 0x73, 0x04, 0xd2, 0x22, 0x17, 0xad, 0xc2, 0x83, 0x94, + 0x6c, 0x0f, 0x9b, 0xd8, 0xd1, 0x3c, 0xac, 0xe2, 0xf7, 0xf7, 0xb5, 0xae, 0xab, 0x6a, 0x66, 0x47, + 0xdd, 0xd7, 0xdc, 0xfd, 0x85, 0x79, 0xc2, 0xa0, 0x16, 0x5f, 0x88, 0x29, 0xa7, 0x09, 0xe2, 0x35, + 0x8e, 0xd7, 0xa0, 0x68, 0x55, 0xb3, 0x73, 0x5d, 0x73, 0xf7, 0xd1, 0x0a, 0x9c, 0xa4, 0x5c, 0x5c, + 0xcf, 0x31, 0xcc, 0x3d, 0x55, 0xdf, 0xc7, 0xfa, 0x2d, 0xb5, 0xef, 0xed, 0xbe, 0x73, 0xe1, 0x4c, + 0xb8, 0x7e, 0xda, 0xc2, 0x16, 0xc5, 0xa9, 0x13, 0x94, 0x6d, 0x6f, 0xf7, 0x9d, 0xa8, 0x05, 0x05, + 0x32, 0x18, 0x3d, 0xe3, 0x0d, 0xac, 0xee, 0x5a, 0x0e, 0x5d, 0x43, 0x4b, 0x23, 0x4c, 0x53, 0x48, + 0x82, 0xcb, 0x9b, 0x9c, 0x60, 0xdd, 0xea, 0xe0, 0x95, 0x54, 0x6b, 0xab, 0xd1, 0x58, 0x55, 0xf2, + 0x82, 0xcb, 0x55, 0xcb, 0x21, 0x0a, 0xb5, 0x67, 0xf9, 0x02, 0xce, 0x33, 0x85, 0xda, 0xb3, 0x84, + 0x78, 0x2f, 0xc1, 0x9c, 0xae, 0xb3, 0x3e, 0x1b, 0xba, 0xca, 0xc3, 0x34, 0x77, 0x41, 0x8a, 0x08, + 0x4b, 0xd7, 0xaf, 0x31, 0x04, 0xae, 0xe3, 0x2e, 0x7a, 0x01, 0x4e, 0x04, 0xc2, 0x0a, 0x13, 0xce, + 0x0e, 0xf5, 0x72, 0x90, 0xf4, 0x12, 0xcc, 0xd9, 0x87, 0xc3, 0x84, 0x28, 0x52, 0xa3, 0x7d, 0x38, + 0x48, 0xf6, 0x3c, 0xcc, 0xdb, 0xfb, 0xf6, 0x30, 0xdd, 0xf9, 0x30, 0x1d, 0xb2, 0xf7, 0xed, 0x41, + 0xc2, 0x47, 0x68, 0xcc, 0xee, 0x60, 0x5d, 0xf3, 0x70, 0x67, 0xe1, 0x54, 0x18, 0x3d, 0x54, 0x80, + 0x96, 0x41, 0xd2, 0x75, 0x15, 0x9b, 0xda, 0x4e, 0x17, 0xab, 0x9a, 0x83, 0x4d, 0xcd, 0x5d, 0x58, + 0xa4, 0xc8, 0x49, 0xcf, 0xe9, 0x63, 0xa5, 0xa4, 0xeb, 0x0d, 0x5a, 0x58, 0xa5, 0x65, 0xe8, 0x3c, + 0xcc, 0x5a, 0x3b, 0xaf, 0xeb, 0x4c, 0x23, 0x55, 0xdb, 0xc1, 0xbb, 0xc6, 0xc1, 0xc2, 0x3b, 0xa8, + 0x78, 0xcb, 0xa4, 0x80, 0xea, 0xe3, 0x16, 0x05, 0xa3, 0xc7, 0x41, 0xd2, 0xdd, 0x7d, 0xcd, 0xb1, + 0xa9, 0x49, 0x76, 0x6d, 0x4d, 0xc7, 0x0b, 0x8f, 0x30, 0x54, 0x06, 0xdf, 0x10, 0x60, 0x32, 0x23, + 0xdc, 0x3b, 0xc6, 0xae, 0x27, 0x38, 0x3e, 0xc6, 0x66, 0x04, 0x85, 0x71, 0x6e, 0xe7, 0x40, 0x22, + 0x92, 0x88, 0x54, 0x7c, 0x8e, 0xa2, 0x95, 0xec, 0x7d, 0x3b, 0x5c, 0xef, 0xc3, 0x50, 0x24, 0x98, + 0x41, 0xa5, 0x8f, 0x33, 0xc7, 0xcd, 0xde, 0x0f, 0xd5, 0xf8, 0x1c, 0x9c, 0x24, 0x48, 0x3d, 0xec, + 0x69, 0x1d, 0xcd, 0xd3, 0x42, 0xd8, 0x4f, 0x52, 0x6c, 0x22, 0xf6, 0x75, 0x5e, 0x18, 0x69, 0xa7, + 0xd3, 0xdf, 0x39, 0xf4, 0x15, 0xeb, 0x29, 0xd6, 0x4e, 0x02, 0x13, 0xaa, 0xf5, 0xb6, 0x39, 0xe7, + 0xf2, 0x0a, 0x14, 0xc2, 0x7a, 0x8f, 0x72, 0xc0, 0x34, 0x5f, 0x8a, 0x11, 0x27, 0xa8, 0xbe, 0xb9, + 0x4a, 0xdc, 0x97, 0xd7, 0x1a, 0x52, 0x9c, 0xb8, 0x51, 0x6b, 0xcd, 0x76, 0x43, 0x55, 0xb6, 0x37, + 0xda, 0xcd, 0xf5, 0x86, 0x94, 0x08, 0x39, 0xf6, 0x37, 0x92, 0xd9, 0x47, 0xa5, 0xc7, 0xe4, 0x5f, + 0x4c, 0x40, 0x29, 0x1a, 0xa9, 0xa1, 0x77, 0xc1, 0x29, 0x91, 0x70, 0x71, 0xb1, 0xa7, 0xde, 0x31, + 0x1c, 0x3a, 0x21, 0x7b, 0x1a, 0x5b, 0x1c, 0x7d, 0xfd, 0x99, 0xe7, 0x58, 0x2d, 0xec, 0xbd, 0xd7, + 0x70, 0xc8, 0x74, 0xeb, 0x69, 0x1e, 0x5a, 0x83, 0x45, 0xd3, 0x52, 0x5d, 0x4f, 0x33, 0x3b, 0x9a, + 0xd3, 0x51, 0x83, 0x54, 0x97, 0xaa, 0xe9, 0x3a, 0x76, 0x5d, 0x8b, 0x2d, 0x84, 0x3e, 0x97, 0x07, + 0x4c, 0xab, 0xc5, 0x91, 0x83, 0x15, 0xa2, 0xca, 0x51, 0x07, 0xd4, 0x37, 0x31, 0x4e, 0x7d, 0xcf, + 0x40, 0xae, 0xa7, 0xd9, 0x2a, 0x36, 0x3d, 0xe7, 0x90, 0xfa, 0xe7, 0x59, 0x25, 0xdb, 0xd3, 0xec, + 0x06, 0xf9, 0x46, 0x37, 0xe1, 0xd1, 0x00, 0x55, 0xed, 0xe2, 0x3d, 0x4d, 0x3f, 0x54, 0xa9, 0x33, + 0x4e, 0xd3, 0x06, 0xaa, 0x6e, 0x99, 0xbb, 0x5d, 0x43, 0xf7, 0x5c, 0x6a, 0x1f, 0x98, 0x8d, 0x93, + 0x03, 0x8a, 0x35, 0x4a, 0x70, 0xc3, 0xb5, 0x4c, 0xea, 0x83, 0xd7, 0x05, 0xf6, 0xd7, 0x24, 0xfc, + 0xba, 0x91, 0xcc, 0x26, 0xa5, 0xd4, 0x8d, 0x64, 0x36, 0x25, 0xa5, 0x6f, 0x24, 0xb3, 0x69, 0x29, + 0x73, 0x23, 0x99, 0xcd, 0x4a, 0xb9, 0x1b, 0xc9, 0x6c, 0x4e, 0x02, 0xf9, 0xe7, 0xb2, 0x50, 0x08, + 0x47, 0x06, 0x24, 0xd0, 0xd2, 0xe9, 0xda, 0x18, 0xa3, 0xd6, 0xf3, 0xe1, 0x23, 0xe3, 0x88, 0xe5, + 0x3a, 0x59, 0x34, 0x57, 0xd2, 0xcc, 0x0d, 0x57, 0x18, 0x25, 0x71, 0x58, 0x88, 0x5a, 0x63, 0xe6, + 0xf6, 0x64, 0x15, 0xfe, 0x85, 0xae, 0x41, 0xfa, 0x75, 0x97, 0xf2, 0x4e, 0x53, 0xde, 0xef, 0x38, + 0x9a, 0xf7, 0x8d, 0x16, 0x65, 0x9e, 0xbb, 0xd1, 0x52, 0x37, 0x36, 0x95, 0xf5, 0xea, 0x9a, 0xc2, + 0xc9, 0xd1, 0x69, 0x48, 0x76, 0xb5, 0x37, 0x0e, 0xa3, 0xcb, 0x2b, 0x05, 0xa1, 0x65, 0x28, 0xf7, + 0xcd, 0xdb, 0xd8, 0x31, 0x76, 0x0d, 0x32, 0x54, 0x04, 0xab, 0x1c, 0xc6, 0x2a, 0x05, 0xa5, 0x6b, + 0x04, 0x7f, 0x4a, 0xf5, 0x38, 0x0d, 0xc9, 0x3b, 0x58, 0xbb, 0x15, 0x5d, 0x04, 0x29, 0x08, 0x9d, + 0x83, 0x42, 0x07, 0xef, 0xf4, 0xf7, 0x54, 0x07, 0x77, 0x34, 0xdd, 0x8b, 0x9a, 0xfe, 0x3c, 0x2d, + 0x52, 0x68, 0x09, 0x7a, 0x09, 0x72, 0x64, 0x8c, 0x4c, 0x3a, 0xc6, 0xb3, 0x54, 0x04, 0x4f, 0x1d, + 0x2d, 0x02, 0x3e, 0xc4, 0x82, 0x48, 0x09, 0xe8, 0xd1, 0x55, 0x48, 0x7b, 0x9a, 0xb3, 0x87, 0x3d, + 0x6a, 0xf9, 0x4b, 0x23, 0x92, 0x1f, 0x23, 0x38, 0xb5, 0x29, 0x05, 0x8d, 0x69, 0x39, 0xf5, 0xdb, + 0x68, 0x65, 0x2e, 0x40, 0x8a, 0xaa, 0x07, 0x02, 0xe0, 0x0a, 0x22, 0xcd, 0xa0, 0x2c, 0x24, 0xeb, + 0x9b, 0x0a, 0xb1, 0x34, 0x12, 0x14, 0x18, 0x54, 0xdd, 0x6a, 0x36, 0xea, 0x0d, 0x29, 0x2e, 0x5f, + 0x82, 0x34, 0x1b, 0x73, 0x62, 0x85, 0xfc, 0x51, 0x97, 0x66, 0xf8, 0x27, 0xe7, 0x11, 0x13, 0xa5, + 0xdb, 0xeb, 0xb5, 0x86, 0x22, 0xc5, 0xe5, 0x6d, 0x28, 0x0f, 0xc8, 0x09, 0x9d, 0x80, 0x59, 0xa5, + 0xd1, 0x6e, 0x6c, 0x90, 0x38, 0x4b, 0xdd, 0xde, 0x78, 0x69, 0x63, 0xf3, 0xbd, 0x1b, 0xd2, 0x4c, + 0x14, 0x2c, 0x4c, 0x5a, 0x0c, 0xcd, 0x83, 0x14, 0x80, 0x5b, 0x9b, 0xdb, 0x0a, 0x6d, 0xcd, 0xb7, + 0xc7, 0x41, 0x1a, 0x94, 0x1a, 0x3a, 0x05, 0x73, 0xed, 0xaa, 0x72, 0xad, 0xd1, 0x56, 0x59, 0xec, + 0xe8, 0xb3, 0x9e, 0x07, 0x29, 0x5c, 0x70, 0xb5, 0x49, 0x43, 0xe3, 0x45, 0x38, 0x13, 0x86, 0x36, + 0x5e, 0x69, 0x37, 0x36, 0x5a, 0xb4, 0xf2, 0xea, 0xc6, 0x35, 0x62, 0x5f, 0x07, 0xf8, 0x89, 0x68, + 0x35, 0x41, 0x9a, 0x1a, 0xe5, 0xd7, 0x58, 0x5b, 0x95, 0x92, 0x83, 0xe0, 0xcd, 0x8d, 0xc6, 0xe6, + 0x55, 0x29, 0x35, 0x58, 0x3b, 0x8d, 0x60, 0xd3, 0xa8, 0x02, 0x27, 0x07, 0xa1, 0x6a, 0x63, 0xa3, + 0xad, 0xbc, 0x2a, 0x65, 0x06, 0x2b, 0x6e, 0x35, 0x94, 0x9b, 0xcd, 0x7a, 0x43, 0xca, 0xa2, 0x93, + 0x80, 0xa2, 0x2d, 0x6a, 0x5f, 0xdf, 0x5c, 0x95, 0x72, 0x43, 0x16, 0x45, 0x76, 0xa1, 0x10, 0x0e, + 0x23, 0xbf, 0x36, 0xb9, 0xa4, 0x8f, 0xc4, 0x21, 0x1f, 0x0a, 0x0b, 0x89, 0x3f, 0xaf, 0x75, 0xbb, + 0xd6, 0x1d, 0x55, 0xeb, 0x1a, 0x9a, 0xcb, 0xed, 0x0d, 0x50, 0x50, 0x95, 0x40, 0xa6, 0x9d, 0xdf, + 0xd3, 0x5b, 0xf8, 0xf4, 0x5f, 0x44, 0x0b, 0x9f, 0x92, 0xd2, 0xf2, 0x0f, 0xc6, 0x40, 0x1a, 0x8c, + 0xf7, 0x06, 0xba, 0x1f, 0x1b, 0xd7, 0xfd, 0xaf, 0xc9, 0xd8, 0x7d, 0x2c, 0x06, 0xa5, 0x68, 0x90, + 0x37, 0xd0, 0xbc, 0x87, 0xfe, 0x5c, 0x9b, 0xf7, 0x3b, 0x71, 0x28, 0x46, 0x42, 0xbb, 0x69, 0x5b, + 0xf7, 0x7e, 0x98, 0x35, 0x3a, 0xb8, 0x67, 0x5b, 0x1e, 0x36, 0xf5, 0x43, 0xb5, 0x8b, 0x6f, 0xe3, + 0xee, 0x82, 0x4c, 0x8d, 0xf2, 0x85, 0xa3, 0x83, 0xc7, 0xe5, 0x66, 0x40, 0xb7, 0x46, 0xc8, 0x56, + 0xe6, 0x9a, 0xab, 0x8d, 0xf5, 0xad, 0xcd, 0x76, 0x63, 0xa3, 0xfe, 0xaa, 0xb0, 0x2e, 0x8a, 0x64, + 0x0c, 0xa0, 0xbd, 0x8d, 0x46, 0x7b, 0x0b, 0xa4, 0xc1, 0x46, 0x11, 0x5b, 0x31, 0xa2, 0x59, 0xd2, + 0x0c, 0x9a, 0x83, 0xf2, 0xc6, 0xa6, 0xda, 0x6a, 0xae, 0x36, 0xd4, 0xc6, 0xd5, 0xab, 0x8d, 0x7a, + 0xbb, 0xc5, 0xd2, 0x81, 0x3e, 0x76, 0x5b, 0x8a, 0x87, 0x45, 0xfc, 0x03, 0x09, 0x98, 0x1b, 0xd1, + 0x12, 0x54, 0xe5, 0x81, 0x3c, 0xcb, 0x2d, 0x3c, 0x35, 0x4d, 0xeb, 0x97, 0x89, 0x2b, 0xbd, 0xa5, + 0x39, 0x1e, 0x8f, 0xfb, 0x1f, 0x07, 0x22, 0x25, 0xd3, 0x23, 0x2b, 0xbb, 0xc3, 0xd3, 0xac, 0x2c, + 0xba, 0x2f, 0x07, 0x70, 0x96, 0x69, 0x7d, 0x12, 0x90, 0x6d, 0xb9, 0x86, 0x67, 0xdc, 0xc6, 0xaa, + 0x61, 0x8a, 0x9c, 0x2c, 0x89, 0xf6, 0x93, 0x8a, 0x24, 0x4a, 0x9a, 0xa6, 0xe7, 0x63, 0x9b, 0x78, + 0x4f, 0x1b, 0xc0, 0x26, 0x9e, 0x47, 0x42, 0x91, 0x44, 0x89, 0x8f, 0xfd, 0x10, 0x14, 0x3a, 0x56, + 0x9f, 0x84, 0x40, 0x0c, 0x8f, 0x58, 0x8b, 0x98, 0x92, 0x67, 0x30, 0x1f, 0x85, 0x07, 0xb7, 0x41, + 0x32, 0xb8, 0xa0, 0xe4, 0x19, 0x8c, 0xa1, 0x3c, 0x06, 0x65, 0x6d, 0x6f, 0xcf, 0x21, 0xcc, 0x05, + 0x23, 0x16, 0xae, 0x97, 0x7c, 0x30, 0x45, 0xac, 0xdc, 0x80, 0xac, 0x90, 0x03, 0xf1, 0x60, 0x89, + 0x24, 0x54, 0x9b, 0xe5, 0xa0, 0xe2, 0xe7, 0x72, 0x4a, 0xd6, 0x14, 0x85, 0x0f, 0x41, 0xc1, 0x70, + 0xd5, 0x60, 0x6f, 0x2b, 0xbe, 0x14, 0x3f, 0x97, 0x55, 0xf2, 0x86, 0xeb, 0xef, 0x0b, 0xc8, 0x9f, + 0x8c, 0x43, 0x29, 0xba, 0x6b, 0x87, 0x56, 0x21, 0xdb, 0xb5, 0x74, 0x8d, 0xaa, 0x16, 0xdb, 0x32, + 0x3e, 0x37, 0x61, 0xa3, 0x6f, 0x79, 0x8d, 0xe3, 0x2b, 0x3e, 0x65, 0xe5, 0xdf, 0xc4, 0x20, 0x2b, + 0xc0, 0xe8, 0x24, 0x24, 0x6d, 0xcd, 0xdb, 0xa7, 0xec, 0x52, 0xb5, 0xb8, 0x14, 0x53, 0xe8, 0x37, + 0x81, 0xbb, 0xb6, 0x66, 0x52, 0x15, 0xe0, 0x70, 0xf2, 0x4d, 0xc6, 0xb5, 0x8b, 0xb5, 0x0e, 0xcd, + 0x05, 0x58, 0xbd, 0x1e, 0x36, 0x3d, 0x57, 0x8c, 0x2b, 0x87, 0xd7, 0x39, 0x18, 0x3d, 0x01, 0xb3, + 0x9e, 0xa3, 0x19, 0xdd, 0x08, 0x6e, 0x92, 0xe2, 0x4a, 0xa2, 0xc0, 0x47, 0x5e, 0x81, 0xd3, 0x82, + 0x6f, 0x07, 0x7b, 0x9a, 0xbe, 0x8f, 0x3b, 0x01, 0x51, 0x9a, 0xe6, 0xfc, 0x4e, 0x71, 0x84, 0x55, + 0x5e, 0x2e, 0x68, 0xe5, 0xcf, 0xc4, 0x61, 0x56, 0x64, 0x2f, 0x3a, 0xbe, 0xb0, 0xd6, 0x01, 0x34, + 0xd3, 0xb4, 0xbc, 0xb0, 0xb8, 0x86, 0x55, 0x79, 0x88, 0x6e, 0xb9, 0xea, 0x13, 0x29, 0x21, 0x06, + 0x95, 0xdf, 0x8f, 0x01, 0x04, 0x45, 0x63, 0xe5, 0xb6, 0x08, 0x79, 0xbe, 0x27, 0x4b, 0x37, 0xf6, + 0x59, 0xc2, 0x0b, 0x18, 0xe8, 0xaa, 0xd1, 0xa5, 0x69, 0xc9, 0x1d, 0xbc, 0x67, 0x98, 0x7c, 0x3f, + 0x85, 0x7d, 0x88, 0xb4, 0x64, 0x32, 0xd8, 0x9e, 0x52, 0x20, 0xeb, 0xe2, 0x9e, 0x66, 0x7a, 0x86, + 0xce, 0x77, 0x48, 0x2e, 0x1f, 0xab, 0xf1, 0xcb, 0x2d, 0x4e, 0xad, 0xf8, 0x7c, 0xe4, 0x73, 0x90, + 0x15, 0x50, 0xe2, 0xf8, 0x6d, 0x6c, 0x6e, 0x34, 0xa4, 0x19, 0x94, 0x81, 0x44, 0xab, 0xd1, 0x96, + 0x62, 0x24, 0xec, 0xac, 0xae, 0x35, 0xab, 0x2d, 0x29, 0x5e, 0xfb, 0x6b, 0x30, 0xa7, 0x5b, 0xbd, + 0xc1, 0x0a, 0x6b, 0xd2, 0x40, 0xca, 0xcf, 0xbd, 0x1e, 0x7b, 0xed, 0x29, 0x8e, 0xb4, 0x67, 0x75, + 0x35, 0x73, 0x6f, 0xd9, 0x72, 0xf6, 0x82, 0x63, 0x11, 0x24, 0x3a, 0x70, 0x43, 0x87, 0x23, 0xec, + 0x9d, 0x3f, 0x8b, 0xc5, 0x7e, 0x38, 0x9e, 0xb8, 0xb6, 0x55, 0xfb, 0x89, 0x78, 0xe5, 0x1a, 0x23, + 0xdc, 0x12, 0xdd, 0x51, 0xf0, 0x6e, 0x17, 0xeb, 0xa4, 0xf1, 0xf0, 0x07, 0x4f, 0xc0, 0xfc, 0x9e, + 0xb5, 0x67, 0x51, 0x4e, 0x17, 0xc8, 0x2f, 0x7e, 0xae, 0x22, 0xe7, 0x43, 0x2b, 0x13, 0x0f, 0x61, + 0xac, 0x6c, 0xc0, 0x1c, 0x47, 0x56, 0xe9, 0xf6, 0x2d, 0x4b, 0x2e, 0xa0, 0x23, 0x33, 0xdb, 0x0b, + 0x3f, 0xf5, 0x7b, 0xd4, 0x2b, 0x51, 0x66, 0x39, 0x29, 0x29, 0x63, 0xf9, 0x87, 0x15, 0x05, 0x4e, + 0x44, 0xf8, 0x31, 0x1b, 0x81, 0x9d, 0x09, 0x1c, 0xff, 0x39, 0xe7, 0x38, 0x17, 0xe2, 0xd8, 0xe2, + 0xa4, 0x2b, 0x75, 0x28, 0x1e, 0x87, 0xd7, 0xbf, 0xe0, 0xbc, 0x0a, 0x38, 0xcc, 0xe4, 0x1a, 0x94, + 0x29, 0x13, 0xbd, 0xef, 0x7a, 0x56, 0x8f, 0x1a, 0xe0, 0xa3, 0xd9, 0xfc, 0xcb, 0xdf, 0x63, 0x93, + 0xb6, 0x44, 0xc8, 0xea, 0x3e, 0xd5, 0xca, 0x0a, 0xd0, 0x1d, 0xeb, 0x0e, 0xd6, 0xbb, 0x13, 0x38, + 0xfc, 0x1a, 0x6f, 0x88, 0x8f, 0xbf, 0x72, 0x13, 0xe6, 0xc9, 0x6f, 0x6a, 0x1f, 0xc3, 0x2d, 0x99, + 0x9c, 0x06, 0x5f, 0xf8, 0xb7, 0x1f, 0x64, 0x76, 0x61, 0xce, 0x67, 0x10, 0x6a, 0x53, 0x68, 0x14, + 0xf7, 0xb0, 0xe7, 0x61, 0xc7, 0x55, 0xb5, 0xee, 0xa8, 0xe6, 0x85, 0xf2, 0x88, 0x0b, 0xdf, 0xff, + 0xa5, 0xe8, 0x28, 0x5e, 0x63, 0x94, 0xd5, 0x6e, 0x77, 0x65, 0x1b, 0x4e, 0x8d, 0xd0, 0x8a, 0x29, + 0x78, 0xfe, 0x00, 0xe7, 0x39, 0x3f, 0xa4, 0x19, 0x84, 0xed, 0x16, 0x08, 0xb8, 0x3f, 0x96, 0x53, + 0xf0, 0xfc, 0x28, 0xe7, 0x89, 0x38, 0xad, 0x18, 0x52, 0xc2, 0xf1, 0x06, 0xcc, 0xde, 0xc6, 0xce, + 0x8e, 0xe5, 0xf2, 0xdc, 0xed, 0x14, 0xec, 0x3e, 0xc6, 0xd9, 0x95, 0x39, 0x21, 0x4d, 0xe6, 0x12, + 0x5e, 0x2f, 0x40, 0x76, 0x57, 0xd3, 0xf1, 0x14, 0x2c, 0xee, 0x71, 0x16, 0x19, 0x82, 0x4f, 0x48, + 0xab, 0x50, 0xd8, 0xb3, 0xf8, 0x12, 0x39, 0x99, 0xfc, 0x07, 0x39, 0x79, 0x5e, 0xd0, 0x70, 0x16, + 0xb6, 0x65, 0xf7, 0xbb, 0x64, 0xfd, 0x9c, 0xcc, 0xe2, 0x87, 0x04, 0x0b, 0x41, 0xc3, 0x59, 0x1c, + 0x43, 0xac, 0x1f, 0x17, 0x2c, 0xdc, 0x90, 0x3c, 0x5f, 0x84, 0xbc, 0x65, 0x76, 0x0f, 0x2d, 0x73, + 0x9a, 0x46, 0x7c, 0x82, 0x73, 0x00, 0x4e, 0x42, 0x18, 0x5c, 0x81, 0xdc, 0xb4, 0x03, 0xf1, 0xa3, + 0x5f, 0x12, 0xd3, 0x43, 0x8c, 0xc0, 0x35, 0x28, 0x0b, 0x03, 0x65, 0x58, 0xe6, 0x14, 0x2c, 0x7e, + 0x8c, 0xb3, 0x28, 0x85, 0xc8, 0x78, 0x37, 0x3c, 0xec, 0x7a, 0x7b, 0x78, 0x1a, 0x26, 0x9f, 0x14, + 0xdd, 0xe0, 0x24, 0x5c, 0x94, 0x3b, 0xd8, 0xd4, 0xf7, 0xa7, 0xe3, 0xf0, 0x29, 0x21, 0x4a, 0x41, + 0x43, 0x58, 0xd4, 0xa1, 0xd8, 0xd3, 0x1c, 0x77, 0x5f, 0xeb, 0x4e, 0x35, 0x1c, 0x3f, 0xce, 0x79, + 0x14, 0x7c, 0x22, 0x2e, 0x91, 0xbe, 0x79, 0x1c, 0x36, 0x3f, 0x21, 0x24, 0x12, 0x22, 0xe3, 0x53, + 0xcf, 0xf5, 0x68, 0xa2, 0xfb, 0x38, 0xdc, 0xfe, 0xae, 0x98, 0x7a, 0x8c, 0x76, 0x3d, 0xcc, 0xf1, + 0x0a, 0xe4, 0x5c, 0xe3, 0x8d, 0xa9, 0xd8, 0xfc, 0x3d, 0x31, 0xd2, 0x94, 0x80, 0x10, 0xbf, 0x0a, + 0xa7, 0x47, 0x2e, 0x13, 0x53, 0x30, 0xfb, 0xfb, 0x9c, 0xd9, 0xc9, 0x11, 0x4b, 0x05, 0x37, 0x09, + 0xc7, 0x65, 0xf9, 0x0f, 0x84, 0x49, 0xc0, 0x03, 0xbc, 0xb6, 0x48, 0xd0, 0xe2, 0x6a, 0xbb, 0xc7, + 0x93, 0xda, 0x3f, 0x14, 0x52, 0x63, 0xb4, 0x11, 0xa9, 0xb5, 0xe1, 0x24, 0xe7, 0x78, 0xbc, 0x71, + 0xfd, 0x49, 0x61, 0x58, 0x19, 0xf5, 0x76, 0x74, 0x74, 0xbf, 0x0e, 0x2a, 0xbe, 0x38, 0x85, 0x77, + 0xec, 0xaa, 0x3d, 0xcd, 0x9e, 0x82, 0xf3, 0x4f, 0x71, 0xce, 0xc2, 0xe2, 0xfb, 0xee, 0xb5, 0xbb, + 0xae, 0xd9, 0x84, 0xf9, 0x2b, 0xb0, 0x20, 0x98, 0xf7, 0x4d, 0x07, 0xeb, 0xd6, 0x9e, 0x69, 0xbc, + 0x81, 0x3b, 0x53, 0xb0, 0xfe, 0xe9, 0x81, 0xa1, 0xda, 0x0e, 0x91, 0x13, 0xce, 0x4d, 0x90, 0x7c, + 0x5f, 0x45, 0x35, 0x7a, 0xb6, 0xe5, 0x78, 0x13, 0x38, 0xfe, 0x8c, 0x18, 0x29, 0x9f, 0xae, 0x49, + 0xc9, 0x56, 0x1a, 0xc0, 0x4e, 0x7f, 0x4c, 0xab, 0x92, 0x9f, 0xe6, 0x8c, 0x8a, 0x01, 0x15, 0x37, + 0x1c, 0xba, 0xd5, 0xb3, 0x35, 0x67, 0x1a, 0xfb, 0xf7, 0x8f, 0x84, 0xe1, 0xe0, 0x24, 0xdc, 0x70, + 0x10, 0x8f, 0x8e, 0xac, 0xf6, 0x53, 0x70, 0xf8, 0x59, 0x61, 0x38, 0x04, 0x0d, 0x67, 0x21, 0x1c, + 0x86, 0x29, 0x58, 0xfc, 0x9c, 0x60, 0x21, 0x68, 0x08, 0x8b, 0x97, 0x83, 0x85, 0xd6, 0xc1, 0x7b, + 0x86, 0xeb, 0x39, 0xcc, 0x25, 0x3f, 0x9a, 0xd5, 0xcf, 0x7f, 0x29, 0xea, 0x84, 0x29, 0x21, 0x52, + 0x62, 0x89, 0xf8, 0xd6, 0x07, 0x0d, 0xd9, 0x26, 0x37, 0xec, 0x17, 0x84, 0x25, 0x0a, 0x91, 0x91, + 0xb6, 0x85, 0x3c, 0x44, 0x22, 0x76, 0x9d, 0x04, 0x2a, 0x53, 0xb0, 0xfb, 0xc7, 0x03, 0x8d, 0x6b, + 0x09, 0x5a, 0xc2, 0x33, 0xe4, 0xff, 0xf4, 0xcd, 0x5b, 0xf8, 0x70, 0x2a, 0xed, 0xfc, 0xc5, 0x01, + 0xff, 0x67, 0x9b, 0x51, 0x32, 0x1b, 0x52, 0x1e, 0xf0, 0xa7, 0xd0, 0xa4, 0xb3, 0x7e, 0x0b, 0xdf, + 0xf4, 0x65, 0xde, 0xdf, 0xa8, 0x3b, 0xb5, 0xb2, 0x46, 0x94, 0x3c, 0xea, 0xf4, 0x4c, 0x66, 0xf6, + 0xc1, 0x2f, 0xfb, 0x7a, 0x1e, 0xf1, 0x79, 0x56, 0xae, 0x42, 0x31, 0xe2, 0xf0, 0x4c, 0x66, 0xf5, + 0xcd, 0x9c, 0x55, 0x21, 0xec, 0xef, 0xac, 0x5c, 0x82, 0x24, 0x71, 0x5e, 0x26, 0x93, 0x7f, 0x0b, + 0x27, 0xa7, 0xe8, 0x2b, 0xef, 0x86, 0xac, 0x70, 0x5a, 0x26, 0x93, 0xfe, 0x0d, 0x4e, 0xea, 0x93, + 0x10, 0x72, 0xe1, 0xb0, 0x4c, 0x26, 0xff, 0x9b, 0x82, 0x5c, 0x90, 0x10, 0xf2, 0xe9, 0x45, 0xf8, + 0xcb, 0xdf, 0x96, 0xe4, 0x8b, 0x8e, 0x90, 0xdd, 0x15, 0xc8, 0x70, 0x4f, 0x65, 0x32, 0xf5, 0xb7, + 0xf2, 0xca, 0x05, 0xc5, 0xca, 0xf3, 0x90, 0x9a, 0x52, 0xe0, 0xdf, 0xc1, 0x49, 0x19, 0xfe, 0x4a, + 0x1d, 0xf2, 0x21, 0xef, 0x64, 0x32, 0xf9, 0x77, 0x72, 0xf2, 0x30, 0x15, 0x69, 0x3a, 0xf7, 0x4e, + 0x26, 0x33, 0xf8, 0x5b, 0xa2, 0xe9, 0x9c, 0x82, 0x88, 0x4d, 0x38, 0x26, 0x93, 0xa9, 0x3f, 0x2c, + 0xa4, 0x2e, 0x48, 0x56, 0x5e, 0x84, 0x9c, 0xbf, 0xd8, 0x4c, 0xa6, 0xff, 0x2e, 0x4e, 0x1f, 0xd0, + 0x10, 0x09, 0x84, 0x16, 0xbb, 0xc9, 0x2c, 0xfe, 0xb6, 0x90, 0x40, 0x88, 0x8a, 0x4c, 0xa3, 0x41, + 0x07, 0x66, 0x32, 0xa7, 0xef, 0x16, 0xd3, 0x68, 0xc0, 0x7f, 0x21, 0xa3, 0x49, 0x6d, 0xfe, 0x64, + 0x16, 0xdf, 0x23, 0x46, 0x93, 0xe2, 0x93, 0x66, 0x0c, 0x7a, 0x04, 0x93, 0x79, 0x7c, 0x9f, 0x68, + 0xc6, 0x80, 0x43, 0xb0, 0xb2, 0x05, 0x68, 0xd8, 0x1b, 0x98, 0xcc, 0xef, 0x23, 0x9c, 0xdf, 0xec, + 0x90, 0x33, 0xb0, 0xf2, 0x5e, 0x38, 0x39, 0xda, 0x13, 0x98, 0xcc, 0xf5, 0xfb, 0xbf, 0x3c, 0x10, + 0xbb, 0x85, 0x1d, 0x81, 0x95, 0x76, 0xb0, 0xa4, 0x84, 0xbd, 0x80, 0xc9, 0x6c, 0x7f, 0xe0, 0xcb, + 0x51, 0xc3, 0x1d, 0x76, 0x02, 0x56, 0xaa, 0x00, 0xc1, 0x02, 0x3c, 0x99, 0xd7, 0xc7, 0x38, 0xaf, + 0x10, 0x11, 0x99, 0x1a, 0x7c, 0xfd, 0x9d, 0x4c, 0x7f, 0x4f, 0x4c, 0x0d, 0x4e, 0x41, 0xa6, 0x86, + 0x58, 0x7a, 0x27, 0x53, 0xff, 0xa0, 0x98, 0x1a, 0x82, 0x84, 0x68, 0x76, 0x68, 0x75, 0x9b, 0xcc, + 0xe1, 0x13, 0x42, 0xb3, 0x43, 0x54, 0x2b, 0x1b, 0x30, 0x3b, 0xb4, 0x20, 0x4e, 0x66, 0xf5, 0xc3, + 0x9c, 0x95, 0x34, 0xb8, 0x1e, 0x86, 0x17, 0x2f, 0xbe, 0x18, 0x4e, 0xe6, 0xf6, 0x23, 0x03, 0x8b, + 0x17, 0x5f, 0x0b, 0x57, 0xae, 0x40, 0xd6, 0xec, 0x77, 0xbb, 0x64, 0xf2, 0xa0, 0xa3, 0xcf, 0xe7, + 0x2e, 0xfc, 0x97, 0xaf, 0x70, 0xe9, 0x08, 0x82, 0x95, 0x4b, 0x90, 0xc2, 0xbd, 0x1d, 0xdc, 0x99, + 0x44, 0xf9, 0xc5, 0xaf, 0x08, 0x83, 0x49, 0xb0, 0x57, 0x5e, 0x04, 0x60, 0xa9, 0x11, 0xba, 0x71, + 0x3e, 0x81, 0xf6, 0xf7, 0xbf, 0xc2, 0x0f, 0xc4, 0x05, 0x24, 0x01, 0x03, 0x76, 0xbc, 0xee, 0x68, + 0x06, 0x5f, 0x8a, 0x32, 0xa0, 0x23, 0xf2, 0x02, 0x64, 0x5e, 0x77, 0x2d, 0xd3, 0xd3, 0xf6, 0x26, + 0x51, 0xff, 0x01, 0xa7, 0x16, 0xf8, 0x44, 0x60, 0x3d, 0xcb, 0xc1, 0x9e, 0xb6, 0xe7, 0x4e, 0xa2, + 0xfd, 0xaf, 0x9c, 0xd6, 0x27, 0x20, 0xc4, 0xba, 0xe6, 0x7a, 0xd3, 0xf4, 0xfb, 0xbf, 0x09, 0x62, + 0x41, 0x40, 0x1a, 0x4d, 0x7e, 0xdf, 0xc2, 0x87, 0x93, 0x68, 0xff, 0x50, 0x34, 0x9a, 0xe3, 0xaf, + 0xbc, 0x1b, 0x72, 0xe4, 0x27, 0x3b, 0xe5, 0x3a, 0x81, 0xf8, 0x8f, 0x38, 0x71, 0x40, 0x41, 0x6a, + 0x76, 0xbd, 0x8e, 0x67, 0x4c, 0x16, 0xf6, 0x1f, 0xf3, 0x91, 0x16, 0xf8, 0x2b, 0x55, 0xc8, 0xbb, + 0x5e, 0xa7, 0xd3, 0xe7, 0xfe, 0xe9, 0x04, 0xf2, 0x3f, 0xf9, 0x8a, 0x9f, 0xb2, 0xf0, 0x69, 0xc8, + 0x68, 0xdf, 0xb9, 0xe5, 0xd9, 0x16, 0xdd, 0x6f, 0x99, 0xc4, 0xe1, 0xcb, 0x9c, 0x43, 0x88, 0x64, + 0xa5, 0x0e, 0x05, 0xd2, 0x17, 0x07, 0xdb, 0x98, 0x6e, 0x8e, 0x4d, 0x60, 0xf1, 0xa7, 0x5c, 0x00, + 0x11, 0xa2, 0xda, 0x37, 0xfe, 0xda, 0x67, 0xcf, 0xc6, 0x3e, 0xf3, 0xd9, 0xb3, 0xb1, 0xdf, 0xf9, + 0xec, 0xd9, 0xd8, 0x87, 0x3f, 0x77, 0x76, 0xe6, 0x33, 0x9f, 0x3b, 0x3b, 0xf3, 0x5b, 0x9f, 0x3b, + 0x3b, 0x33, 0x3a, 0x4b, 0x0c, 0xd7, 0xac, 0x6b, 0x16, 0xcb, 0x0f, 0xbf, 0xf6, 0xc8, 0x9e, 0xe1, + 0xed, 0xf7, 0x77, 0x96, 0x75, 0xab, 0x77, 0x41, 0xb7, 0xdc, 0x9e, 0xe5, 0x5e, 0x88, 0xe6, 0x75, + 0xe9, 0x2f, 0xf8, 0x5f, 0x31, 0x12, 0x33, 0x47, 0xd3, 0xb9, 0x9a, 0x79, 0x38, 0xee, 0x32, 0xdd, + 0x65, 0x48, 0x54, 0xcd, 0x43, 0x74, 0x9a, 0x19, 0x38, 0xb5, 0xef, 0x74, 0xf9, 0x51, 0xcb, 0x0c, + 0xf9, 0xde, 0x76, 0xba, 0x68, 0x3e, 0x38, 0x0f, 0x1d, 0x3b, 0x57, 0xe0, 0x87, 0x9c, 0x6b, 0xdf, + 0x19, 0x3b, 0x5e, 0x4f, 0xb2, 0x55, 0xf3, 0x90, 0x76, 0x64, 0x2b, 0xf6, 0xda, 0x93, 0x13, 0xf3, + 0xdc, 0xb7, 0x4c, 0xeb, 0x8e, 0x49, 0x9a, 0x6d, 0xef, 0x88, 0x1c, 0xf7, 0xd9, 0xc1, 0x1c, 0xf7, + 0x7b, 0x71, 0xb7, 0xfb, 0x12, 0xc1, 0x6b, 0x13, 0x92, 0x9d, 0x34, 0x3b, 0xd5, 0x0f, 0xdf, 0x1d, + 0x87, 0xb3, 0x43, 0xe9, 0x6c, 0xae, 0x04, 0xe3, 0x84, 0xb0, 0x02, 0xd9, 0x55, 0xa1, 0x5b, 0x0b, + 0x90, 0x71, 0xb1, 0x6e, 0x99, 0x1d, 0x97, 0x0a, 0x22, 0xa1, 0x88, 0x4f, 0x22, 0x08, 0x53, 0x33, + 0x2d, 0x97, 0x1f, 0x56, 0x66, 0x1f, 0xb5, 0x8f, 0x1e, 0x53, 0x10, 0x45, 0x51, 0x93, 0x90, 0xc6, + 0x33, 0x53, 0x4a, 0x43, 0x74, 0x22, 0x92, 0xf9, 0x9f, 0x56, 0x2a, 0xdf, 0x17, 0x87, 0xc5, 0x41, + 0xa9, 0x90, 0x99, 0xe5, 0x7a, 0x5a, 0xcf, 0x1e, 0x27, 0x96, 0x2b, 0x90, 0x6b, 0x0b, 0x9c, 0x63, + 0xcb, 0xe5, 0xde, 0x31, 0xe5, 0x52, 0xf2, 0xab, 0x12, 0x82, 0xb9, 0x38, 0xa5, 0x60, 0xfc, 0x7e, + 0xdc, 0x97, 0x64, 0xfe, 0x67, 0x1a, 0x4e, 0xb3, 0xe9, 0xa4, 0xb2, 0xa9, 0xc4, 0x3e, 0xb8, 0x4c, + 0x0a, 0xe1, 0xa2, 0xc9, 0xfb, 0x24, 0xf2, 0x4b, 0x30, 0xd7, 0x24, 0xd6, 0x82, 0x44, 0x41, 0xc1, + 0x0e, 0xcf, 0xc8, 0xf3, 0xdc, 0x4b, 0x11, 0x87, 0x9f, 0xef, 0x6f, 0x85, 0x41, 0xf2, 0x37, 0xc5, + 0x40, 0x6a, 0xe9, 0x5a, 0x57, 0x73, 0xbe, 0x5a, 0x56, 0xe8, 0x79, 0x00, 0x76, 0xdc, 0xc3, 0xbf, + 0xb8, 0x57, 0xba, 0xb8, 0xb0, 0x1c, 0xee, 0xdc, 0x32, 0xab, 0x89, 0x9e, 0xa0, 0xca, 0x51, 0x5c, + 0xf2, 0xf3, 0xfc, 0x2b, 0x00, 0x41, 0x01, 0x3a, 0x03, 0xa7, 0x5a, 0xf5, 0xea, 0x5a, 0x55, 0x11, + 0x87, 0x84, 0x5a, 0x5b, 0x8d, 0x7a, 0xf3, 0x6a, 0xb3, 0xb1, 0x2a, 0xcd, 0xa0, 0x93, 0x80, 0xc2, + 0x85, 0xfe, 0xa1, 0xa6, 0x13, 0x30, 0x1b, 0x86, 0xb3, 0x5b, 0x2a, 0x71, 0xe2, 0x29, 0x1a, 0x3d, + 0xbb, 0x8b, 0xe9, 0xce, 0xa3, 0x6a, 0x08, 0xa9, 0x4d, 0x76, 0x42, 0x7e, 0xfd, 0xdf, 0xb1, 0x9b, + 0x0b, 0x73, 0x01, 0xb9, 0x2f, 0xf3, 0x95, 0x35, 0x98, 0xd5, 0x74, 0x1d, 0xdb, 0x11, 0x96, 0x13, + 0x4c, 0x35, 0x61, 0x48, 0xf7, 0x52, 0x39, 0x65, 0xc0, 0xed, 0x79, 0x48, 0xbb, 0xb4, 0xf7, 0x93, + 0x58, 0xfc, 0x06, 0x67, 0xc1, 0xd1, 0x57, 0x4c, 0x98, 0x25, 0x9e, 0x9f, 0xe6, 0xe0, 0x50, 0x33, + 0x8e, 0xce, 0x33, 0xfc, 0x93, 0x9f, 0x79, 0x9a, 0xee, 0xac, 0x3e, 0x14, 0x1d, 0x96, 0x11, 0xea, + 0xa4, 0x48, 0x9c, 0x77, 0xd0, 0x50, 0x0c, 0x25, 0x51, 0x1f, 0x6f, 0xf0, 0xd1, 0x95, 0xfd, 0x12, + 0xaf, 0xec, 0xec, 0x28, 0x1d, 0x08, 0xd5, 0x54, 0xe4, 0x5c, 0x59, 0x41, 0xad, 0x31, 0x6e, 0x4e, + 0xbf, 0xf6, 0xc4, 0xf0, 0xea, 0xc4, 0xfe, 0x7b, 0x8a, 0x72, 0xbe, 0x12, 0xae, 0xc6, 0x9f, 0x7b, + 0x1f, 0x4d, 0xc2, 0xac, 0xd6, 0x33, 0x4c, 0xeb, 0x02, 0xfd, 0x97, 0xcf, 0xb9, 0x14, 0xfd, 0x98, + 0x62, 0x53, 0xf2, 0x32, 0x9b, 0x0a, 0x93, 0x35, 0xe6, 0x8f, 0xbe, 0xfd, 0xc7, 0x52, 0xc1, 0x74, + 0x59, 0x59, 0x07, 0x49, 0x1c, 0xe2, 0xc5, 0xa6, 0x6e, 0x75, 0xa6, 0xca, 0x52, 0xfc, 0xb1, 0xe0, + 0x21, 0xf2, 0x5b, 0x0d, 0x4e, 0xba, 0xf2, 0x2e, 0xc8, 0xfa, 0x6c, 0x26, 0x79, 0x26, 0x82, 0x89, + 0x4f, 0x41, 0xfc, 0x12, 0x36, 0x33, 0xa7, 0xf1, 0x42, 0xbf, 0x2c, 0xe8, 0xd9, 0x0c, 0xdd, 0x20, + 0xbd, 0xb9, 0x06, 0xa5, 0x8e, 0x65, 0x7a, 0xaa, 0xd5, 0x33, 0x3c, 0xdc, 0xb3, 0xbd, 0x89, 0x7e, + 0xdd, 0x9f, 0x32, 0x26, 0x59, 0xa5, 0x48, 0xe8, 0x36, 0x05, 0x19, 0x69, 0x09, 0xbb, 0xa7, 0x37, + 0x4d, 0x4b, 0xfe, 0xbb, 0xdf, 0x12, 0x4a, 0x43, 0x5a, 0x72, 0x5f, 0xda, 0xe1, 0x76, 0x6e, 0x71, + 0x63, 0xee, 0x1d, 0x30, 0x2d, 0xf0, 0xb5, 0xe3, 0x93, 0x09, 0x38, 0xcb, 0x91, 0x77, 0x34, 0x17, + 0x5f, 0xb8, 0xfd, 0xcc, 0x0e, 0xf6, 0xb4, 0x67, 0x2e, 0xe8, 0x96, 0x21, 0x56, 0xf2, 0x39, 0x6e, + 0xac, 0x49, 0xf9, 0x32, 0x2f, 0xaf, 0x8c, 0xdc, 0xee, 0xae, 0x8c, 0x37, 0xf2, 0x95, 0x61, 0x1d, + 0x94, 0xbb, 0x90, 0xac, 0x5b, 0x86, 0x49, 0xd6, 0xb6, 0x0e, 0x36, 0xad, 0x1e, 0x37, 0xb7, 0xec, + 0x03, 0x5d, 0x87, 0xb4, 0xd6, 0xb3, 0xfa, 0xa6, 0xc7, 0x4c, 0x6d, 0xed, 0xe9, 0x5f, 0x7b, 0x73, + 0x71, 0xe6, 0x3f, 0xbe, 0xb9, 0x78, 0x82, 0xb1, 0x75, 0x3b, 0xb7, 0x96, 0x0d, 0xeb, 0x42, 0x4f, + 0xf3, 0xf6, 0xc9, 0xf4, 0xfd, 0xcd, 0x4f, 0x3f, 0x05, 0xbc, 0xbe, 0xa6, 0xe9, 0x7d, 0xea, 0xf3, + 0x3f, 0x79, 0x3e, 0xa6, 0x70, 0xfa, 0x95, 0xe4, 0x17, 0x3e, 0xbe, 0x18, 0x93, 0x6d, 0xc8, 0xac, + 0x62, 0xfd, 0x88, 0x0a, 0x9b, 0x03, 0x15, 0x3e, 0xc3, 0x2b, 0x3c, 0x33, 0x5c, 0x21, 0x3b, 0xb0, + 0xb7, 0x8a, 0xf5, 0x50, 0xb5, 0xab, 0x58, 0x8f, 0xd6, 0x58, 0x5b, 0xfd, 0xad, 0xdf, 0x3d, 0x3b, + 0xf3, 0x81, 0xcf, 0x9e, 0x9d, 0x19, 0x3b, 0x64, 0xf2, 0xe4, 0x21, 0xf3, 0x47, 0xea, 0xc7, 0x92, + 0xf0, 0x20, 0xbd, 0x11, 0xea, 0xf4, 0x0c, 0xd3, 0xbb, 0xa0, 0x3b, 0x87, 0xb6, 0x67, 0x91, 0x89, + 0x6b, 0xed, 0xf2, 0x81, 0x9a, 0x0d, 0x8a, 0x97, 0x59, 0xf1, 0xe8, 0x61, 0x92, 0x77, 0x21, 0xb5, + 0x45, 0xe8, 0x88, 0x20, 0x3c, 0xcb, 0xd3, 0xba, 0xdc, 0xdb, 0x60, 0x1f, 0x04, 0xca, 0x6e, 0x91, + 0xc6, 0x19, 0xd4, 0x10, 0x17, 0x48, 0xbb, 0x58, 0xdb, 0x65, 0x97, 0x71, 0x12, 0xd4, 0x4d, 0xcd, + 0x12, 0x00, 0xbd, 0x77, 0x33, 0x0f, 0x29, 0xad, 0xcf, 0x0e, 0xcc, 0x24, 0x88, 0xff, 0x4a, 0x3f, + 0xe4, 0x97, 0x20, 0xc3, 0xf7, 0xcd, 0x91, 0x04, 0x89, 0x5b, 0xf8, 0x90, 0xd6, 0x53, 0x50, 0xc8, + 0x4f, 0xb4, 0x0c, 0x29, 0xda, 0x78, 0x7e, 0xcb, 0x70, 0x61, 0x79, 0xa8, 0xf5, 0xcb, 0xb4, 0x91, + 0x0a, 0x43, 0x93, 0x6f, 0x40, 0x76, 0xd5, 0x22, 0xda, 0x13, 0xe5, 0x96, 0x63, 0xdc, 0x68, 0x9b, + 0xed, 0x3e, 0x1f, 0x3b, 0x85, 0x7d, 0xa0, 0x93, 0x90, 0x66, 0x97, 0xb3, 0xf8, 0xa1, 0x1f, 0xfe, + 0x25, 0xd7, 0x21, 0x43, 0x79, 0x6f, 0xda, 0x64, 0xa9, 0xf7, 0xcf, 0xab, 0xe7, 0xf8, 0x55, 0x5d, + 0xce, 0x3e, 0x1e, 0x34, 0x16, 0x41, 0xb2, 0xa3, 0x79, 0x1a, 0xef, 0x37, 0xfd, 0x2d, 0xbf, 0x07, + 0xb2, 0x9c, 0x89, 0x8b, 0x2e, 0x42, 0xc2, 0xb2, 0x5d, 0x7e, 0x6c, 0xa7, 0x32, 0xae, 0x2b, 0x9b, + 0x76, 0x2d, 0x49, 0x94, 0x4a, 0x21, 0xc8, 0xb5, 0x8d, 0xb1, 0x6a, 0xf1, 0x5c, 0x44, 0x2d, 0x7a, + 0xd8, 0xdb, 0xd9, 0xf5, 0x82, 0x1f, 0x6c, 0x38, 0x87, 0x54, 0xc1, 0x57, 0x94, 0x7b, 0x71, 0x38, + 0x1b, 0x2a, 0xbd, 0x8d, 0x1d, 0xd7, 0xb0, 0x4c, 0xa6, 0x4d, 0x5c, 0x53, 0x50, 0xa8, 0x81, 0xbc, + 0x7c, 0x8c, 0xaa, 0xbc, 0x1b, 0x12, 0x55, 0xdb, 0x46, 0x15, 0xc8, 0xd2, 0x6f, 0xdd, 0x62, 0xba, + 0x92, 0x54, 0xfc, 0x6f, 0x52, 0xe6, 0x5a, 0xbb, 0xde, 0x1d, 0xcd, 0xf1, 0xef, 0x2e, 0x8b, 0x6f, + 0xf9, 0x05, 0xc8, 0xd5, 0x2d, 0xd3, 0xc5, 0xa6, 0xdb, 0xa7, 0x3e, 0xec, 0x4e, 0xd7, 0xd2, 0x6f, + 0x71, 0x0e, 0xec, 0x83, 0x08, 0x5b, 0xb3, 0x6d, 0x4a, 0x99, 0x54, 0xc8, 0x4f, 0x3e, 0x7b, 0x36, + 0xc7, 0x8a, 0xe7, 0xd2, 0xf1, 0xc4, 0xc3, 0x3b, 0x18, 0x38, 0xa3, 0x31, 0x78, 0x60, 0x78, 0x22, + 0xdd, 0xc2, 0x87, 0xee, 0x71, 0xe7, 0xd1, 0x2b, 0x90, 0xdb, 0xa2, 0xcf, 0x8a, 0xbc, 0x84, 0x0f, + 0x51, 0x05, 0x32, 0xb8, 0x73, 0xf1, 0xd2, 0xa5, 0x67, 0x5e, 0x60, 0x5a, 0x7e, 0x7d, 0x46, 0x11, + 0x00, 0x74, 0x16, 0x72, 0x2e, 0xd6, 0xed, 0x8b, 0x97, 0x2e, 0xdf, 0x7a, 0x86, 0xa9, 0xd5, 0xf5, + 0x19, 0x25, 0x00, 0xad, 0x64, 0x49, 0x8f, 0xbf, 0xf0, 0x89, 0xc5, 0x58, 0x2d, 0x05, 0x09, 0xb7, + 0xdf, 0x7b, 0xdb, 0x74, 0xe3, 0x0f, 0xd3, 0xb0, 0x14, 0x2a, 0x65, 0x8b, 0xc2, 0x6d, 0xad, 0x6b, + 0x74, 0xb4, 0xe0, 0x31, 0x18, 0x29, 0xd4, 0x7f, 0x8a, 0x31, 0xc6, 0xda, 0x1f, 0x29, 0x45, 0xf9, + 0xa7, 0x63, 0x50, 0xb8, 0x29, 0x38, 0xb7, 0xb0, 0x87, 0xae, 0x00, 0xf8, 0x35, 0x89, 0xa9, 0x72, + 0x66, 0x79, 0xb0, 0xae, 0x65, 0x9f, 0x46, 0x09, 0xa1, 0xa3, 0xe7, 0xa9, 0x02, 0xda, 0x96, 0xcb, + 0xef, 0xb1, 0x4e, 0x20, 0xf5, 0x91, 0xd1, 0x93, 0x80, 0xa8, 0x55, 0x53, 0x6f, 0x5b, 0x9e, 0x61, + 0xee, 0xa9, 0xb6, 0x75, 0x87, 0xbf, 0x0e, 0x90, 0x50, 0x24, 0x5a, 0x72, 0x93, 0x16, 0x6c, 0x11, + 0x38, 0x69, 0x74, 0xce, 0xe7, 0x42, 0xc2, 0x31, 0xad, 0xd3, 0x71, 0xb0, 0xeb, 0x72, 0xc3, 0x25, + 0x3e, 0xd1, 0x15, 0xc8, 0xd8, 0xfd, 0x1d, 0x55, 0x58, 0x89, 0xfc, 0xc5, 0x07, 0x46, 0xcd, 0x79, + 0xa1, 0x1b, 0x7c, 0xd6, 0xa7, 0xed, 0xfe, 0x0e, 0xd1, 0x94, 0x87, 0xa0, 0x30, 0xa2, 0x31, 0xf9, + 0xdb, 0x41, 0x3b, 0xe8, 0x4b, 0x36, 0xbc, 0x07, 0xaa, 0xed, 0x18, 0x96, 0x63, 0x78, 0x87, 0xf4, + 0xb8, 0x5d, 0x42, 0x91, 0x44, 0xc1, 0x16, 0x87, 0xcb, 0xb7, 0xa0, 0xdc, 0xa2, 0x6e, 0x7a, 0xd0, + 0xf2, 0x4b, 0x41, 0xfb, 0x62, 0x93, 0xdb, 0x37, 0xb6, 0x65, 0xf1, 0xa1, 0x96, 0x9d, 0xff, 0xf7, + 0x31, 0xc8, 0xd7, 0xc8, 0xc4, 0x6d, 0xae, 0x5e, 0xed, 0x6a, 0x7b, 0xe8, 0x19, 0x38, 0x51, 0x5b, + 0xdb, 0xac, 0xbf, 0xa4, 0x36, 0x57, 0xd5, 0xab, 0x6b, 0xd5, 0x6b, 0xc1, 0xf9, 0xde, 0xca, 0xc9, + 0xbb, 0xf7, 0x96, 0x50, 0x08, 0x77, 0xdb, 0xa4, 0xb1, 0x24, 0xba, 0x00, 0xf3, 0x51, 0x92, 0x6a, + 0xad, 0xd5, 0xd8, 0x68, 0x4b, 0xb1, 0xca, 0x89, 0xbb, 0xf7, 0x96, 0x66, 0x43, 0x14, 0xd5, 0x1d, + 0x17, 0x9b, 0xde, 0x30, 0x41, 0x7d, 0x73, 0x7d, 0xbd, 0xd9, 0x96, 0xe2, 0x43, 0x04, 0x75, 0xab, + 0xd7, 0x33, 0x3c, 0xf4, 0x38, 0xcc, 0x46, 0x09, 0x36, 0x9a, 0x6b, 0x52, 0xa2, 0x82, 0xee, 0xde, + 0x5b, 0x2a, 0x85, 0xb0, 0x37, 0x8c, 0x6e, 0x25, 0xfb, 0xa1, 0x1f, 0x39, 0x3b, 0xf3, 0xa9, 0xbf, + 0x73, 0x36, 0x56, 0x5b, 0x1f, 0x3b, 0xe7, 0x9e, 0x3d, 0xde, 0x9c, 0x8b, 0xae, 0xdb, 0x5f, 0x79, + 0x20, 0x62, 0x6e, 0xb8, 0x1f, 0x16, 0x32, 0xc6, 0xd3, 0x4e, 0xb7, 0x49, 0xb9, 0x85, 0xca, 0xd1, + 0xee, 0x41, 0x65, 0xc2, 0xa2, 0x50, 0x99, 0x68, 0x18, 0xe4, 0x17, 0xa0, 0xb8, 0xa5, 0x39, 0x5e, + 0x0b, 0x7b, 0xd7, 0xb1, 0xd6, 0xc1, 0x4e, 0xd4, 0x7f, 0x28, 0x0a, 0xff, 0x01, 0x41, 0x92, 0x3a, + 0x09, 0x6c, 0xfd, 0xa4, 0xbf, 0xe5, 0x7d, 0x48, 0xd2, 0x93, 0xc4, 0xbe, 0x6f, 0xc1, 0x29, 0x98, + 0x6f, 0x41, 0x56, 0x86, 0x43, 0x0f, 0xbb, 0x22, 0xfd, 0x45, 0x3f, 0xd0, 0x73, 0xc2, 0x43, 0x48, + 0x1c, 0xed, 0x21, 0xf0, 0xe9, 0xc5, 0xfd, 0x84, 0x2e, 0x64, 0xf8, 0x10, 0xfb, 0x0d, 0x89, 0x05, + 0x0d, 0x41, 0xeb, 0x50, 0xb6, 0x35, 0xc7, 0xa3, 0x37, 0x0b, 0xf7, 0x69, 0x2f, 0xf8, 0x0c, 0x5e, + 0x1c, 0xb6, 0x27, 0x91, 0xce, 0xf2, 0x5a, 0x8a, 0x76, 0x18, 0x28, 0xff, 0xe7, 0x24, 0xa4, 0xb9, + 0x30, 0xde, 0x0d, 0x19, 0x2e, 0x56, 0x3e, 0xe7, 0x1e, 0x5c, 0x1e, 0x5e, 0x66, 0x97, 0xfd, 0xe5, + 0x90, 0xf3, 0x13, 0x34, 0xe8, 0x51, 0xc8, 0xea, 0xfb, 0x9a, 0x61, 0xaa, 0x46, 0x87, 0x3b, 0xa0, + 0xf9, 0xcf, 0xbe, 0xb9, 0x98, 0xa9, 0x13, 0x58, 0x73, 0x55, 0xc9, 0xd0, 0xc2, 0x66, 0x87, 0xf8, + 0x34, 0xfb, 0xd8, 0xd8, 0xdb, 0xf7, 0xb8, 0xdd, 0xe0, 0x5f, 0xe8, 0x9d, 0x90, 0x24, 0x0a, 0xc1, + 0xef, 0x9d, 0x57, 0x86, 0x22, 0x0b, 0x3f, 0xf5, 0x53, 0xcb, 0x92, 0x8a, 0x3f, 0xfc, 0x9f, 0x16, + 0x63, 0x0a, 0xa5, 0x40, 0x75, 0x28, 0x76, 0x35, 0xd7, 0x53, 0xe9, 0x7a, 0x4c, 0xaa, 0x4f, 0x51, + 0x16, 0xa7, 0x87, 0x05, 0xc2, 0x05, 0xcb, 0x9b, 0x9e, 0x27, 0x54, 0x0c, 0xd4, 0x41, 0xe7, 0x40, + 0xa2, 0x4c, 0x74, 0x3a, 0x03, 0x99, 0x97, 0x98, 0xa6, 0x72, 0x2f, 0x11, 0x38, 0x9b, 0x98, 0xd4, + 0x57, 0x3c, 0x03, 0x39, 0x7a, 0xd3, 0x95, 0xa2, 0xb0, 0xe3, 0xeb, 0x59, 0x02, 0xa0, 0x85, 0x8f, + 0x41, 0x39, 0xb0, 0xfa, 0x0c, 0x25, 0xcb, 0xb8, 0x04, 0x60, 0x8a, 0xf8, 0x34, 0xcc, 0x9b, 0xf8, + 0x80, 0x1e, 0xa8, 0x8f, 0x60, 0xe7, 0x28, 0x36, 0x22, 0x65, 0x37, 0xa3, 0x14, 0x8f, 0x40, 0x49, + 0x17, 0xc2, 0x67, 0xb8, 0x40, 0x71, 0x8b, 0x3e, 0x94, 0xa2, 0x9d, 0x86, 0xac, 0x66, 0xdb, 0x0c, + 0x21, 0xcf, 0xad, 0xbe, 0x6d, 0xd3, 0xa2, 0xf3, 0x30, 0x4b, 0xfb, 0xe8, 0x60, 0xb7, 0xdf, 0xf5, + 0x38, 0x93, 0x02, 0xc5, 0x29, 0x93, 0x02, 0x85, 0xc1, 0x29, 0xee, 0xc3, 0x50, 0xc4, 0xb7, 0x8d, + 0x0e, 0x36, 0x75, 0xcc, 0xf0, 0x8a, 0x14, 0xaf, 0x20, 0x80, 0x14, 0xe9, 0x71, 0xf0, 0xad, 0xb9, + 0x2a, 0x56, 0x9a, 0x12, 0xe3, 0x27, 0xe0, 0x55, 0x06, 0x96, 0x17, 0x20, 0xb9, 0xaa, 0x79, 0x1a, + 0x71, 0x97, 0xbc, 0x03, 0xb6, 0x7c, 0x16, 0x14, 0xf2, 0x53, 0xfe, 0xb9, 0x04, 0x24, 0x6f, 0x5a, + 0x1e, 0x46, 0xcf, 0x86, 0x5c, 0xd9, 0xd2, 0x28, 0x7d, 0x6e, 0x19, 0x7b, 0x26, 0xee, 0xac, 0xbb, + 0x7b, 0xa1, 0x67, 0x69, 0x02, 0x75, 0x8a, 0x47, 0xd4, 0x69, 0x1e, 0x52, 0x8e, 0xd5, 0x37, 0x3b, + 0xe2, 0xe0, 0x37, 0xfd, 0x40, 0x0d, 0xc8, 0xfa, 0x5a, 0x92, 0x9c, 0xa4, 0x25, 0x65, 0xa2, 0x25, + 0x44, 0x87, 0x39, 0x40, 0xc9, 0xec, 0x70, 0x65, 0xa9, 0x41, 0xce, 0x37, 0x5e, 0x5c, 0xdb, 0xa6, + 0x53, 0xd8, 0x80, 0x8c, 0x2c, 0x91, 0xfe, 0xd8, 0xfb, 0xc2, 0x63, 0x1a, 0x27, 0xf9, 0x05, 0x5c, + 0x7a, 0x11, 0xb5, 0xe2, 0x4f, 0xe4, 0x64, 0x68, 0xbf, 0x02, 0xb5, 0x62, 0xcf, 0xe4, 0x3c, 0x00, + 0x39, 0xd7, 0xd8, 0x33, 0x35, 0xaf, 0xef, 0x60, 0xae, 0x79, 0x01, 0x80, 0x94, 0x06, 0x97, 0x20, + 0x98, 0xa6, 0x85, 0x5e, 0xee, 0xba, 0x00, 0x73, 0xc1, 0x9b, 0x59, 0x01, 0x17, 0xa6, 0x65, 0xc8, + 0x2f, 0x6a, 0x89, 0x12, 0xf9, 0x97, 0x63, 0x90, 0xe6, 0x2b, 0x56, 0x30, 0x0c, 0xb1, 0xd1, 0xc3, + 0x10, 0x1f, 0x37, 0x0c, 0x89, 0xfb, 0x1f, 0x86, 0x2a, 0x80, 0xdf, 0x4c, 0x97, 0x3f, 0x84, 0x32, + 0xc2, 0xad, 0x62, 0x4d, 0x6c, 0x19, 0x7b, 0x7c, 0xde, 0x87, 0x88, 0xe4, 0xdf, 0x8e, 0x11, 0x0f, + 0x9f, 0x97, 0xa3, 0x2a, 0x14, 0x45, 0xbb, 0xd4, 0xdd, 0xae, 0xb6, 0xc7, 0x55, 0xf1, 0xc1, 0xb1, + 0x8d, 0x23, 0xab, 0xb0, 0x92, 0xe7, 0xed, 0xa1, 0xfe, 0xc4, 0xc8, 0x61, 0x8d, 0x8f, 0x19, 0xd6, + 0x88, 0x1e, 0x25, 0xee, 0x4f, 0x8f, 0x22, 0x23, 0x9e, 0x1c, 0x18, 0x71, 0xf9, 0x77, 0x63, 0xfc, + 0xc5, 0xae, 0x0e, 0xbb, 0xc1, 0xf1, 0xe7, 0x35, 0x54, 0xaf, 0x71, 0xdd, 0xea, 0xe0, 0x8e, 0x3a, + 0x34, 0x66, 0x0f, 0x0f, 0x73, 0x8c, 0xb6, 0x39, 0x18, 0x3b, 0x24, 0xb8, 0xb4, 0x82, 0x31, 0xfc, + 0x74, 0x1c, 0x66, 0x87, 0xf0, 0xff, 0xf2, 0x8d, 0x65, 0x74, 0xf6, 0xa6, 0xa6, 0x9c, 0xbd, 0xe9, + 0xb1, 0xb3, 0xf7, 0x67, 0xe2, 0x34, 0x01, 0x60, 0x5b, 0xae, 0xd6, 0xfd, 0x5a, 0xd8, 0xde, 0x33, + 0x90, 0xb3, 0xad, 0xae, 0xca, 0x4a, 0xd8, 0xd5, 0x9b, 0xac, 0x6d, 0x75, 0x95, 0x21, 0x35, 0x4b, + 0xbd, 0x45, 0x86, 0x39, 0xfd, 0x16, 0x0c, 0x42, 0x66, 0x70, 0x42, 0x39, 0x50, 0x60, 0xa2, 0xe0, + 0x5e, 0xd3, 0xd3, 0x44, 0x06, 0xd4, 0x0d, 0x8b, 0x0d, 0x7b, 0x79, 0xac, 0xd9, 0x0c, 0x53, 0xe1, + 0x78, 0x84, 0x82, 0x39, 0x19, 0xa3, 0x32, 0x47, 0x61, 0x8b, 0xa5, 0x70, 0x3c, 0xf9, 0x7b, 0x63, + 0x00, 0x6b, 0x44, 0xb2, 0xb4, 0xbf, 0xc4, 0xdf, 0x71, 0x69, 0x13, 0xd4, 0x48, 0xcd, 0x67, 0xc7, + 0x0d, 0x1a, 0xaf, 0xbf, 0xe0, 0x86, 0xdb, 0x5d, 0x87, 0x62, 0xa0, 0xdb, 0x2e, 0x16, 0x8d, 0x39, + 0x7b, 0x44, 0x54, 0xda, 0xc2, 0x9e, 0x52, 0xb8, 0x1d, 0xfa, 0x92, 0xff, 0x59, 0x0c, 0x72, 0xb4, + 0x4d, 0xeb, 0xd8, 0xd3, 0x22, 0x63, 0x18, 0xbb, 0xff, 0x31, 0x7c, 0x10, 0x80, 0xb1, 0x71, 0x8d, + 0x37, 0x30, 0xd7, 0xac, 0x1c, 0x85, 0xb4, 0x8c, 0x37, 0x30, 0xba, 0xec, 0x0b, 0x3c, 0x71, 0xb4, + 0xc0, 0x45, 0xd4, 0xca, 0xc5, 0x7e, 0x0a, 0x32, 0xf4, 0x4d, 0xc9, 0x03, 0x97, 0x07, 0xa2, 0x69, + 0xb3, 0xdf, 0x6b, 0x1f, 0xb8, 0xf2, 0xeb, 0x90, 0x69, 0x1f, 0xb0, 0x7c, 0xe2, 0x19, 0xc8, 0x39, + 0x96, 0xc5, 0xbd, 0x3f, 0xe6, 0x75, 0x67, 0x09, 0x80, 0x3a, 0x3b, 0x22, 0x87, 0x16, 0x0f, 0x72, + 0x68, 0x41, 0x12, 0x30, 0x31, 0x55, 0x12, 0x90, 0x44, 0x9f, 0xc5, 0xc8, 0x4c, 0x42, 0x4f, 0xc2, + 0xa9, 0x56, 0xf3, 0xda, 0x46, 0x63, 0x55, 0x5d, 0x6f, 0x5d, 0x1b, 0xb8, 0x56, 0x5f, 0x29, 0xdf, + 0xbd, 0xb7, 0x94, 0xe7, 0x61, 0xe7, 0x38, 0xec, 0x2d, 0xa5, 0x71, 0x73, 0xb3, 0xdd, 0x90, 0x62, + 0x0c, 0x7b, 0xcb, 0xc1, 0xb7, 0x2d, 0x8f, 0x3d, 0xda, 0xfa, 0x34, 0x9c, 0x1e, 0x81, 0xed, 0x07, + 0x9f, 0xb3, 0x77, 0xef, 0x2d, 0x15, 0xb7, 0x1c, 0xcc, 0xb4, 0x8c, 0x52, 0x2c, 0xc3, 0xc2, 0x30, + 0xc5, 0xe6, 0xd6, 0x66, 0xab, 0xba, 0x26, 0x2d, 0x55, 0xa4, 0xbb, 0xf7, 0x96, 0x0a, 0xc2, 0x64, + 0x10, 0xfc, 0xb7, 0x3f, 0xfa, 0xfc, 0xd6, 0x6c, 0x24, 0x6b, 0xcc, 0xe2, 0x3a, 0x5b, 0x73, 0xb4, + 0xde, 0x71, 0xc3, 0xcf, 0x09, 0x1b, 0xfe, 0xf2, 0x4f, 0xc7, 0xa1, 0xec, 0x07, 0x37, 0x5b, 0xb4, + 0x06, 0xf4, 0x6c, 0x38, 0xe3, 0x97, 0x1f, 0xbb, 0x76, 0x30, 0x6c, 0x91, 0x10, 0x7c, 0x17, 0x64, + 0x85, 0x93, 0xcc, 0x27, 0xd5, 0xd2, 0x88, 0xf5, 0x8d, 0x63, 0x70, 0x52, 0x9f, 0x02, 0xbd, 0x08, + 0x39, 0x7f, 0x8a, 0xf9, 0x0f, 0x9b, 0x8d, 0x9f, 0x93, 0x9c, 0x3e, 0xa0, 0x41, 0x2f, 0x04, 0x61, + 0x5c, 0x72, 0x5c, 0x60, 0x78, 0x93, 0x21, 0x70, 0x62, 0x3f, 0x84, 0x7b, 0x1a, 0x92, 0xda, 0x8e, + 0x6e, 0x70, 0x03, 0xfc, 0xc0, 0x30, 0x5d, 0xb5, 0x56, 0x6f, 0x72, 0x22, 0x8a, 0x29, 0x37, 0x79, + 0x32, 0x85, 0xcb, 0x8b, 0x3e, 0x23, 0x73, 0xa0, 0xb2, 0x58, 0x98, 0x79, 0x17, 0xd9, 0x9e, 0x76, + 0x50, 0xa3, 0xe1, 0xf0, 0x29, 0xc8, 0x90, 0xc2, 0x3d, 0xfe, 0x50, 0x41, 0x42, 0x49, 0xf7, 0xb4, + 0x83, 0x6b, 0x9a, 0x7b, 0x23, 0x99, 0x4d, 0x48, 0x49, 0xf9, 0xc7, 0x89, 0xa7, 0x12, 0x91, 0x0a, + 0x7a, 0x02, 0x10, 0xa1, 0xd0, 0xf6, 0xb0, 0x4a, 0xa6, 0x2e, 0x15, 0xaf, 0xe0, 0x5b, 0xee, 0x69, + 0x07, 0xd5, 0x3d, 0xbc, 0xd1, 0xef, 0xd1, 0x06, 0xb8, 0x68, 0x1d, 0x24, 0x81, 0x2c, 0x46, 0x96, + 0x8b, 0xff, 0xf4, 0xf0, 0xc3, 0xa8, 0x1c, 0x81, 0x2d, 0x00, 0x1f, 0x21, 0x0b, 0x40, 0x89, 0xf1, + 0xf3, 0x8f, 0x78, 0x44, 0xba, 0x92, 0x88, 0x76, 0x45, 0x7e, 0x11, 0xca, 0x03, 0x23, 0x80, 0x64, + 0x28, 0xf2, 0x8c, 0x15, 0xdd, 0x3e, 0x67, 0x11, 0x4e, 0x4e, 0xc9, 0xb3, 0xcc, 0x14, 0x3d, 0x4e, + 0xb0, 0x92, 0xfd, 0xf9, 0x8f, 0x2f, 0xc6, 0xe8, 0x66, 0xce, 0x13, 0x50, 0x8c, 0x8c, 0x81, 0xc8, + 0x22, 0xc7, 0x82, 0x2c, 0x72, 0x80, 0xfc, 0x1a, 0x14, 0x88, 0x01, 0xc2, 0x1d, 0x8e, 0xfb, 0x28, + 0x94, 0x99, 0x81, 0x1c, 0x94, 0x35, 0x73, 0x78, 0xd6, 0x85, 0xc0, 0x65, 0xe1, 0x01, 0x45, 0xc5, + 0x9e, 0x17, 0x58, 0xd7, 0x34, 0x57, 0xde, 0x04, 0x08, 0x06, 0x15, 0x55, 0xe1, 0x41, 0x62, 0x3c, + 0xc2, 0xc7, 0x3d, 0xf9, 0x93, 0x56, 0x11, 0x8f, 0xb1, 0x42, 0x90, 0x82, 0x23, 0x9d, 0xec, 0x61, + 0xab, 0xeb, 0x14, 0xa3, 0xf6, 0xf2, 0xa7, 0x3e, 0x7b, 0x36, 0xf6, 0xf6, 0xd8, 0x82, 0xff, 0xf0, + 0x2a, 0x9c, 0x09, 0x15, 0x12, 0x05, 0x8c, 0x24, 0xa2, 0xca, 0x21, 0x7d, 0x25, 0x85, 0x93, 0x12, + 0x4a, 0x47, 0xe6, 0x7f, 0x2b, 0x47, 0x9b, 0x9d, 0xc9, 0xd9, 0xa6, 0xc9, 0xf9, 0xae, 0xd1, 0x49, + 0xf9, 0x7f, 0x9a, 0x83, 0x8c, 0x82, 0xdf, 0xdf, 0xc7, 0xae, 0x87, 0x2e, 0x42, 0x12, 0xeb, 0xfb, + 0xd6, 0xa8, 0x1c, 0x28, 0xe9, 0xe0, 0x32, 0xc7, 0x6b, 0xe8, 0xfb, 0xd6, 0xf5, 0x19, 0x85, 0xe2, + 0xa2, 0x4b, 0x90, 0xda, 0xed, 0xf6, 0x79, 0xfa, 0x6a, 0xc0, 0x66, 0x85, 0x89, 0xae, 0x12, 0xa4, + 0xeb, 0x33, 0x0a, 0xc3, 0x26, 0x55, 0xd1, 0x17, 0xad, 0x13, 0x47, 0x57, 0xd5, 0x34, 0x77, 0x69, + 0x55, 0x04, 0x17, 0xd5, 0x00, 0x0c, 0xd3, 0xf0, 0x54, 0x9a, 0xda, 0xe1, 0x56, 0xe3, 0xa1, 0xf1, + 0x94, 0x86, 0x47, 0x93, 0x41, 0xd7, 0x67, 0x94, 0x9c, 0x21, 0x3e, 0x48, 0x73, 0xdf, 0xdf, 0xc7, + 0xce, 0x21, 0xf7, 0xd6, 0xc6, 0x36, 0xf7, 0x65, 0x82, 0x44, 0x9a, 0x4b, 0xb1, 0x89, 0x91, 0x65, + 0x8f, 0xe3, 0x79, 0x07, 0xfc, 0xc9, 0xd7, 0xc5, 0x71, 0x94, 0xf4, 0x85, 0xbc, 0xf6, 0xc1, 0xf5, + 0x19, 0x25, 0xa3, 0xb3, 0x9f, 0xe8, 0x9d, 0xbe, 0x0b, 0x96, 0x1f, 0xf6, 0x7a, 0x22, 0xb4, 0x2c, + 0xed, 0x33, 0x23, 0x5c, 0x31, 0xb4, 0x01, 0xa5, 0xae, 0xe1, 0x7a, 0xaa, 0x6b, 0x6a, 0xb6, 0xbb, + 0x6f, 0x79, 0x2e, 0xcd, 0x9f, 0xe4, 0x2f, 0x3e, 0x32, 0x8e, 0xc3, 0x9a, 0xe1, 0x7a, 0x2d, 0x81, + 0x7c, 0x7d, 0x46, 0x29, 0x76, 0xc3, 0x00, 0xc2, 0xcf, 0xda, 0xdd, 0xc5, 0x8e, 0xcf, 0x90, 0xe6, + 0x59, 0x8e, 0xe0, 0xb7, 0x49, 0xb0, 0x05, 0x3d, 0xe1, 0x67, 0x85, 0x01, 0xe8, 0xeb, 0x60, 0xae, + 0x6b, 0x69, 0x1d, 0x9f, 0x9d, 0xaa, 0xef, 0xf7, 0xcd, 0x5b, 0x34, 0x29, 0x93, 0xbf, 0xf8, 0xf8, + 0xd8, 0x46, 0x5a, 0x5a, 0x47, 0xb0, 0xa8, 0x13, 0x82, 0xeb, 0x33, 0xca, 0x6c, 0x77, 0x10, 0x88, + 0xde, 0x07, 0xf3, 0x9a, 0x6d, 0x77, 0x0f, 0x07, 0xb9, 0x97, 0x29, 0xf7, 0xf3, 0xe3, 0xb8, 0x57, + 0x09, 0xcd, 0x20, 0x7b, 0xa4, 0x0d, 0x41, 0x51, 0x1b, 0x24, 0xdb, 0xc1, 0xf4, 0xc6, 0x94, 0xcd, + 0xbd, 0x0c, 0xfa, 0x9e, 0x54, 0xfe, 0xe2, 0x63, 0xe3, 0x78, 0x6f, 0x31, 0x7c, 0xe1, 0x94, 0x5c, + 0x9f, 0x51, 0xca, 0x76, 0x14, 0xc4, 0xb8, 0x5a, 0x3a, 0xa6, 0xcf, 0xdd, 0x71, 0xae, 0xb3, 0x93, + 0xb8, 0x52, 0xfc, 0x28, 0xd7, 0x08, 0x08, 0x35, 0x20, 0xcf, 0x42, 0x51, 0x95, 0x18, 0x43, 0xfa, + 0x0a, 0x55, 0xfe, 0xa2, 0x3c, 0x76, 0x86, 0x52, 0xd4, 0x9b, 0x96, 0x87, 0xaf, 0xcf, 0x28, 0x80, + 0xfd, 0x2f, 0xa4, 0xc1, 0x09, 0xfa, 0x20, 0xd7, 0xa1, 0x1a, 0x35, 0xbc, 0x0b, 0x73, 0x94, 0xe1, + 0x13, 0xe3, 0x18, 0xde, 0xa4, 0x44, 0x37, 0xc3, 0x76, 0xf8, 0xfa, 0x8c, 0x32, 0x77, 0x7b, 0x18, + 0x4c, 0x54, 0x6c, 0xd7, 0x30, 0xb5, 0xae, 0xf1, 0x06, 0x66, 0x4b, 0x28, 0x7d, 0x8a, 0xf2, 0x08, + 0x15, 0xbb, 0xca, 0xb1, 0xe9, 0xc2, 0x4a, 0x54, 0x6c, 0x37, 0x0c, 0xa8, 0x65, 0xf8, 0x59, 0x4f, + 0xff, 0x69, 0xb5, 0x8c, 0x94, 0x65, 0xcf, 0xa9, 0xdd, 0x48, 0x66, 0x41, 0xca, 0xcb, 0x8f, 0x41, + 0x3e, 0x64, 0x98, 0xd0, 0x02, 0x64, 0xf8, 0x69, 0x18, 0x71, 0x6a, 0x94, 0x7f, 0xca, 0x25, 0x28, + 0x84, 0x8d, 0x91, 0xfc, 0xe1, 0x98, 0x4f, 0x49, 0xdf, 0x94, 0x58, 0x88, 0x66, 0xa4, 0x73, 0x81, + 0xa7, 0xf2, 0xb0, 0x58, 0xda, 0x44, 0x39, 0xdb, 0x7e, 0x2d, 0x50, 0x20, 0x5f, 0x59, 0xd1, 0x22, + 0xe4, 0xed, 0x8b, 0xb6, 0x8f, 0x92, 0xa0, 0x28, 0x60, 0x5f, 0xb4, 0x05, 0xc2, 0x43, 0x50, 0x20, + 0xfd, 0x56, 0xc3, 0xfe, 0x52, 0x4e, 0xc9, 0x13, 0x18, 0x47, 0x91, 0xff, 0x55, 0x1c, 0xa4, 0x41, + 0x03, 0xe6, 0xa7, 0xaa, 0x63, 0xc7, 0x4e, 0x55, 0x9f, 0x1e, 0x4c, 0x92, 0x07, 0x79, 0xf1, 0x35, + 0x90, 0x82, 0xf4, 0x2e, 0x5b, 0x6a, 0xc6, 0xfb, 0x7f, 0x03, 0x8e, 0xaa, 0x52, 0xd6, 0x07, 0x3c, + 0xd7, 0xab, 0x91, 0xcd, 0x4a, 0xf1, 0x27, 0x1f, 0x06, 0x07, 0xdc, 0x77, 0x62, 0xb6, 0xed, 0x8e, + 0xe6, 0x61, 0x91, 0x1f, 0x0b, 0xed, 0x5b, 0x3e, 0x0a, 0x65, 0xcd, 0xb6, 0x55, 0xd7, 0xd3, 0x3c, + 0xcc, 0x7d, 0x0d, 0x96, 0x79, 0x28, 0x6a, 0xb6, 0xdd, 0x22, 0x50, 0xe6, 0x6b, 0x3c, 0x02, 0x25, + 0x62, 0xd3, 0x0d, 0xad, 0x2b, 0x5c, 0x85, 0x34, 0x73, 0x49, 0x38, 0x94, 0x79, 0x07, 0x72, 0xc7, + 0x1f, 0x71, 0x6a, 0xcf, 0xfd, 0x98, 0x2a, 0x16, 0x8a, 0xa9, 0x10, 0x7f, 0xeb, 0x83, 0xc9, 0x47, + 0xbc, 0x8f, 0x32, 0x7a, 0xd3, 0x60, 0x9e, 0xc6, 0x5f, 0xb7, 0x59, 0xb2, 0x24, 0xab, 0xb0, 0x0f, + 0x59, 0x81, 0x52, 0xd4, 0xf6, 0xa3, 0x12, 0xc4, 0xbd, 0x03, 0x5e, 0x4b, 0xdc, 0x3b, 0x20, 0x9e, + 0xae, 0xff, 0x42, 0x6e, 0x69, 0xc4, 0x6a, 0xc7, 0xe9, 0x82, 0x5c, 0x87, 0x5c, 0x86, 0x62, 0x64, + 0x4d, 0x90, 0x4f, 0xc2, 0xfc, 0x28, 0x13, 0x2f, 0xef, 0xfb, 0xf0, 0x88, 0xa9, 0x46, 0x97, 0x20, + 0xeb, 0xdb, 0xf8, 0x11, 0xd1, 0x31, 0xad, 0x56, 0x20, 0x2b, 0x3e, 0x6a, 0x24, 0x9d, 0x1f, 0x8f, + 0xa4, 0xf3, 0xe5, 0x6f, 0x84, 0x85, 0x71, 0xf6, 0x7b, 0x20, 0xc9, 0x97, 0xf4, 0x05, 0x76, 0x12, + 0xd2, 0xfc, 0x29, 0xca, 0x38, 0xdd, 0xc0, 0xe2, 0x5f, 0x44, 0x90, 0xcc, 0x96, 0x27, 0xd8, 0xbe, + 0x16, 0xfd, 0x90, 0x55, 0x38, 0x3d, 0xd6, 0x86, 0x8f, 0xdf, 0x0a, 0x63, 0x8c, 0xf8, 0x56, 0x98, + 0x2e, 0x9a, 0xe3, 0xd2, 0xbe, 0x8a, 0x83, 0x2c, 0xec, 0x4b, 0xfe, 0x48, 0x02, 0x4e, 0x8e, 0xb6, + 0xe4, 0x68, 0x09, 0x0a, 0xc4, 0x6f, 0xf5, 0xa2, 0x2e, 0x2e, 0xf4, 0xb4, 0x83, 0x36, 0xf7, 0x6f, + 0xf9, 0x56, 0x42, 0xdc, 0xdf, 0x4a, 0x40, 0xdb, 0x30, 0xdb, 0xb5, 0x74, 0xad, 0xab, 0x86, 0xb6, + 0x72, 0xf8, 0x24, 0x7a, 0x78, 0x48, 0xd8, 0xd1, 0x94, 0x21, 0x31, 0x38, 0x5c, 0xff, 0xcb, 0x94, + 0xc7, 0x9a, 0xbf, 0xeb, 0x83, 0x56, 0x21, 0xdf, 0x33, 0xdc, 0x1d, 0xbc, 0xaf, 0xdd, 0x36, 0x2c, + 0x87, 0xcf, 0xa6, 0x61, 0xa5, 0x59, 0x0f, 0x70, 0xc4, 0x0e, 0x53, 0x88, 0x2c, 0x34, 0x24, 0xa9, + 0x91, 0x1b, 0x5f, 0xe9, 0x63, 0x5b, 0x93, 0x71, 0x7b, 0x48, 0x99, 0xb1, 0x7b, 0x48, 0xa3, 0x36, + 0x6c, 0xb2, 0xa3, 0x37, 0x6c, 0x3e, 0x14, 0x1e, 0x9a, 0xe8, 0xda, 0x37, 0xb4, 0x87, 0x83, 0x5a, + 0x30, 0xcf, 0xe9, 0x3b, 0x11, 0xd9, 0x8f, 0x38, 0xea, 0xc0, 0xe6, 0xd7, 0xa0, 0xcc, 0x91, 0x20, + 0x1f, 0x2f, 0xf6, 0xc4, 0xfd, 0x89, 0x5d, 0x6c, 0xa2, 0x26, 0x43, 0x9b, 0xa8, 0xff, 0x97, 0x0d, + 0xc5, 0x07, 0x13, 0x30, 0x3b, 0xe4, 0x48, 0x8c, 0xdc, 0x1d, 0x1e, 0x97, 0x91, 0x15, 0x1d, 0x4b, + 0x1c, 0xbb, 0x63, 0x7c, 0xac, 0x93, 0x93, 0xc7, 0x3a, 0xf5, 0x16, 0x8e, 0x75, 0xfa, 0xfe, 0xc6, + 0xfa, 0x6d, 0x1d, 0x85, 0x8f, 0xc5, 0xa0, 0x32, 0xde, 0xfb, 0x1a, 0x39, 0x1c, 0xc7, 0xda, 0x40, + 0x18, 0xb7, 0xc6, 0x3d, 0x02, 0xa5, 0x01, 0xdf, 0x90, 0xa9, 0x72, 0x31, 0x12, 0x85, 0xcb, 0xdf, + 0x9c, 0xf0, 0x17, 0x9e, 0x88, 0x03, 0x37, 0x62, 0xb6, 0xbe, 0x0c, 0x73, 0x1d, 0xac, 0x1b, 0x9d, + 0xfb, 0x9d, 0xac, 0xb3, 0x9c, 0xfa, 0xff, 0xcd, 0xd5, 0x61, 0x2d, 0xf9, 0x1e, 0x80, 0xac, 0x82, + 0x5d, 0x9b, 0xf8, 0x63, 0xa8, 0x06, 0x39, 0x7c, 0xa0, 0x63, 0xdb, 0x0b, 0x0e, 0x55, 0x8c, 0x0a, + 0x11, 0x18, 0x76, 0x43, 0x60, 0x92, 0x00, 0xd9, 0x27, 0x43, 0xcf, 0xf2, 0x1c, 0xc0, 0xf8, 0x70, + 0x9e, 0x93, 0x87, 0x93, 0x00, 0x97, 0x45, 0x12, 0x20, 0x31, 0x36, 0xbe, 0x65, 0x54, 0x03, 0x59, + 0x80, 0x67, 0x79, 0x16, 0x20, 0x39, 0xa1, 0xb2, 0x48, 0x1a, 0xa0, 0x1e, 0x49, 0x03, 0xa4, 0x27, + 0x74, 0x73, 0x4c, 0x1e, 0xe0, 0xb2, 0xc8, 0x03, 0x64, 0x26, 0xb4, 0x78, 0x20, 0x11, 0xf0, 0xee, + 0x50, 0x22, 0x20, 0x37, 0x9c, 0x6d, 0x8d, 0x90, 0x8e, 0xc8, 0x04, 0xbc, 0xe0, 0x67, 0x02, 0x0a, + 0x63, 0xb3, 0x08, 0x9c, 0x78, 0x30, 0x15, 0xb0, 0x39, 0x94, 0x0a, 0x28, 0xf2, 0x3f, 0x6c, 0x34, + 0x8e, 0xc5, 0x84, 0x5c, 0xc0, 0xe6, 0x50, 0x2e, 0xa0, 0x34, 0x81, 0xe1, 0x84, 0x64, 0xc0, 0xd7, + 0x8f, 0x4e, 0x06, 0x8c, 0x0f, 0xd7, 0x79, 0x33, 0xa7, 0xcb, 0x06, 0xa8, 0x63, 0xb2, 0x01, 0xd2, + 0xd8, 0xc8, 0x95, 0xb1, 0x9f, 0x3a, 0x1d, 0xb0, 0x3d, 0x22, 0x1d, 0xc0, 0x02, 0xf7, 0x73, 0x63, + 0x99, 0x4f, 0x91, 0x0f, 0xd8, 0x1e, 0x91, 0x0f, 0x40, 0x13, 0xd9, 0x4e, 0x4c, 0x08, 0x5c, 0x8d, + 0x26, 0x04, 0xe6, 0xc6, 0x78, 0x9d, 0xc1, 0x6c, 0x1f, 0x93, 0x11, 0xd8, 0x19, 0x97, 0x11, 0x60, + 0x51, 0xfb, 0x93, 0x63, 0x39, 0x1e, 0x23, 0x25, 0xb0, 0x39, 0x94, 0x12, 0x38, 0x31, 0x41, 0xd3, + 0xa6, 0xcf, 0x09, 0xb0, 0x87, 0xd6, 0xd9, 0x13, 0xeb, 0x20, 0xe5, 0x6f, 0x24, 0xb3, 0x79, 0xa9, + 0x20, 0x3f, 0x4e, 0x3c, 0x98, 0x01, 0x3b, 0x47, 0x62, 0x05, 0xec, 0x38, 0x96, 0x23, 0xee, 0x31, + 0xd0, 0x0f, 0xf9, 0x1c, 0x89, 0x11, 0x03, 0x9b, 0x76, 0x44, 0xfe, 0x80, 0xc6, 0x64, 0x21, 0x3b, + 0x26, 0xff, 0x7c, 0x2c, 0xa0, 0xa5, 0x19, 0x84, 0x70, 0x7c, 0x99, 0xe3, 0xf1, 0x65, 0x28, 0xab, + 0x10, 0x8f, 0x66, 0x15, 0x16, 0x21, 0x4f, 0x62, 0xad, 0x81, 0x84, 0x81, 0x66, 0xfb, 0x09, 0x03, + 0x71, 0x80, 0x8a, 0xe5, 0x1e, 0xf8, 0xb2, 0xc4, 0x76, 0x13, 0xcb, 0xfe, 0x61, 0x32, 0x16, 0xea, + 0xa2, 0xa7, 0x60, 0x2e, 0x84, 0xeb, 0xc7, 0x70, 0x2c, 0x7a, 0x96, 0x7c, 0xec, 0x2a, 0x0f, 0xe6, + 0x7e, 0x35, 0x16, 0x48, 0x28, 0xc8, 0x34, 0x8c, 0x4a, 0x0a, 0xc4, 0xde, 0xa2, 0xa4, 0x40, 0xfc, + 0xbe, 0x93, 0x02, 0xe1, 0x98, 0x34, 0x11, 0x8d, 0x49, 0xff, 0x47, 0x2c, 0x18, 0x13, 0x3f, 0xc4, + 0xd7, 0xad, 0x0e, 0xe6, 0x51, 0x22, 0xfd, 0x4d, 0x5c, 0x92, 0xae, 0xb5, 0xc7, 0x63, 0x41, 0xf2, + 0x93, 0x60, 0xf9, 0x0b, 0x4f, 0x8e, 0xaf, 0x2b, 0x7e, 0x80, 0x99, 0x0a, 0xdf, 0xe3, 0xe0, 0x97, + 0x1b, 0xd2, 0xc1, 0xe5, 0x06, 0xff, 0xf2, 0x71, 0x26, 0x74, 0xf9, 0x18, 0xbd, 0x13, 0x72, 0x34, + 0xd9, 0xaf, 0x5a, 0xb6, 0xf8, 0xab, 0x60, 0x67, 0xc6, 0x5f, 0x6c, 0x70, 0xe9, 0x91, 0x6b, 0x76, + 0x19, 0x22, 0xf0, 0x38, 0x72, 0x11, 0x8f, 0xe3, 0x01, 0xc8, 0x91, 0xd6, 0xb3, 0xbf, 0x6e, 0x01, + 0xfc, 0xe6, 0xba, 0x00, 0xc8, 0x3f, 0x11, 0x87, 0xf2, 0xc0, 0x42, 0x33, 0xb2, 0xef, 0xa3, 0xb6, + 0x91, 0xa7, 0x93, 0xc7, 0x59, 0x80, 0x3d, 0xcd, 0x55, 0xef, 0x68, 0xa6, 0x87, 0x3b, 0x5c, 0x28, + 0x21, 0x08, 0xaa, 0x40, 0x96, 0x7c, 0xf5, 0x5d, 0xdc, 0xe1, 0xd9, 0x17, 0xff, 0x1b, 0x5d, 0x87, + 0x34, 0xbe, 0x4d, 0x5f, 0x77, 0x65, 0x6f, 0x24, 0x9f, 0x1c, 0x0e, 0x87, 0x49, 0x71, 0x6d, 0x81, + 0x0c, 0xf6, 0x17, 0xdf, 0x5c, 0x94, 0x18, 0xf6, 0x93, 0xfe, 0x85, 0x31, 0x85, 0xd3, 0x47, 0xa5, + 0x90, 0x1d, 0x90, 0x02, 0xcd, 0x03, 0x16, 0x44, 0x78, 0x4f, 0x64, 0xca, 0xce, 0x78, 0x2b, 0xc5, + 0x1e, 0xee, 0xd9, 0x96, 0xd5, 0x55, 0xd9, 0x1c, 0xaf, 0x42, 0x29, 0xba, 0xae, 0xb2, 0xbf, 0x3c, + 0xe5, 0x69, 0x86, 0xa9, 0x46, 0x9c, 0xe0, 0x02, 0x03, 0xb2, 0x39, 0x75, 0x23, 0x99, 0x8d, 0x49, + 0xf1, 0x1b, 0xc9, 0x6c, 0x5c, 0x4a, 0xc8, 0x5b, 0x70, 0x62, 0xe4, 0xba, 0x8a, 0x9e, 0x87, 0x5c, + 0xb0, 0x24, 0xb3, 0x63, 0xfa, 0x47, 0x64, 0x5a, 0x02, 0x5c, 0xf9, 0x97, 0x62, 0x01, 0xcb, 0x68, + 0xee, 0xa6, 0x01, 0x69, 0x76, 0x66, 0x92, 0x9f, 0x8f, 0x79, 0x6a, 0xba, 0x15, 0x79, 0x99, 0x1d, + 0xa8, 0x54, 0x38, 0xb1, 0xfc, 0x3e, 0x48, 0x33, 0x08, 0xca, 0x43, 0x26, 0x78, 0x47, 0x1a, 0x20, + 0x5d, 0xad, 0xd7, 0x1b, 0x5b, 0xe2, 0x51, 0xd8, 0xda, 0xa6, 0xd2, 0x96, 0xe2, 0x04, 0xac, 0x34, + 0x6e, 0x34, 0xea, 0x6d, 0x29, 0x81, 0x66, 0xa1, 0xc8, 0x7e, 0xab, 0x57, 0x37, 0x95, 0xf5, 0x6a, + 0x5b, 0x4a, 0x86, 0x40, 0xad, 0xc6, 0xc6, 0x6a, 0x43, 0x91, 0x52, 0xf2, 0x33, 0x70, 0x7a, 0xec, + 0x1a, 0x1e, 0x24, 0x66, 0x62, 0xa1, 0xc4, 0x8c, 0xfc, 0x91, 0x38, 0x09, 0x6a, 0xc6, 0x2d, 0xcc, + 0xe8, 0xc6, 0x40, 0xc7, 0x2f, 0x1e, 0x63, 0x55, 0x1f, 0xe8, 0x3d, 0x89, 0x63, 0x1c, 0xbc, 0x8b, + 0x3d, 0x7d, 0x9f, 0x39, 0x0a, 0xcc, 0x02, 0x15, 0x95, 0x22, 0x87, 0x52, 0x22, 0x97, 0xa1, 0xbd, + 0x8e, 0x75, 0x4f, 0x65, 0x4a, 0xe4, 0xf2, 0x3f, 0x94, 0x5b, 0x64, 0xd0, 0x16, 0x03, 0xca, 0xdf, + 0x78, 0x2c, 0x59, 0xe6, 0x20, 0xa5, 0x34, 0xda, 0xca, 0xab, 0x52, 0x02, 0x21, 0x28, 0xd1, 0x9f, + 0x6a, 0x6b, 0xa3, 0xba, 0xd5, 0xba, 0xbe, 0x49, 0x64, 0x39, 0x07, 0x65, 0x21, 0x4b, 0x01, 0x4c, + 0xc9, 0x4f, 0xc0, 0xa9, 0x31, 0x5e, 0xc5, 0x88, 0x43, 0xac, 0x9f, 0x88, 0x85, 0xb1, 0xa3, 0x9e, + 0xc1, 0x26, 0xa4, 0x5d, 0x4f, 0xf3, 0xfa, 0x2e, 0x17, 0xe2, 0xf3, 0xd3, 0xba, 0x19, 0xcb, 0xe2, + 0x47, 0x8b, 0x92, 0x2b, 0x9c, 0x8d, 0x7c, 0x09, 0x4a, 0xd1, 0x92, 0xf1, 0x32, 0x08, 0x94, 0x28, + 0x2e, 0x5f, 0x01, 0x34, 0xec, 0x7d, 0x8c, 0x08, 0x2f, 0x63, 0xa3, 0xc2, 0xcb, 0x1f, 0x8d, 0xc1, + 0x99, 0x23, 0x3c, 0x0d, 0xf4, 0xf2, 0x40, 0x27, 0x5f, 0x38, 0x8e, 0x9f, 0xb2, 0xcc, 0x60, 0x03, + 0xdd, 0x7c, 0x16, 0x0a, 0x61, 0xf8, 0x74, 0x9d, 0xfc, 0x62, 0x3c, 0x98, 0xc4, 0xd1, 0x38, 0x38, + 0x30, 0x81, 0xb1, 0xaf, 0xd2, 0x04, 0xbe, 0x0b, 0xc0, 0x3b, 0x10, 0xa7, 0xa8, 0xf9, 0x3a, 0xfa, + 0xe0, 0x88, 0xfc, 0x22, 0xd6, 0xdb, 0x07, 0x7c, 0x12, 0xe4, 0x3c, 0xfe, 0xcb, 0x45, 0xad, 0x70, + 0x52, 0xa0, 0x4f, 0xd7, 0x58, 0xd7, 0xff, 0x33, 0xb9, 0xd3, 0x2d, 0xc6, 0x41, 0xf2, 0x80, 0x81, + 0x5d, 0xf4, 0x2a, 0x9c, 0x1a, 0x70, 0x14, 0x7c, 0xd6, 0xc9, 0x69, 0xfd, 0x85, 0x13, 0x51, 0x7f, + 0x41, 0xb0, 0x0e, 0xaf, 0xf6, 0xa9, 0xe8, 0x6a, 0xff, 0x2a, 0x40, 0x90, 0x1c, 0x08, 0x8e, 0xfd, + 0xc5, 0xc2, 0xc7, 0xfe, 0x2e, 0x41, 0x8a, 0x68, 0x92, 0x90, 0xd3, 0xb0, 0x29, 0x26, 0x9a, 0x10, + 0x4a, 0x2e, 0x30, 0x6c, 0xd9, 0x00, 0x34, 0x9c, 0xa0, 0x1d, 0x53, 0xc5, 0xbb, 0xa3, 0x55, 0x3c, + 0x34, 0x36, 0xd5, 0x3b, 0xba, 0xaa, 0x37, 0x20, 0x45, 0x47, 0x7e, 0xe4, 0x5d, 0xca, 0x6f, 0x00, + 0xd0, 0x3c, 0xcf, 0x31, 0x76, 0xfa, 0x41, 0x05, 0x8b, 0xa3, 0x35, 0xa7, 0x2a, 0xf0, 0x6a, 0x0f, + 0x70, 0x15, 0x9a, 0x0f, 0x48, 0x43, 0x6a, 0x14, 0x62, 0x28, 0x6f, 0x40, 0x29, 0x4a, 0x3b, 0xfa, + 0x6e, 0x68, 0xf0, 0xb8, 0x4a, 0x4e, 0xf8, 0x37, 0xbe, 0x77, 0xc4, 0x1f, 0x3c, 0xa2, 0x1f, 0xf2, + 0x07, 0xe2, 0x50, 0x08, 0x2b, 0xde, 0x5f, 0x3d, 0x17, 0x44, 0xfe, 0x96, 0x18, 0x64, 0xfd, 0xee, + 0x1f, 0x71, 0xd8, 0x39, 0xb8, 0x23, 0xec, 0x6f, 0x5e, 0xb0, 0x6d, 0xa2, 0x84, 0xbf, 0x4d, 0x74, + 0xc5, 0x5f, 0xfe, 0xc6, 0x25, 0x44, 0xc2, 0xb2, 0x16, 0x07, 0x0e, 0xf9, 0x6a, 0x7f, 0x65, 0xba, + 0xab, 0x78, 0xf3, 0x90, 0x0a, 0x5f, 0xa3, 0x63, 0x1f, 0x72, 0x27, 0x74, 0xc2, 0x88, 0x4d, 0xc4, + 0xf0, 0x9d, 0xbd, 0xd8, 0xb1, 0xef, 0xec, 0xf9, 0xb5, 0xc4, 0xc3, 0xb5, 0x7c, 0x77, 0x0c, 0xb2, + 0x62, 0x4e, 0xa0, 0xf7, 0x84, 0x4f, 0x9e, 0x89, 0xad, 0xcd, 0xb1, 0xf6, 0x88, 0xf3, 0x0f, 0x1d, + 0x3c, 0x1b, 0x3a, 0x70, 0x9d, 0x38, 0xee, 0x81, 0x6b, 0xee, 0xd9, 0xfd, 0x49, 0x0c, 0xa4, 0xc1, + 0x19, 0xfb, 0x55, 0xb7, 0x6e, 0x78, 0x99, 0x4b, 0x8c, 0x58, 0xe6, 0xc6, 0x9d, 0xa2, 0x4e, 0x8e, + 0x3b, 0x45, 0x3d, 0xdc, 0xeb, 0xd4, 0x7d, 0xf6, 0xfa, 0x83, 0x71, 0xc8, 0x87, 0xd2, 0xa3, 0xe8, + 0xb9, 0xc8, 0x89, 0xec, 0xa5, 0xa3, 0x52, 0xa9, 0xa1, 0x23, 0xd9, 0x11, 0x31, 0xc5, 0x8f, 0x2f, + 0xa6, 0xb7, 0xfe, 0x76, 0xd6, 0xe8, 0x0b, 0xac, 0xa9, 0x31, 0x17, 0x58, 0xff, 0x7a, 0x0c, 0xb2, + 0xbe, 0xdb, 0x7d, 0xdc, 0x4d, 0xcc, 0x93, 0x90, 0xe6, 0x9e, 0x25, 0xdb, 0xc5, 0xe4, 0x5f, 0x23, + 0xd3, 0xca, 0x15, 0xc8, 0x8a, 0xbf, 0x59, 0xc8, 0x57, 0x35, 0xff, 0xfb, 0xfc, 0x0b, 0x90, 0x0f, + 0x6d, 0x00, 0x13, 0xd3, 0xb8, 0xd1, 0x78, 0xaf, 0x34, 0x53, 0xc9, 0xdc, 0xbd, 0xb7, 0x94, 0xd8, + 0xc0, 0x77, 0xc8, 0x6c, 0x56, 0x1a, 0xf5, 0xeb, 0x8d, 0xfa, 0x4b, 0x52, 0xac, 0x92, 0xbf, 0x7b, + 0x6f, 0x29, 0xa3, 0x60, 0x9a, 0x51, 0x3c, 0xff, 0x12, 0x94, 0x07, 0x06, 0x26, 0xea, 0xb6, 0x20, + 0x28, 0xad, 0x6e, 0x6f, 0xad, 0x35, 0xeb, 0xd5, 0x76, 0x43, 0x65, 0xe7, 0x76, 0xd1, 0x29, 0x98, + 0x5b, 0x6b, 0x5e, 0xbb, 0xde, 0x56, 0xeb, 0x6b, 0xcd, 0xc6, 0x46, 0x5b, 0xad, 0xb6, 0xdb, 0xd5, + 0xfa, 0x4b, 0x52, 0xfc, 0xe2, 0xbd, 0x3c, 0x24, 0xab, 0xb5, 0x7a, 0x13, 0xd5, 0x21, 0x49, 0x53, + 0x21, 0x47, 0x9e, 0x00, 0xab, 0x1c, 0x9d, 0x1b, 0x46, 0x57, 0x21, 0x45, 0xb3, 0x24, 0xe8, 0xe8, + 0x23, 0x61, 0x95, 0x09, 0xc9, 0x62, 0xd2, 0x18, 0x3a, 0x23, 0x8f, 0x3c, 0x23, 0x56, 0x39, 0x3a, + 0x77, 0x8c, 0xd6, 0x20, 0x23, 0x82, 0xe4, 0x49, 0x07, 0xb7, 0x2a, 0x13, 0x13, 0xba, 0xa4, 0x6b, + 0x2c, 0xd9, 0x70, 0xf4, 0xf1, 0xb1, 0xca, 0x84, 0xac, 0x32, 0x6a, 0xfa, 0xf7, 0x99, 0x26, 0x9c, + 0x08, 0xab, 0x4c, 0xca, 0x13, 0x23, 0x05, 0x72, 0x41, 0x1a, 0x67, 0xf2, 0xa1, 0xb8, 0xca, 0x14, + 0x09, 0x73, 0xf4, 0x3e, 0x28, 0x46, 0x43, 0xdd, 0xe9, 0x4e, 0x9d, 0x55, 0xa6, 0xcc, 0x48, 0x13, + 0xfe, 0xd1, 0xb8, 0x77, 0xba, 0x53, 0x68, 0x95, 0x29, 0x13, 0xd4, 0xe8, 0x75, 0x98, 0x1d, 0x8e, + 0x4b, 0xa7, 0x3f, 0x94, 0x56, 0x39, 0x46, 0xca, 0x1a, 0xf5, 0x00, 0x8d, 0x88, 0x67, 0x8f, 0x71, + 0x46, 0xad, 0x72, 0x9c, 0x0c, 0x36, 0xea, 0x40, 0x79, 0x30, 0x48, 0x9c, 0xf6, 0xcc, 0x5a, 0x65, + 0xea, 0x6c, 0x36, 0xab, 0x25, 0x1a, 0x5c, 0x4e, 0x7b, 0x86, 0xad, 0x32, 0x75, 0x72, 0x1b, 0x6d, + 0x03, 0x84, 0xe2, 0xc3, 0x29, 0xce, 0xb4, 0x55, 0xa6, 0x49, 0x73, 0x23, 0x1b, 0xe6, 0x46, 0x05, + 0x8e, 0xc7, 0x39, 0xe2, 0x56, 0x39, 0x56, 0xf6, 0x9b, 0xe8, 0x73, 0x34, 0x04, 0x9c, 0xee, 0xc8, + 0x5b, 0x65, 0xca, 0x34, 0x78, 0xad, 0x3a, 0xf6, 0x9c, 0xf3, 0x63, 0x47, 0x9e, 0x73, 0x0e, 0x4e, + 0x2e, 0xfb, 0x67, 0x9b, 0x7f, 0xf5, 0x39, 0x78, 0x07, 0x7f, 0x41, 0xc7, 0xf5, 0xb4, 0x5b, 0x86, + 0xb9, 0xe7, 0x3f, 0x65, 0xc4, 0xbf, 0xf9, 0x21, 0xe7, 0x93, 0xfc, 0xb9, 0x1e, 0x01, 0x9d, 0xf0, + 0xa0, 0xd1, 0xd8, 0x57, 0x1e, 0x27, 0xdd, 0x87, 0x98, 0x7c, 0x7c, 0xf9, 0x88, 0xc7, 0x92, 0x26, + 0x3c, 0xc9, 0x34, 0xe2, 0x31, 0xa5, 0xca, 0x91, 0x6f, 0x0c, 0x54, 0x8e, 0x3a, 0xf7, 0x2d, 0x7f, + 0x5f, 0x0c, 0x4a, 0xd7, 0x0d, 0xd7, 0xb3, 0x1c, 0x43, 0xd7, 0xba, 0x74, 0x79, 0xb9, 0x32, 0xed, + 0xad, 0xac, 0x5a, 0x8e, 0xb8, 0x2b, 0xfc, 0xbd, 0x25, 0x7e, 0x53, 0x68, 0x15, 0xd2, 0xb7, 0xb5, + 0x2e, 0xbb, 0x13, 0x15, 0x7e, 0x6c, 0x6d, 0x50, 0xe6, 0x21, 0x3f, 0x2a, 0xcc, 0x85, 0xd1, 0xae, + 0xc4, 0x17, 0x62, 0xf2, 0xb7, 0xc5, 0x40, 0x0a, 0x5a, 0xa6, 0x60, 0xdd, 0x72, 0x3a, 0x34, 0x14, + 0xb0, 0xed, 0xd0, 0x59, 0x01, 0xf1, 0x49, 0x5d, 0x3e, 0xa3, 0x87, 0x7d, 0xbf, 0x6d, 0xbc, 0x93, + 0x95, 0x0c, 0x39, 0x58, 0x23, 0xae, 0x9c, 0x27, 0x46, 0x5d, 0x39, 0x97, 0xbf, 0x97, 0xde, 0x70, + 0xe9, 0xf5, 0x0c, 0x97, 0xcc, 0x0e, 0x85, 0x06, 0xf7, 0x37, 0x20, 0xe9, 0x68, 0x1e, 0x0f, 0x79, + 0x6b, 0x97, 0x8f, 0xfd, 0x64, 0x14, 0xeb, 0x33, 0xe5, 0x81, 0x5e, 0x86, 0x6c, 0x4f, 0x3b, 0x50, + 0x29, 0xbf, 0xf8, 0x57, 0xc5, 0x2f, 0xd3, 0xd3, 0x0e, 0x48, 0xfb, 0xd0, 0xfb, 0xa0, 0x4c, 0x58, + 0xea, 0xfb, 0x9a, 0xb9, 0x87, 0x19, 0xe7, 0xc4, 0x57, 0xc5, 0xb9, 0xd8, 0xd3, 0x0e, 0xea, 0x94, + 0x1b, 0xe1, 0xcf, 0x9f, 0xd6, 0xfa, 0x95, 0x18, 0xcf, 0x63, 0x50, 0xc1, 0x20, 0x0d, 0x24, 0xdd, + 0xff, 0xa2, 0x95, 0x8a, 0x4d, 0x97, 0xc7, 0xc6, 0x69, 0xc2, 0x80, 0x58, 0x6b, 0x45, 0xd2, 0xbc, + 0xcf, 0xbc, 0xb9, 0x18, 0x63, 0xb5, 0x96, 0xf5, 0x21, 0xb1, 0xe7, 0x59, 0x7a, 0x46, 0x9d, 0x72, + 0xc0, 0x8b, 0xc2, 0xab, 0x66, 0x0c, 0x81, 0x51, 0x93, 0x72, 0xde, 0x87, 0x4f, 0xc5, 0x20, 0xbf, + 0x1a, 0x7a, 0xcc, 0x71, 0x01, 0x32, 0x3d, 0xcb, 0x34, 0x6e, 0x61, 0xc7, 0xdf, 0x35, 0x63, 0x9f, + 0xc4, 0xf3, 0x65, 0x7f, 0x13, 0xd0, 0x3b, 0x14, 0xef, 0x1d, 0x89, 0x6f, 0x42, 0x75, 0x07, 0xef, + 0xb8, 0x86, 0x90, 0xb3, 0x22, 0x3e, 0xd1, 0xe3, 0x20, 0xb9, 0x58, 0xef, 0x3b, 0x86, 0x77, 0xa8, + 0xea, 0x96, 0xe9, 0x69, 0xba, 0xc7, 0x33, 0x03, 0x65, 0x01, 0xaf, 0x33, 0x30, 0x61, 0xd2, 0xc1, + 0x9e, 0x66, 0x74, 0xd9, 0x59, 0xd1, 0x9c, 0x22, 0x3e, 0x79, 0x53, 0xef, 0x66, 0xc2, 0x91, 0x71, + 0x1d, 0x24, 0xcb, 0xc6, 0x4e, 0xe4, 0x88, 0x0c, 0xd3, 0xc6, 0x85, 0xdf, 0xfc, 0xf4, 0x53, 0xf3, + 0x5c, 0xe0, 0xfc, 0x78, 0x05, 0xfb, 0xdb, 0x05, 0x4a, 0x59, 0x50, 0x88, 0xb3, 0x33, 0xaf, 0x46, + 0xf6, 0xc9, 0xfa, 0x3b, 0xc1, 0xc3, 0x36, 0xf3, 0x43, 0x42, 0xad, 0x9a, 0x87, 0xb5, 0x85, 0xdf, + 0x08, 0x58, 0x07, 0x91, 0xf3, 0x4b, 0xf8, 0x30, 0xbc, 0x69, 0x46, 0xd9, 0x90, 0xa0, 0xe2, 0x75, + 0xcd, 0xe8, 0x8a, 0x3f, 0x9f, 0xaa, 0xf0, 0x2f, 0xb4, 0xe2, 0x27, 0x3c, 0x93, 0x34, 0x42, 0x93, + 0xc7, 0xe9, 0x46, 0xcd, 0x32, 0x3b, 0xd1, 0xcc, 0x26, 0xaa, 0x43, 0xda, 0xb3, 0x6e, 0x61, 0x93, + 0x0b, 0xa8, 0xf6, 0xc4, 0x31, 0xde, 0x86, 0x53, 0x38, 0x29, 0xfa, 0x7a, 0x90, 0x3a, 0xb8, 0x8b, + 0xf7, 0xd8, 0x0d, 0xce, 0x7d, 0xcd, 0xc1, 0xec, 0xfd, 0x80, 0xfb, 0x7a, 0xf9, 0xad, 0xec, 0xb3, + 0x6a, 0x51, 0x4e, 0x68, 0x2b, 0xfa, 0x5c, 0x68, 0x86, 0x6f, 0x67, 0x8f, 0xe9, 0x63, 0x48, 0xf3, + 0xc2, 0xb6, 0x30, 0xf2, 0xbc, 0xe8, 0xe3, 0x20, 0xf5, 0xcd, 0x1d, 0xcb, 0xa4, 0x7f, 0x75, 0x90, + 0xc7, 0x75, 0x59, 0xb6, 0x77, 0xea, 0xc3, 0xf9, 0xde, 0xe9, 0x16, 0x94, 0x02, 0x54, 0x3a, 0x43, + 0x72, 0xc7, 0x9d, 0x21, 0x45, 0x9f, 0x01, 0x41, 0x41, 0xeb, 0x00, 0xc1, 0x1c, 0xa4, 0x9b, 0x77, + 0xf9, 0xf1, 0x23, 0x16, 0xcc, 0xe6, 0x70, 0x67, 0x42, 0x0c, 0xd0, 0xd7, 0xc1, 0x5c, 0xcf, 0x30, + 0x55, 0x17, 0x77, 0x77, 0x55, 0x2e, 0x39, 0xc2, 0x37, 0x7f, 0xfc, 0xd1, 0x9c, 0xed, 0x19, 0x66, + 0x0b, 0x77, 0x77, 0x57, 0x7d, 0x2e, 0xe8, 0x5d, 0x70, 0x26, 0xe8, 0xbd, 0x65, 0xaa, 0xfb, 0x56, + 0xb7, 0xa3, 0x3a, 0x78, 0x57, 0xd5, 0xe9, 0xeb, 0x7e, 0x05, 0x2a, 0xb3, 0x53, 0x3e, 0xca, 0xa6, + 0x79, 0xdd, 0xea, 0x76, 0x14, 0xbc, 0x5b, 0x27, 0xc5, 0xe8, 0x61, 0x08, 0xba, 0xae, 0x1a, 0x1d, + 0x77, 0xa1, 0xb8, 0x94, 0x38, 0x97, 0x54, 0x0a, 0x3e, 0xb0, 0xd9, 0x71, 0x57, 0xb2, 0x1f, 0xfa, + 0xf8, 0xe2, 0xcc, 0x17, 0x3e, 0xbe, 0x38, 0x23, 0x5f, 0xa5, 0xaf, 0x5c, 0xf1, 0x79, 0x84, 0x5d, + 0x74, 0x19, 0x72, 0x9a, 0xf8, 0x60, 0x77, 0xd8, 0x8e, 0x98, 0x87, 0x01, 0xaa, 0xfc, 0xe3, 0x31, + 0x48, 0xaf, 0xde, 0xdc, 0xd2, 0x0c, 0x07, 0x35, 0x60, 0x36, 0x50, 0xcc, 0x69, 0xa7, 0x74, 0xa0, + 0xcb, 0x62, 0x4e, 0x6f, 0x8c, 0x3b, 0x3c, 0x97, 0xab, 0x3d, 0xf4, 0x9b, 0x9f, 0x7e, 0xea, 0x41, + 0xce, 0xe6, 0xe6, 0xc0, 0x39, 0x3a, 0xc1, 0x6f, 0xf0, 0x7c, 0x5d, 0xa8, 0xcf, 0x37, 0x20, 0xc3, + 0x9a, 0xea, 0xa2, 0x17, 0x21, 0x65, 0x93, 0x1f, 0x7c, 0x4f, 0xe0, 0xec, 0x58, 0x05, 0xa7, 0xf8, + 0x61, 0x75, 0x60, 0x74, 0xf2, 0xb7, 0xc5, 0x01, 0x56, 0x6f, 0xde, 0x6c, 0x3b, 0x86, 0xdd, 0xc5, + 0xde, 0x5b, 0xd5, 0xf7, 0x6d, 0x38, 0x11, 0xba, 0x9d, 0xed, 0xe8, 0xc7, 0xef, 0xff, 0x5c, 0x70, + 0x51, 0xdb, 0xd1, 0x47, 0xb2, 0xed, 0xb8, 0x9e, 0xcf, 0x36, 0x71, 0x7c, 0xb6, 0xab, 0xae, 0x37, + 0x2c, 0xd9, 0x57, 0x20, 0x1f, 0x08, 0xc3, 0x45, 0x4d, 0xc8, 0x7a, 0xfc, 0x37, 0x17, 0xb0, 0x3c, + 0x5e, 0xc0, 0x82, 0x2c, 0x2c, 0x64, 0x9f, 0x5c, 0xfe, 0xb3, 0x18, 0x40, 0x68, 0x8e, 0xfc, 0xc5, + 0xd4, 0x31, 0xd4, 0x84, 0x34, 0xb7, 0xc4, 0x89, 0xfb, 0x7e, 0x83, 0x93, 0x31, 0x08, 0x09, 0xf5, + 0x3b, 0xe2, 0x30, 0xb7, 0x2d, 0x66, 0xef, 0x5f, 0x7c, 0x19, 0x6c, 0x43, 0x06, 0x9b, 0x9e, 0x63, + 0xf8, 0xbb, 0x5a, 0x4f, 0x8f, 0x1b, 0xf3, 0x11, 0x9d, 0x6a, 0x98, 0x9e, 0x73, 0x18, 0xd6, 0x00, + 0xc1, 0x2b, 0x24, 0x8f, 0x8f, 0x26, 0x60, 0x61, 0x1c, 0x29, 0xf1, 0x86, 0x75, 0x07, 0x53, 0x40, + 0xf4, 0xd2, 0x6a, 0x49, 0x80, 0xf9, 0x1a, 0xa3, 0x00, 0xf1, 0xca, 0x88, 0x72, 0x11, 0xd4, 0xfb, + 0x73, 0xc3, 0x4a, 0x01, 0x07, 0xba, 0xca, 0xb4, 0xa1, 0x2c, 0x6e, 0xc1, 0xec, 0x68, 0x5d, 0xcd, + 0xd4, 0x85, 0xbb, 0x7a, 0xac, 0x25, 0x41, 0xdc, 0xa4, 0xa9, 0x31, 0x16, 0xa8, 0x01, 0x19, 0xc1, + 0x2d, 0x79, 0x7c, 0x6e, 0x82, 0x16, 0x3d, 0x04, 0x85, 0xf0, 0xc2, 0x40, 0x5d, 0x8f, 0xa4, 0x92, + 0x0f, 0xad, 0x0b, 0x93, 0x56, 0x9e, 0xf4, 0x91, 0x2b, 0x0f, 0xf7, 0xee, 0x7e, 0x88, 0x1e, 0x56, + 0xef, 0xfc, 0xe5, 0x1f, 0x96, 0x2d, 0x00, 0x36, 0x55, 0x89, 0x25, 0xe5, 0x23, 0x73, 0x1f, 0xf3, + 0x3d, 0xc7, 0x98, 0xac, 0xba, 0xde, 0xd7, 0x6a, 0x84, 0x7e, 0x3b, 0x0e, 0x85, 0xf0, 0x08, 0xfd, + 0x95, 0x5c, 0xb4, 0xd0, 0x46, 0x60, 0xa6, 0xd8, 0x85, 0x9e, 0xc7, 0xc7, 0x99, 0xa9, 0x21, 0x6d, + 0x9e, 0x60, 0x9f, 0x3e, 0x9f, 0x80, 0x34, 0x3f, 0x71, 0xb7, 0x39, 0xe4, 0xc8, 0xc6, 0x26, 0x3d, + 0x49, 0x50, 0x14, 0x4f, 0x12, 0x8c, 0xf4, 0x63, 0x1f, 0x81, 0x12, 0x09, 0x88, 0x23, 0xc7, 0xf8, + 0x62, 0xe7, 0x8a, 0x34, 0xae, 0x0d, 0x0e, 0xad, 0xa3, 0x45, 0xc8, 0x13, 0xb4, 0xc0, 0x0e, 0x13, + 0x1c, 0xe8, 0x69, 0x07, 0x0d, 0x06, 0x41, 0x4f, 0x01, 0xda, 0xf7, 0x13, 0x13, 0x6a, 0x20, 0x08, + 0x82, 0x37, 0x1b, 0x94, 0x08, 0xf4, 0x07, 0x01, 0x48, 0x2b, 0x54, 0xf6, 0xec, 0x34, 0x7f, 0xd4, + 0x9b, 0x40, 0x56, 0xe9, 0xd3, 0xd3, 0xdf, 0x1c, 0x63, 0xfe, 0xf0, 0x40, 0xd8, 0xcc, 0xc3, 0x91, + 0xf6, 0x14, 0x93, 0xe2, 0x8f, 0xdf, 0x5c, 0xac, 0x1c, 0x6a, 0xbd, 0xee, 0x8a, 0x3c, 0x82, 0x8f, + 0x3c, 0x2a, 0x92, 0x27, 0x8e, 0x73, 0x34, 0xec, 0x46, 0x4d, 0x90, 0x6e, 0xe1, 0x43, 0xd5, 0xe1, + 0x7f, 0x93, 0x5b, 0xdd, 0xc5, 0x98, 0x07, 0x2e, 0xa7, 0x97, 0x47, 0x3c, 0x02, 0xbe, 0x5c, 0xb7, + 0x0c, 0x93, 0x6f, 0x81, 0x95, 0x6e, 0xe1, 0x43, 0x85, 0xd3, 0x5d, 0xc5, 0x78, 0xe5, 0x1d, 0x64, + 0xa6, 0xdc, 0xfd, 0xfc, 0x4f, 0x9e, 0x3f, 0x13, 0x7a, 0xd0, 0xfa, 0xc0, 0xcf, 0xcd, 0xb1, 0xe1, + 0x25, 0x4e, 0x2f, 0x0a, 0x16, 0x20, 0xff, 0xd8, 0xff, 0x3a, 0x40, 0x28, 0x28, 0x88, 0x1d, 0x1d, + 0x6c, 0x04, 0xf4, 0x91, 0x60, 0x23, 0x34, 0x3d, 0xdf, 0x13, 0xd8, 0xff, 0xf8, 0xa4, 0xde, 0x84, + 0x35, 0x93, 0x13, 0xd1, 0x59, 0x3f, 0x23, 0xff, 0xeb, 0x18, 0x9c, 0x1e, 0xd2, 0x64, 0xbf, 0xc9, + 0x3a, 0x20, 0x27, 0x54, 0x48, 0x35, 0x42, 0xec, 0x33, 0xdf, 0xdf, 0xc4, 0x98, 0x75, 0x86, 0x16, + 0x81, 0xb7, 0x66, 0x21, 0xe3, 0x56, 0xec, 0xd7, 0x63, 0x30, 0x1f, 0x6e, 0x80, 0xdf, 0x95, 0x16, + 0x14, 0xc2, 0x55, 0xf3, 0x4e, 0xbc, 0x63, 0x9a, 0x4e, 0x84, 0xdb, 0x1f, 0x61, 0x82, 0x6e, 0x06, + 0xd6, 0x82, 0x25, 0x05, 0x9f, 0x99, 0x5a, 0x28, 0xa2, 0x61, 0x23, 0xad, 0x06, 0x1b, 0x9b, 0xdf, + 0x8f, 0x41, 0x72, 0xcb, 0xb2, 0xba, 0xe8, 0xfd, 0x30, 0x6b, 0x5a, 0x9e, 0x4a, 0x66, 0x16, 0xee, + 0xa8, 0x3c, 0x47, 0xc0, 0x2c, 0x71, 0xe3, 0x48, 0x59, 0x7d, 0xf1, 0xcd, 0xc5, 0x61, 0xca, 0x51, + 0x8f, 0xca, 0x97, 0x4d, 0xcb, 0xab, 0x51, 0xa4, 0x36, 0x4b, 0x23, 0xec, 0x42, 0x31, 0x5a, 0x1d, + 0xb3, 0xd6, 0xd5, 0x49, 0xd5, 0x15, 0x27, 0x56, 0x55, 0xd8, 0x09, 0xd5, 0xc3, 0xde, 0x88, 0xfe, + 0x43, 0x32, 0x72, 0xaf, 0x82, 0x74, 0x73, 0xf0, 0xfc, 0x52, 0x03, 0x32, 0xe2, 0xbc, 0x52, 0x6c, + 0xca, 0xa3, 0x50, 0x61, 0x71, 0x72, 0x5a, 0xf9, 0x33, 0x71, 0x38, 0x5d, 0xb7, 0x4c, 0x97, 0x27, + 0x73, 0xf8, 0x84, 0x66, 0x29, 0xd8, 0x43, 0xf4, 0xf8, 0x98, 0x54, 0x53, 0x61, 0x38, 0xa1, 0x74, + 0x13, 0xca, 0x64, 0x65, 0xd5, 0x2d, 0xf3, 0xab, 0xcc, 0x27, 0x15, 0xad, 0x6e, 0x87, 0xb7, 0xe8, + 0x16, 0x3e, 0x24, 0x7c, 0x4d, 0x7c, 0x27, 0xc2, 0x37, 0x71, 0x7f, 0x7c, 0x4d, 0x7c, 0x27, 0xc4, + 0x37, 0xd8, 0x2a, 0x4f, 0x46, 0xb6, 0xca, 0x2f, 0x43, 0x82, 0x58, 0xc1, 0xd4, 0x31, 0xec, 0x06, + 0x21, 0x08, 0xad, 0x66, 0x2d, 0x38, 0xcd, 0x13, 0x04, 0xee, 0xe6, 0x2e, 0x95, 0x28, 0xa6, 0x1d, + 0x7a, 0x09, 0x1f, 0x8e, 0xc8, 0x16, 0x14, 0xa6, 0xca, 0x16, 0x9c, 0xff, 0xd9, 0x18, 0x40, 0x90, + 0x17, 0x43, 0x4f, 0xc2, 0xa9, 0xda, 0xe6, 0xc6, 0xaa, 0xda, 0x6a, 0x57, 0xdb, 0xdb, 0xad, 0xe8, + 0x9f, 0x8c, 0x11, 0x8f, 0x60, 0xb9, 0x36, 0xd6, 0x8d, 0x5d, 0x03, 0x77, 0xd0, 0xa3, 0x30, 0x1f, + 0xc5, 0x26, 0x5f, 0x8d, 0x55, 0x29, 0x56, 0x29, 0xdc, 0xbd, 0xb7, 0x94, 0x65, 0xa1, 0x01, 0xee, + 0xa0, 0x73, 0x70, 0x62, 0x18, 0xaf, 0xb9, 0x71, 0x4d, 0x8a, 0x57, 0x8a, 0x77, 0xef, 0x2d, 0xe5, + 0xfc, 0x18, 0x02, 0xc9, 0x80, 0xc2, 0x98, 0x9c, 0x5f, 0xa2, 0x02, 0x77, 0xef, 0x2d, 0xa5, 0xd9, + 0x6c, 0xa9, 0x24, 0x3f, 0xf4, 0x23, 0x67, 0x67, 0xce, 0x7f, 0x03, 0x40, 0xd3, 0xdc, 0x75, 0x34, + 0x9d, 0x5a, 0x85, 0x0a, 0x9c, 0x6c, 0x6e, 0x5c, 0x55, 0xaa, 0xf5, 0x76, 0x73, 0x73, 0x63, 0xe0, + 0x2f, 0xdd, 0x44, 0xcb, 0x56, 0x37, 0xb7, 0x6b, 0x6b, 0x0d, 0xb5, 0xd5, 0xbc, 0xb6, 0xc1, 0x76, + 0xfc, 0x23, 0x65, 0xef, 0xdd, 0x68, 0x37, 0xd7, 0x1b, 0x52, 0xbc, 0x76, 0x79, 0xec, 0x8e, 0xd2, + 0x03, 0x91, 0x79, 0x18, 0xac, 0x44, 0x91, 0x6d, 0xa4, 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0x18, + 0x00, 0x33, 0xab, 0x2d, 0xa3, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) From f44d9784e79435a4487dfe3e6a178bb24d13d221 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 27 Feb 2024 14:38:19 +0000 Subject: [PATCH 05/18] build(deps): Bump golang.org/x/crypto from 0.19.0 to 0.20.0 (#19574) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Julien Robert Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- client/v2/go.mod | 2 +- client/v2/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- simapp/go.mod | 2 +- simapp/go.sum | 4 ++-- simapp/gomod2nix.toml | 4 ++-- store/go.mod | 2 +- store/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tests/starship/tests/go.mod | 2 +- tests/starship/tests/go.sum | 4 ++-- tools/confix/go.mod | 2 +- tools/confix/go.sum | 4 ++-- tools/cosmovisor/go.mod | 2 +- tools/cosmovisor/go.sum | 4 ++-- tools/hubl/go.mod | 2 +- tools/hubl/go.sum | 4 ++-- x/accounts/go.mod | 2 +- x/accounts/go.sum | 4 ++-- x/auth/go.mod | 2 +- x/auth/go.sum | 4 ++-- x/authz/go.mod | 2 +- x/authz/go.sum | 4 ++-- x/bank/go.mod | 2 +- x/bank/go.sum | 4 ++-- x/circuit/go.mod | 2 +- x/circuit/go.sum | 4 ++-- x/distribution/go.mod | 2 +- x/distribution/go.sum | 4 ++-- x/distribution/migrations/v4/migrate_funds_test.go | 1 - x/evidence/go.mod | 2 +- x/evidence/go.sum | 4 ++-- x/feegrant/go.mod | 2 +- x/feegrant/go.sum | 4 ++-- x/gov/go.mod | 2 +- x/gov/go.sum | 4 ++-- x/group/go.mod | 2 +- x/group/go.sum | 4 ++-- x/mint/go.mod | 2 +- x/mint/go.sum | 4 ++-- x/nft/go.mod | 2 +- x/nft/go.sum | 4 ++-- x/params/go.mod | 2 +- x/params/go.sum | 4 ++-- x/protocolpool/go.mod | 2 +- x/protocolpool/go.sum | 4 ++-- x/slashing/go.mod | 2 +- x/slashing/go.sum | 4 ++-- x/staking/go.mod | 2 +- x/staking/go.sum | 4 ++-- x/upgrade/go.mod | 2 +- x/upgrade/go.sum | 4 ++-- 54 files changed, 80 insertions(+), 81 deletions(-) diff --git a/client/v2/go.mod b/client/v2/go.mod index 8734e50101a8..098366540535 100644 --- a/client/v2/go.mod +++ b/client/v2/go.mod @@ -148,7 +148,7 @@ require ( gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect go.etcd.io/bbolt v1.3.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect diff --git a/client/v2/go.sum b/client/v2/go.sum index e1a54e377453..e40c6900cbdc 100644 --- a/client/v2/go.sum +++ b/client/v2/go.sum @@ -753,8 +753,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= diff --git a/go.mod b/go.mod index c12a6816153a..6f3c80b7b3f1 100644 --- a/go.mod +++ b/go.mod @@ -54,7 +54,7 @@ require ( github.com/stretchr/testify v1.8.4 github.com/tendermint/go-amino v0.16.0 gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b - golang.org/x/crypto v0.19.0 + golang.org/x/crypto v0.20.0 golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 golang.org/x/sync v0.6.0 google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014 diff --git a/go.sum b/go.sum index 42b214ca807d..efe6b82a5e1c 100644 --- a/go.sum +++ b/go.sum @@ -762,8 +762,8 @@ golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= diff --git a/simapp/go.mod b/simapp/go.mod index bb4225e7a2cc..223989256736 100644 --- a/simapp/go.mod +++ b/simapp/go.mod @@ -202,7 +202,7 @@ require ( go.opentelemetry.io/otel/metric v1.22.0 // indirect go.opentelemetry.io/otel/trace v1.22.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect diff --git a/simapp/go.sum b/simapp/go.sum index 1a47458e5733..6d24f3de1649 100644 --- a/simapp/go.sum +++ b/simapp/go.sum @@ -1097,8 +1097,8 @@ golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= diff --git a/simapp/gomod2nix.toml b/simapp/gomod2nix.toml index 736a486f84b9..7bfcf6e89d35 100644 --- a/simapp/gomod2nix.toml +++ b/simapp/gomod2nix.toml @@ -505,8 +505,8 @@ schema = 3 version = "v1.11.0" hash = "sha256-Lb6rHHfR62Ozg2j2JZy3MKOMKdsfzd1IYTR57r3Mhp0=" [mod."golang.org/x/crypto"] - version = "v0.19.0" - hash = "sha256-Vi6vY/eWNlYQ9l3Y+gA+X2+h2CmzEOrBRVFO/cnrPWc=" + version = "v0.20.0" + hash = "sha256-7C0tDus5x3xRsSE08yOtZzMpOFym1Q9XP+U+CJ1sWmc=" [mod."golang.org/x/exp"] version = "v0.0.0-20240222234643-814bf88cf225" hash = "sha256-DM6/KUjyqyuqXai7UH1vMsoKXQAlYfcHTwK1dHqjRAc=" diff --git a/store/go.mod b/store/go.mod index 7663e07c5ac8..6dc0872e489a 100644 --- a/store/go.mod +++ b/store/go.mod @@ -58,7 +58,7 @@ require ( github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/rs/zerolog v1.32.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/net v0.21.0 // indirect golang.org/x/sys v0.17.0 // indirect golang.org/x/text v0.14.0 // indirect diff --git a/store/go.sum b/store/go.sum index a45f48889346..f2c2c5faa61b 100644 --- a/store/go.sum +++ b/store/go.sum @@ -233,8 +233,8 @@ golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= diff --git a/tests/go.mod b/tests/go.mod index 199e15ed13e5..bfbf6c21e60e 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -200,7 +200,7 @@ require ( go.opentelemetry.io/otel/metric v1.22.0 // indirect go.opentelemetry.io/otel/trace v1.22.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index 28fcab9d5504..37047aad930a 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -1073,8 +1073,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= diff --git a/tests/starship/tests/go.mod b/tests/starship/tests/go.mod index 5261982fcc28..90bdee5473fb 100644 --- a/tests/starship/tests/go.mod +++ b/tests/starship/tests/go.mod @@ -230,7 +230,7 @@ require ( go.opentelemetry.io/otel/metric v1.22.0 // indirect go.opentelemetry.io/otel/trace v1.22.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect diff --git a/tests/starship/tests/go.sum b/tests/starship/tests/go.sum index 528119ac59df..bb4c471af8ac 100644 --- a/tests/starship/tests/go.sum +++ b/tests/starship/tests/go.sum @@ -1073,8 +1073,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= diff --git a/tools/confix/go.mod b/tools/confix/go.mod index 3805d3592359..4d142fe67e18 100644 --- a/tools/confix/go.mod +++ b/tools/confix/go.mod @@ -138,7 +138,7 @@ require ( github.com/zondax/ledger-go v0.14.3 // indirect go.etcd.io/bbolt v1.3.8 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/net v0.21.0 // indirect golang.org/x/sync v0.6.0 // indirect golang.org/x/sys v0.17.0 // indirect diff --git a/tools/confix/go.sum b/tools/confix/go.sum index 084d87d0a817..53f232c0b1da 100644 --- a/tools/confix/go.sum +++ b/tools/confix/go.sum @@ -760,8 +760,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= diff --git a/tools/cosmovisor/go.mod b/tools/cosmovisor/go.mod index 580df019837f..66908c7b56fa 100644 --- a/tools/cosmovisor/go.mod +++ b/tools/cosmovisor/go.mod @@ -159,7 +159,7 @@ require ( go.opentelemetry.io/otel/metric v1.22.0 // indirect go.opentelemetry.io/otel/trace v1.22.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/net v0.21.0 // indirect golang.org/x/oauth2 v0.16.0 // indirect diff --git a/tools/cosmovisor/go.sum b/tools/cosmovisor/go.sum index fae3d3ac30f7..c31c1fb0f1fb 100644 --- a/tools/cosmovisor/go.sum +++ b/tools/cosmovisor/go.sum @@ -1049,8 +1049,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= diff --git a/tools/hubl/go.mod b/tools/hubl/go.mod index bb229cbf8905..7586c68106de 100644 --- a/tools/hubl/go.mod +++ b/tools/hubl/go.mod @@ -138,7 +138,7 @@ require ( github.com/zondax/ledger-go v0.14.3 // indirect go.etcd.io/bbolt v1.3.8 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/net v0.21.0 // indirect golang.org/x/sync v0.6.0 // indirect diff --git a/tools/hubl/go.sum b/tools/hubl/go.sum index 62d2c07f5f75..b878d784e67c 100644 --- a/tools/hubl/go.sum +++ b/tools/hubl/go.sum @@ -759,8 +759,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= diff --git a/x/accounts/go.mod b/x/accounts/go.mod index dce220a63a7f..03d9bb17ca66 100644 --- a/x/accounts/go.mod +++ b/x/accounts/go.mod @@ -144,7 +144,7 @@ require ( gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect go.etcd.io/bbolt v1.3.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect golang.org/x/sync v0.6.0 // indirect diff --git a/x/accounts/go.sum b/x/accounts/go.sum index 4906c8f5c37f..d466a8159ee9 100644 --- a/x/accounts/go.sum +++ b/x/accounts/go.sum @@ -744,8 +744,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= diff --git a/x/auth/go.mod b/x/auth/go.mod index 41ccee989422..b93a40d79e81 100644 --- a/x/auth/go.mod +++ b/x/auth/go.mod @@ -149,7 +149,7 @@ require ( gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect go.etcd.io/bbolt v1.3.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect golang.org/x/sync v0.6.0 // indirect diff --git a/x/auth/go.sum b/x/auth/go.sum index 03db67881604..95ac223a5b43 100644 --- a/x/auth/go.sum +++ b/x/auth/go.sum @@ -745,8 +745,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= diff --git a/x/authz/go.mod b/x/authz/go.mod index d47dd59caa75..740883699aed 100644 --- a/x/authz/go.mod +++ b/x/authz/go.mod @@ -146,7 +146,7 @@ require ( gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect go.etcd.io/bbolt v1.3.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect diff --git a/x/authz/go.sum b/x/authz/go.sum index 03db67881604..95ac223a5b43 100644 --- a/x/authz/go.sum +++ b/x/authz/go.sum @@ -745,8 +745,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= diff --git a/x/bank/go.mod b/x/bank/go.mod index dd7598b3014d..b467152ae2b0 100644 --- a/x/bank/go.mod +++ b/x/bank/go.mod @@ -145,7 +145,7 @@ require ( gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect go.etcd.io/bbolt v1.3.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect diff --git a/x/bank/go.sum b/x/bank/go.sum index 03db67881604..95ac223a5b43 100644 --- a/x/bank/go.sum +++ b/x/bank/go.sum @@ -745,8 +745,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= diff --git a/x/circuit/go.mod b/x/circuit/go.mod index 3081507e9e3a..177d34780cbf 100644 --- a/x/circuit/go.mod +++ b/x/circuit/go.mod @@ -145,7 +145,7 @@ require ( gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect go.etcd.io/bbolt v1.3.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect diff --git a/x/circuit/go.sum b/x/circuit/go.sum index 03db67881604..95ac223a5b43 100644 --- a/x/circuit/go.sum +++ b/x/circuit/go.sum @@ -745,8 +745,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= diff --git a/x/distribution/go.mod b/x/distribution/go.mod index 6f0c30ecc19b..deda10c2d3d9 100644 --- a/x/distribution/go.mod +++ b/x/distribution/go.mod @@ -147,7 +147,7 @@ require ( gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect go.etcd.io/bbolt v1.3.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect diff --git a/x/distribution/go.sum b/x/distribution/go.sum index fbbd44eb5825..72cfb2e466bd 100644 --- a/x/distribution/go.sum +++ b/x/distribution/go.sum @@ -747,8 +747,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= diff --git a/x/distribution/migrations/v4/migrate_funds_test.go b/x/distribution/migrations/v4/migrate_funds_test.go index 2267e6bba292..86c0262c1d5f 100644 --- a/x/distribution/migrations/v4/migrate_funds_test.go +++ b/x/distribution/migrations/v4/migrate_funds_test.go @@ -62,7 +62,6 @@ func TestFundsMigration(t *testing.T) { accountKeeper, map[string]bool{}, authority.String(), - log.NewNopLogger(), ) // gomock initializations diff --git a/x/evidence/go.mod b/x/evidence/go.mod index 8a2637f07f92..955a36f7747b 100644 --- a/x/evidence/go.mod +++ b/x/evidence/go.mod @@ -146,7 +146,7 @@ require ( gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect go.etcd.io/bbolt v1.3.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect diff --git a/x/evidence/go.sum b/x/evidence/go.sum index 03db67881604..95ac223a5b43 100644 --- a/x/evidence/go.sum +++ b/x/evidence/go.sum @@ -745,8 +745,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= diff --git a/x/feegrant/go.mod b/x/feegrant/go.mod index 1688b959d854..4ce5c25a4480 100644 --- a/x/feegrant/go.mod +++ b/x/feegrant/go.mod @@ -151,7 +151,7 @@ require ( gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect go.etcd.io/bbolt v1.3.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect diff --git a/x/feegrant/go.sum b/x/feegrant/go.sum index 1521e028c96d..5279853943fa 100644 --- a/x/feegrant/go.sum +++ b/x/feegrant/go.sum @@ -755,8 +755,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= diff --git a/x/gov/go.mod b/x/gov/go.mod index 2120fa93816b..1b2c06e7efab 100644 --- a/x/gov/go.mod +++ b/x/gov/go.mod @@ -151,7 +151,7 @@ require ( gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect go.etcd.io/bbolt v1.3.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect golang.org/x/sync v0.6.0 diff --git a/x/gov/go.sum b/x/gov/go.sum index 1521e028c96d..5279853943fa 100644 --- a/x/gov/go.sum +++ b/x/gov/go.sum @@ -755,8 +755,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= diff --git a/x/group/go.mod b/x/group/go.mod index 3a91e9f7cabd..d5621e4f3ff5 100644 --- a/x/group/go.mod +++ b/x/group/go.mod @@ -154,7 +154,7 @@ require ( gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect go.etcd.io/bbolt v1.3.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect golang.org/x/sync v0.6.0 // indirect diff --git a/x/group/go.sum b/x/group/go.sum index 533207e20437..8d2d0823d507 100644 --- a/x/group/go.sum +++ b/x/group/go.sum @@ -755,8 +755,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= diff --git a/x/mint/go.mod b/x/mint/go.mod index ff347812ebf6..1eac687b2df1 100644 --- a/x/mint/go.mod +++ b/x/mint/go.mod @@ -146,7 +146,7 @@ require ( gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect go.etcd.io/bbolt v1.3.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect diff --git a/x/mint/go.sum b/x/mint/go.sum index 03db67881604..95ac223a5b43 100644 --- a/x/mint/go.sum +++ b/x/mint/go.sum @@ -745,8 +745,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= diff --git a/x/nft/go.mod b/x/nft/go.mod index 79b1bc15d84a..61e5845833c5 100644 --- a/x/nft/go.mod +++ b/x/nft/go.mod @@ -145,7 +145,7 @@ require ( gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect go.etcd.io/bbolt v1.3.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect diff --git a/x/nft/go.sum b/x/nft/go.sum index 03db67881604..95ac223a5b43 100644 --- a/x/nft/go.sum +++ b/x/nft/go.sum @@ -745,8 +745,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= diff --git a/x/params/go.mod b/x/params/go.mod index a29a568d8a0c..7eb74756b27b 100644 --- a/x/params/go.mod +++ b/x/params/go.mod @@ -146,7 +146,7 @@ require ( gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect go.etcd.io/bbolt v1.3.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect diff --git a/x/params/go.sum b/x/params/go.sum index 03db67881604..95ac223a5b43 100644 --- a/x/params/go.sum +++ b/x/params/go.sum @@ -745,8 +745,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= diff --git a/x/protocolpool/go.mod b/x/protocolpool/go.mod index 9f8ca06f5099..ae2a6d771d3a 100644 --- a/x/protocolpool/go.mod +++ b/x/protocolpool/go.mod @@ -147,7 +147,7 @@ require ( gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect go.etcd.io/bbolt v1.3.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect diff --git a/x/protocolpool/go.sum b/x/protocolpool/go.sum index 03db67881604..95ac223a5b43 100644 --- a/x/protocolpool/go.sum +++ b/x/protocolpool/go.sum @@ -745,8 +745,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= diff --git a/x/slashing/go.mod b/x/slashing/go.mod index ad33e30606c1..7e03863235a1 100644 --- a/x/slashing/go.mod +++ b/x/slashing/go.mod @@ -148,7 +148,7 @@ require ( gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect go.etcd.io/bbolt v1.3.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect diff --git a/x/slashing/go.sum b/x/slashing/go.sum index b7c421aedddc..c1786f523dca 100644 --- a/x/slashing/go.sum +++ b/x/slashing/go.sum @@ -747,8 +747,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= diff --git a/x/staking/go.mod b/x/staking/go.mod index 3e6c834d6dd5..9cf80ddfc703 100644 --- a/x/staking/go.mod +++ b/x/staking/go.mod @@ -147,7 +147,7 @@ require ( gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect go.etcd.io/bbolt v1.3.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect golang.org/x/sync v0.6.0 // indirect diff --git a/x/staking/go.sum b/x/staking/go.sum index 03db67881604..95ac223a5b43 100644 --- a/x/staking/go.sum +++ b/x/staking/go.sum @@ -745,8 +745,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= diff --git a/x/upgrade/go.mod b/x/upgrade/go.mod index 8df4df45af7e..0abd37242c73 100644 --- a/x/upgrade/go.mod +++ b/x/upgrade/go.mod @@ -176,7 +176,7 @@ require ( go.opentelemetry.io/otel/metric v1.22.0 // indirect go.opentelemetry.io/otel/trace v1.22.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect diff --git a/x/upgrade/go.sum b/x/upgrade/go.sum index ddd1109db873..1ee818af771b 100644 --- a/x/upgrade/go.sum +++ b/x/upgrade/go.sum @@ -1071,8 +1071,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= From 8585d538f10f00d9c4526efb21886dc0336fcf83 Mon Sep 17 00:00:00 2001 From: khanh <50263489+catShaark@users.noreply.github.com> Date: Tue, 27 Feb 2024 23:28:05 +0700 Subject: [PATCH 06/18] Merge pull request from GHSA-86h5-xcpx-cfqc * check undelegation after redelegation * add comment * using app v1 * set up test * update test * Update x/staking/keeper/slash.go Co-authored-by: Aleksandr Bezobchuk * use switch inside slashing logic * update slash redelegation test --------- Co-authored-by: Hieu Vu <72878483+hieuvubk@users.noreply.github.com> Co-authored-by: Aleksandr Bezobchuk Co-authored-by: Julien Robert --- testutil/sims/app_helpers.go | 31 ++++ x/slashing/keeper/slash_redelegation_test.go | 165 +++++++++++++++++++ x/staking/keeper/slash.go | 36 +++- 3 files changed, 231 insertions(+), 1 deletion(-) create mode 100644 x/slashing/keeper/slash_redelegation_test.go diff --git a/testutil/sims/app_helpers.go b/testutil/sims/app_helpers.go index e58103f78902..ffac149f4c4c 100644 --- a/testutil/sims/app_helpers.go +++ b/testutil/sims/app_helpers.go @@ -17,11 +17,13 @@ import ( banktypes "cosmossdk.io/x/bank/types" stakingtypes "cosmossdk.io/x/staking/types" + coreheader "cosmossdk.io/core/header" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" + "github.com/cosmos/cosmos-sdk/runtime" servertypes "github.com/cosmos/cosmos-sdk/server/types" "github.com/cosmos/cosmos-sdk/testutil/mock" @@ -107,6 +109,35 @@ func SetupAtGenesis(appConfig depinject.Config, extraOutputs ...interface{}) (*r return SetupWithConfiguration(appConfig, cfg, extraOutputs...) } +// NextBlock starts a new block. +func NextBlock(app *runtime.App, ctx sdk.Context, jumpTime time.Duration) (sdk.Context, error) { + _, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{Height: ctx.BlockHeight(), Time: ctx.BlockTime()}) + if err != nil { + return sdk.Context{}, err + } + _, err = app.Commit() + if err != nil { + return sdk.Context{}, err + } + + newBlockTime := ctx.BlockTime().Add(jumpTime) + + header := ctx.BlockHeader() + header.Time = newBlockTime + header.Height = header.Height + 1 + + newCtx := app.BaseApp.NewUncachedContext(false, header).WithHeaderInfo(coreheader.Info{ + Height: header.Height, + Time: header.Time, + }) + + if err != nil { + return sdk.Context{}, err + } + + return newCtx, err +} + // SetupWithConfiguration initializes a new runtime.App. A Nop logger is set in runtime.App. // appConfig defines the application configuration (f.e. app_config.go). // extraOutputs defines the extra outputs to be assigned by the dependency injector (depinject). diff --git a/x/slashing/keeper/slash_redelegation_test.go b/x/slashing/keeper/slash_redelegation_test.go new file mode 100644 index 000000000000..cc32f9ebdf2e --- /dev/null +++ b/x/slashing/keeper/slash_redelegation_test.go @@ -0,0 +1,165 @@ +package keeper_test + +import ( + "fmt" + "testing" + "time" + + "cosmossdk.io/core/header" + "cosmossdk.io/depinject" + "cosmossdk.io/log" + "cosmossdk.io/math" + bankkeeper "cosmossdk.io/x/bank/keeper" + banktestutil "cosmossdk.io/x/bank/testutil" + slashingkeeper "cosmossdk.io/x/slashing/keeper" + "cosmossdk.io/x/slashing/testutil" + stakingkeeper "cosmossdk.io/x/staking/keeper" + stakingtypes "cosmossdk.io/x/staking/types" + + distributionkeeper "cosmossdk.io/x/distribution/keeper" + + "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" + + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" +) + +func TestSlashRedelegation(t *testing.T) { + // setting up + var stakingKeeper *stakingkeeper.Keeper + var bankKeeper bankkeeper.Keeper + var slashKeeper slashingkeeper.Keeper + var distrKeeper distributionkeeper.Keeper + + app, err := simtestutil.Setup(depinject.Configs( + depinject.Supply(log.NewNopLogger()), + testutil.AppConfig, + ), &stakingKeeper, &bankKeeper, &slashKeeper, &distrKeeper) + require.NoError(t, err) + + // get sdk context, staking msg server and bond denom + ctx := app.BaseApp.NewContext(false) + stakingMsgServer := stakingkeeper.NewMsgServerImpl(stakingKeeper) + bondDenom, err := stakingKeeper.BondDenom(ctx) + require.NoError(t, err) + + // evilVal will be slashed, goodVal won't be slashed + evilValPubKey := secp256k1.GenPrivKey().PubKey() + goodValPubKey := secp256k1.GenPrivKey().PubKey() + + // both test acc 1 and 2 delegated to evil val, both acc should be slashed when evil val is slashed + // test acc 1 use the "undelegation after redelegation" trick (redelegate to good val and then undelegate) to avoid slashing + // test acc 2 only undelegate from evil val + testAcc1 := sdk.AccAddress([]byte("addr1_______________")) + testAcc2 := sdk.AccAddress([]byte("addr2_______________")) + + // fund acc 1 and acc 2 + testCoins := sdk.NewCoins(sdk.NewCoin(bondDenom, stakingKeeper.TokensFromConsensusPower(ctx, 10))) + banktestutil.FundAccount(ctx, bankKeeper, testAcc1, testCoins) + banktestutil.FundAccount(ctx, bankKeeper, testAcc2, testCoins) + + balance1Before := bankKeeper.GetBalance(ctx, testAcc1, bondDenom) + balance2Before := bankKeeper.GetBalance(ctx, testAcc2, bondDenom) + + // assert acc 1 and acc 2 balance + require.Equal(t, balance1Before.Amount.String(), testCoins[0].Amount.String()) + require.Equal(t, balance2Before.Amount.String(), testCoins[0].Amount.String()) + + // creating evil val + evilValAddr := sdk.ValAddress(evilValPubKey.Address()) + banktestutil.FundAccount(ctx, bankKeeper, sdk.AccAddress(evilValAddr), testCoins) + createValMsg1, _ := stakingtypes.NewMsgCreateValidator( + evilValAddr.String(), evilValPubKey, testCoins[0], stakingtypes.Description{Details: "test"}, stakingtypes.NewCommissionRates(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0)), math.OneInt()) + _, err = stakingMsgServer.CreateValidator(ctx, createValMsg1) + require.NoError(t, err) + + // creating good val + goodValAddr := sdk.ValAddress(goodValPubKey.Address()) + banktestutil.FundAccount(ctx, bankKeeper, sdk.AccAddress(goodValAddr), testCoins) + createValMsg2, _ := stakingtypes.NewMsgCreateValidator( + goodValAddr.String(), goodValPubKey, testCoins[0], stakingtypes.Description{Details: "test"}, stakingtypes.NewCommissionRates(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0)), math.OneInt()) + _, err = stakingMsgServer.CreateValidator(ctx, createValMsg2) + require.NoError(t, err) + + ctx = ctx.WithBlockHeight(1).WithHeaderInfo(header.Info{Height: 1}) + // next block, commit height 1, move to height 2 + // acc 1 and acc 2 delegate to evil val + ctx, err = simtestutil.NextBlock(app, ctx, time.Duration(1)) + require.NoError(t, err) + + // Acc 2 delegate + delMsg := stakingtypes.NewMsgDelegate(testAcc2.String(), evilValAddr.String(), testCoins[0]) + _, err = stakingMsgServer.Delegate(ctx, delMsg) + require.NoError(t, err) + + // Acc 1 delegate + delMsg = stakingtypes.NewMsgDelegate(testAcc1.String(), evilValAddr.String(), testCoins[0]) + _, err = stakingMsgServer.Delegate(ctx, delMsg) + require.NoError(t, err) + + // next block, commit height 2, move to height 3 + // with the new delegations, evil val increases in voting power and commit byzantine behaviour at height 3 consensus + // at the same time, acc 1 and acc 2 withdraw delegation from evil val + ctx, err = simtestutil.NextBlock(app, ctx, time.Duration(1)) + require.NoError(t, err) + + evilVal, err := stakingKeeper.GetValidator(ctx, evilValAddr) + require.NoError(t, err) + + evilPower := stakingKeeper.TokensToConsensusPower(ctx, evilVal.Tokens) + fmt.Println(evilPower) + + // Acc 1 redelegate from evil val to good val + redelMsg := stakingtypes.NewMsgBeginRedelegate(testAcc1.String(), evilValAddr.String(), goodValAddr.String(), testCoins[0]) + _, err = stakingMsgServer.BeginRedelegate(ctx, redelMsg) + require.NoError(t, err) + + // Acc 1 undelegate from good val + undelMsg := stakingtypes.NewMsgUndelegate(testAcc1.String(), goodValAddr.String(), testCoins[0]) + _, err = stakingMsgServer.Undelegate(ctx, undelMsg) + require.NoError(t, err) + + // Acc 2 undelegate from evil val + undelMsg = stakingtypes.NewMsgUndelegate(testAcc2.String(), evilValAddr.String(), testCoins[0]) + _, err = stakingMsgServer.Undelegate(ctx, undelMsg) + require.NoError(t, err) + + // next block, commit height 3, move to height 4 + // Slash evil val for byzantine behaviour at height 3 consensus, + // at which acc 1 and acc 2 still contributed to evil val voting power + // even tho they undelegate at block 3, the valset update is applied after commited block 3 when height 3 consensus already passes + ctx, err = simtestutil.NextBlock(app, ctx, time.Duration(1)) + require.NoError(t, err) + + // slash evil val with slash factor = 0.9, leaving only 10% of stake after slashing + evilVal, _ = stakingKeeper.GetValidator(ctx, evilValAddr) + evilValConsAddr, err := evilVal.GetConsAddr() + require.NoError(t, err) + + err = slashKeeper.Slash(ctx, evilValConsAddr, math.LegacyMustNewDecFromStr("0.9"), evilPower, 3) + require.NoError(t, err) + + // assert invariant to make sure we conduct slashing correctly + _, stop := stakingkeeper.AllInvariants(stakingKeeper)(ctx) + require.False(t, stop) + + _, stop = bankkeeper.AllInvariants(bankKeeper)(ctx) + require.False(t, stop) + + _, stop = distributionkeeper.AllInvariants(distrKeeper)(ctx) + require.False(t, stop) + + // one eternity later + ctx, err = simtestutil.NextBlock(app, ctx, time.Duration(1000000000000000000)) + require.NoError(t, err) + ctx, err = simtestutil.NextBlock(app, ctx, time.Duration(1)) + require.NoError(t, err) + + // confirm that account 1 and account 2 has been slashed, and the slash amount is correct + balance1AfterSlashing := bankKeeper.GetBalance(ctx, testAcc1, bondDenom) + balance2AfterSlashing := bankKeeper.GetBalance(ctx, testAcc2, bondDenom) + + require.Equal(t, balance1AfterSlashing.Amount.Mul(math.NewIntFromUint64(10)).String(), balance1Before.Amount.String()) + require.Equal(t, balance2AfterSlashing.Amount.Mul(math.NewIntFromUint64(10)).String(), balance2Before.Amount.String()) +} diff --git a/x/staking/keeper/slash.go b/x/staking/keeper/slash.go index 176913eb16a6..6e8835ff6523 100644 --- a/x/staking/keeper/slash.go +++ b/x/staking/keeper/slash.go @@ -332,9 +332,43 @@ func (k Keeper) SlashRedelegation(ctx context.Context, srcValidator types.Valida slashAmount := slashAmountDec.TruncateInt() totalSlashAmount = totalSlashAmount.Add(slashAmount) + // Handle undelegation after redelegation + // Prioritize slashing unbondingDelegation than delegation + unbondingDelegation, err := k.UnbondingDelegations.Get(ctx, collections.Join(delegatorAddress, valDstAddr)) + if err == nil { + for i, entry := range unbondingDelegation.Entries { + // slash with the amount of `slashAmount` if possible, else slash all unbonding token + unbondingSlashAmount := math.MinInt(slashAmount, entry.Balance) + + switch { + // There's no token to slash + case unbondingSlashAmount.IsZero(): + continue + // If unbonding started before this height, stake didn't contribute to infraction + case entry.CreationHeight < infractionHeight: + continue + // Unbonding delegation no longer eligible for slashing, skip it + case entry.IsMature(now) && !entry.OnHold(): + continue + // Slash the unbonding delegation + default: + // update remaining slashAmount + slashAmount = slashAmount.Sub(unbondingSlashAmount) + + notBondedBurnedAmount = notBondedBurnedAmount.Add(unbondingSlashAmount) + entry.Balance = entry.Balance.Sub(unbondingSlashAmount) + unbondingDelegation.Entries[i] = entry + if err = k.SetUnbondingDelegation(ctx, unbondingDelegation); err != nil { + return math.ZeroInt(), err + } + } + } + } + + // Slash the moved delegation // Unbond from target validator sharesToUnbond := slashFactor.Mul(entry.SharesDst) - if sharesToUnbond.IsZero() { + if sharesToUnbond.IsZero() || slashAmount.IsZero() { continue } From a248d05f70f4ad7b8ff7b521e3d23086867d07dc Mon Sep 17 00:00:00 2001 From: Likhita Polavarapu <78951027+likhita-809@users.noreply.github.com> Date: Wed, 28 Feb 2024 03:48:13 +0530 Subject: [PATCH 07/18] feat(x/distribution): add env bundler to distribution module (#19445) Co-authored-by: marbar3778 --- baseapp/abci.go | 9 +- simapp/app.go | 2 +- .../distribution/keeper/msg_server_test.go | 2 +- testutil/sims/app_helpers.go | 5 +- x/distribution/CHANGELOG.md | 1 + x/distribution/depinject.go | 9 +- x/distribution/keeper/abci.go | 1 + x/distribution/keeper/allocation.go | 30 ++--- x/distribution/keeper/allocation_test.go | 16 ++- x/distribution/keeper/delegation.go | 28 ++--- x/distribution/keeper/delegation_test.go | 104 ++++++++++-------- x/distribution/keeper/keeper.go | 39 ++++--- x/distribution/keeper/keeper_test.go | 6 +- x/distribution/keeper/migrations.go | 2 +- x/distribution/keeper/validator.go | 5 +- x/distribution/migrations/v4/migrate.go | 7 +- .../migrations/v4/migrate_funds_test.go | 2 +- x/distribution/migrations/v4/migrate_test.go | 5 +- x/distribution/module.go | 2 +- 19 files changed, 150 insertions(+), 125 deletions(-) diff --git a/baseapp/abci.go b/baseapp/abci.go index 0daed3f1597e..f851338acbae 100644 --- a/baseapp/abci.go +++ b/baseapp/abci.go @@ -1251,14 +1251,19 @@ func (app *BaseApp) CreateQueryContext(height int64, prove bool) (sdk.Context, e ctx := sdk.NewContext(cacheMS, true, app.logger). WithMinGasPrices(app.minGasPrices). WithBlockHeight(height). - WithGasMeter(storetypes.NewGasMeter(app.queryGasLimit)).WithBlockHeader(app.checkState.Context().BlockHeader()) + WithGasMeter(storetypes.NewGasMeter(app.queryGasLimit)). + WithHeaderInfo(coreheader.Info{ + ChainID: app.chainID, + Height: height, + }). + WithBlockHeader(app.checkState.Context().BlockHeader()) if height != lastBlockHeight { rms, ok := app.cms.(*rootmulti.Store) if ok { cInfo, err := rms.GetCommitInfo(height) if cInfo != nil && err == nil { - ctx = ctx.WithHeaderInfo(coreheader.Info{Time: cInfo.Timestamp}) + ctx = ctx.WithHeaderInfo(coreheader.Info{Height: height, Time: cInfo.Timestamp}) } } } diff --git a/simapp/app.go b/simapp/app.go index a37ccf732404..510af074c4aa 100644 --- a/simapp/app.go +++ b/simapp/app.go @@ -332,7 +332,7 @@ func NewSimApp( app.PoolKeeper = poolkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[pooltypes.StoreKey]), logger), app.AuthKeeper, app.BankKeeper, app.StakingKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) - app.DistrKeeper = distrkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[distrtypes.StoreKey]), app.AuthKeeper, app.BankKeeper, app.StakingKeeper, app.PoolKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + app.DistrKeeper = distrkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[distrtypes.StoreKey]), logger), app.AuthKeeper, app.BankKeeper, app.StakingKeeper, app.PoolKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String()) app.SlashingKeeper = slashingkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[slashingtypes.StoreKey]), logger), appCodec, legacyAmino, app.StakingKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(), diff --git a/tests/integration/distribution/keeper/msg_server_test.go b/tests/integration/distribution/keeper/msg_server_test.go index ac6197269770..4c4ee67abc76 100644 --- a/tests/integration/distribution/keeper/msg_server_test.go +++ b/tests/integration/distribution/keeper/msg_server_test.go @@ -110,7 +110,7 @@ func initFixture(t *testing.T) *fixture { poolKeeper := poolkeeper.NewKeeper(cdc, runtime.NewEnvironment(runtime.NewKVStoreService(keys[pooltypes.StoreKey]), log.NewNopLogger()), accountKeeper, bankKeeper, stakingKeeper, authority.String()) distrKeeper := distrkeeper.NewKeeper( - cdc, runtime.NewKVStoreService(keys[distrtypes.StoreKey]), accountKeeper, bankKeeper, stakingKeeper, poolKeeper, distrtypes.ModuleName, authority.String(), + cdc, runtime.NewEnvironment(runtime.NewKVStoreService(keys[distrtypes.StoreKey]), logger), accountKeeper, bankKeeper, stakingKeeper, poolKeeper, distrtypes.ModuleName, authority.String(), ) authModule := auth.NewAppModule(cdc, accountKeeper, authsims.RandomGenesisAccounts) diff --git a/testutil/sims/app_helpers.go b/testutil/sims/app_helpers.go index ffac149f4c4c..c97b70c0a0b0 100644 --- a/testutil/sims/app_helpers.go +++ b/testutil/sims/app_helpers.go @@ -11,19 +11,18 @@ import ( cmttypes "github.com/cometbft/cometbft/types" dbm "github.com/cosmos/cosmos-db" + coreheader "cosmossdk.io/core/header" "cosmossdk.io/depinject" sdkmath "cosmossdk.io/math" authtypes "cosmossdk.io/x/auth/types" banktypes "cosmossdk.io/x/bank/types" stakingtypes "cosmossdk.io/x/staking/types" - coreheader "cosmossdk.io/core/header" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" - "github.com/cosmos/cosmos-sdk/runtime" servertypes "github.com/cosmos/cosmos-sdk/server/types" "github.com/cosmos/cosmos-sdk/testutil/mock" @@ -124,7 +123,7 @@ func NextBlock(app *runtime.App, ctx sdk.Context, jumpTime time.Duration) (sdk.C header := ctx.BlockHeader() header.Time = newBlockTime - header.Height = header.Height + 1 + header.Height++ newCtx := app.BaseApp.NewUncachedContext(false, header).WithHeaderInfo(coreheader.Info{ Height: header.Height, diff --git a/x/distribution/CHANGELOG.md b/x/distribution/CHANGELOG.md index 7bf4484c429c..f1c3f4c59689 100644 --- a/x/distribution/CHANGELOG.md +++ b/x/distribution/CHANGELOG.md @@ -31,6 +31,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### API Breaking Changes +* [#19445](https://github.com/cosmos/cosmos-sdk/pull/19445) `appmodule.Environment` is received on the Keeper to get access to different application services * [#17115](https://github.com/cosmos/cosmos-sdk/pull/17115) Use collections for `PreviousProposer` and `ValidatorSlashEvents`: * remove from `Keeper`: `GetPreviousProposerConsAddr`, `SetPreviousProposerConsAddr`, `GetValidatorHistoricalReferenceCount`, `GetValidatorSlashEvent`, `SetValidatorSlashEvent`. * [#16483](https://github.com/cosmos/cosmos-sdk/pull/16483) use collections for `DelegatorStartingInfo` state management: diff --git a/x/distribution/depinject.go b/x/distribution/depinject.go index 78b0fea3a2e4..09303459a44a 100644 --- a/x/distribution/depinject.go +++ b/x/distribution/depinject.go @@ -3,7 +3,6 @@ package distribution import ( modulev1 "cosmossdk.io/api/cosmos/distribution/module/v1" "cosmossdk.io/core/appmodule" - "cosmossdk.io/core/store" "cosmossdk.io/depinject" "cosmossdk.io/depinject/appconfig" authtypes "cosmossdk.io/x/auth/types" @@ -28,9 +27,9 @@ func init() { type ModuleInputs struct { depinject.In - Config *modulev1.Module - StoreService store.KVStoreService - Cdc codec.Codec + Config *modulev1.Module + Environment appmodule.Environment + Cdc codec.Codec AccountKeeper types.AccountKeeper BankKeeper types.BankKeeper @@ -60,7 +59,7 @@ func ProvideModule(in ModuleInputs) ModuleOutputs { k := keeper.NewKeeper( in.Cdc, - in.StoreService, + in.Environment, in.AccountKeeper, in.BankKeeper, in.StakingKeeper, diff --git a/x/distribution/keeper/abci.go b/x/distribution/keeper/abci.go index d4db46c60977..544b62e1e69e 100644 --- a/x/distribution/keeper/abci.go +++ b/x/distribution/keeper/abci.go @@ -11,6 +11,7 @@ import ( // BeginBlocker sets the proposer for determining distribution during endblock // and distribute rewards for the previous block. +// TODO: use context.Context after including the comet service func (k Keeper) BeginBlocker(ctx sdk.Context) error { defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker) diff --git a/x/distribution/keeper/allocation.go b/x/distribution/keeper/allocation.go index 0e6f80ff1025..667a05c58377 100644 --- a/x/distribution/keeper/allocation.go +++ b/x/distribution/keeper/allocation.go @@ -6,6 +6,7 @@ import ( "cosmossdk.io/collections" "cosmossdk.io/core/comet" + "cosmossdk.io/core/event" "cosmossdk.io/math" "cosmossdk.io/x/distribution/types" @@ -103,14 +104,13 @@ func (k Keeper) AllocateTokensToValidator(ctx context.Context, val sdk.Validator } // update current commission - sdkCtx := sdk.UnwrapSDKContext(ctx) - sdkCtx.EventManager().EmitEvent( - sdk.NewEvent( - types.EventTypeCommission, - sdk.NewAttribute(sdk.AttributeKeyAmount, commission.String()), - sdk.NewAttribute(types.AttributeKeyValidator, val.GetOperator()), - ), - ) + if err = k.environment.EventService.EventManager(ctx).EmitKV( + types.EventTypeCommission, + event.NewAttribute(sdk.AttributeKeyAmount, commission.String()), + event.NewAttribute(types.AttributeKeyValidator, val.GetOperator()), + ); err != nil { + return err + } currentCommission, err := k.ValidatorsAccumulatedCommission.Get(ctx, valBz) if err != nil && !errors.Is(err, collections.ErrNotFound) { return err @@ -136,13 +136,13 @@ func (k Keeper) AllocateTokensToValidator(ctx context.Context, val sdk.Validator } // update outstanding rewards - sdkCtx.EventManager().EmitEvent( - sdk.NewEvent( - types.EventTypeRewards, - sdk.NewAttribute(sdk.AttributeKeyAmount, tokens.String()), - sdk.NewAttribute(types.AttributeKeyValidator, val.GetOperator()), - ), - ) + if err = k.environment.EventService.EventManager(ctx).EmitKV( + types.EventTypeRewards, + event.NewAttribute(sdk.AttributeKeyAmount, tokens.String()), + event.NewAttribute(types.AttributeKeyValidator, val.GetOperator()), + ); err != nil { + return err + } outstanding, err := k.ValidatorOutstandingRewards.Get(ctx, valBz) if err != nil && !errors.Is(err, collections.ErrNotFound) { diff --git a/x/distribution/keeper/allocation_test.go b/x/distribution/keeper/allocation_test.go index f067964415d9..fbc79d8f514a 100644 --- a/x/distribution/keeper/allocation_test.go +++ b/x/distribution/keeper/allocation_test.go @@ -10,6 +10,7 @@ import ( "cosmossdk.io/collections" "cosmossdk.io/core/comet" "cosmossdk.io/core/header" + "cosmossdk.io/log" "cosmossdk.io/math" storetypes "cosmossdk.io/store/types" authtypes "cosmossdk.io/x/auth/types" @@ -29,7 +30,6 @@ import ( func TestAllocateTokensToValidatorWithCommission(t *testing.T) { ctrl := gomock.NewController(t) key := storetypes.NewKVStoreKey(disttypes.StoreKey) - storeService := runtime.NewKVStoreService(key) testCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey("transient_test")) encCfg := moduletestutil.MakeTestEncodingConfig(distribution.AppModule{}) ctx := testCtx.Ctx.WithHeaderInfo(header.Info{Time: time.Now()}) @@ -39,6 +39,8 @@ func TestAllocateTokensToValidatorWithCommission(t *testing.T) { accountKeeper := distrtestutil.NewMockAccountKeeper(ctrl) poolKeeper := distrtestutil.NewMockPoolKeeper(ctrl) + env := runtime.NewEnvironment(runtime.NewKVStoreService(key), log.NewNopLogger()) + valCodec := address.NewBech32Codec("cosmosvaloper") accountKeeper.EXPECT().GetModuleAddress("distribution").Return(distrAcc.GetAddress()) @@ -46,7 +48,7 @@ func TestAllocateTokensToValidatorWithCommission(t *testing.T) { distrKeeper := keeper.NewKeeper( encCfg.Codec, - storeService, + env, accountKeeper, bankKeeper, stakingKeeper, @@ -88,7 +90,6 @@ func TestAllocateTokensToValidatorWithCommission(t *testing.T) { func TestAllocateTokensToManyValidators(t *testing.T) { ctrl := gomock.NewController(t) key := storetypes.NewKVStoreKey(disttypes.StoreKey) - storeService := runtime.NewKVStoreService(key) testCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey("transient_test")) encCfg := moduletestutil.MakeTestEncodingConfig(distribution.AppModule{}) ctx := testCtx.Ctx.WithHeaderInfo(header.Info{Time: time.Now()}) @@ -103,9 +104,11 @@ func TestAllocateTokensToManyValidators(t *testing.T) { accountKeeper.EXPECT().GetModuleAccount(gomock.Any(), "fee_collector").Return(feeCollectorAcc) stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec("cosmosvaloper")).AnyTimes() + env := runtime.NewEnvironment(runtime.NewKVStoreService(key), log.NewNopLogger()) + distrKeeper := keeper.NewKeeper( encCfg.Codec, - storeService, + env, accountKeeper, bankKeeper, stakingKeeper, @@ -219,7 +222,6 @@ func TestAllocateTokensToManyValidators(t *testing.T) { func TestAllocateTokensTruncation(t *testing.T) { ctrl := gomock.NewController(t) key := storetypes.NewKVStoreKey(disttypes.StoreKey) - storeService := runtime.NewKVStoreService(key) testCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey("transient_test")) encCfg := moduletestutil.MakeTestEncodingConfig(distribution.AppModule{}) ctx := testCtx.Ctx.WithHeaderInfo(header.Info{Time: time.Now()}) @@ -234,9 +236,11 @@ func TestAllocateTokensTruncation(t *testing.T) { accountKeeper.EXPECT().GetModuleAccount(gomock.Any(), "fee_collector").Return(feeCollectorAcc) stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec("cosmosvaloper")).AnyTimes() + env := runtime.NewEnvironment(runtime.NewKVStoreService(key), log.NewNopLogger()) + distrKeeper := keeper.NewKeeper( encCfg.Codec, - storeService, + env, accountKeeper, bankKeeper, stakingKeeper, diff --git a/x/distribution/keeper/delegation.go b/x/distribution/keeper/delegation.go index 36482b407b68..50c4e6e8799f 100644 --- a/x/distribution/keeper/delegation.go +++ b/x/distribution/keeper/delegation.go @@ -6,6 +6,7 @@ import ( "fmt" "cosmossdk.io/collections" + "cosmossdk.io/core/event" "cosmossdk.io/math" "cosmossdk.io/x/distribution/types" @@ -41,8 +42,8 @@ func (k Keeper) initializeDelegation(ctx context.Context, val sdk.ValAddress, de // we don't store directly, so multiply delegation shares * (tokens per share) // note: necessary to truncate so we don't allow withdrawing more rewards than owed stake := validator.TokensFromSharesTruncated(delegation.GetShares()) - sdkCtx := sdk.UnwrapSDKContext(ctx) - return k.DelegatorStartingInfo.Set(ctx, collections.Join(val, del), types.NewDelegatorStartingInfo(previousPeriod, stake, uint64(sdkCtx.BlockHeight()))) + headerinfo := k.environment.HeaderService.GetHeaderInfo(ctx) + return k.DelegatorStartingInfo.Set(ctx, collections.Join(val, del), types.NewDelegatorStartingInfo(previousPeriod, stake, uint64(headerinfo.Height))) } // calculate the rewards accrued by a delegation between two periods @@ -103,9 +104,8 @@ func (k Keeper) CalculateDelegationRewards(ctx context.Context, val sdk.Validato return sdk.DecCoins{}, err } - sdkCtx := sdk.UnwrapSDKContext(ctx) - if startingInfo.Height == uint64(sdkCtx.BlockHeight()) { - // started this height, no rewards yet + headerinfo := k.environment.HeaderService.GetHeaderInfo(ctx) + if startingInfo.Height == uint64(headerinfo.Height) { // started this height, no rewards yet return sdk.DecCoins{}, nil } @@ -122,7 +122,7 @@ func (k Keeper) CalculateDelegationRewards(ctx context.Context, val sdk.Validato startingHeight := startingInfo.Height // Slashes this block happened after reward allocation, but we have to account // for them for the stake sanity check below. - endingHeight := uint64(sdkCtx.BlockHeight()) + endingHeight := uint64(headerinfo.Height) var iterErr error if endingHeight > startingHeight { err = k.IterateValidatorSlashEventsBetween(ctx, valAddr, startingHeight, endingHeight, @@ -313,15 +313,15 @@ func (k Keeper) withdrawDelegationRewards(ctx context.Context, val sdk.Validator finalRewards = sdk.Coins{sdk.NewCoin(baseDenom, math.ZeroInt())} } - sdkCtx := sdk.UnwrapSDKContext(ctx) - sdkCtx.EventManager().EmitEvent( - sdk.NewEvent( - types.EventTypeWithdrawRewards, - sdk.NewAttribute(sdk.AttributeKeyAmount, finalRewards.String()), - sdk.NewAttribute(types.AttributeKeyValidator, val.GetOperator()), - sdk.NewAttribute(types.AttributeKeyDelegator, del.GetDelegatorAddr()), - ), + err = k.environment.EventService.EventManager(ctx).EmitKV( + types.EventTypeWithdrawRewards, + event.NewAttribute(sdk.AttributeKeyAmount, finalRewards.String()), + event.NewAttribute(types.AttributeKeyValidator, val.GetOperator()), + event.NewAttribute(types.AttributeKeyDelegator, del.GetDelegatorAddr()), ) + if err != nil { + return nil, err + } return finalRewards, nil } diff --git a/x/distribution/keeper/delegation_test.go b/x/distribution/keeper/delegation_test.go index 140249e62741..09970ed39a55 100644 --- a/x/distribution/keeper/delegation_test.go +++ b/x/distribution/keeper/delegation_test.go @@ -8,6 +8,7 @@ import ( "cosmossdk.io/collections" "cosmossdk.io/core/header" + "cosmossdk.io/log" "cosmossdk.io/math" storetypes "cosmossdk.io/store/types" authtypes "cosmossdk.io/x/auth/types" @@ -27,7 +28,6 @@ import ( func TestCalculateRewardsBasic(t *testing.T) { ctrl := gomock.NewController(t) key := storetypes.NewKVStoreKey(disttypes.StoreKey) - storeService := runtime.NewKVStoreService(key) testCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey("transient_test")) encCfg := moduletestutil.MakeTestEncodingConfig(distribution.AppModule{}) ctx := testCtx.Ctx.WithHeaderInfo(header.Info{Height: 1}) @@ -41,9 +41,11 @@ func TestCalculateRewardsBasic(t *testing.T) { stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec(sdk.Bech32PrefixValAddr)).AnyTimes() accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec(sdk.Bech32MainPrefix)).AnyTimes() + env := runtime.NewEnvironment(runtime.NewKVStoreService(key), log.NewNopLogger()) + distrKeeper := keeper.NewKeeper( encCfg.Codec, - storeService, + env, accountKeeper, bankKeeper, stakingKeeper, @@ -72,7 +74,7 @@ func TestCalculateRewardsBasic(t *testing.T) { err = distrtestutil.CallCreateValidatorHooks(ctx, distrKeeper, addr, valAddr) require.NoError(t, err) - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 1}) // historical count should be 2 (once for validator init, once for delegation init) require.Equal(t, 2, getValHistoricalReferenceCount(distrKeeper, ctx)) @@ -129,7 +131,6 @@ func getValHistoricalReferenceCount(k keeper.Keeper, ctx sdk.Context) int { func TestCalculateRewardsAfterSlash(t *testing.T) { ctrl := gomock.NewController(t) key := storetypes.NewKVStoreKey(disttypes.StoreKey) - storeService := runtime.NewKVStoreService(key) testCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey("transient_test")) encCfg := moduletestutil.MakeTestEncodingConfig(distribution.AppModule{}) ctx := testCtx.Ctx.WithHeaderInfo(header.Info{Height: 1}) @@ -143,9 +144,11 @@ func TestCalculateRewardsAfterSlash(t *testing.T) { stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec(sdk.Bech32PrefixValAddr)).AnyTimes() accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec(sdk.Bech32MainPrefix)).AnyTimes() + env := runtime.NewEnvironment(runtime.NewKVStoreService(key), log.NewNopLogger()) + distrKeeper := keeper.NewKeeper( encCfg.Codec, - storeService, + env, accountKeeper, bankKeeper, stakingKeeper, @@ -178,7 +181,7 @@ func TestCalculateRewardsAfterSlash(t *testing.T) { require.NoError(t, err) // next block - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 1}) // end period endingPeriod, _ := distrKeeper.IncrementValidatorPeriod(ctx, val) @@ -191,7 +194,7 @@ func TestCalculateRewardsAfterSlash(t *testing.T) { require.True(t, rewards.IsZero()) // start out block height - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 3}) // slash the validator by 50% (simulated with manual calls; we assume the validator is bonded) slashedTokens := distrtestutil.SlashValidator( @@ -207,7 +210,7 @@ func TestCalculateRewardsAfterSlash(t *testing.T) { require.True(t, slashedTokens.IsPositive(), "expected positive slashed tokens, got: %s", slashedTokens) // increase block height - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 3}) // allocate some rewards initial := sdk.TokensFromConsensusPower(10, sdk.DefaultPowerReduction) @@ -234,7 +237,6 @@ func TestCalculateRewardsAfterSlash(t *testing.T) { func TestCalculateRewardsAfterManySlashes(t *testing.T) { ctrl := gomock.NewController(t) key := storetypes.NewKVStoreKey(disttypes.StoreKey) - storeService := runtime.NewKVStoreService(key) testCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey("transient_test")) encCfg := moduletestutil.MakeTestEncodingConfig(distribution.AppModule{}) ctx := testCtx.Ctx.WithHeaderInfo(header.Info{Height: 1}) @@ -248,9 +250,11 @@ func TestCalculateRewardsAfterManySlashes(t *testing.T) { stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec(sdk.Bech32PrefixValAddr)).AnyTimes() accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec(sdk.Bech32MainPrefix)).AnyTimes() + env := runtime.NewEnvironment(runtime.NewKVStoreService(key), log.NewNopLogger()) + distrKeeper := keeper.NewKeeper( encCfg.Codec, - storeService, + env, accountKeeper, bankKeeper, stakingKeeper, @@ -282,7 +286,7 @@ func TestCalculateRewardsAfterManySlashes(t *testing.T) { require.NoError(t, err) // next block - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 1}) // end period endingPeriod, _ := distrKeeper.IncrementValidatorPeriod(ctx, val) @@ -295,7 +299,7 @@ func TestCalculateRewardsAfterManySlashes(t *testing.T) { require.True(t, rewards.IsZero()) // start out block height - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 3}) // slash the validator by 50% (simulated with manual calls; we assume the validator is bonded) slashedTokens := distrtestutil.SlashValidator( @@ -314,7 +318,7 @@ func TestCalculateRewardsAfterManySlashes(t *testing.T) { stakingKeeper.EXPECT().Validator(gomock.Any(), valAddr).Return(val, nil).Times(1) // increase block height - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 3}) // allocate some rewards initial := sdk.TokensFromConsensusPower(10, sdk.DefaultPowerReduction) @@ -335,7 +339,7 @@ func TestCalculateRewardsAfterManySlashes(t *testing.T) { require.True(t, slashedTokens.IsPositive(), "expected positive slashed tokens, got: %s", slashedTokens) // increase block height - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 3}) // allocate some more rewards require.NoError(t, distrKeeper.AllocateTokensToValidator(ctx, val, tokens)) @@ -360,7 +364,6 @@ func TestCalculateRewardsAfterManySlashes(t *testing.T) { func TestCalculateRewardsMultiDelegator(t *testing.T) { ctrl := gomock.NewController(t) key := storetypes.NewKVStoreKey(disttypes.StoreKey) - storeService := runtime.NewKVStoreService(key) testCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey("transient_test")) encCfg := moduletestutil.MakeTestEncodingConfig(distribution.AppModule{}) ctx := testCtx.Ctx.WithHeaderInfo(header.Info{Height: 1}) @@ -374,9 +377,11 @@ func TestCalculateRewardsMultiDelegator(t *testing.T) { stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec(sdk.Bech32PrefixValAddr)).AnyTimes() accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec(sdk.Bech32MainPrefix)).AnyTimes() + env := runtime.NewEnvironment(runtime.NewKVStoreService(key), log.NewNopLogger()) + distrKeeper := keeper.NewKeeper( encCfg.Codec, - storeService, + env, accountKeeper, bankKeeper, stakingKeeper, @@ -408,7 +413,7 @@ func TestCalculateRewardsMultiDelegator(t *testing.T) { require.NoError(t, err) // next block - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 1}) // allocate some rewards initial := int64(20) @@ -428,7 +433,7 @@ func TestCalculateRewardsMultiDelegator(t *testing.T) { require.NoError(t, err) // next block - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 1}) // allocate some more rewards require.NoError(t, distrKeeper.AllocateTokensToValidator(ctx, val, tokens)) @@ -459,7 +464,6 @@ func TestCalculateRewardsMultiDelegator(t *testing.T) { func TestWithdrawDelegationRewardsBasic(t *testing.T) { ctrl := gomock.NewController(t) key := storetypes.NewKVStoreKey(disttypes.StoreKey) - storeService := runtime.NewKVStoreService(key) testCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey("transient_test")) encCfg := moduletestutil.MakeTestEncodingConfig(distribution.AppModule{}) ctx := testCtx.Ctx.WithHeaderInfo(header.Info{Height: 1}) @@ -473,9 +477,11 @@ func TestWithdrawDelegationRewardsBasic(t *testing.T) { stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec(sdk.Bech32PrefixValAddr)).AnyTimes() accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec(sdk.Bech32MainPrefix)).AnyTimes() + env := runtime.NewEnvironment(runtime.NewKVStoreService(key), log.NewNopLogger()) + distrKeeper := keeper.NewKeeper( encCfg.Codec, - storeService, + env, accountKeeper, bankKeeper, stakingKeeper, @@ -506,7 +512,7 @@ func TestWithdrawDelegationRewardsBasic(t *testing.T) { require.NoError(t, err) // next block - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 1}) // allocate some rewards initial := sdk.TokensFromConsensusPower(10, sdk.DefaultPowerReduction) @@ -536,7 +542,6 @@ func TestWithdrawDelegationRewardsBasic(t *testing.T) { func TestCalculateRewardsAfterManySlashesInSameBlock(t *testing.T) { ctrl := gomock.NewController(t) key := storetypes.NewKVStoreKey(disttypes.StoreKey) - storeService := runtime.NewKVStoreService(key) testCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey("transient_test")) encCfg := moduletestutil.MakeTestEncodingConfig(distribution.AppModule{}) ctx := testCtx.Ctx.WithHeaderInfo(header.Info{Height: 1}) @@ -550,9 +555,11 @@ func TestCalculateRewardsAfterManySlashesInSameBlock(t *testing.T) { stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec(sdk.Bech32PrefixValAddr)).AnyTimes() accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec(sdk.Bech32MainPrefix)).AnyTimes() + env := runtime.NewEnvironment(runtime.NewKVStoreService(key), log.NewNopLogger()) + distrKeeper := keeper.NewKeeper( encCfg.Codec, - storeService, + env, accountKeeper, bankKeeper, stakingKeeper, @@ -583,7 +590,7 @@ func TestCalculateRewardsAfterManySlashesInSameBlock(t *testing.T) { require.NoError(t, err) // next block - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 1}) // end period endingPeriod, _ := distrKeeper.IncrementValidatorPeriod(ctx, val) @@ -596,7 +603,7 @@ func TestCalculateRewardsAfterManySlashesInSameBlock(t *testing.T) { require.True(t, rewards.IsZero()) // start out block height - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 3}) // allocate some rewards initial := math.LegacyNewDecFromInt(sdk.TokensFromConsensusPower(10, sdk.DefaultPowerReduction)) @@ -630,7 +637,7 @@ func TestCalculateRewardsAfterManySlashesInSameBlock(t *testing.T) { ) // increase block height - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 3}) // allocate some more rewards require.NoError(t, distrKeeper.AllocateTokensToValidator(ctx, val, tokens)) @@ -654,7 +661,6 @@ func TestCalculateRewardsAfterManySlashesInSameBlock(t *testing.T) { func TestCalculateRewardsMultiDelegatorMultiSlash(t *testing.T) { ctrl := gomock.NewController(t) key := storetypes.NewKVStoreKey(disttypes.StoreKey) - storeService := runtime.NewKVStoreService(key) testCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey("transient_test")) encCfg := moduletestutil.MakeTestEncodingConfig(distribution.AppModule{}) ctx := testCtx.Ctx.WithHeaderInfo(header.Info{Height: 1}) @@ -668,9 +674,11 @@ func TestCalculateRewardsMultiDelegatorMultiSlash(t *testing.T) { stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec(sdk.Bech32PrefixValAddr)).AnyTimes() accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec(sdk.Bech32MainPrefix)).AnyTimes() + env := runtime.NewEnvironment(runtime.NewKVStoreService(key), log.NewNopLogger()) + distrKeeper := keeper.NewKeeper( encCfg.Codec, - storeService, + env, accountKeeper, bankKeeper, stakingKeeper, @@ -703,7 +711,7 @@ func TestCalculateRewardsMultiDelegatorMultiSlash(t *testing.T) { stakingKeeper.EXPECT().Validator(gomock.Any(), valAddr).Return(val, nil).Times(2) // next block - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 1}) // allocate some rewards initial := math.LegacyNewDecFromInt(sdk.TokensFromConsensusPower(30, sdk.DefaultPowerReduction)) @@ -711,7 +719,8 @@ func TestCalculateRewardsMultiDelegatorMultiSlash(t *testing.T) { require.NoError(t, distrKeeper.AllocateTokensToValidator(ctx, val, tokens)) // slash the validator - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 3}) + distrtestutil.SlashValidator( ctx, valConsAddr0, @@ -722,7 +731,7 @@ func TestCalculateRewardsMultiDelegatorMultiSlash(t *testing.T) { &distrKeeper, stakingKeeper, ) - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 3}) // update validator mock stakingKeeper.EXPECT().Validator(gomock.Any(), valAddr).Return(val, nil).Times(1) @@ -748,13 +757,14 @@ func TestCalculateRewardsMultiDelegatorMultiSlash(t *testing.T) { require.NoError(t, err) // next block - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 1}) // allocate some more rewards require.NoError(t, distrKeeper.AllocateTokensToValidator(ctx, val, tokens)) // slash the validator again - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 3}) + distrtestutil.SlashValidator( ctx, valConsAddr0, @@ -765,7 +775,7 @@ func TestCalculateRewardsMultiDelegatorMultiSlash(t *testing.T) { &distrKeeper, stakingKeeper, ) - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 3}) // end period endingPeriod, _ := distrKeeper.IncrementValidatorPeriod(ctx, val) @@ -793,7 +803,6 @@ func TestCalculateRewardsMultiDelegatorMultiSlash(t *testing.T) { func TestCalculateRewardsMultiDelegatorMultWithdraw(t *testing.T) { ctrl := gomock.NewController(t) key := storetypes.NewKVStoreKey(disttypes.StoreKey) - storeService := runtime.NewKVStoreService(key) testCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey("transient_test")) encCfg := moduletestutil.MakeTestEncodingConfig(distribution.AppModule{}) ctx := testCtx.Ctx.WithHeaderInfo(header.Info{Height: 1}) @@ -807,9 +816,11 @@ func TestCalculateRewardsMultiDelegatorMultWithdraw(t *testing.T) { stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec(sdk.Bech32PrefixValAddr)).AnyTimes() accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec(sdk.Bech32MainPrefix)).AnyTimes() + env := runtime.NewEnvironment(runtime.NewKVStoreService(key), log.NewNopLogger()) + distrKeeper := keeper.NewKeeper( encCfg.Codec, - storeService, + env, accountKeeper, bankKeeper, stakingKeeper, @@ -840,7 +851,7 @@ func TestCalculateRewardsMultiDelegatorMultWithdraw(t *testing.T) { stakingKeeper.EXPECT().Validator(gomock.Any(), valAddr).Return(val, nil).Times(2) // next block - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 1}) // allocate some rewards initial := int64(20) @@ -874,7 +885,7 @@ func TestCalculateRewardsMultiDelegatorMultWithdraw(t *testing.T) { require.Equal(t, 3, getValHistoricalReferenceCount(distrKeeper, ctx)) // next block - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 1}) // allocate some more rewards require.NoError(t, distrKeeper.AllocateTokensToValidator(ctx, val, tokens)) @@ -923,7 +934,7 @@ func TestCalculateRewardsMultiDelegatorMultWithdraw(t *testing.T) { require.True(t, valCommission.Commission.IsZero()) // next block - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 1}) // allocate some more rewards require.NoError(t, distrKeeper.AllocateTokensToValidator(ctx, val, tokens)) @@ -957,7 +968,7 @@ func TestCalculateRewardsMultiDelegatorMultWithdraw(t *testing.T) { require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDec(initial / 2)}}, valCommission.Commission) // next block - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 1}) // allocate some more rewards require.NoError(t, distrKeeper.AllocateTokensToValidator(ctx, val, tokens)) @@ -994,7 +1005,6 @@ func TestCalculateRewardsMultiDelegatorMultWithdraw(t *testing.T) { func Test100PercentCommissionReward(t *testing.T) { ctrl := gomock.NewController(t) key := storetypes.NewKVStoreKey(disttypes.StoreKey) - storeService := runtime.NewKVStoreService(key) testCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey("transient_test")) encCfg := moduletestutil.MakeTestEncodingConfig(distribution.AppModule{}) ctx := testCtx.Ctx.WithHeaderInfo(header.Info{Height: 1}) @@ -1009,9 +1019,11 @@ func Test100PercentCommissionReward(t *testing.T) { stakingKeeper.EXPECT().BondDenom(gomock.Any()).Return("stake", nil).AnyTimes() accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec(sdk.Bech32MainPrefix)).AnyTimes() + env := runtime.NewEnvironment(runtime.NewKVStoreService(key), log.NewNopLogger()) + distrKeeper := keeper.NewKeeper( encCfg.Codec, - storeService, + env, accountKeeper, bankKeeper, stakingKeeper, @@ -1042,7 +1054,7 @@ func Test100PercentCommissionReward(t *testing.T) { stakingKeeper.EXPECT().Validator(gomock.Any(), valAddr).Return(val, nil).Times(2) // next block - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 1}) // allocate some rewards initial := int64(20) @@ -1050,19 +1062,19 @@ func Test100PercentCommissionReward(t *testing.T) { require.NoError(t, distrKeeper.AllocateTokensToValidator(ctx, val, tokens)) // next block - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 1}) // allocate some rewards require.NoError(t, distrKeeper.AllocateTokensToValidator(ctx, val, tokens)) // next block - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 1}) // allocate some more rewards require.NoError(t, distrKeeper.AllocateTokensToValidator(ctx, val, tokens)) // next block - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 1}) // allocate some more rewards require.NoError(t, distrKeeper.AllocateTokensToValidator(ctx, val, tokens)) diff --git a/x/distribution/keeper/keeper.go b/x/distribution/keeper/keeper.go index 1b018349b8e9..fab55212f68b 100644 --- a/x/distribution/keeper/keeper.go +++ b/x/distribution/keeper/keeper.go @@ -8,7 +8,8 @@ import ( "cosmossdk.io/collections" collcodec "cosmossdk.io/collections/codec" - "cosmossdk.io/core/store" + "cosmossdk.io/core/appmodule" + "cosmossdk.io/core/event" errorsmod "cosmossdk.io/errors" "cosmossdk.io/log" "cosmossdk.io/x/distribution/types" @@ -20,7 +21,7 @@ import ( // Keeper of the distribution store type Keeper struct { - storeService store.KVStoreService + environment appmodule.Environment cdc codec.BinaryCodec authKeeper types.AccountKeeper bankKeeper types.BankKeeper @@ -57,7 +58,7 @@ type Keeper struct { // NewKeeper creates a new distribution Keeper instance func NewKeeper( - cdc codec.BinaryCodec, storeService store.KVStoreService, + cdc codec.BinaryCodec, env appmodule.Environment, ak types.AccountKeeper, bk types.BankKeeper, sk types.StakingKeeper, pk types.PoolKeeper, feeCollectorName, authority string, ) Keeper { @@ -66,9 +67,9 @@ func NewKeeper( panic(fmt.Sprintf("%s module account has not been set", types.ModuleName)) } - sb := collections.NewSchemaBuilder(storeService) + sb := collections.NewSchemaBuilder(env.KVStoreService) k := Keeper{ - storeService: storeService, + environment: env, cdc: cdc, authKeeper: ak, bankKeeper: bk, @@ -146,8 +147,7 @@ func (k Keeper) GetAuthority() string { // Logger returns a module-specific logger. func (k Keeper) Logger(ctx context.Context) log.Logger { - sdkCtx := sdk.UnwrapSDKContext(ctx) - return sdkCtx.Logger().With(log.ModuleKey, "x/"+types.ModuleName) + return k.environment.Logger.With(log.ModuleKey, "x/"+types.ModuleName) } // SetWithdrawAddr sets a new address that will receive the rewards upon withdrawal @@ -165,13 +165,12 @@ func (k Keeper) SetWithdrawAddr(ctx context.Context, delegatorAddr, withdrawAddr return types.ErrSetWithdrawAddrDisabled } - sdkCtx := sdk.UnwrapSDKContext(ctx) - sdkCtx.EventManager().EmitEvent( - sdk.NewEvent( - types.EventTypeSetWithdrawAddress, - sdk.NewAttribute(types.AttributeKeyWithdrawAddress, withdrawAddr.String()), - ), - ) + if err = k.environment.EventService.EventManager(ctx).EmitKV( + types.EventTypeSetWithdrawAddress, + event.NewAttribute(types.AttributeKeyWithdrawAddress, withdrawAddr.String()), + ); err != nil { + return err + } return k.DelegatorsWithdrawAddress.Set(ctx, delegatorAddr, withdrawAddr) } @@ -251,13 +250,13 @@ func (k Keeper) WithdrawValidatorCommission(ctx context.Context, valAddr sdk.Val } } - sdkCtx := sdk.UnwrapSDKContext(ctx) - sdkCtx.EventManager().EmitEvent( - sdk.NewEvent( - types.EventTypeWithdrawCommission, - sdk.NewAttribute(sdk.AttributeKeyAmount, commission.String()), - ), + err = k.environment.EventService.EventManager(ctx).EmitKV( + types.EventTypeWithdrawCommission, + event.NewAttribute(sdk.AttributeKeyAmount, commission.String()), ) + if err != nil { + return nil, err + } return commission, nil } diff --git a/x/distribution/keeper/keeper_test.go b/x/distribution/keeper/keeper_test.go index 65acdccab18e..0a1a64eb53e2 100644 --- a/x/distribution/keeper/keeper_test.go +++ b/x/distribution/keeper/keeper_test.go @@ -8,6 +8,7 @@ import ( "github.com/stretchr/testify/require" "cosmossdk.io/core/header" + "cosmossdk.io/log" "cosmossdk.io/math" storetypes "cosmossdk.io/store/types" authtypes "cosmossdk.io/x/auth/types" @@ -36,7 +37,6 @@ func initFixture(t *testing.T) (sdk.Context, []sdk.AccAddress, keeper.Keeper, de ctrl := gomock.NewController(t) key := storetypes.NewKVStoreKey(types.StoreKey) - storeService := runtime.NewKVStoreService(key) testCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey("transient_test")) encCfg := moduletestutil.MakeTestEncodingConfig(distribution.AppModule{}) ctx := testCtx.Ctx.WithHeaderInfo(header.Info{Time: time.Now()}) @@ -56,9 +56,11 @@ func initFixture(t *testing.T) (sdk.Context, []sdk.AccAddress, keeper.Keeper, de bankKeeper.EXPECT().BlockedAddr(withdrawAddr).Return(false).AnyTimes() bankKeeper.EXPECT().BlockedAddr(distrAcc.GetAddress()).Return(true).AnyTimes() + env := runtime.NewEnvironment(runtime.NewKVStoreService(key), log.NewNopLogger()) + distrKeeper := keeper.NewKeeper( encCfg.Codec, - storeService, + env, accountKeeper, bankKeeper, stakingKeeper, diff --git a/x/distribution/keeper/migrations.go b/x/distribution/keeper/migrations.go index 6d32eae61ebe..28b014c4ea7c 100644 --- a/x/distribution/keeper/migrations.go +++ b/x/distribution/keeper/migrations.go @@ -33,7 +33,7 @@ func (m Migrator) Migrate2to3(ctx context.Context) error { // Migrate3to4 migrates the x/distribution module state to use collections // Additionally it migrates distribution fee pool to use protocol pool module account func (m Migrator) Migrate3to4(ctx context.Context) error { - if err := v4.MigrateStore(ctx, m.keeper.storeService, m.keeper.cdc); err != nil { + if err := v4.MigrateStore(ctx, m.keeper.environment, m.keeper.cdc); err != nil { return err } diff --git a/x/distribution/keeper/validator.go b/x/distribution/keeper/validator.go index fe87cd34821f..fe39d44f4337 100644 --- a/x/distribution/keeper/validator.go +++ b/x/distribution/keeper/validator.go @@ -155,7 +155,7 @@ func (k Keeper) updateValidatorSlashFraction(ctx context.Context, valAddr sdk.Va panic(fmt.Sprintf("fraction must be >=0 and <=1, current fraction: %v", fraction)) } - sdkCtx := sdk.UnwrapSDKContext(ctx) + headerinfo := k.environment.HeaderService.GetHeaderInfo(ctx) val, err := k.stakingKeeper.Validator(ctx, valAddr) if err != nil { return err @@ -174,8 +174,7 @@ func (k Keeper) updateValidatorSlashFraction(ctx context.Context, valAddr sdk.Va } slashEvent := types.NewValidatorSlashEvent(newPeriod, fraction) - height := uint64(sdkCtx.BlockHeight()) - + height := uint64(headerinfo.Height) return k.ValidatorSlashEvents.Set( ctx, collections.Join3[sdk.ValAddress, uint64, uint64]( diff --git a/x/distribution/migrations/v4/migrate.go b/x/distribution/migrations/v4/migrate.go index b09902b0dd22..355bd854a65a 100644 --- a/x/distribution/migrations/v4/migrate.go +++ b/x/distribution/migrations/v4/migrate.go @@ -8,6 +8,7 @@ import ( "cosmossdk.io/collections" collcodec "cosmossdk.io/collections/codec" + "cosmossdk.io/core/appmodule" "cosmossdk.io/core/store" "github.com/cosmos/cosmos-sdk/codec" @@ -19,8 +20,8 @@ var ( NewProposerKey = collections.NewPrefix(1) ) -func MigrateStore(ctx context.Context, storeService store.KVStoreService, cdc codec.BinaryCodec) error { - store := storeService.OpenKVStore(ctx) +func MigrateStore(ctx context.Context, env appmodule.Environment, cdc codec.BinaryCodec) error { + store := env.KVStoreService.OpenKVStore(ctx) bz, err := store.Get(OldProposerKey) if err != nil { return err @@ -37,7 +38,7 @@ func MigrateStore(ctx context.Context, storeService store.KVStoreService, cdc co return err } - sb := collections.NewSchemaBuilder(storeService) + sb := collections.NewSchemaBuilder(env.KVStoreService) prevProposer := collections.NewItem(sb, NewProposerKey, "previous_proposer", collcodec.KeyToValueCodec(sdk.ConsAddressKey)) _, err = sb.Build() if err != nil { diff --git a/x/distribution/migrations/v4/migrate_funds_test.go b/x/distribution/migrations/v4/migrate_funds_test.go index 86c0262c1d5f..9ccf4f81ad4f 100644 --- a/x/distribution/migrations/v4/migrate_funds_test.go +++ b/x/distribution/migrations/v4/migrate_funds_test.go @@ -72,7 +72,7 @@ func TestFundsMigration(t *testing.T) { // create distribution keeper distrKeeper := keeper.NewKeeper( encCfg.Codec, - runtime.NewKVStoreService(keys[disttypes.StoreKey]), + runtime.NewEnvironment(runtime.NewKVStoreService(keys[disttypes.StoreKey]), log.NewNopLogger()), accountKeeper, bankKeeper, stakingKeeper, diff --git a/x/distribution/migrations/v4/migrate_test.go b/x/distribution/migrations/v4/migrate_test.go index 86001ccd12ac..ed4cc8f79868 100644 --- a/x/distribution/migrations/v4/migrate_test.go +++ b/x/distribution/migrations/v4/migrate_test.go @@ -7,6 +7,7 @@ import ( "cosmossdk.io/collections" collcodec "cosmossdk.io/collections/codec" + "cosmossdk.io/log" storetypes "cosmossdk.io/store/types" "cosmossdk.io/x/distribution" v4 "cosmossdk.io/x/distribution/migrations/v4" @@ -25,6 +26,8 @@ func TestMigration(t *testing.T) { tKey := storetypes.NewTransientStoreKey("transient_test") ctx := testutil.DefaultContext(storeKey, tKey) + env := runtime.NewEnvironment(storeService, log.NewNopLogger()) + addr1 := secp256k1.GenPrivKey().PubKey().Address() consAddr1 := sdk.ConsAddress(addr1) @@ -35,7 +38,7 @@ func TestMigration(t *testing.T) { require.NoError(t, err) require.Equal(t, consAddr1, gotAddr) - err = v4.MigrateStore(ctx, storeService, cdc) + err = v4.MigrateStore(ctx, env, cdc) require.NoError(t, err) sb := collections.NewSchemaBuilder(storeService) diff --git a/x/distribution/module.go b/x/distribution/module.go index 2caf7ab534ee..c9e351eb93e4 100644 --- a/x/distribution/module.go +++ b/x/distribution/module.go @@ -161,7 +161,7 @@ func (AppModule) ConsensusVersion() uint64 { return ConsensusVersion } // BeginBlock returns the begin blocker for the distribution module. func (am AppModule) BeginBlock(ctx context.Context) error { - c := sdk.UnwrapSDKContext(ctx) + c := sdk.UnwrapSDKContext(ctx) // TODO: remove and use context.Context after including the comet service return am.keeper.BeginBlocker(c) } From e4d97090d806469423086450ff09d4dbb1c9db76 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Wed, 28 Feb 2024 11:09:38 +0100 Subject: [PATCH 08/18] test: move slash redelegation test to integration (#19581) --- Makefile | 2 +- simapp/sim_test.go | 1 - .../keeper/slash_redelegation_test.go | 66 ++++++++++++------- x/distribution/keeper/genesis.go | 2 - x/distribution/keeper/grpc_query.go | 1 - x/distribution/keeper/invariants.go | 2 - x/group/simulation/operations.go | 2 - x/staking/keeper/delegation.go | 1 - x/staking/keeper/grpc_query.go | 1 - 9 files changed, 45 insertions(+), 33 deletions(-) rename {x => tests/integration}/slashing/keeper/slash_redelegation_test.go (81%) diff --git a/Makefile b/Makefile index bcc1db4fc80b..3c139f0daf3a 100644 --- a/Makefile +++ b/Makefile @@ -384,7 +384,7 @@ benchmark: ### Linting ### ############################################################################### -golangci_version=v1.55.0 +golangci_version=v1.56.2 #? setup-pre-commit: Set pre-commit git hook setup-pre-commit: diff --git a/simapp/sim_test.go b/simapp/sim_test.go index 1ea61de0235e..8001d48d0749 100644 --- a/simapp/sim_test.go +++ b/simapp/sim_test.go @@ -176,7 +176,6 @@ func TestAppImportExport(t *testing.T) { ctxA := app.NewContextLegacy(true, cmtproto.Header{Height: app.LastBlockHeight()}) ctxB := newApp.NewContextLegacy(true, cmtproto.Header{Height: app.LastBlockHeight()}) _, err = newApp.ModuleManager.InitGenesis(ctxB, app.AppCodec(), genesisState) - if err != nil { if strings.Contains(err.Error(), "validator set is empty after InitGenesis") { logger.Info("Skipping simulation as all validators have been unbonded") diff --git a/x/slashing/keeper/slash_redelegation_test.go b/tests/integration/slashing/keeper/slash_redelegation_test.go similarity index 81% rename from x/slashing/keeper/slash_redelegation_test.go rename to tests/integration/slashing/keeper/slash_redelegation_test.go index cc32f9ebdf2e..d50a012765e5 100644 --- a/x/slashing/keeper/slash_redelegation_test.go +++ b/tests/integration/slashing/keeper/slash_redelegation_test.go @@ -1,41 +1,52 @@ package keeper_test import ( + "context" "fmt" "testing" "time" + "github.com/stretchr/testify/require" + "cosmossdk.io/core/header" "cosmossdk.io/depinject" "cosmossdk.io/log" "cosmossdk.io/math" + authkeeper "cosmossdk.io/x/auth/keeper" bankkeeper "cosmossdk.io/x/bank/keeper" banktestutil "cosmossdk.io/x/bank/testutil" + distributionkeeper "cosmossdk.io/x/distribution/keeper" slashingkeeper "cosmossdk.io/x/slashing/keeper" - "cosmossdk.io/x/slashing/testutil" stakingkeeper "cosmossdk.io/x/staking/keeper" stakingtypes "cosmossdk.io/x/staking/types" - distributionkeeper "cosmossdk.io/x/distribution/keeper" - "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/stretchr/testify/require" - + "github.com/cosmos/cosmos-sdk/tests/integration/slashing" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" + sdk "github.com/cosmos/cosmos-sdk/types" ) func TestSlashRedelegation(t *testing.T) { // setting up - var stakingKeeper *stakingkeeper.Keeper - var bankKeeper bankkeeper.Keeper - var slashKeeper slashingkeeper.Keeper - var distrKeeper distributionkeeper.Keeper - - app, err := simtestutil.Setup(depinject.Configs( - depinject.Supply(log.NewNopLogger()), - testutil.AppConfig, - ), &stakingKeeper, &bankKeeper, &slashKeeper, &distrKeeper) + var ( + authKeeper authkeeper.AccountKeeper + stakingKeeper *stakingkeeper.Keeper + bankKeeper bankkeeper.Keeper + slashKeeper slashingkeeper.Keeper + distrKeeper distributionkeeper.Keeper + ) + + app, err := simtestutil.Setup( + depinject.Configs( + depinject.Supply(log.NewNopLogger()), + slashing.AppConfig, + ), + &stakingKeeper, + &bankKeeper, + &slashKeeper, + &distrKeeper, + &authKeeper, + ) require.NoError(t, err) // get sdk context, staking msg server and bond denom @@ -56,8 +67,8 @@ func TestSlashRedelegation(t *testing.T) { // fund acc 1 and acc 2 testCoins := sdk.NewCoins(sdk.NewCoin(bondDenom, stakingKeeper.TokensFromConsensusPower(ctx, 10))) - banktestutil.FundAccount(ctx, bankKeeper, testAcc1, testCoins) - banktestutil.FundAccount(ctx, bankKeeper, testAcc2, testCoins) + fundAccount(t, ctx, bankKeeper, authKeeper, testAcc1, testCoins) + fundAccount(t, ctx, bankKeeper, authKeeper, testAcc2, testCoins) balance1Before := bankKeeper.GetBalance(ctx, testAcc1, bondDenom) balance2Before := bankKeeper.GetBalance(ctx, testAcc2, bondDenom) @@ -68,7 +79,7 @@ func TestSlashRedelegation(t *testing.T) { // creating evil val evilValAddr := sdk.ValAddress(evilValPubKey.Address()) - banktestutil.FundAccount(ctx, bankKeeper, sdk.AccAddress(evilValAddr), testCoins) + fundAccount(t, ctx, bankKeeper, authKeeper, sdk.AccAddress(evilValAddr), testCoins) createValMsg1, _ := stakingtypes.NewMsgCreateValidator( evilValAddr.String(), evilValPubKey, testCoins[0], stakingtypes.Description{Details: "test"}, stakingtypes.NewCommissionRates(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0)), math.OneInt()) _, err = stakingMsgServer.CreateValidator(ctx, createValMsg1) @@ -76,7 +87,7 @@ func TestSlashRedelegation(t *testing.T) { // creating good val goodValAddr := sdk.ValAddress(goodValPubKey.Address()) - banktestutil.FundAccount(ctx, bankKeeper, sdk.AccAddress(goodValAddr), testCoins) + fundAccount(t, ctx, bankKeeper, authKeeper, sdk.AccAddress(goodValAddr), testCoins) createValMsg2, _ := stakingtypes.NewMsgCreateValidator( goodValAddr.String(), goodValPubKey, testCoins[0], stakingtypes.Description{Details: "test"}, stakingtypes.NewCommissionRates(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0)), math.OneInt()) _, err = stakingMsgServer.CreateValidator(ctx, createValMsg2) @@ -99,7 +110,7 @@ func TestSlashRedelegation(t *testing.T) { require.NoError(t, err) // next block, commit height 2, move to height 3 - // with the new delegations, evil val increases in voting power and commit byzantine behaviour at height 3 consensus + // with the new delegations, evil val increases in voting power and commit byzantine behavior at height 3 consensus // at the same time, acc 1 and acc 2 withdraw delegation from evil val ctx, err = simtestutil.NextBlock(app, ctx, time.Duration(1)) require.NoError(t, err) @@ -126,9 +137,9 @@ func TestSlashRedelegation(t *testing.T) { require.NoError(t, err) // next block, commit height 3, move to height 4 - // Slash evil val for byzantine behaviour at height 3 consensus, + // Slash evil val for byzantine behavior at height 3 consensus, // at which acc 1 and acc 2 still contributed to evil val voting power - // even tho they undelegate at block 3, the valset update is applied after commited block 3 when height 3 consensus already passes + // even tho they undelegate at block 3, the valset update is applied after committed block 3 when height 3 consensus already passes ctx, err = simtestutil.NextBlock(app, ctx, time.Duration(1)) require.NoError(t, err) @@ -163,3 +174,14 @@ func TestSlashRedelegation(t *testing.T) { require.Equal(t, balance1AfterSlashing.Amount.Mul(math.NewIntFromUint64(10)).String(), balance1Before.Amount.String()) require.Equal(t, balance2AfterSlashing.Amount.Mul(math.NewIntFromUint64(10)).String(), balance2Before.Amount.String()) } + +func fundAccount(t *testing.T, ctx context.Context, bankKeeper bankkeeper.Keeper, authKeeper authkeeper.AccountKeeper, addr sdk.AccAddress, amount sdk.Coins) { + t.Helper() + + if authKeeper.GetAccount(ctx, addr) == nil { + addrAcc := authKeeper.NewAccountWithAddress(ctx, addr) + authKeeper.SetAccount(ctx, addrAcc) + } + + require.NoError(t, banktestutil.FundAccount(ctx, bankKeeper, addr, amount)) +} diff --git a/x/distribution/keeper/genesis.go b/x/distribution/keeper/genesis.go index 2abc1645615c..ce4a178401e4 100644 --- a/x/distribution/keeper/genesis.go +++ b/x/distribution/keeper/genesis.go @@ -121,7 +121,6 @@ func (k Keeper) InitGenesis(ctx context.Context, data types.GenesisState) { ), evt.ValidatorSlashEvent, ) - if err != nil { panic(err) } @@ -256,7 +255,6 @@ func (k Keeper) ExportGenesis(ctx context.Context) *types.GenesisState { return false, nil }, ) - if err != nil { panic(err) } diff --git a/x/distribution/keeper/grpc_query.go b/x/distribution/keeper/grpc_query.go index 16039f340f0f..38889665a0e4 100644 --- a/x/distribution/keeper/grpc_query.go +++ b/x/distribution/keeper/grpc_query.go @@ -330,7 +330,6 @@ func (k Querier) DelegatorValidators(ctx context.Context, req *types.QueryDelega return false }, ) - if err != nil { return nil, err } diff --git a/x/distribution/keeper/invariants.go b/x/distribution/keeper/invariants.go index 1bc6e23e4e58..04f3294320a0 100644 --- a/x/distribution/keeper/invariants.go +++ b/x/distribution/keeper/invariants.go @@ -153,7 +153,6 @@ func ReferenceCountInvariant(k Keeper) sdk.Invariant { return false, nil }, ) - if err != nil { panic(err) } @@ -168,7 +167,6 @@ func ReferenceCountInvariant(k Keeper) sdk.Invariant { return false, nil }, ) - if err != nil { panic(err) } diff --git a/x/group/simulation/operations.go b/x/group/simulation/operations.go index ec84ccb60237..392ac9c27539 100644 --- a/x/group/simulation/operations.go +++ b/x/group/simulation/operations.go @@ -959,7 +959,6 @@ func SimulateMsgWithdrawProposal( } _, _, err = app.SimDeliver(txGen.TxEncoder(), tx) - if err != nil { if strings.Contains(err.Error(), "group was modified") || strings.Contains(err.Error(), "group policy was modified") { return simtypes.NoOpMsg(group.ModuleName, sdk.MsgTypeURL(msg), "no-op:group/group-policy was modified"), nil, nil @@ -1067,7 +1066,6 @@ func SimulateMsgVote( } _, _, err = app.SimDeliver(txGen.TxEncoder(), tx) - if err != nil { if strings.Contains(err.Error(), "group was modified") || strings.Contains(err.Error(), "group policy was modified") { return simtypes.NoOpMsg(group.ModuleName, sdk.MsgTypeURL(msg), "no-op:group/group-policy was modified"), nil, nil diff --git a/x/staking/keeper/delegation.go b/x/staking/keeper/delegation.go index 6b70d5121a78..c5dea74ea009 100644 --- a/x/staking/keeper/delegation.go +++ b/x/staking/keeper/delegation.go @@ -431,7 +431,6 @@ func (k Keeper) GetRedelegations(ctx context.Context, delegator sdk.AccAddress, i++ return false, nil }) - if err != nil { return nil, err } diff --git a/x/staking/keeper/grpc_query.go b/x/staking/keeper/grpc_query.go index 942d29997358..5dd6f46d6932 100644 --- a/x/staking/keeper/grpc_query.go +++ b/x/staking/keeper/grpc_query.go @@ -118,7 +118,6 @@ func (k Querier) ValidatorDelegations(ctx context.Context, req *types.QueryValid return delegation, nil }, query.WithCollectionPaginationPairPrefix[sdk.ValAddress, sdk.AccAddress](valAddr), ) - if err != nil { delegations, pageResponse, err := k.getValidatorDelegationsLegacy(ctx, req) if err != nil { From 35c4243da9c8c285a4b65117238dec9b9f7921c8 Mon Sep 17 00:00:00 2001 From: Qt Date: Wed, 28 Feb 2024 23:48:57 +0800 Subject: [PATCH 09/18] docs(math): update math docs (#19590) --- math/dec.go | 80 ++++++++++++++++++++++++++--------------------------- math/int.go | 6 ++-- 2 files changed, 43 insertions(+), 43 deletions(-) diff --git a/math/dec.go b/math/dec.go index 30d5ef464ff1..0ca1cfcb8c22 100644 --- a/math/dec.go +++ b/math/dec.go @@ -10,17 +10,17 @@ import ( "testing" ) -// NOTE: never use new(Dec) or else we will panic unmarshalling into the +// LegacyDec NOTE: never use new(Dec) or else we will panic unmarshalling into the // nil embedded big.Int type LegacyDec struct { i *big.Int } const ( - // number of decimal places + // LegacyPrecision number of decimal places LegacyPrecision = 18 - // bits required to represent the above precision + // LegacyDecimalPrecisionBits bits required to represent the above precision // Ceiling[Log2[10^Precision - 1]] LegacyDecimalPrecisionBits = 60 @@ -31,7 +31,7 @@ const ( maxDecBitLen = MaxBitLen + decimalTruncateBits - // max number of iterations in ApproxRoot function + // maxApproxRootIterations max number of iterations in ApproxRoot function maxApproxRootIterations = 300 ) @@ -94,12 +94,12 @@ func precisionMultiplier(prec int64) *big.Int { return precisionMultipliers[prec] } -// create a new Dec from integer assuming whole number +// LegacyNewDec create a new Dec from integer assuming whole number func LegacyNewDec(i int64) LegacyDec { return LegacyNewDecWithPrec(i, 0) } -// create a new Dec from integer with decimal place at prec +// LegacyNewDecWithPrec create a new Dec from integer with decimal place at prec // CONTRACT: prec <= Precision func LegacyNewDecWithPrec(i, prec int64) LegacyDec { bi := big.NewInt(i) @@ -108,13 +108,13 @@ func LegacyNewDecWithPrec(i, prec int64) LegacyDec { } } -// create a new Dec from big integer assuming whole numbers +// LegacyNewDecFromBigInt create a new Dec from big integer assuming whole numbers // CONTRACT: prec <= Precision func LegacyNewDecFromBigInt(i *big.Int) LegacyDec { return LegacyNewDecFromBigIntWithPrec(i, 0) } -// create a new Dec from big integer assuming whole numbers +// LegacyNewDecFromBigIntWithPrec create a new Dec from big integer assuming whole numbers // CONTRACT: prec <= Precision func LegacyNewDecFromBigIntWithPrec(i *big.Int, prec int64) LegacyDec { return LegacyDec{ @@ -122,13 +122,13 @@ func LegacyNewDecFromBigIntWithPrec(i *big.Int, prec int64) LegacyDec { } } -// create a new Dec from big integer assuming whole numbers +// LegacyNewDecFromInt create a new Dec from big integer assuming whole numbers // CONTRACT: prec <= Precision func LegacyNewDecFromInt(i Int) LegacyDec { return LegacyNewDecFromIntWithPrec(i, 0) } -// create a new Dec from big integer with decimal place at prec +// LegacyNewDecFromIntWithPrec create a new Dec from big integer with decimal place at prec // CONTRACT: prec <= Precision func LegacyNewDecFromIntWithPrec(i Int, prec int64) LegacyDec { return LegacyDec{ @@ -136,7 +136,7 @@ func LegacyNewDecFromIntWithPrec(i Int, prec int64) LegacyDec { } } -// create a decimal from an input decimal string. +// LegacyNewDecFromStr create a decimal from an input decimal string. // valid must come in the form: // // (-) whole integers (.) decimal integers @@ -201,7 +201,7 @@ func LegacyNewDecFromStr(str string) (LegacyDec, error) { return LegacyDec{combined}, nil } -// Decimal from string, panic on error +// LegacyMustNewDecFromStr Decimal from string, panic on error func LegacyMustNewDecFromStr(s string) LegacyDec { dec, err := LegacyNewDecFromStr(s) if err != nil { @@ -266,12 +266,12 @@ func (d LegacyDec) SetInt64(i int64) LegacyDec { return d } -// addition +// Add addition func (d LegacyDec) Add(d2 LegacyDec) LegacyDec { return d.ImmutOp(LegacyDec.AddMut, d2) } -// mutable addition +// AddMut mutable addition func (d LegacyDec) AddMut(d2 LegacyDec) LegacyDec { d.i.Add(d.i, d2.i) @@ -281,12 +281,12 @@ func (d LegacyDec) AddMut(d2 LegacyDec) LegacyDec { return d } -// subtraction +// Sub subtraction func (d LegacyDec) Sub(d2 LegacyDec) LegacyDec { return d.ImmutOp(LegacyDec.SubMut, d2) } -// mutable subtraction +// SubMut mutable subtraction func (d LegacyDec) SubMut(d2 LegacyDec) LegacyDec { d.i.Sub(d.i, d2.i) @@ -296,12 +296,12 @@ func (d LegacyDec) SubMut(d2 LegacyDec) LegacyDec { return d } -// multiplication +// Mul multiplication func (d LegacyDec) Mul(d2 LegacyDec) LegacyDec { return d.ImmutOp(LegacyDec.MulMut, d2) } -// mutable multiplication +// MulMut mutable multiplication func (d LegacyDec) MulMut(d2 LegacyDec) LegacyDec { d.i.Mul(d.i, d2.i) chopped := chopPrecisionAndRound(d.i) @@ -313,12 +313,12 @@ func (d LegacyDec) MulMut(d2 LegacyDec) LegacyDec { return d } -// multiplication truncate +// MulTruncate multiplication truncate func (d LegacyDec) MulTruncate(d2 LegacyDec) LegacyDec { return d.ImmutOp(LegacyDec.MulTruncateMut, d2) } -// mutable multiplication truncage +// MulTruncateMut mutable multiplication truncate func (d LegacyDec) MulTruncateMut(d2 LegacyDec) LegacyDec { d.i.Mul(d.i, d2.i) chopPrecisionAndTruncate(d.i) @@ -329,12 +329,12 @@ func (d LegacyDec) MulTruncateMut(d2 LegacyDec) LegacyDec { return d } -// multiplication round up at precision end. +// MulRoundUp multiplication round up at precision end. func (d LegacyDec) MulRoundUp(d2 LegacyDec) LegacyDec { return d.ImmutOp(LegacyDec.MulRoundUpMut, d2) } -// mutable multiplication with round up at precision end. +// MulRoundUpMut mutable multiplication with round up at precision end. func (d LegacyDec) MulRoundUpMut(d2 LegacyDec) LegacyDec { d.i.Mul(d.i, d2.i) chopPrecisionAndRoundUp(d.i) @@ -345,7 +345,7 @@ func (d LegacyDec) MulRoundUpMut(d2 LegacyDec) LegacyDec { return d } -// multiplication +// MulInt multiplication func (d LegacyDec) MulInt(i Int) LegacyDec { return d.ImmutOpInt(LegacyDec.MulIntMut, i) } @@ -358,7 +358,7 @@ func (d LegacyDec) MulIntMut(i Int) LegacyDec { return d } -// MulInt64 - multiplication with int64 +// MulInt64 multiplication with int64 func (d LegacyDec) MulInt64(i int64) LegacyDec { return d.ImmutOpInt64(LegacyDec.MulInt64Mut, i) } @@ -372,14 +372,14 @@ func (d LegacyDec) MulInt64Mut(i int64) LegacyDec { return d } -// quotient +// Quo quotient func (d LegacyDec) Quo(d2 LegacyDec) LegacyDec { return d.ImmutOp(LegacyDec.QuoMut, d2) } var squaredPrecisionReuse = new(big.Int).Mul(precisionReuse, precisionReuse) -// mutable quotient +// QuoMut mutable quotient func (d LegacyDec) QuoMut(d2 LegacyDec) LegacyDec { // multiply by precision twice d.i.Mul(d.i, squaredPrecisionReuse) @@ -392,12 +392,12 @@ func (d LegacyDec) QuoMut(d2 LegacyDec) LegacyDec { return d } -// quotient truncate +// QuoTruncate quotient truncate func (d LegacyDec) QuoTruncate(d2 LegacyDec) LegacyDec { return d.ImmutOp(LegacyDec.QuoTruncateMut, d2) } -// mutable quotient truncate +// QuoTruncateMut mutable quotient truncate func (d LegacyDec) QuoTruncateMut(d2 LegacyDec) LegacyDec { // multiply precision twice d.i.Mul(d.i, squaredPrecisionReuse) @@ -410,12 +410,12 @@ func (d LegacyDec) QuoTruncateMut(d2 LegacyDec) LegacyDec { return d } -// quotient, round up +// QuoRoundUp quotient, round up func (d LegacyDec) QuoRoundUp(d2 LegacyDec) LegacyDec { return d.ImmutOp(LegacyDec.QuoRoundupMut, d2) } -// mutable quotient, round up +// QuoRoundupMut mutable quotient, round up func (d LegacyDec) QuoRoundupMut(d2 LegacyDec) LegacyDec { // multiply precision twice d.i.Mul(d.i, squaredPrecisionReuse) @@ -428,7 +428,7 @@ func (d LegacyDec) QuoRoundupMut(d2 LegacyDec) LegacyDec { return d } -// quotient +// QuoInt quotient func (d LegacyDec) QuoInt(i Int) LegacyDec { return d.ImmutOpInt(LegacyDec.QuoIntMut, i) } @@ -438,7 +438,7 @@ func (d LegacyDec) QuoIntMut(i Int) LegacyDec { return d } -// QuoInt64 - quotient with int64 +// QuoInt64 quotient with int64 func (d LegacyDec) QuoInt64(i int64) LegacyDec { return d.ImmutOpInt64(LegacyDec.QuoInt64Mut, i) } @@ -528,12 +528,12 @@ func (d LegacyDec) ApproxSqrt() (LegacyDec, error) { return d.ApproxRoot(2) } -// is integer, e.g. decimals are zero +// IsInteger is integer, e.g. decimals are zero func (d LegacyDec) IsInteger() bool { return new(big.Int).Rem(d.i, precisionReuse).Sign() == 0 } -// format decimal state +// Format format decimal state func (d LegacyDec) Format(s fmt.State, verb rune) { _, err := s.Write([]byte(d.String())) if err != nil { @@ -756,14 +756,14 @@ func init() { LegacyMaxSortableDec = LegacyOneDec().Quo(LegacySmallestDec()) } -// ValidSortableDec ensures that a Dec is within the sortable bounds, +// LegacyValidSortableDec ensures that a Dec is within the sortable bounds, // a Dec can't have a precision of less than 10^-18. // Max sortable decimal was set to the reciprocal of SmallestDec. func LegacyValidSortableDec(dec LegacyDec) bool { return dec.Abs().LTE(LegacyMaxSortableDec) } -// SortableDecBytes returns a byte slice representation of a Dec that can be sorted. +// LegacySortableDecBytes returns a byte slice representation of a Dec that can be sorted. // Left and right pads with 0s so there are 18 digits to left and right of the decimal point. // For this reason, there is a maximum and minimum value for this, enforced by ValidSortableDec. func LegacySortableDecBytes(dec LegacyDec) []byte { @@ -888,7 +888,7 @@ func (d *LegacyDec) Size() int { return len(bz) } -// Override Amino binary serialization by proxying to protobuf. +// MarshalAmino Override Amino binary serialization by proxying to protobuf. func (d LegacyDec) MarshalAmino() ([]byte, error) { return d.Marshal() } func (d *LegacyDec) UnmarshalAmino(bz []byte) error { return d.Unmarshal(bz) } @@ -908,7 +908,7 @@ func LegacyDecsEqual(d1s, d2s []LegacyDec) bool { return true } -// minimum decimal between two +// LegacyMinDec minimum decimal between two func LegacyMinDec(d1, d2 LegacyDec) LegacyDec { if d1.LT(d2) { return d1 @@ -916,7 +916,7 @@ func LegacyMinDec(d1, d2 LegacyDec) LegacyDec { return d2 } -// maximum decimal between two +// LegacyMaxDec maximum decimal between two func LegacyMaxDec(d1, d2 LegacyDec) LegacyDec { if d1.LT(d2) { return d2 @@ -924,7 +924,7 @@ func LegacyMaxDec(d1, d2 LegacyDec) LegacyDec { return d1 } -// intended to be used with require/assert: require.True(DecEq(...)) +// LegacyDecEq intended to be used with require/assert: require.True(DecEq(...)) func LegacyDecEq(t *testing.T, exp, got LegacyDec) (*testing.T, bool, string, string, string) { t.Helper() return t, exp.Equal(got), "expected:\t%v\ngot:\t\t%v", exp.String(), got.String() diff --git a/math/int.go b/math/int.go index e08852fea8fd..5de32cbc3737 100644 --- a/math/int.go +++ b/math/int.go @@ -102,7 +102,7 @@ func (i Int) BigInt() *big.Int { return new(big.Int).Set(i.i) } -// BigInt converts Int to big.Int, mutative the input +// BigIntMut converts Int to big.Int, mutative the input func (i Int) BigIntMut() *big.Int { if i.IsNil() { return nil @@ -404,7 +404,7 @@ func (i Int) Abs() Int { return Int{abs(i.i)} } -// return the minimum of the ints +// MinInt return the minimum of the ints func MinInt(i1, i2 Int) Int { return Int{min(i1.BigInt(), i2.BigInt())} } @@ -517,7 +517,7 @@ func (i *Int) Size() int { return len(bz) } -// Override Amino binary serialization by proxying to protobuf. +// MarshalAmino Override Amino binary serialization by proxying to protobuf. func (i Int) MarshalAmino() ([]byte, error) { return i.Marshal() } func (i *Int) UnmarshalAmino(bz []byte) error { return i.Unmarshal(bz) } From 0a801e1c038148f17053792ee05f7fb987c0f83d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 28 Feb 2024 21:09:19 +0000 Subject: [PATCH 10/18] build(deps): Bump github.com/prometheus/common from 0.47.0 to 0.48.0 (#19533) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: marbar3778 Co-authored-by: Julien Robert --- client/v2/autocli/testdata/msg-output.golden | 2 +- client/v2/go.mod | 4 ++-- client/v2/go.sum | 8 ++++---- collections/go.mod | 2 +- collections/go.sum | 4 ++-- go.mod | 4 ++-- go.sum | 8 ++++---- orm/go.mod | 2 +- orm/go.sum | 4 ++-- simapp/go.mod | 6 +++--- simapp/go.sum | 8 ++++---- simapp/gomod2nix.toml | 8 ++++---- store/go.mod | 2 +- store/go.sum | 4 ++-- telemetry/metrics.go | 5 +++-- telemetry/metrics_test.go | 3 +-- tests/go.mod | 6 +++--- tests/go.sum | 8 ++++---- tests/starship/tests/go.mod | 6 +++--- tests/starship/tests/go.sum | 8 ++++---- x/accounts/go.mod | 4 ++-- x/accounts/go.sum | 8 ++++---- x/auth/go.mod | 4 ++-- x/auth/go.sum | 8 ++++---- x/authz/go.mod | 4 ++-- x/authz/go.sum | 8 ++++---- x/bank/go.mod | 4 ++-- x/bank/go.sum | 8 ++++---- x/circuit/go.mod | 4 ++-- x/circuit/go.sum | 8 ++++---- x/distribution/go.mod | 4 ++-- x/distribution/go.sum | 8 ++++---- x/evidence/go.mod | 4 ++-- x/evidence/go.sum | 8 ++++---- x/feegrant/go.mod | 4 ++-- x/feegrant/go.sum | 8 ++++---- x/gov/go.mod | 4 ++-- x/gov/go.sum | 8 ++++---- x/group/go.mod | 4 ++-- x/group/go.sum | 8 ++++---- x/mint/go.mod | 4 ++-- x/mint/go.sum | 8 ++++---- x/nft/go.mod | 4 ++-- x/nft/go.sum | 8 ++++---- x/params/go.mod | 4 ++-- x/params/go.sum | 8 ++++---- x/protocolpool/go.mod | 4 ++-- x/protocolpool/go.sum | 8 ++++---- x/slashing/go.mod | 7 ++++--- x/slashing/go.sum | 12 ++++++++---- x/staking/go.mod | 4 ++-- x/staking/go.sum | 8 ++++---- x/upgrade/go.mod | 4 ++-- x/upgrade/go.sum | 8 ++++---- 54 files changed, 159 insertions(+), 154 deletions(-) diff --git a/client/v2/autocli/testdata/msg-output.golden b/client/v2/autocli/testdata/msg-output.golden index 924f3eeee5d5..9d0cead403f9 100644 --- a/client/v2/autocli/testdata/msg-output.golden +++ b/client/v2/autocli/testdata/msg-output.golden @@ -1 +1 @@ -{"body":{"messages":[{"@type":"/cosmos.bank.v1beta1.MsgSend","from_address":"cosmos1y74p8wyy4enfhfn342njve6cjmj5c8dtl6emdk","to_address":"cosmos1y74p8wyy4enfhfn342njve6cjmj5c8dtl6emdk","amount":[{"denom":"foo","amount":"1"}]}]},"auth_info":{"fee":{"gas_limit":"200000"}}} +{"body":{"messages":[{"@type":"/cosmos.bank.v1beta1.MsgSend", "from_address":"cosmos1y74p8wyy4enfhfn342njve6cjmj5c8dtl6emdk", "to_address":"cosmos1y74p8wyy4enfhfn342njve6cjmj5c8dtl6emdk", "amount":[{"denom":"foo", "amount":"1"}]}]}, "auth_info":{"fee":{"gas_limit":"200000"}}} diff --git a/client/v2/go.mod b/client/v2/go.mod index 098366540535..495939c9734b 100644 --- a/client/v2/go.mod +++ b/client/v2/go.mod @@ -122,9 +122,9 @@ require ( github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/client/v2/go.sum b/client/v2/go.sum index e40c6900cbdc..b0e5e5ab87ef 100644 --- a/client/v2/go.sum +++ b/client/v2/go.sum @@ -585,8 +585,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -601,8 +601,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/collections/go.mod b/collections/go.mod index c9797e2cddb2..28a33c43712f 100644 --- a/collections/go.mod +++ b/collections/go.mod @@ -37,7 +37,7 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_golang v1.18.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/spf13/cast v1.6.0 // indirect diff --git a/collections/go.sum b/collections/go.sum index ef86ec23a917..f1039c2fa28b 100644 --- a/collections/go.sum +++ b/collections/go.sum @@ -107,8 +107,8 @@ github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+ github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= diff --git a/go.mod b/go.mod index 6f3c80b7b3f1..e88564d5dc96 100644 --- a/go.mod +++ b/go.mod @@ -44,8 +44,8 @@ require ( github.com/mattn/go-isatty v0.0.20 github.com/mdp/qrterminal/v3 v3.2.0 github.com/muesli/termenv v0.15.2 - github.com/prometheus/client_golang v1.18.0 - github.com/prometheus/common v0.47.0 + github.com/prometheus/client_golang v1.19.0 + github.com/prometheus/common v0.48.0 github.com/rs/zerolog v1.32.0 github.com/spf13/cast v1.6.0 github.com/spf13/cobra v1.8.0 diff --git a/go.sum b/go.sum index efe6b82a5e1c..30248dd1d89e 100644 --- a/go.sum +++ b/go.sum @@ -583,8 +583,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -599,8 +599,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/orm/go.mod b/orm/go.mod index 329d2f8d775b..2d00342ccb23 100644 --- a/orm/go.mod +++ b/orm/go.mod @@ -54,7 +54,7 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_golang v1.18.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/spf13/cast v1.6.0 // indirect diff --git a/orm/go.sum b/orm/go.sum index 2339cd6e4e2c..12a54b6528ae 100644 --- a/orm/go.sum +++ b/orm/go.sum @@ -131,8 +131,8 @@ github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+ github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= github.com/regen-network/gocuke v1.1.0 h1:gxlkRTfpR9gJ0mwqQZIpoXHZGx+KPshKQpKE0jtUH5s= diff --git a/simapp/go.mod b/simapp/go.mod index 223989256736..0f9faabd4bc5 100644 --- a/simapp/go.mod +++ b/simapp/go.mod @@ -39,7 +39,7 @@ require ( cosmossdk.io/x/auth v0.0.0-00010101000000-000000000000 cosmossdk.io/x/authz v0.0.0-00010101000000-000000000000 cosmossdk.io/x/bank v0.0.0-00010101000000-000000000000 - cosmossdk.io/x/distribution v0.0.0-20230925135524-a1bc045b3190 + cosmossdk.io/x/distribution v0.0.0-20240227221813-a248d05f70f4 cosmossdk.io/x/gov v0.0.0-20231113122742-912390d5fc4a cosmossdk.io/x/group v0.0.0-00010101000000-000000000000 cosmossdk.io/x/mint v0.0.0-00010101000000-000000000000 @@ -171,9 +171,9 @@ require ( github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rivo/uniseg v0.2.0 // indirect diff --git a/simapp/go.sum b/simapp/go.sum index 6d24f3de1649..05fd98d539f6 100644 --- a/simapp/go.sum +++ b/simapp/go.sum @@ -892,8 +892,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -908,8 +908,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/simapp/gomod2nix.toml b/simapp/gomod2nix.toml index 7bfcf6e89d35..fa4b0a4e61c5 100644 --- a/simapp/gomod2nix.toml +++ b/simapp/gomod2nix.toml @@ -396,14 +396,14 @@ schema = 3 version = "v1.0.1-0.20181226105442-5d4384ee4fb2" hash = "sha256-XA4Oj1gdmdV/F/+8kMI+DBxKPthZ768hbKsO3d9Gx90=" [mod."github.com/prometheus/client_golang"] - version = "v1.18.0" - hash = "sha256-kuC6WUg2j7A+9qnSp5VZSYo+oltgLvj/70TpqlCJIdE=" + version = "v1.19.0" + hash = "sha256-YV8sxMPR+xorTUCriTfcFsaV2b7PZfPJDQmOgUYOZJo=" [mod."github.com/prometheus/client_model"] version = "v0.6.0" hash = "sha256-TAD0mm7msYHo99yoNijeYzlDD0i1Vg3uTetpkDUWQo8=" [mod."github.com/prometheus/common"] - version = "v0.47.0" - hash = "sha256-zAfgbOSycgChcWT8x8oo5k1tq/y6Oay3gLdUEkt0NYk=" + version = "v0.48.0" + hash = "sha256-gXer/9So7DxDP3cBQp8sIzJXP5whT8sk31FURoij5Do=" [mod."github.com/prometheus/procfs"] version = "v0.12.0" hash = "sha256-Y4ZZmxIpVCO67zN3pGwSk2TcI88zvmGJkgwq9DRTwFw=" diff --git a/store/go.mod b/store/go.mod index 6dc0872e489a..3dd38fe0b2d3 100644 --- a/store/go.mod +++ b/store/go.mod @@ -53,7 +53,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.18.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/rs/zerolog v1.32.0 // indirect diff --git a/store/go.sum b/store/go.sum index f2c2c5faa61b..69fd275f4493 100644 --- a/store/go.sum +++ b/store/go.sum @@ -196,8 +196,8 @@ github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZ github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= diff --git a/telemetry/metrics.go b/telemetry/metrics.go index c15720897972..502fdb611209 100644 --- a/telemetry/metrics.go +++ b/telemetry/metrics.go @@ -23,6 +23,7 @@ const ( FormatDefault = "" FormatPrometheus = "prometheus" FormatText = "text" + ContentTypeText = `text/plain; version=` + expfmt.TextVersion + `; charset=utf-8` MetricSinkInMem = "mem" MetricSinkStatsd = "statsd" @@ -192,7 +193,7 @@ func (m *Metrics) gatherPrometheus() (GatherResponse, error) { buf := &bytes.Buffer{} defer buf.Reset() - e := expfmt.NewEncoder(buf, expfmt.FmtText) + e := expfmt.NewEncoder(buf, expfmt.NewFormat(expfmt.TypeTextPlain)) for _, mf := range metricsFamilies { if err := e.Encode(mf); err != nil { @@ -200,7 +201,7 @@ func (m *Metrics) gatherPrometheus() (GatherResponse, error) { } } - return GatherResponse{ContentType: string(expfmt.FmtText), Metrics: buf.Bytes()}, nil + return GatherResponse{ContentType: ContentTypeText, Metrics: buf.Bytes()}, nil } // gatherGeneric collects generic metrics and returns a GatherResponse. diff --git a/telemetry/metrics_test.go b/telemetry/metrics_test.go index 1ce1103529c8..b18c33cac63e 100644 --- a/telemetry/metrics_test.go +++ b/telemetry/metrics_test.go @@ -7,7 +7,6 @@ import ( "time" "github.com/hashicorp/go-metrics" - "github.com/prometheus/common/expfmt" "github.com/stretchr/testify/require" ) @@ -58,7 +57,7 @@ func TestMetrics_Prom(t *testing.T) { gr, err := m.Gather(FormatPrometheus) require.NoError(t, err) - require.Equal(t, gr.ContentType, string(expfmt.FmtText)) + require.Equal(t, gr.ContentType, string(ContentTypeText)) require.True(t, strings.Contains(string(gr.Metrics), "test_dummy_counter 30")) } diff --git a/tests/go.mod b/tests/go.mod index bfbf6c21e60e..2efe521913a1 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -40,7 +40,7 @@ require ( cosmossdk.io/x/auth v0.0.0-00010101000000-000000000000 cosmossdk.io/x/authz v0.0.0-00010101000000-000000000000 cosmossdk.io/x/bank v0.0.0-00010101000000-000000000000 - cosmossdk.io/x/distribution v0.0.0-20230925135524-a1bc045b3190 + cosmossdk.io/x/distribution v0.0.0-20240227221813-a248d05f70f4 cosmossdk.io/x/gov v0.0.0-20231113122742-912390d5fc4a cosmossdk.io/x/group v0.0.0-00010101000000-000000000000 cosmossdk.io/x/mint v0.0.0-00010101000000-000000000000 @@ -167,9 +167,9 @@ require ( github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index 37047aad930a..e6d10f7adaf9 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -876,8 +876,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -892,8 +892,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/tests/starship/tests/go.mod b/tests/starship/tests/go.mod index 90bdee5473fb..26e7bd5e1e77 100644 --- a/tests/starship/tests/go.mod +++ b/tests/starship/tests/go.mod @@ -69,7 +69,7 @@ require ( cosmossdk.io/x/accounts v0.0.0-20240104091155-b729e981f130 // indirect cosmossdk.io/x/authz v0.0.0-00010101000000-000000000000 // indirect cosmossdk.io/x/circuit v0.0.0-20230613133644-0a778132a60f // indirect - cosmossdk.io/x/distribution v0.0.0-20230925135524-a1bc045b3190 // indirect + cosmossdk.io/x/distribution v0.0.0-20240227221813-a248d05f70f4 // indirect cosmossdk.io/x/evidence v0.0.0-20230613133644-0a778132a60f // indirect cosmossdk.io/x/feegrant v0.0.0-20230613133644-0a778132a60f // indirect cosmossdk.io/x/gov v0.0.0-20231113122742-912390d5fc4a // indirect @@ -195,9 +195,9 @@ require ( github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/tests/starship/tests/go.sum b/tests/starship/tests/go.sum index bb4c471af8ac..9ac566ff58dd 100644 --- a/tests/starship/tests/go.sum +++ b/tests/starship/tests/go.sum @@ -876,8 +876,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -892,8 +892,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/accounts/go.mod b/x/accounts/go.mod index 03d9bb17ca66..45e5ddb714f7 100644 --- a/x/accounts/go.mod +++ b/x/accounts/go.mod @@ -118,9 +118,9 @@ require ( github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/accounts/go.sum b/x/accounts/go.sum index d466a8159ee9..5057caaa151a 100644 --- a/x/accounts/go.sum +++ b/x/accounts/go.sum @@ -577,8 +577,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -593,8 +593,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/auth/go.mod b/x/auth/go.mod index b93a40d79e81..babd7476141d 100644 --- a/x/auth/go.mod +++ b/x/auth/go.mod @@ -124,9 +124,9 @@ require ( github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/auth/go.sum b/x/auth/go.sum index 95ac223a5b43..0e779e6aeed8 100644 --- a/x/auth/go.sum +++ b/x/auth/go.sum @@ -577,8 +577,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -593,8 +593,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/authz/go.mod b/x/authz/go.mod index 740883699aed..c494ac75f1d1 100644 --- a/x/authz/go.mod +++ b/x/authz/go.mod @@ -120,9 +120,9 @@ require ( github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/authz/go.sum b/x/authz/go.sum index 95ac223a5b43..0e779e6aeed8 100644 --- a/x/authz/go.sum +++ b/x/authz/go.sum @@ -577,8 +577,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -593,8 +593,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/bank/go.mod b/x/bank/go.mod index b467152ae2b0..ebcf7a6b1fe9 100644 --- a/x/bank/go.mod +++ b/x/bank/go.mod @@ -119,9 +119,9 @@ require ( github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/bank/go.sum b/x/bank/go.sum index 95ac223a5b43..0e779e6aeed8 100644 --- a/x/bank/go.sum +++ b/x/bank/go.sum @@ -577,8 +577,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -593,8 +593,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/circuit/go.mod b/x/circuit/go.mod index 177d34780cbf..26bdf34fd0e9 100644 --- a/x/circuit/go.mod +++ b/x/circuit/go.mod @@ -118,9 +118,9 @@ require ( github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/circuit/go.sum b/x/circuit/go.sum index 95ac223a5b43..0e779e6aeed8 100644 --- a/x/circuit/go.sum +++ b/x/circuit/go.sum @@ -577,8 +577,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -593,8 +593,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/distribution/go.mod b/x/distribution/go.mod index deda10c2d3d9..9f35a52a5541 100644 --- a/x/distribution/go.mod +++ b/x/distribution/go.mod @@ -121,9 +121,9 @@ require ( github.com/pelletier/go-toml/v2 v2.1.1 // indirect github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/distribution/go.sum b/x/distribution/go.sum index 72cfb2e466bd..cb6eb8941c9f 100644 --- a/x/distribution/go.sum +++ b/x/distribution/go.sum @@ -579,8 +579,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -595,8 +595,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/evidence/go.mod b/x/evidence/go.mod index 955a36f7747b..2bf7fa6e7907 100644 --- a/x/evidence/go.mod +++ b/x/evidence/go.mod @@ -120,9 +120,9 @@ require ( github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/evidence/go.sum b/x/evidence/go.sum index 95ac223a5b43..0e779e6aeed8 100644 --- a/x/evidence/go.sum +++ b/x/evidence/go.sum @@ -577,8 +577,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -593,8 +593,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/feegrant/go.mod b/x/feegrant/go.mod index 4ce5c25a4480..cf5e52089753 100644 --- a/x/feegrant/go.mod +++ b/x/feegrant/go.mod @@ -125,9 +125,9 @@ require ( github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/feegrant/go.sum b/x/feegrant/go.sum index 5279853943fa..02011f7eb352 100644 --- a/x/feegrant/go.sum +++ b/x/feegrant/go.sum @@ -587,8 +587,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -603,8 +603,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/gov/go.mod b/x/gov/go.mod index 1b2c06e7efab..33fd02eb85b9 100644 --- a/x/gov/go.mod +++ b/x/gov/go.mod @@ -126,9 +126,9 @@ require ( github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/gov/go.sum b/x/gov/go.sum index 5279853943fa..02011f7eb352 100644 --- a/x/gov/go.sum +++ b/x/gov/go.sum @@ -587,8 +587,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -603,8 +603,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/group/go.mod b/x/group/go.mod index d5621e4f3ff5..02484aba1948 100644 --- a/x/group/go.mod +++ b/x/group/go.mod @@ -128,9 +128,9 @@ require ( github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/group/go.sum b/x/group/go.sum index 8d2d0823d507..3bd7b3f467bd 100644 --- a/x/group/go.sum +++ b/x/group/go.sum @@ -587,8 +587,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -603,8 +603,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/mint/go.mod b/x/mint/go.mod index 1eac687b2df1..1c5c1f7a3a0c 100644 --- a/x/mint/go.mod +++ b/x/mint/go.mod @@ -119,9 +119,9 @@ require ( github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/mint/go.sum b/x/mint/go.sum index 95ac223a5b43..0e779e6aeed8 100644 --- a/x/mint/go.sum +++ b/x/mint/go.sum @@ -577,8 +577,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -593,8 +593,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/nft/go.mod b/x/nft/go.mod index 61e5845833c5..41edaf405a9e 100644 --- a/x/nft/go.mod +++ b/x/nft/go.mod @@ -118,9 +118,9 @@ require ( github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/nft/go.sum b/x/nft/go.sum index 95ac223a5b43..0e779e6aeed8 100644 --- a/x/nft/go.sum +++ b/x/nft/go.sum @@ -577,8 +577,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -593,8 +593,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/params/go.mod b/x/params/go.mod index 7eb74756b27b..e90c89a5324a 100644 --- a/x/params/go.mod +++ b/x/params/go.mod @@ -120,9 +120,9 @@ require ( github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/params/go.sum b/x/params/go.sum index 95ac223a5b43..0e779e6aeed8 100644 --- a/x/params/go.sum +++ b/x/params/go.sum @@ -577,8 +577,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -593,8 +593,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/protocolpool/go.mod b/x/protocolpool/go.mod index ae2a6d771d3a..394419d0f81b 100644 --- a/x/protocolpool/go.mod +++ b/x/protocolpool/go.mod @@ -120,9 +120,9 @@ require ( github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/protocolpool/go.sum b/x/protocolpool/go.sum index 95ac223a5b43..0e779e6aeed8 100644 --- a/x/protocolpool/go.sum +++ b/x/protocolpool/go.sum @@ -577,8 +577,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -593,8 +593,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/slashing/go.mod b/x/slashing/go.mod index 7e03863235a1..3493dd90cb75 100644 --- a/x/slashing/go.mod +++ b/x/slashing/go.mod @@ -12,6 +12,8 @@ require ( cosmossdk.io/math v1.3.0 cosmossdk.io/store v1.0.2 cosmossdk.io/x/auth v0.0.0-00010101000000-000000000000 + cosmossdk.io/x/bank v0.0.0-00010101000000-000000000000 + cosmossdk.io/x/distribution v0.0.0-20240227221813-a248d05f70f4 cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 github.com/bits-and-blooms/bitset v1.10.0 github.com/cockroachdb/errors v1.11.1 @@ -33,7 +35,6 @@ require ( buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.32.0-20230509103710-5e5b9fdd0180.1 // indirect buf.build/gen/go/tendermint/tendermint/protocolbuffers/go v1.32.0-20231117195010-33ed361a9051.1 // indirect cosmossdk.io/x/accounts v0.0.0-00010101000000-000000000000 // indirect - cosmossdk.io/x/bank v0.0.0-00010101000000-000000000000 // indirect cosmossdk.io/x/tx v0.13.0 // indirect filippo.io/edwards25519 v1.1.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect @@ -121,9 +122,9 @@ require ( github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/slashing/go.sum b/x/slashing/go.sum index c1786f523dca..42c1e50aa2ae 100644 --- a/x/slashing/go.sum +++ b/x/slashing/go.sum @@ -14,6 +14,10 @@ cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= cosmossdk.io/store v1.0.2 h1:lSg5BTvJBHUDwswNNyeh4K/CbqiHER73VU4nDNb8uk0= cosmossdk.io/store v1.0.2/go.mod h1:EFtENTqVTuWwitGW1VwaBct+yDagk7oG/axBMPH+FXs= +cosmossdk.io/x/distribution v0.0.0-20240227221813-a248d05f70f4 h1:IsfBQ8iJ/7d2MAKrDdK9ZlkwewoOdpm2klvdiOuDc0U= +cosmossdk.io/x/distribution v0.0.0-20240227221813-a248d05f70f4/go.mod h1:5BYCiCDWhTygqsXXWtokxupQbwxtyzMhtWKlhBM4sPI= +cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190 h1:XQJj9Dv9Gtze0l2TF79BU5lkP6MkUveTUuKICmxoz+o= +cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190/go.mod h1:7WUGupOvmlHJoIMBz1JbObQxeo6/TDiuDBxmtod8HRg= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= @@ -579,8 +583,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -595,8 +599,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/staking/go.mod b/x/staking/go.mod index 9cf80ddfc703..3a964e94771a 100644 --- a/x/staking/go.mod +++ b/x/staking/go.mod @@ -122,9 +122,9 @@ require ( github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/staking/go.sum b/x/staking/go.sum index 95ac223a5b43..0e779e6aeed8 100644 --- a/x/staking/go.sum +++ b/x/staking/go.sum @@ -577,8 +577,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -593,8 +593,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/upgrade/go.mod b/x/upgrade/go.mod index 0abd37242c73..1abe70d2dc94 100644 --- a/x/upgrade/go.mod +++ b/x/upgrade/go.mod @@ -145,9 +145,9 @@ require ( github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/upgrade/go.sum b/x/upgrade/go.sum index 1ee818af771b..0753f677f1fb 100644 --- a/x/upgrade/go.sum +++ b/x/upgrade/go.sum @@ -874,8 +874,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -890,8 +890,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= From 975ddc1d3146069c7e3a3df078cddfc2e136be17 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Thu, 29 Feb 2024 09:39:03 +0100 Subject: [PATCH 11/18] refactor(x/auth/ante): don't use simulate bool in ante handler (#19586) Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- types/handler.go | 26 +++++++++++++------------- types/handler_test.go | 4 ++-- x/auth/ante/basic.go | 20 ++++++++++---------- x/auth/ante/ext.go | 4 ++-- x/auth/ante/fee.go | 4 ++-- x/auth/ante/setup.go | 4 ++-- x/auth/ante/sigverify.go | 8 ++++---- x/auth/ante/unordered.go | 6 +++--- 8 files changed, 38 insertions(+), 38 deletions(-) diff --git a/types/handler.go b/types/handler.go index 42774086c2e0..28873703bdea 100644 --- a/types/handler.go +++ b/types/handler.go @@ -6,23 +6,23 @@ package types // is required for the remainder of the AnteHandler execution, a new Context should // be created off of the provided Context and returned as . // -// The simulate argument is provided to indicate if the AnteHandler is being executed -// in simulation mode, which attempts to estimate a gas cost for the tx. Any state -// modifications made will be discarded if simulate is true. -type AnteHandler func(ctx Context, tx Tx, simulate bool) (newCtx Context, err error) +// When exec module is in simulation mode (ctx.ExecMode() == ExecModeSimulate), it indicates if the AnteHandler is +// being executed in simulation mode, which attempts to estimate a gas cost for the tx. +// Any state modifications made will be discarded in simulation mode. +type AnteHandler func(ctx Context, tx Tx, _ bool) (newCtx Context, err error) // PostHandler like AnteHandler but it executes after RunMsgs. Runs on success // or failure and enables use cases like gas refunding. -type PostHandler func(ctx Context, tx Tx, simulate, success bool) (newCtx Context, err error) +type PostHandler func(ctx Context, tx Tx, _, success bool) (newCtx Context, err error) // AnteDecorator wraps the next AnteHandler to perform custom pre-processing. type AnteDecorator interface { - AnteHandle(ctx Context, tx Tx, simulate bool, next AnteHandler) (newCtx Context, err error) + AnteHandle(ctx Context, tx Tx, _ bool, next AnteHandler) (newCtx Context, err error) } // PostDecorator wraps the next PostHandler to perform custom post-processing. type PostDecorator interface { - PostHandle(ctx Context, tx Tx, simulate, success bool, next PostHandler) (newCtx Context, err error) + PostHandle(ctx Context, tx Tx, _, success bool, next PostHandler) (newCtx Context, err error) } // ChainAnteDecorators ChainDecorator chains AnteDecorators together with each AnteDecorator @@ -46,13 +46,13 @@ func ChainAnteDecorators(chain ...AnteDecorator) AnteHandler { handlerChain := make([]AnteHandler, len(chain)+1) // set the terminal AnteHandler decorator - handlerChain[len(chain)] = func(ctx Context, tx Tx, simulate bool) (Context, error) { + handlerChain[len(chain)] = func(ctx Context, tx Tx, _ bool) (Context, error) { return ctx, nil } for i := 0; i < len(chain); i++ { ii := i - handlerChain[ii] = func(ctx Context, tx Tx, simulate bool) (Context, error) { - return chain[ii].AnteHandle(ctx, tx, simulate, handlerChain[ii+1]) + handlerChain[ii] = func(ctx Context, tx Tx, _ bool) (Context, error) { + return chain[ii].AnteHandle(ctx, tx, ctx.ExecMode() == ExecModeSimulate, handlerChain[ii+1]) } } @@ -74,13 +74,13 @@ func ChainPostDecorators(chain ...PostDecorator) PostHandler { handlerChain := make([]PostHandler, len(chain)+1) // set the terminal PostHandler decorator - handlerChain[len(chain)] = func(ctx Context, tx Tx, simulate, success bool) (Context, error) { + handlerChain[len(chain)] = func(ctx Context, tx Tx, _, success bool) (Context, error) { return ctx, nil } for i := 0; i < len(chain); i++ { ii := i - handlerChain[ii] = func(ctx Context, tx Tx, simulate, success bool) (Context, error) { - return chain[ii].PostHandle(ctx, tx, simulate, success, handlerChain[ii+1]) + handlerChain[ii] = func(ctx Context, tx Tx, _, success bool) (Context, error) { + return chain[ii].PostHandle(ctx, tx, ctx.ExecMode() == ExecModeSimulate, success, handlerChain[ii+1]) } } return handlerChain[0] diff --git a/types/handler_test.go b/types/handler_test.go index 3d20d3023d2d..21eba84a903c 100644 --- a/types/handler_test.go +++ b/types/handler_test.go @@ -14,7 +14,7 @@ func TestChainAnteDecorators(t *testing.T) { // test panic require.Nil(t, sdk.ChainAnteDecorators([]sdk.AnteDecorator{}...)) - ctx, tx := sdk.Context{}, sdk.Tx(nil) + ctx, tx := sdk.Context{}.WithExecMode(sdk.ExecModeSimulate), sdk.Tx(nil) mockCtrl := gomock.NewController(t) mockAnteDecorator1 := mock.NewMockAnteDecorator(mockCtrl) mockAnteDecorator1.EXPECT().AnteHandle(gomock.Eq(ctx), gomock.Eq(tx), true, gomock.Any()).Times(1) @@ -39,7 +39,7 @@ func TestChainPostDecorators(t *testing.T) { require.Nil(t, sdk.ChainPostDecorators([]sdk.PostDecorator{}...)) // Create empty context as well as transaction - ctx := sdk.Context{} + ctx := sdk.Context{}.WithExecMode(sdk.ExecModeSimulate) tx := sdk.Tx(nil) // Create mocks diff --git a/x/auth/ante/basic.go b/x/auth/ante/basic.go index b5d14d32bb13..59e9eca61ee1 100644 --- a/x/auth/ante/basic.go +++ b/x/auth/ante/basic.go @@ -24,10 +24,10 @@ func NewValidateBasicDecorator() ValidateBasicDecorator { return ValidateBasicDecorator{} } -func (vbd ValidateBasicDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error) { +func (vbd ValidateBasicDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, _ bool, next sdk.AnteHandler) (sdk.Context, error) { // no need to validate basic on recheck tx, call next antehandler if ctx.ExecMode() == sdk.ExecModeReCheck { - return next(ctx, tx, simulate) + return next(ctx, tx, false) } if validateBasic, ok := tx.(sdk.HasValidateBasic); ok { @@ -36,7 +36,7 @@ func (vbd ValidateBasicDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulat } } - return next(ctx, tx, simulate) + return next(ctx, tx, ctx.ExecMode() == sdk.ExecModeSimulate) } // ValidateMemoDecorator will validate memo given the parameters passed in @@ -52,7 +52,7 @@ func NewValidateMemoDecorator(ak AccountKeeper) ValidateMemoDecorator { } } -func (vmd ValidateMemoDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error) { +func (vmd ValidateMemoDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, _ bool, next sdk.AnteHandler) (sdk.Context, error) { memoTx, ok := tx.(sdk.TxWithMemo) if !ok { return ctx, errorsmod.Wrap(sdkerrors.ErrTxDecode, "invalid transaction type") @@ -69,7 +69,7 @@ func (vmd ValidateMemoDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate } } - return next(ctx, tx, simulate) + return next(ctx, tx, ctx.ExecMode() == sdk.ExecModeSimulate) } // ConsumeTxSizeGasDecorator will take in parameters and consume gas proportional @@ -77,7 +77,7 @@ func (vmd ValidateMemoDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate // slightly over estimated due to the fact that any given signing account may need // to be retrieved from state. // -// CONTRACT: If simulate=true, then signatures must either be completely filled +// CONTRACT: If exec mode = simulate, then signatures must either be completely filled // in or empty. // CONTRACT: To use this decorator, signatures of transaction must be represented // as legacytx.StdSignature otherwise simulate mode will incorrectly estimate gas cost. @@ -91,7 +91,7 @@ func NewConsumeGasForTxSizeDecorator(ak AccountKeeper) ConsumeTxSizeGasDecorator } } -func (cgts ConsumeTxSizeGasDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error) { +func (cgts ConsumeTxSizeGasDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, _ bool, next sdk.AnteHandler) (sdk.Context, error) { sigTx, ok := tx.(authsigning.SigVerifiableTx) if !ok { return ctx, errorsmod.Wrap(sdkerrors.ErrTxDecode, "invalid tx type") @@ -143,7 +143,7 @@ func (cgts ConsumeTxSizeGasDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, sim } } - return next(ctx, tx, simulate) + return next(ctx, tx, ctx.ExecMode() == sdk.ExecModeSimulate) } // isIncompleteSignature tests whether SignatureData is fully filled in for simulation purposes @@ -193,7 +193,7 @@ func NewTxTimeoutHeightDecorator() TxTimeoutHeightDecorator { // type where the current block height is checked against the tx's height timeout. // If a height timeout is provided (non-zero) and is less than the current block // height, then an error is returned. -func (txh TxTimeoutHeightDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error) { +func (txh TxTimeoutHeightDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, _ bool, next sdk.AnteHandler) (sdk.Context, error) { timeoutTx, ok := tx.(TxWithTimeoutHeight) if !ok { return ctx, errorsmod.Wrap(sdkerrors.ErrTxDecode, "expected tx to implement TxWithTimeoutHeight") @@ -206,5 +206,5 @@ func (txh TxTimeoutHeightDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simul ) } - return next(ctx, tx, simulate) + return next(ctx, tx, ctx.ExecMode() == sdk.ExecModeSimulate) } diff --git a/x/auth/ante/ext.go b/x/auth/ante/ext.go index 6a072526aa0f..92fefff3afff 100644 --- a/x/auth/ante/ext.go +++ b/x/auth/ante/ext.go @@ -43,13 +43,13 @@ func NewExtensionOptionsDecorator(checker ExtensionOptionChecker) sdk.AnteDecora var _ sdk.AnteDecorator = RejectExtensionOptionsDecorator{} // AnteHandle implements the AnteDecorator.AnteHandle method -func (r RejectExtensionOptionsDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error) { +func (r RejectExtensionOptionsDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, _ bool, next sdk.AnteHandler) (newCtx sdk.Context, err error) { err = checkExtOpts(tx, r.checker) if err != nil { return ctx, err } - return next(ctx, tx, simulate) + return next(ctx, tx, ctx.ExecMode() == sdk.ExecModeSimulate) } func checkExtOpts(tx sdk.Tx, checker ExtensionOptionChecker) error { diff --git a/x/auth/ante/fee.go b/x/auth/ante/fee.go index 6da4ecc3b940..018b447c97e3 100644 --- a/x/auth/ante/fee.go +++ b/x/auth/ante/fee.go @@ -39,7 +39,7 @@ func NewDeductFeeDecorator(ak AccountKeeper, bk types.BankKeeper, fk FeegrantKee } } -func (dfd DeductFeeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error) { +func (dfd DeductFeeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, _ bool, next sdk.AnteHandler) (sdk.Context, error) { feeTx, ok := tx.(sdk.FeeTx) if !ok { return ctx, errorsmod.Wrap(sdkerrors.ErrTxDecode, "Tx must be a FeeTx") @@ -67,7 +67,7 @@ func (dfd DeductFeeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bo newCtx := ctx.WithPriority(priority) - return next(newCtx, tx, simulate) + return next(newCtx, tx, ctx.ExecMode() == sdk.ExecModeSimulate) } func (dfd DeductFeeDecorator) checkDeductFee(ctx sdk.Context, sdkTx sdk.Tx, fee sdk.Coins) error { diff --git a/x/auth/ante/setup.go b/x/auth/ante/setup.go index 4fbe8dac856e..6ab8fcd4c1d2 100644 --- a/x/auth/ante/setup.go +++ b/x/auth/ante/setup.go @@ -27,7 +27,7 @@ func NewSetUpContextDecorator() SetUpContextDecorator { return SetUpContextDecorator{} } -func (sud SetUpContextDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error) { +func (sud SetUpContextDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, _ bool, next sdk.AnteHandler) (newCtx sdk.Context, err error) { // all transactions must implement GasTx gasTx, ok := tx.(GasTx) if !ok { @@ -67,7 +67,7 @@ func (sud SetUpContextDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate } }() - return next(newCtx, tx, simulate) + return next(newCtx, tx, ctx.ExecMode() == sdk.ExecModeSimulate) } // SetGasMeter returns a new context with a gas meter set from a given context. diff --git a/x/auth/ante/sigverify.go b/x/auth/ante/sigverify.go index e54a5964a6d5..facc160fcee3 100644 --- a/x/auth/ante/sigverify.go +++ b/x/auth/ante/sigverify.go @@ -149,7 +149,7 @@ func verifyIsOnCurve(pubKey cryptotypes.PubKey) (err error) { return nil } -func (svd SigVerificationDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error) { +func (svd SigVerificationDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, _ bool, next sdk.AnteHandler) (newCtx sdk.Context, err error) { sigTx, ok := tx.(authsigning.Tx) if !ok { return ctx, errorsmod.Wrap(sdkerrors.ErrTxDecode, "invalid transaction type") @@ -215,7 +215,7 @@ func (svd SigVerificationDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simul ctx.EventManager().EmitEvents(events) - return next(ctx, tx, simulate) + return next(ctx, tx, ctx.ExecMode() == sdk.ExecModeSimulate) } // authenticate the authentication of the TX for a specific tx signer. @@ -459,7 +459,7 @@ func NewValidateSigCountDecorator(ak AccountKeeper) ValidateSigCountDecorator { } } -func (vscd ValidateSigCountDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error) { +func (vscd ValidateSigCountDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, _ bool, next sdk.AnteHandler) (sdk.Context, error) { sigTx, ok := tx.(authsigning.SigVerifiableTx) if !ok { return ctx, errorsmod.Wrap(sdkerrors.ErrTxDecode, "Tx must be a sigTx") @@ -479,7 +479,7 @@ func (vscd ValidateSigCountDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, sim } } - return next(ctx, tx, simulate) + return next(ctx, tx, ctx.ExecMode() == sdk.ExecModeSimulate) } // DefaultSigVerificationGasConsumer is the default implementation of SignatureVerificationGasConsumer. It consumes gas diff --git a/x/auth/ante/unordered.go b/x/auth/ante/unordered.go index c110e63650ce..0394701ddf59 100644 --- a/x/auth/ante/unordered.go +++ b/x/auth/ante/unordered.go @@ -37,12 +37,12 @@ func NewUnorderedTxDecorator(maxTTL uint64, m *unorderedtx.Manager) *UnorderedTx } } -func (d *UnorderedTxDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error) { +func (d *UnorderedTxDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, _ bool, next sdk.AnteHandler) (sdk.Context, error) { unorderedTx, ok := tx.(sdk.TxWithUnordered) if !ok || !unorderedTx.GetUnordered() { // If the transaction does not implement unordered capabilities or has the // unordered value as false, we bypass. - return next(ctx, tx, simulate) + return next(ctx, tx, ctx.ExecMode() == sdk.ExecModeSimulate) } // TTL is defined as a specific block height at which this tx is no longer valid @@ -70,5 +70,5 @@ func (d *UnorderedTxDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate b d.txManager.Add(txHash, ttl) } - return next(ctx, tx, simulate) + return next(ctx, tx, ctx.ExecMode() == sdk.ExecModeSimulate) } From 1c9361ca4e6752cb790ccf7467ab8a4a74a26573 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Thu, 29 Feb 2024 10:57:42 +0100 Subject: [PATCH 12/18] refactor: use slices std (#19598) --- client/cmd.go | 2 +- runtime/app.go | 2 +- store/storage/rocksdb/db.go | 2 +- store/storage/sqlite/iterator.go | 3 +-- store/upgrade.go | 2 +- types/events.go | 2 +- x/accounts/go.mod | 2 +- x/accounts/v1/schema.go | 2 +- x/gov/depinject.go | 2 +- x/slashing/go.mod | 3 +-- x/slashing/go.sum | 4 ---- 11 files changed, 10 insertions(+), 16 deletions(-) diff --git a/client/cmd.go b/client/cmd.go index 739bc5c6340f..61412200fd5f 100644 --- a/client/cmd.go +++ b/client/cmd.go @@ -4,12 +4,12 @@ import ( "context" "crypto/tls" "fmt" + "slices" "strings" "github.com/cockroachdb/errors" "github.com/spf13/cobra" "github.com/spf13/pflag" - "golang.org/x/exp/slices" "google.golang.org/grpc" "google.golang.org/grpc/credentials" "google.golang.org/grpc/credentials/insecure" diff --git a/runtime/app.go b/runtime/app.go index c0f0e93e66d6..a224463fb806 100644 --- a/runtime/app.go +++ b/runtime/app.go @@ -3,9 +3,9 @@ package runtime import ( "encoding/json" "fmt" + "slices" abci "github.com/cometbft/cometbft/abci/types" - "golang.org/x/exp/slices" runtimev1alpha1 "cosmossdk.io/api/cosmos/app/runtime/v1alpha1" appv1alpha1 "cosmossdk.io/api/cosmos/app/v1alpha1" diff --git a/store/storage/rocksdb/db.go b/store/storage/rocksdb/db.go index b2525e3d8e81..440d26ccccce 100644 --- a/store/storage/rocksdb/db.go +++ b/store/storage/rocksdb/db.go @@ -9,7 +9,7 @@ import ( "fmt" "github.com/linxGnu/grocksdb" - "golang.org/x/exp/slices" + "slices" corestore "cosmossdk.io/core/store" "cosmossdk.io/store/v2" diff --git a/store/storage/sqlite/iterator.go b/store/storage/sqlite/iterator.go index e048e1f3cd27..3dd2875c1e18 100644 --- a/store/storage/sqlite/iterator.go +++ b/store/storage/sqlite/iterator.go @@ -4,10 +4,9 @@ import ( "bytes" "database/sql" "fmt" + "slices" "strings" - "golang.org/x/exp/slices" - corestore "cosmossdk.io/core/store" ) diff --git a/store/upgrade.go b/store/upgrade.go index 675e7e926303..b5de0e5443d4 100644 --- a/store/upgrade.go +++ b/store/upgrade.go @@ -1,6 +1,6 @@ package store -import "golang.org/x/exp/slices" +import "slices" // StoreUpgrades defines a series of transformations to apply the RootStore upon // loading a version. diff --git a/types/events.go b/types/events.go index 8d1f9d6cb44c..335fac3182c8 100644 --- a/types/events.go +++ b/types/events.go @@ -4,13 +4,13 @@ import ( "encoding/json" "fmt" "reflect" + "slices" "strings" abci "github.com/cometbft/cometbft/abci/types" "github.com/cosmos/gogoproto/jsonpb" proto "github.com/cosmos/gogoproto/proto" "golang.org/x/exp/maps" - "golang.org/x/exp/slices" "github.com/cosmos/cosmos-sdk/codec" ) diff --git a/x/accounts/go.mod b/x/accounts/go.mod index 45e5ddb714f7..7f1ff6f1c9e7 100644 --- a/x/accounts/go.mod +++ b/x/accounts/go.mod @@ -14,7 +14,6 @@ require ( github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 github.com/spf13/cobra v1.8.0 github.com/stretchr/testify v1.8.4 - golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 google.golang.org/grpc v1.62.0 google.golang.org/protobuf v1.32.0 ) @@ -145,6 +144,7 @@ require ( go.etcd.io/bbolt v1.3.7 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.20.0 // indirect + golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect golang.org/x/sync v0.6.0 // indirect diff --git a/x/accounts/v1/schema.go b/x/accounts/v1/schema.go index d4aef76353b6..6cebadb306f1 100644 --- a/x/accounts/v1/schema.go +++ b/x/accounts/v1/schema.go @@ -1,9 +1,9 @@ package v1 import ( + "slices" "strings" - "golang.org/x/exp/slices" "google.golang.org/grpc" "cosmossdk.io/x/accounts/internal/implementation" diff --git a/x/gov/depinject.go b/x/gov/depinject.go index 99bf5e3bf75e..1b99aeccc770 100644 --- a/x/gov/depinject.go +++ b/x/gov/depinject.go @@ -2,11 +2,11 @@ package gov import ( "fmt" + "slices" "sort" "strings" "golang.org/x/exp/maps" - "golang.org/x/exp/slices" modulev1 "cosmossdk.io/api/cosmos/gov/module/v1" "cosmossdk.io/core/appmodule" diff --git a/x/slashing/go.mod b/x/slashing/go.mod index 3493dd90cb75..b82b64d27a9e 100644 --- a/x/slashing/go.mod +++ b/x/slashing/go.mod @@ -12,8 +12,6 @@ require ( cosmossdk.io/math v1.3.0 cosmossdk.io/store v1.0.2 cosmossdk.io/x/auth v0.0.0-00010101000000-000000000000 - cosmossdk.io/x/bank v0.0.0-00010101000000-000000000000 - cosmossdk.io/x/distribution v0.0.0-20240227221813-a248d05f70f4 cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 github.com/bits-and-blooms/bitset v1.10.0 github.com/cockroachdb/errors v1.11.1 @@ -35,6 +33,7 @@ require ( buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.32.0-20230509103710-5e5b9fdd0180.1 // indirect buf.build/gen/go/tendermint/tendermint/protocolbuffers/go v1.32.0-20231117195010-33ed361a9051.1 // indirect cosmossdk.io/x/accounts v0.0.0-00010101000000-000000000000 // indirect + cosmossdk.io/x/bank v0.0.0-00010101000000-000000000000 // indirect cosmossdk.io/x/tx v0.13.0 // indirect filippo.io/edwards25519 v1.1.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect diff --git a/x/slashing/go.sum b/x/slashing/go.sum index 42c1e50aa2ae..64615c7aa6fd 100644 --- a/x/slashing/go.sum +++ b/x/slashing/go.sum @@ -14,10 +14,6 @@ cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= cosmossdk.io/store v1.0.2 h1:lSg5BTvJBHUDwswNNyeh4K/CbqiHER73VU4nDNb8uk0= cosmossdk.io/store v1.0.2/go.mod h1:EFtENTqVTuWwitGW1VwaBct+yDagk7oG/axBMPH+FXs= -cosmossdk.io/x/distribution v0.0.0-20240227221813-a248d05f70f4 h1:IsfBQ8iJ/7d2MAKrDdK9ZlkwewoOdpm2klvdiOuDc0U= -cosmossdk.io/x/distribution v0.0.0-20240227221813-a248d05f70f4/go.mod h1:5BYCiCDWhTygqsXXWtokxupQbwxtyzMhtWKlhBM4sPI= -cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190 h1:XQJj9Dv9Gtze0l2TF79BU5lkP6MkUveTUuKICmxoz+o= -cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190/go.mod h1:7WUGupOvmlHJoIMBz1JbObQxeo6/TDiuDBxmtod8HRg= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= From febb7b7ece3a01c4bf0bc1ed73631d914ac8fd5c Mon Sep 17 00:00:00 2001 From: Qt Date: Fri, 1 Mar 2024 20:36:00 +0800 Subject: [PATCH 13/18] docs(math): update math docs (#19615) --- math/int.go | 4 ++-- math/uint.go | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/math/int.go b/math/int.go index 5de32cbc3737..fb4f63e15ab5 100644 --- a/math/int.go +++ b/math/int.go @@ -333,7 +333,7 @@ func (i Int) Mul(i2 Int) (res Int) { return x } -// MulRaw multipies Int and int64 +// MulRaw multiplies Int and int64 func (i Int) MulRaw(i2 int64) Int { return i.Mul(NewInt(i2)) } @@ -414,7 +414,7 @@ func MaxInt(i, i2 Int) Int { return Int{max(i.BigInt(), i2.BigInt())} } -// Human readable string +// String returns human-readable string func (i Int) String() string { return i.i.String() } diff --git a/math/uint.go b/math/uint.go index 6361694743b3..92f0453b1a35 100644 --- a/math/uint.go +++ b/math/uint.go @@ -21,7 +21,7 @@ func (u Uint) BigInt() *big.Int { return new(big.Int).Set(u.i) } -// BigInt converts Uint to big.Int, mutative the input +// BigIntMut converts Uint to big.Int, mutative the input func (u Uint) BigIntMut() *big.Int { if u.IsNil() { return nil @@ -99,7 +99,7 @@ func (u Uint) LTE(u2 Uint) bool { return !u.GT(u2) } // Add adds Uint from another func (u Uint) Add(u2 Uint) Uint { return NewUintFromBigInt(new(big.Int).Add(u.i, u2.i)) } -// Add convert uint64 and add it to Uint +// AddUint64 convert uint64 and add it to Uint func (u Uint) AddUint64(u2 uint64) Uint { return u.Add(NewUint(u2)) } // Sub adds Uint from another @@ -113,7 +113,7 @@ func (u Uint) Mul(u2 Uint) (res Uint) { return NewUintFromBigInt(new(big.Int).Mul(u.i, u2.i)) } -// Mul multiplies two Uints +// MulUint64 multiplies two Uints func (u Uint) MulUint64(u2 uint64) (res Uint) { return u.Mul(NewUint(u2)) } // Quo divides Uint with Uint @@ -139,16 +139,16 @@ func (u Uint) Decr() Uint { return u.Sub(OneUint()) } -// Quo divides Uint with uint64 +// QuoUint64 divides Uint with uint64 func (u Uint) QuoUint64(u2 uint64) Uint { return u.Quo(NewUint(u2)) } -// Return the minimum of the Uints +// MinUint returns the minimum of the Uints func MinUint(u1, u2 Uint) Uint { return NewUintFromBigInt(min(u1.i, u2.i)) } -// Return the maximum of the Uints +// MaxUint returns the maximum of the Uints func MaxUint(u1, u2 Uint) Uint { return NewUintFromBigInt(max(u1.i, u2.i)) } -// Human readable string +// String returns human-readable string func (u Uint) String() string { return u.i.String() } // MarshalJSON defines custom encoding scheme @@ -219,7 +219,7 @@ func (u *Uint) Size() int { return len(bz) } -// Override Amino binary serialization by proxying to protobuf. +// MarshalAmino override Amino binary serialization by proxying to protobuf. func (u Uint) MarshalAmino() ([]byte, error) { return u.Marshal() } func (u *Uint) UnmarshalAmino(bz []byte) error { return u.Unmarshal(bz) } From 3d59013709d5f8565c456301ad66853d163c0598 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Mar 2024 13:54:17 +0100 Subject: [PATCH 14/18] build(deps): Bump github.com/prometheus/common from 0.48.0 to 0.49.0 (#19609) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Julien Robert --- client/v2/go.mod | 2 +- client/v2/go.sum | 4 ++-- collections/go.mod | 4 ++-- collections/go.sum | 8 ++++---- go.mod | 2 +- go.sum | 4 ++-- orm/go.mod | 4 ++-- orm/go.sum | 8 ++++---- simapp/go.mod | 4 ++-- simapp/go.sum | 8 ++++---- simapp/gomod2nix.toml | 8 ++++---- store/go.mod | 4 ++-- store/go.sum | 8 ++++---- tests/go.mod | 4 ++-- tests/go.sum | 8 ++++---- tests/starship/tests/go.mod | 4 ++-- tests/starship/tests/go.sum | 8 ++++---- x/accounts/go.mod | 2 +- x/accounts/go.sum | 4 ++-- x/auth/go.mod | 2 +- x/auth/go.sum | 4 ++-- x/authz/go.mod | 2 +- x/authz/go.sum | 4 ++-- x/bank/go.mod | 2 +- x/bank/go.sum | 4 ++-- x/circuit/go.mod | 2 +- x/circuit/go.sum | 4 ++-- x/distribution/go.mod | 2 +- x/distribution/go.sum | 4 ++-- x/evidence/go.mod | 2 +- x/evidence/go.sum | 4 ++-- x/feegrant/go.mod | 2 +- x/feegrant/go.sum | 4 ++-- x/gov/go.mod | 2 +- x/gov/go.sum | 4 ++-- x/group/go.mod | 2 +- x/group/go.sum | 4 ++-- x/mint/go.mod | 2 +- x/mint/go.sum | 4 ++-- x/nft/go.mod | 2 +- x/nft/go.sum | 4 ++-- x/params/go.mod | 2 +- x/params/go.sum | 4 ++-- x/protocolpool/go.mod | 2 +- x/protocolpool/go.sum | 4 ++-- x/slashing/go.mod | 2 +- x/slashing/go.sum | 4 ++-- x/staking/go.mod | 2 +- x/staking/go.sum | 4 ++-- x/upgrade/go.mod | 4 ++-- x/upgrade/go.sum | 8 ++++---- 51 files changed, 100 insertions(+), 100 deletions(-) diff --git a/client/v2/go.mod b/client/v2/go.mod index 495939c9734b..571bc45f382a 100644 --- a/client/v2/go.mod +++ b/client/v2/go.mod @@ -124,7 +124,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/common v0.49.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/client/v2/go.sum b/client/v2/go.sum index b0e5e5ab87ef..9a13c73af234 100644 --- a/client/v2/go.sum +++ b/client/v2/go.sum @@ -601,8 +601,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/collections/go.mod b/collections/go.mod index 28a33c43712f..c03042f52630 100644 --- a/collections/go.mod +++ b/collections/go.mod @@ -35,9 +35,9 @@ require ( github.com/onsi/gomega v1.20.0 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/common v0.49.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/spf13/cast v1.6.0 // indirect diff --git a/collections/go.sum b/collections/go.sum index f1039c2fa28b..128ded83395d 100644 --- a/collections/go.sum +++ b/collections/go.sum @@ -103,12 +103,12 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= diff --git a/go.mod b/go.mod index e88564d5dc96..24be15a14b4e 100644 --- a/go.mod +++ b/go.mod @@ -45,7 +45,7 @@ require ( github.com/mdp/qrterminal/v3 v3.2.0 github.com/muesli/termenv v0.15.2 github.com/prometheus/client_golang v1.19.0 - github.com/prometheus/common v0.48.0 + github.com/prometheus/common v0.49.0 github.com/rs/zerolog v1.32.0 github.com/spf13/cast v1.6.0 github.com/spf13/cobra v1.8.0 diff --git a/go.sum b/go.sum index 30248dd1d89e..9d0dfeeef4e8 100644 --- a/go.sum +++ b/go.sum @@ -599,8 +599,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/orm/go.mod b/orm/go.mod index 2d00342ccb23..3e80e04a875b 100644 --- a/orm/go.mod +++ b/orm/go.mod @@ -52,9 +52,9 @@ require ( github.com/onsi/gomega v1.20.0 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/common v0.49.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/spf13/cast v1.6.0 // indirect diff --git a/orm/go.sum b/orm/go.sum index 12a54b6528ae..effb8fe59e9b 100644 --- a/orm/go.sum +++ b/orm/go.sum @@ -127,12 +127,12 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= github.com/regen-network/gocuke v1.1.0 h1:gxlkRTfpR9gJ0mwqQZIpoXHZGx+KPshKQpKE0jtUH5s= diff --git a/simapp/go.mod b/simapp/go.mod index 0f9faabd4bc5..6d72d11285eb 100644 --- a/simapp/go.mod +++ b/simapp/go.mod @@ -173,7 +173,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/common v0.49.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rivo/uniseg v0.2.0 // indirect @@ -206,7 +206,7 @@ require ( golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect - golang.org/x/oauth2 v0.16.0 // indirect + golang.org/x/oauth2 v0.17.0 // indirect golang.org/x/sync v0.6.0 // indirect golang.org/x/sys v0.17.0 // indirect golang.org/x/term v0.17.0 // indirect diff --git a/simapp/go.sum b/simapp/go.sum index 05fd98d539f6..ef5f1c994b81 100644 --- a/simapp/go.sum +++ b/simapp/go.sum @@ -908,8 +908,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -1230,8 +1230,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.16.0 h1:aDkGMBSYxElaoP81NpoUoz2oo2R2wHdZpGToUxfyQrQ= -golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= +golang.org/x/oauth2 v0.17.0 h1:6m3ZPmLEFdVxKKWnKq4VqZ60gutO35zm+zrAHVmHyDQ= +golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/simapp/gomod2nix.toml b/simapp/gomod2nix.toml index fa4b0a4e61c5..f95900c88bce 100644 --- a/simapp/gomod2nix.toml +++ b/simapp/gomod2nix.toml @@ -402,8 +402,8 @@ schema = 3 version = "v0.6.0" hash = "sha256-TAD0mm7msYHo99yoNijeYzlDD0i1Vg3uTetpkDUWQo8=" [mod."github.com/prometheus/common"] - version = "v0.48.0" - hash = "sha256-gXer/9So7DxDP3cBQp8sIzJXP5whT8sk31FURoij5Do=" + version = "v0.49.0" + hash = "sha256-jDD8MAv4kervfJWlIX22ErjUrE5w8S7F8PQEO8/QN/w=" [mod."github.com/prometheus/procfs"] version = "v0.12.0" hash = "sha256-Y4ZZmxIpVCO67zN3pGwSk2TcI88zvmGJkgwq9DRTwFw=" @@ -517,8 +517,8 @@ schema = 3 version = "v0.21.0" hash = "sha256-LfiqMpPtqvW/eLkfx6Ebr5ksqKbQli6uq06c/+XrBsw=" [mod."golang.org/x/oauth2"] - version = "v0.16.0" - hash = "sha256-fJfS9dKaq82WaYSVWHMnxNLWH8+L4aip/C1AfJi4FFI=" + version = "v0.17.0" + hash = "sha256-M2ZZQZt449RJL18YpzGiAiqfGsDVMsr1IVWbYp/G/go=" [mod."golang.org/x/sync"] version = "v0.6.0" hash = "sha256-LLims/wjDZtIqlYCVHREewcUOX4hwRwplEuZKPOJ/HI=" diff --git a/store/go.mod b/store/go.mod index 3dd38fe0b2d3..733aad58cfd8 100644 --- a/store/go.mod +++ b/store/go.mod @@ -51,9 +51,9 @@ require ( github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/common v0.49.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/rs/zerolog v1.32.0 // indirect diff --git a/store/go.sum b/store/go.sum index 69fd275f4493..85707a574904 100644 --- a/store/go.sum +++ b/store/go.sum @@ -187,8 +187,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -196,8 +196,8 @@ github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZ github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= diff --git a/tests/go.mod b/tests/go.mod index 2efe521913a1..ae62c99accdb 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -169,7 +169,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/common v0.49.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect @@ -204,7 +204,7 @@ require ( golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect - golang.org/x/oauth2 v0.16.0 // indirect + golang.org/x/oauth2 v0.17.0 // indirect golang.org/x/sync v0.6.0 // indirect golang.org/x/sys v0.17.0 // indirect golang.org/x/term v0.17.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index e6d10f7adaf9..fd33ab3213a5 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -892,8 +892,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -1202,8 +1202,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.16.0 h1:aDkGMBSYxElaoP81NpoUoz2oo2R2wHdZpGToUxfyQrQ= -golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= +golang.org/x/oauth2 v0.17.0 h1:6m3ZPmLEFdVxKKWnKq4VqZ60gutO35zm+zrAHVmHyDQ= +golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/tests/starship/tests/go.mod b/tests/starship/tests/go.mod index 26e7bd5e1e77..244e26d1f67a 100644 --- a/tests/starship/tests/go.mod +++ b/tests/starship/tests/go.mod @@ -197,7 +197,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/common v0.49.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect @@ -234,7 +234,7 @@ require ( golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect - golang.org/x/oauth2 v0.16.0 // indirect + golang.org/x/oauth2 v0.17.0 // indirect golang.org/x/sync v0.6.0 // indirect golang.org/x/sys v0.17.0 // indirect golang.org/x/term v0.17.0 // indirect diff --git a/tests/starship/tests/go.sum b/tests/starship/tests/go.sum index 9ac566ff58dd..f3e4b8e20413 100644 --- a/tests/starship/tests/go.sum +++ b/tests/starship/tests/go.sum @@ -892,8 +892,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -1202,8 +1202,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.16.0 h1:aDkGMBSYxElaoP81NpoUoz2oo2R2wHdZpGToUxfyQrQ= -golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= +golang.org/x/oauth2 v0.17.0 h1:6m3ZPmLEFdVxKKWnKq4VqZ60gutO35zm+zrAHVmHyDQ= +golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/x/accounts/go.mod b/x/accounts/go.mod index 7f1ff6f1c9e7..3e7745aba2a5 100644 --- a/x/accounts/go.mod +++ b/x/accounts/go.mod @@ -119,7 +119,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/common v0.49.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/accounts/go.sum b/x/accounts/go.sum index 5057caaa151a..823fad196de8 100644 --- a/x/accounts/go.sum +++ b/x/accounts/go.sum @@ -593,8 +593,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/auth/go.mod b/x/auth/go.mod index babd7476141d..fa4698cafb13 100644 --- a/x/auth/go.mod +++ b/x/auth/go.mod @@ -126,7 +126,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/common v0.49.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/auth/go.sum b/x/auth/go.sum index 0e779e6aeed8..884ec3416ac7 100644 --- a/x/auth/go.sum +++ b/x/auth/go.sum @@ -593,8 +593,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/authz/go.mod b/x/authz/go.mod index c494ac75f1d1..a48bb4fe90f3 100644 --- a/x/authz/go.mod +++ b/x/authz/go.mod @@ -122,7 +122,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/common v0.49.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/authz/go.sum b/x/authz/go.sum index 0e779e6aeed8..884ec3416ac7 100644 --- a/x/authz/go.sum +++ b/x/authz/go.sum @@ -593,8 +593,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/bank/go.mod b/x/bank/go.mod index ebcf7a6b1fe9..9ebf12bdc141 100644 --- a/x/bank/go.mod +++ b/x/bank/go.mod @@ -121,7 +121,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/common v0.49.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/bank/go.sum b/x/bank/go.sum index 0e779e6aeed8..884ec3416ac7 100644 --- a/x/bank/go.sum +++ b/x/bank/go.sum @@ -593,8 +593,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/circuit/go.mod b/x/circuit/go.mod index 26bdf34fd0e9..7a6982c45da9 100644 --- a/x/circuit/go.mod +++ b/x/circuit/go.mod @@ -120,7 +120,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/common v0.49.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/circuit/go.sum b/x/circuit/go.sum index 0e779e6aeed8..884ec3416ac7 100644 --- a/x/circuit/go.sum +++ b/x/circuit/go.sum @@ -593,8 +593,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/distribution/go.mod b/x/distribution/go.mod index 9f35a52a5541..a915abd43b1a 100644 --- a/x/distribution/go.mod +++ b/x/distribution/go.mod @@ -123,7 +123,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/common v0.49.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/distribution/go.sum b/x/distribution/go.sum index cb6eb8941c9f..ba69099d417b 100644 --- a/x/distribution/go.sum +++ b/x/distribution/go.sum @@ -595,8 +595,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/evidence/go.mod b/x/evidence/go.mod index 2bf7fa6e7907..12969d169dcf 100644 --- a/x/evidence/go.mod +++ b/x/evidence/go.mod @@ -122,7 +122,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/common v0.49.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/evidence/go.sum b/x/evidence/go.sum index 0e779e6aeed8..884ec3416ac7 100644 --- a/x/evidence/go.sum +++ b/x/evidence/go.sum @@ -593,8 +593,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/feegrant/go.mod b/x/feegrant/go.mod index cf5e52089753..d8717b76e520 100644 --- a/x/feegrant/go.mod +++ b/x/feegrant/go.mod @@ -127,7 +127,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/common v0.49.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/feegrant/go.sum b/x/feegrant/go.sum index 02011f7eb352..e2036bb174a4 100644 --- a/x/feegrant/go.sum +++ b/x/feegrant/go.sum @@ -603,8 +603,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/gov/go.mod b/x/gov/go.mod index 33fd02eb85b9..41fbd2a48f52 100644 --- a/x/gov/go.mod +++ b/x/gov/go.mod @@ -128,7 +128,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/common v0.49.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/gov/go.sum b/x/gov/go.sum index 02011f7eb352..e2036bb174a4 100644 --- a/x/gov/go.sum +++ b/x/gov/go.sum @@ -603,8 +603,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/group/go.mod b/x/group/go.mod index 02484aba1948..8332fc32b959 100644 --- a/x/group/go.mod +++ b/x/group/go.mod @@ -130,7 +130,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/common v0.49.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/group/go.sum b/x/group/go.sum index 3bd7b3f467bd..a7481d6bf0bf 100644 --- a/x/group/go.sum +++ b/x/group/go.sum @@ -603,8 +603,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/mint/go.mod b/x/mint/go.mod index 1c5c1f7a3a0c..b3ec0d3713ba 100644 --- a/x/mint/go.mod +++ b/x/mint/go.mod @@ -121,7 +121,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/common v0.49.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/mint/go.sum b/x/mint/go.sum index 0e779e6aeed8..884ec3416ac7 100644 --- a/x/mint/go.sum +++ b/x/mint/go.sum @@ -593,8 +593,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/nft/go.mod b/x/nft/go.mod index 41edaf405a9e..c45f2500f1c3 100644 --- a/x/nft/go.mod +++ b/x/nft/go.mod @@ -120,7 +120,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/common v0.49.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/nft/go.sum b/x/nft/go.sum index 0e779e6aeed8..884ec3416ac7 100644 --- a/x/nft/go.sum +++ b/x/nft/go.sum @@ -593,8 +593,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/params/go.mod b/x/params/go.mod index e90c89a5324a..16377d64e512 100644 --- a/x/params/go.mod +++ b/x/params/go.mod @@ -122,7 +122,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/common v0.49.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/params/go.sum b/x/params/go.sum index 0e779e6aeed8..884ec3416ac7 100644 --- a/x/params/go.sum +++ b/x/params/go.sum @@ -593,8 +593,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/protocolpool/go.mod b/x/protocolpool/go.mod index 394419d0f81b..6644b1071294 100644 --- a/x/protocolpool/go.mod +++ b/x/protocolpool/go.mod @@ -122,7 +122,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/common v0.49.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/protocolpool/go.sum b/x/protocolpool/go.sum index 0e779e6aeed8..884ec3416ac7 100644 --- a/x/protocolpool/go.sum +++ b/x/protocolpool/go.sum @@ -593,8 +593,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/slashing/go.mod b/x/slashing/go.mod index b82b64d27a9e..37239d2a5af0 100644 --- a/x/slashing/go.mod +++ b/x/slashing/go.mod @@ -123,7 +123,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/common v0.49.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/slashing/go.sum b/x/slashing/go.sum index 64615c7aa6fd..e4427810a9e4 100644 --- a/x/slashing/go.sum +++ b/x/slashing/go.sum @@ -595,8 +595,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/staking/go.mod b/x/staking/go.mod index 3a964e94771a..7bf6ec71d2d2 100644 --- a/x/staking/go.mod +++ b/x/staking/go.mod @@ -124,7 +124,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/common v0.49.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/x/staking/go.sum b/x/staking/go.sum index 0e779e6aeed8..884ec3416ac7 100644 --- a/x/staking/go.sum +++ b/x/staking/go.sum @@ -593,8 +593,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/x/upgrade/go.mod b/x/upgrade/go.mod index 1abe70d2dc94..e0cd8b69260e 100644 --- a/x/upgrade/go.mod +++ b/x/upgrade/go.mod @@ -147,7 +147,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/common v0.49.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect @@ -180,7 +180,7 @@ require ( golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect - golang.org/x/oauth2 v0.16.0 // indirect + golang.org/x/oauth2 v0.17.0 // indirect golang.org/x/sync v0.6.0 // indirect golang.org/x/sys v0.17.0 // indirect golang.org/x/term v0.17.0 // indirect diff --git a/x/upgrade/go.sum b/x/upgrade/go.sum index 0753f677f1fb..a9e0f3cc3350 100644 --- a/x/upgrade/go.sum +++ b/x/upgrade/go.sum @@ -890,8 +890,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -1200,8 +1200,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.16.0 h1:aDkGMBSYxElaoP81NpoUoz2oo2R2wHdZpGToUxfyQrQ= -golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= +golang.org/x/oauth2 v0.17.0 h1:6m3ZPmLEFdVxKKWnKq4VqZ60gutO35zm+zrAHVmHyDQ= +golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= From 55370b01985bfbd4fd5776692450e3403227f65a Mon Sep 17 00:00:00 2001 From: Matt Kocubinski Date: Fri, 1 Mar 2024 08:17:48 -0800 Subject: [PATCH 15/18] feat(store): remove RawDB dependency from snapshot store (#19608) --- store/migration/manager_test.go | 2 +- store/snapshots/helpers_test.go | 4 +- store/snapshots/manager.go | 5 +- store/snapshots/manager_test.go | 3 +- store/snapshots/store.go | 218 ++++++++++++++++++++------------ store/snapshots/store_test.go | 7 +- 6 files changed, 145 insertions(+), 94 deletions(-) diff --git a/store/migration/manager_test.go b/store/migration/manager_test.go index b02ac5db94a9..c60a2376d4bd 100644 --- a/store/migration/manager_test.go +++ b/store/migration/manager_test.go @@ -31,7 +31,7 @@ func setupMigrationManager(t *testing.T) (*Manager, *commitment.CommitStore) { commitStore, err := commitment.NewCommitStore(multiTrees, db, nil, log.NewNopLogger()) require.NoError(t, err) - snapshotsStore, err := snapshots.NewStore(db, t.TempDir()) + snapshotsStore, err := snapshots.NewStore(t.TempDir()) require.NoError(t, err) snapshotsManager := snapshots.NewManager(snapshotsStore, snapshots.NewSnapshotOptions(1500, 2), commitStore, nil, nil, log.NewNopLogger()) diff --git a/store/snapshots/helpers_test.go b/store/snapshots/helpers_test.go index 8ed5d3d594b1..33dcc14fa6f4 100644 --- a/store/snapshots/helpers_test.go +++ b/store/snapshots/helpers_test.go @@ -17,7 +17,6 @@ import ( errorsmod "cosmossdk.io/errors" "cosmossdk.io/log" "cosmossdk.io/store/v2" - dbm "cosmossdk.io/store/v2/db" "cosmossdk.io/store/v2/snapshots" snapshotstypes "cosmossdk.io/store/v2/snapshots/types" ) @@ -189,7 +188,7 @@ func (m *mockErrorCommitSnapshotter) SupportedFormats() []uint32 { // The snapshot will complete when the returned closer is called. func setupBusyManager(t *testing.T) *snapshots.Manager { t.Helper() - store, err := snapshots.NewStore(dbm.NewMemDB(), t.TempDir()) + store, err := snapshots.NewStore(t.TempDir()) require.NoError(t, err) hung := newHungCommitSnapshotter() mgr := snapshots.NewManager(store, opts, hung, &mockStorageSnapshotter{}, nil, log.NewNopLogger()) @@ -292,6 +291,7 @@ func (s *extSnapshotter) RestoreExtension(height uint64, format uint32, payloadR // GetTempDir returns a writable temporary director for the test to use. func GetTempDir(tb testing.TB) string { + //return "/tmp/snapshots" tb.Helper() // os.MkDir() is used instead of testing.T.TempDir() // see https://github.com/cosmos/cosmos-sdk/pull/8475 and diff --git a/store/snapshots/manager.go b/store/snapshots/manager.go index ad29da179671..b713da7134f4 100644 --- a/store/snapshots/manager.go +++ b/store/snapshots/manager.go @@ -599,7 +599,4 @@ func (m *Manager) snapshot(height int64) { } // Close the snapshot database. -func (m *Manager) Close() error { - m.logger.Info("snapshotManager Close Database") - return m.store.db.Close() -} +func (m *Manager) Close() error { return nil } diff --git a/store/snapshots/manager_test.go b/store/snapshots/manager_test.go index da598f7a6910..987d0c3b0e81 100644 --- a/store/snapshots/manager_test.go +++ b/store/snapshots/manager_test.go @@ -8,7 +8,6 @@ import ( "github.com/stretchr/testify/require" "cosmossdk.io/log" - dbm "cosmossdk.io/store/v2/db" "cosmossdk.io/store/v2/snapshots" "cosmossdk.io/store/v2/snapshots/types" ) @@ -237,7 +236,7 @@ func TestManager_Restore(t *testing.T) { func TestManager_TakeError(t *testing.T) { snapshotter := &mockErrorCommitSnapshotter{} - store, err := snapshots.NewStore(dbm.NewMemDB(), GetTempDir(t)) + store, err := snapshots.NewStore(GetTempDir(t)) require.NoError(t, err) manager := snapshots.NewManager(store, opts, snapshotter, &mockStorageSnapshotter{}, nil, log.NewNopLogger()) diff --git a/store/snapshots/store.go b/store/snapshots/store.go index ad2179ddbac7..c7fef66bb424 100644 --- a/store/snapshots/store.go +++ b/store/snapshots/store.go @@ -3,12 +3,15 @@ package snapshots import ( "crypto/sha256" "encoding/binary" + "fmt" "hash" "io" "math" "os" "path/filepath" + "sort" "strconv" + "strings" "sync" "github.com/cosmos/gogoproto/proto" @@ -25,7 +28,6 @@ const ( // Store is a snapshot store, containing snapshot metadata and binary chunks. type Store struct { - db store.RawDB dir string mtx sync.Mutex @@ -33,7 +35,7 @@ type Store struct { } // NewStore creates a new snapshot store. -func NewStore(db store.RawDB, dir string) (*Store, error) { +func NewStore(dir string) (*Store, error) { if dir == "" { return nil, errors.Wrap(store.ErrLogic, "snapshot directory not given") } @@ -41,9 +43,12 @@ func NewStore(db store.RawDB, dir string) (*Store, error) { if err != nil { return nil, errors.Wrapf(err, "failed to create snapshot directory %q", dir) } + err = os.MkdirAll(filepath.Join(dir, "metadata"), 0o750) + if err != nil { + return nil, errors.Wrapf(err, "failed to create snapshot metadata directory %q", dir) + } return &Store{ - db: db, dir: dir, saving: make(map[uint64]bool), }, nil @@ -58,32 +63,25 @@ func (s *Store) Delete(height uint64, format uint32) error { return errors.Wrapf(store.ErrConflict, "snapshot for height %v format %v is currently being saved", height, format) } - b := s.db.NewBatch() - defer b.Close() - if err := b.Delete(encodeKey(height, format)); err != nil { - return errors.Wrapf(err, "failed to delete item in the batch") - } - if err := b.WriteSync(); err != nil { - return errors.Wrapf(err, "failed to delete snapshot for height %v format %v", - height, format) - } if err := os.RemoveAll(s.pathSnapshot(height, format)); err != nil { - return errors.Wrapf(err, "failed to delete snapshot chunks for height %v format %v", - height, format) + return errors.Wrapf(err, "failed to delete snapshot chunks for height %v format %v", height, format) + } + if err := os.RemoveAll(s.pathMetadata(height, format)); err != nil { + return errors.Wrapf(err, "failed to delete snapshot metadata for height %v format %v", height, format) } return nil } // Get fetches snapshot info from the database. func (s *Store) Get(height uint64, format uint32) (*types.Snapshot, error) { - bytes, err := s.db.Get(encodeKey(height, format)) + if _, err := os.Stat(s.pathMetadata(height, format)); os.IsNotExist(err) { + return nil, nil + } + bytes, err := os.ReadFile(s.pathMetadata(height, format)) if err != nil { return nil, errors.Wrapf(err, "failed to fetch snapshot metadata for height %v format %v", height, format) } - if bytes == nil { - return nil, nil - } snapshot := &types.Snapshot{} err = proto.Unmarshal(bytes, snapshot) if err != nil { @@ -96,44 +94,62 @@ func (s *Store) Get(height uint64, format uint32) (*types.Snapshot, error) { return snapshot, nil } -// Get fetches the latest snapshot from the database, if any. +// GetLatest fetches the latest snapshot from the database, if any. func (s *Store) GetLatest() (*types.Snapshot, error) { - iter, err := s.db.ReverseIterator(encodeKey(0, 0), encodeKey(uint64(math.MaxUint64), math.MaxUint32)) + metadata, err := os.ReadDir(s.pathMetadataDir()) if err != nil { - return nil, errors.Wrap(err, "failed to find latest snapshot") + return nil, errors.Wrap(err, "failed to list snapshot metadata") } - defer iter.Close() + if len(metadata) == 0 { + return nil, nil + } + // file system may not guarantee the order of the files, so we sort them lexically + sort.Slice(metadata, func(i, j int) bool { return metadata[i].Name() < metadata[j].Name() }) - var snapshot *types.Snapshot - if iter.Valid() { - snapshot = &types.Snapshot{} - err := proto.Unmarshal(iter.Value(), snapshot) - if err != nil { - return nil, errors.Wrap(err, "failed to decode latest snapshot") - } + path := filepath.Join(s.pathMetadataDir(), metadata[len(metadata)-1].Name()) + if err := s.validateMetadataPath(path); err != nil { + return nil, err + } + bz, err := os.ReadFile(path) + if err != nil { + return nil, errors.Wrapf(err, "failed to read latest snapshot metadata %s", path) } - err = iter.Error() - return snapshot, errors.Wrap(err, "failed to find latest snapshot") + + snapshot := &types.Snapshot{} + err = proto.Unmarshal(bz, snapshot) + if err != nil { + return nil, errors.Wrapf(err, "failed to decode latest snapshot metadata %s", path) + } + return snapshot, nil } // List lists snapshots, in reverse order (newest first). func (s *Store) List() ([]*types.Snapshot, error) { - iter, err := s.db.ReverseIterator(encodeKey(0, 0), encodeKey(uint64(math.MaxUint64), math.MaxUint32)) + metadata, err := os.ReadDir(s.pathMetadataDir()) if err != nil { - return nil, errors.Wrap(err, "failed to list snapshots") + return nil, errors.Wrap(err, "failed to list snapshot metadata") } - defer iter.Close() + // file system may not guarantee the order of the files, so we sort them lexically + sort.Slice(metadata, func(i, j int) bool { return metadata[i].Name() < metadata[j].Name() }) - snapshots := make([]*types.Snapshot, 0) - for ; iter.Valid(); iter.Next() { + snapshots := make([]*types.Snapshot, len(metadata)) + for i, entry := range metadata { + path := filepath.Join(s.pathMetadataDir(), entry.Name()) + if err := s.validateMetadataPath(path); err != nil { + return nil, err + } + bz, err := os.ReadFile(path) + if err != nil { + return nil, errors.Wrapf(err, "failed to read snapshot metadata %s", entry.Name()) + } snapshot := &types.Snapshot{} - err := proto.Unmarshal(iter.Value(), snapshot) + err = proto.Unmarshal(bz, snapshot) if err != nil { - return nil, errors.Wrap(err, "failed to decode snapshot info") + return nil, errors.Wrapf(err, "failed to decode snapshot metadata %s", entry.Name()) } - snapshots = append(snapshots, snapshot) + snapshots[len(metadata)-1-i] = snapshot } - return snapshots, iter.Error() + return snapshots, nil } // Load loads a snapshot (both metadata and binary chunks). The chunks must be consumed and closed. @@ -188,25 +204,25 @@ func (s *Store) loadChunkFile(height uint64, format, chunk uint32) (io.ReadClose // Prune removes old snapshots. The given number of most recent heights (regardless of format) are retained. func (s *Store) Prune(retain uint32) (uint64, error) { - iter, err := s.db.ReverseIterator(encodeKey(0, 0), encodeKey(uint64(math.MaxUint64), math.MaxUint32)) + metadata, err := os.ReadDir(s.pathMetadataDir()) if err != nil { - return 0, errors.Wrap(err, "failed to prune snapshots") + return 0, errors.Wrap(err, "failed to list snapshot metadata") } - defer iter.Close() pruned := uint64(0) prunedHeights := make(map[uint64]bool) skip := make(map[uint64]bool) - for ; iter.Valid(); iter.Next() { - height, format, err := decodeKey(iter.Key()) + for i := len(metadata) - 1; i >= 0; i-- { + height, format, err := s.parseMetadataFilename(metadata[i].Name()) if err != nil { - return 0, errors.Wrap(err, "failed to prune snapshots") + return 0, err } + if skip[height] || uint32(len(skip)) < retain { skip[height] = true continue } - err = s.Delete(height, format) + err = s.Delete(height, uint32(format)) if err != nil { return 0, errors.Wrap(err, "failed to prune snapshots") } @@ -223,7 +239,7 @@ func (s *Store) Prune(retain uint32) (uint64, error) { } } } - return pruned, iter.Error() + return pruned, nil } // Save saves a snapshot to disk, returning it. @@ -249,37 +265,24 @@ func (s *Store) Save( s.mtx.Unlock() }() - exists, err := s.db.Has(encodeKey(height, format)) - if err != nil { - return nil, err - } - if exists { - return nil, errors.Wrapf(store.ErrConflict, - "snapshot already exists for height %v format %v", height, format) - } - snapshot := &types.Snapshot{ Height: height, Format: format, } - dirCreated := false + // create height directory or do nothing + if err := os.MkdirAll(s.pathHeight(height), 0o750); err != nil { + return nil, errors.Wrapf(err, "failed to create snapshot directory for height %v", height) + } + // create format directory or fail (if for example the format directory already exists) + if err := os.Mkdir(s.pathSnapshot(height, format), 0o750); err != nil { + return nil, errors.Wrapf(err, "failed to create snapshot directory for height %v format %v", height, format) + } + index := uint32(0) snapshotHasher := sha256.New() chunkHasher := sha256.New() for chunkBody := range chunks { - // Only create the snapshot directory on encountering the first chunk. - // If the directory disappears during chunk saving, - // the whole operation will fail anyway. - if !dirCreated { - dir := s.pathSnapshot(height, format) - if err := os.MkdirAll(dir, 0o755); err != nil { - return nil, errors.Wrapf(err, "failed to create snapshot directory %q", dir) - } - - dirCreated = true - } - if err := s.saveChunk(chunkBody, index, snapshot, chunkHasher, snapshotHasher); err != nil { return nil, err } @@ -332,13 +335,9 @@ func (s *Store) saveSnapshot(snapshot *types.Snapshot) error { if err != nil { return errors.Wrap(err, "failed to encode snapshot metadata") } - b := s.db.NewBatch() - defer b.Close() - if err := b.Set(encodeKey(snapshot.Height, snapshot.Format), value); err != nil { - return errors.Wrap(err, "failed to set snapshot in batch") - } - if err := b.WriteSync(); err != nil { - return errors.Wrap(err, "failed to store snapshot") + err = os.WriteFile(s.pathMetadata(snapshot.Height, snapshot.Format), value, 0o600) + if err != nil { + return errors.Wrap(err, "failed to write snapshot metadata") } return nil } @@ -353,13 +352,52 @@ func (s *Store) pathSnapshot(height uint64, format uint32) string { return filepath.Join(s.pathHeight(height), strconv.FormatUint(uint64(format), 10)) } +func (s *Store) pathMetadataDir() string { + return filepath.Join(s.dir, "metadata") +} + +// pathMetadata generates a snapshot metadata path. +func (s *Store) pathMetadata(height uint64, format uint32) string { + return filepath.Join(s.pathMetadataDir(), fmt.Sprintf("%020d-%08d", height, format)) +} + // PathChunk generates a snapshot chunk path. func (s *Store) PathChunk(height uint64, format, chunk uint32) string { return filepath.Join(s.pathSnapshot(height, format), strconv.FormatUint(uint64(chunk), 10)) } -// decodeKey decodes a snapshot key. -func decodeKey(k []byte) (uint64, uint32, error) { +func (s *Store) parseMetadataFilename(filename string) (height uint64, format uint32, err error) { + parts := strings.Split(filename, "-") + if len(parts) != 2 { + return 0, 0, fmt.Errorf("invalid snapshot metadata filename %s", filename) + } + height, err = strconv.ParseUint(parts[0], 10, 64) + if err != nil { + return 0, 0, errors.Wrapf(err, "invalid snapshot metadata filename %s", filename) + } + var f uint64 + f, err = strconv.ParseUint(parts[1], 10, 32) + if err != nil { + return 0, 0, errors.Wrapf(err, "invalid snapshot metadata filename %s", filename) + } + format = uint32(f) + if filename != filepath.Base(s.pathMetadata(height, uint32(format))) { + return 0, 0, fmt.Errorf("invalid snapshot metadata filename %s", filename) + } + return height, format, nil +} + +func (s *Store) validateMetadataPath(path string) error { + dir, f := filepath.Split(path) + if dir != fmt.Sprintf("%s/", s.pathMetadataDir()) { + return fmt.Errorf("invalid snapshot metadata path %s", path) + } + _, _, err := s.parseMetadataFilename(f) + return err +} + +// legacyV1DecodeKey decodes a legacy snapshot key used in a raw kv store. +func legacyV1DecodeKey(k []byte) (uint64, uint32, error) { if len(k) != 13 { return 0, 0, errors.Wrapf(store.ErrLogic, "invalid snapshot key with length %v", len(k)) } @@ -372,11 +410,29 @@ func decodeKey(k []byte) (uint64, uint32, error) { return height, format, nil } -// encodeKey encodes a snapshot key. -func encodeKey(height uint64, format uint32) []byte { +// legacyV1EncodeKey encodes a snapshot key for use in a raw kv store. +func legacyV1EncodeKey(height uint64, format uint32) []byte { k := make([]byte, 13) k[0] = keyPrefixSnapshot binary.BigEndian.PutUint64(k[1:], height) binary.BigEndian.PutUint32(k[9:], format) return k } + +func (s *Store) MigrateFromV1(db store.RawDB) error { + itr, err := db.Iterator(legacyV1EncodeKey(0, 0), legacyV1EncodeKey(math.MaxUint64, math.MaxUint32)) + if err != nil { + return err + } + defer itr.Close() + for ; itr.Valid(); itr.Next() { + height, format, err := legacyV1DecodeKey(itr.Key()) + if err != nil { + return err + } + if err := os.WriteFile(s.pathMetadata(height, format), itr.Value(), 0o600); err != nil { + return errors.Wrapf(err, "failed to write snapshot metadata %q", s.pathMetadata(height, format)) + } + } + return nil +} diff --git a/store/snapshots/store_test.go b/store/snapshots/store_test.go index 07f4d4a6d515..c6708ec8d73c 100644 --- a/store/snapshots/store_test.go +++ b/store/snapshots/store_test.go @@ -10,14 +10,13 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - dbm "cosmossdk.io/store/v2/db" "cosmossdk.io/store/v2/snapshots" "cosmossdk.io/store/v2/snapshots/types" ) func setupStore(t *testing.T) *snapshots.Store { t.Helper() - store, err := snapshots.NewStore(dbm.NewMemDB(), GetTempDir(t)) + store, err := snapshots.NewStore(GetTempDir(t)) require.NoError(t, err) _, err = store.Save(1, 1, makeChunks([][]byte{ @@ -42,13 +41,13 @@ func setupStore(t *testing.T) *snapshots.Store { func TestNewStore(t *testing.T) { tempdir := GetTempDir(t) - _, err := snapshots.NewStore(dbm.NewMemDB(), tempdir) + _, err := snapshots.NewStore(tempdir) require.NoError(t, err) } func TestNewStore_ErrNoDir(t *testing.T) { - _, err := snapshots.NewStore(dbm.NewMemDB(), "") + _, err := snapshots.NewStore("") require.Error(t, err) } From 7155a1cd5278879dd7a747e39888239959bf9083 Mon Sep 17 00:00:00 2001 From: Nikhil Vasan <97126437+nivasan1@users.noreply.github.com> Date: Fri, 1 Mar 2024 11:25:33 -0500 Subject: [PATCH 16/18] Merge pull request from GHSA-95rx-m9m5-m94v * validate ExtendedCommit against LastCommit * test cases * lint --------- Co-authored-by: Marko --- baseapp/abci_test.go | 10 +- baseapp/abci_utils.go | 65 +++++++++-- baseapp/abci_utils_test.go | 222 +++++++++++++++++++++++++++++++++++-- 3 files changed, 280 insertions(+), 17 deletions(-) diff --git a/baseapp/abci_test.go b/baseapp/abci_test.go index a4f254260bea..3fd7d86bb647 100644 --- a/baseapp/abci_test.go +++ b/baseapp/abci_test.go @@ -1804,7 +1804,10 @@ func TestABCI_PrepareProposal_VoteExtensions(t *testing.T) { // set up baseapp prepareOpt := func(bapp *baseapp.BaseApp) { bapp.SetPrepareProposal(func(ctx sdk.Context, req *abci.RequestPrepareProposal) (*abci.ResponsePrepareProposal, error) { - err := baseapp.ValidateVoteExtensions(ctx, valStore, req.Height, bapp.ChainID(), req.LocalLastCommit) + ctx = ctx.WithBlockHeight(req.Height).WithChainID(bapp.ChainID()) + _, info := extendedCommitToLastCommit(req.LocalLastCommit) + ctx = ctx.WithCometInfo(info) + err := baseapp.ValidateVoteExtensions(ctx, valStore, req.LocalLastCommit) if err != nil { return nil, err } @@ -2111,7 +2114,10 @@ func TestBaseApp_VoteExtensions(t *testing.T) { app.SetPrepareProposal(func(ctx sdk.Context, req *abci.RequestPrepareProposal) (*abci.ResponsePrepareProposal, error) { txs := [][]byte{} - if err := baseapp.ValidateVoteExtensions(ctx, valStore, req.Height, app.ChainID(), req.LocalLastCommit); err != nil { + ctx = ctx.WithBlockHeight(req.Height).WithChainID(app.ChainID()) + _, info := extendedCommitToLastCommit(req.LocalLastCommit) + ctx = ctx.WithCometInfo(info) + if err := baseapp.ValidateVoteExtensions(ctx, valStore, req.LocalLastCommit); err != nil { return nil, err } // add all VE as txs (in a real scenario we would need to check signatures too) diff --git a/baseapp/abci_utils.go b/baseapp/abci_utils.go index f31446d540b7..450f4c9b235c 100644 --- a/baseapp/abci_utils.go +++ b/baseapp/abci_utils.go @@ -4,6 +4,7 @@ import ( "bytes" "context" "fmt" + "slices" "github.com/cockroachdb/errors" abci "github.com/cometbft/cometbft/abci/types" @@ -14,6 +15,7 @@ import ( protoio "github.com/cosmos/gogoproto/io" "github.com/cosmos/gogoproto/proto" + "cosmossdk.io/core/comet" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/mempool" ) @@ -40,11 +42,19 @@ type ( func ValidateVoteExtensions( ctx sdk.Context, valStore ValidatorStore, - currentHeight int64, - chainID string, extCommit abci.ExtendedCommitInfo, ) error { + // Get values from context cp := ctx.ConsensusParams() + currentHeight := ctx.BlockHeight() + chainID := ctx.BlockHeader().ChainID + commitInfo := ctx.CometInfo().LastCommit + + // Check that both extCommit + commit are ordered in accordance with vp/address. + if err := validateExtendedCommitAgainstLastCommit(extCommit, commitInfo); err != nil { + return err + } + // Start checking vote extensions only **after** the vote extensions enable // height, because when `currentHeight == VoteExtensionsEnableHeight` // PrepareProposal doesn't get any vote extensions in its request. @@ -65,7 +75,6 @@ func ValidateVoteExtensions( sumVP int64 ) - cache := make(map[string]struct{}) for _, vote := range extCommit.Votes { totalVP += vote.Validator.Power @@ -90,12 +99,7 @@ func ValidateVoteExtensions( return fmt.Errorf("vote extensions enabled; received empty vote extension signature at height %d", currentHeight) } - // Ensure that the validator has not already submitted a vote extension. valConsAddr := sdk.ConsAddress(vote.Validator.Address) - if _, ok := cache[valConsAddr.String()]; ok { - return fmt.Errorf("duplicate validator; validator %s has already submitted a vote extension", valConsAddr.String()) - } - cache[valConsAddr.String()] = struct{}{} pubKeyProto, err := valStore.GetPubKeyByConsAddr(ctx, valConsAddr) if err != nil { @@ -141,6 +145,51 @@ func ValidateVoteExtensions( return nil } +// validateExtendedCommitAgainstLastCommit validates an ExtendedCommitInfo against a LastCommit. Specifically, +// it checks that the ExtendedCommit + LastCommit (for the same height), are consistent with each other + that +// they are ordered correctly (by voting power) in accordance with +// [comet](https://github.com/cometbft/cometbft/blob/4ce0277b35f31985bbf2c25d3806a184a4510010/types/validator_set.go#L784). +func validateExtendedCommitAgainstLastCommit(ec abci.ExtendedCommitInfo, lc comet.CommitInfo) error { + // check that the rounds are the same + if ec.Round != lc.Round { + return fmt.Errorf("extended commit round %d does not match last commit round %d", ec.Round, lc.Round) + } + + // check that the # of votes are the same + if len(ec.Votes) != len(lc.Votes) { + return fmt.Errorf("extended commit votes length %d does not match last commit votes length %d", len(ec.Votes), len(lc.Votes)) + } + + // check sort order of extended commit votes + if !slices.IsSortedFunc(ec.Votes, func(vote1, vote2 abci.ExtendedVoteInfo) int { + if vote1.Validator.Power == vote2.Validator.Power { + return bytes.Compare(vote1.Validator.Address, vote2.Validator.Address) // addresses sorted in ascending order (used to break vp conflicts) + } + return -int(vote1.Validator.Power - vote2.Validator.Power) // vp sorted in descending order + }) { + return fmt.Errorf("extended commit votes are not sorted by voting power") + } + + addressCache := make(map[string]struct{}, len(ec.Votes)) + // check consistency between LastCommit and ExtendedCommit + for i, vote := range ec.Votes { + // cache addresses to check for duplicates + if _, ok := addressCache[string(vote.Validator.Address)]; ok { + return fmt.Errorf("extended commit vote address %X is duplicated", vote.Validator.Address) + } + addressCache[string(vote.Validator.Address)] = struct{}{} + + if !bytes.Equal(vote.Validator.Address, lc.Votes[i].Validator.Address) { + return fmt.Errorf("extended commit vote address %X does not match last commit vote address %X", vote.Validator.Address, lc.Votes[i].Validator.Address) + } + if vote.Validator.Power != lc.Votes[i].Validator.Power { + return fmt.Errorf("extended commit vote power %d does not match last commit vote power %d", vote.Validator.Power, lc.Votes[i].Validator.Power) + } + } + + return nil +} + type ( // ProposalTxVerifier defines the interface that is implemented by BaseApp, // that any custom ABCI PrepareProposal and ProcessProposal handler can use diff --git a/baseapp/abci_utils_test.go b/baseapp/abci_utils_test.go index d0845c51040d..7157d3ac9cc3 100644 --- a/baseapp/abci_utils_test.go +++ b/baseapp/abci_utils_test.go @@ -2,6 +2,7 @@ package baseapp_test import ( "bytes" + "sort" "testing" abci "github.com/cometbft/cometbft/abci/types" @@ -19,6 +20,7 @@ import ( "cosmossdk.io/log" authtx "cosmossdk.io/x/auth/tx" + "cosmossdk.io/core/comet" "github.com/cosmos/cosmos-sdk/baseapp" baseapptestutil "github.com/cosmos/cosmos-sdk/baseapp/testutil" "github.com/cosmos/cosmos-sdk/baseapp/testutil/mock" @@ -64,6 +66,13 @@ func (t testValidator) toValidator(power int64) abci.Validator { } } +func (t testValidator) toSDKValidator(power int64) comet.Validator { + return comet.Validator{ + Address: t.consAddr.Bytes(), + Power: power, + } +} + type ABCIUtilsTestSuite struct { suite.Suite @@ -98,7 +107,9 @@ func NewABCIUtilsTestSuite(t *testing.T) *ABCIUtilsTestSuite { Abci: &cmtproto.ABCIParams{ VoteExtensionsEnableHeight: 2, }, - }) + }).WithBlockHeader(cmtproto.Header{ + ChainID: chainID, + }).WithLogger(log.NewTestLogger(t)) return s } @@ -128,6 +139,8 @@ func (s *ABCIUtilsTestSuite) TestValidateVoteExtensionsHappyPath() { extSig2, err := s.vals[2].privKey.Sign(bz) s.Require().NoError(err) + s.ctx = s.ctx.WithBlockHeight(3) // enable vote-extensions + llc := abci.ExtendedCommitInfo{ Round: 0, Votes: []abci.ExtendedVoteInfo{ @@ -151,8 +164,13 @@ func (s *ABCIUtilsTestSuite) TestValidateVoteExtensionsHappyPath() { }, }, } + + // order + convert to last commit + llc, info := extendedCommitToLastCommit(llc) + s.ctx = s.ctx.WithCometInfo(info) + // expect-pass (votes of height 2 are included in next block) - s.Require().NoError(baseapp.ValidateVoteExtensions(s.ctx, s.valStore, 3, chainID, llc)) + s.Require().NoError(baseapp.ValidateVoteExtensions(s.ctx, s.valStore, llc)) } // check ValidateVoteExtensions works when a single node has submitted a BlockID_Absent @@ -174,6 +192,8 @@ func (s *ABCIUtilsTestSuite) TestValidateVoteExtensionsSingleVoteAbsent() { extSig2, err := s.vals[2].privKey.Sign(bz) s.Require().NoError(err) + s.ctx = s.ctx.WithBlockHeight(3) // vote-extensions are enabled + llc := abci.ExtendedCommitInfo{ Round: 0, Votes: []abci.ExtendedVoteInfo{ @@ -196,8 +216,12 @@ func (s *ABCIUtilsTestSuite) TestValidateVoteExtensionsSingleVoteAbsent() { }, }, } + + llc, info := extendedCommitToLastCommit(llc) + s.ctx = s.ctx.WithCometInfo(info) + // expect-pass (votes of height 2 are included in next block) - s.Require().NoError(baseapp.ValidateVoteExtensions(s.ctx, s.valStore, 3, chainID, llc)) + s.Require().NoError(baseapp.ValidateVoteExtensions(s.ctx, s.valStore, llc)) } // check ValidateVoteExtensions works with duplicate votes @@ -223,15 +247,27 @@ func (s *ABCIUtilsTestSuite) TestValidateVoteExtensionsDuplicateVotes() { BlockIdFlag: cmtproto.BlockIDFlagCommit, } + ve2 := abci.ExtendedVoteInfo{ + Validator: s.vals[0].toValidator(334), // use diff voting-power to dupe + VoteExtension: ext, + ExtensionSignature: extSig0, + BlockIdFlag: cmtproto.BlockIDFlagCommit, + } + llc := abci.ExtendedCommitInfo{ Round: 0, Votes: []abci.ExtendedVoteInfo{ ve, - ve, + ve2, }, } + + s.ctx = s.ctx.WithBlockHeight(3) // vote-extensions are enabled + llc, info := extendedCommitToLastCommit(llc) + s.ctx = s.ctx.WithCometInfo(info) + // expect fail (duplicate votes) - s.Require().Error(baseapp.ValidateVoteExtensions(s.ctx, s.valStore, 3, chainID, llc)) + s.Require().Error(baseapp.ValidateVoteExtensions(s.ctx, s.valStore, llc)) } // check ValidateVoteExtensions works when a single node has submitted a BlockID_Nil @@ -275,8 +311,15 @@ func (s *ABCIUtilsTestSuite) TestValidateVoteExtensionsSingleVoteNil() { }, }, } + + s.ctx = s.ctx.WithBlockHeight(3) // vote-extensions are enabled + + // create last commit + llc, info := extendedCommitToLastCommit(llc) + s.ctx = s.ctx.WithCometInfo(info) + // expect-pass (votes of height 2 are included in next block) - s.Require().NoError(baseapp.ValidateVoteExtensions(s.ctx, s.valStore, 3, chainID, llc)) + s.Require().NoError(baseapp.ValidateVoteExtensions(s.ctx, s.valStore, llc)) } // check ValidateVoteExtensions works when two nodes have submitted a BlockID_Nil / BlockID_Absent @@ -317,8 +360,115 @@ func (s *ABCIUtilsTestSuite) TestValidateVoteExtensionsTwoVotesNilAbsent() { }, } + s.ctx = s.ctx.WithBlockHeight(3) // vote-extensions are enabled + + // create last commit + llc, info := extendedCommitToLastCommit(llc) + s.ctx = s.ctx.WithCometInfo(info) + // expect-pass (votes of height 2 are included in next block) - s.Require().Error(baseapp.ValidateVoteExtensions(s.ctx, s.valStore, 3, chainID, llc)) + s.Require().Error(baseapp.ValidateVoteExtensions(s.ctx, s.valStore, llc)) +} + +func (s *ABCIUtilsTestSuite) TestValidateVoteExtensionsIncorrectVotingPower() { + ext := []byte("vote-extension") + cve := cmtproto.CanonicalVoteExtension{ + Extension: ext, + Height: 2, + Round: int64(0), + ChainId: chainID, + } + + bz, err := marshalDelimitedFn(&cve) + s.Require().NoError(err) + + extSig0, err := s.vals[0].privKey.Sign(bz) + s.Require().NoError(err) + + llc := abci.ExtendedCommitInfo{ + Round: 0, + Votes: []abci.ExtendedVoteInfo{ + // validator of power >2/3 is missing, so commit-info should not be valid + { + Validator: s.vals[0].toValidator(333), + BlockIdFlag: cmtproto.BlockIDFlagCommit, + VoteExtension: ext, + ExtensionSignature: extSig0, + }, + { + Validator: s.vals[1].toValidator(333), + BlockIdFlag: cmtproto.BlockIDFlagNil, + }, + { + Validator: s.vals[2].toValidator(334), + VoteExtension: ext, + BlockIdFlag: cmtproto.BlockIDFlagAbsent, + }, + }, + } + + s.ctx = s.ctx.WithBlockHeight(3) // vote-extensions are enabled + + // create last commit + llc, info := extendedCommitToLastCommit(llc) + s.ctx = s.ctx.WithCometInfo(info) + + // modify voting powers to differ from the last-commit + llc.Votes[0].Validator.Power = 335 + llc.Votes[2].Validator.Power = 332 + + // expect-pass (votes of height 2 are included in next block) + s.Require().Error(baseapp.ValidateVoteExtensions(s.ctx, s.valStore, llc)) +} + +func (s *ABCIUtilsTestSuite) TestValidateVoteExtensionsIncorrecOrder() { + ext := []byte("vote-extension") + cve := cmtproto.CanonicalVoteExtension{ + Extension: ext, + Height: 2, + Round: int64(0), + ChainId: chainID, + } + + bz, err := marshalDelimitedFn(&cve) + s.Require().NoError(err) + + extSig0, err := s.vals[0].privKey.Sign(bz) + s.Require().NoError(err) + + llc := abci.ExtendedCommitInfo{ + Round: 0, + Votes: []abci.ExtendedVoteInfo{ + // validator of power >2/3 is missing, so commit-info should not be valid + { + Validator: s.vals[0].toValidator(333), + BlockIdFlag: cmtproto.BlockIDFlagCommit, + VoteExtension: ext, + ExtensionSignature: extSig0, + }, + { + Validator: s.vals[1].toValidator(333), + BlockIdFlag: cmtproto.BlockIDFlagNil, + }, + { + Validator: s.vals[2].toValidator(334), + VoteExtension: ext, + BlockIdFlag: cmtproto.BlockIDFlagAbsent, + }, + }, + } + + s.ctx = s.ctx.WithBlockHeight(3) // vote-extensions are enabled + + // create last commit + llc, info := extendedCommitToLastCommit(llc) + s.ctx = s.ctx.WithCometInfo(info) + + // modify voting powers to differ from the last-commit + llc.Votes[0], llc.Votes[2] = llc.Votes[2], llc.Votes[0] + + // expect-pass (votes of height 2 are included in next block) + s.Require().Error(baseapp.ValidateVoteExtensions(s.ctx, s.valStore, llc)) } func (s *ABCIUtilsTestSuite) TestDefaultProposalHandler_NoOpMempoolTxSelection() { @@ -603,3 +753,61 @@ func setTxSignatureWithSecret(t *testing.T, builder client.TxBuilder, signatures ) require.NoError(t, err) } + +func extendedCommitToLastCommit(ec abci.ExtendedCommitInfo) (abci.ExtendedCommitInfo, comet.Info) { + // sort the extended commit info + sort.Sort(extendedVoteInfos(ec.Votes)) + + // convert the extended commit info to last commit info + lastCommit := comet.CommitInfo{ + Round: ec.Round, + Votes: make([]comet.VoteInfo, len(ec.Votes)), + } + + for i, vote := range ec.Votes { + lastCommit.Votes[i] = comet.VoteInfo{ + Validator: comet.Validator{ + Address: vote.Validator.Address, + Power: vote.Validator.Power, + }, + } + } + + return ec, comet.Info{ + LastCommit: lastCommit, + } +} + +type voteInfos []comet.VoteInfo + +func (v voteInfos) Len() int { + return len(v) +} + +func (v voteInfos) Less(i, j int) bool { + if v[i].Validator.Power == v[j].Validator.Power { + return bytes.Compare(v[i].Validator.Address, v[j].Validator.Address) == -1 + } + return v[i].Validator.Power > v[j].Validator.Power +} + +func (v voteInfos) Swap(i, j int) { + v[i], v[j] = v[j], v[i] +} + +type extendedVoteInfos []abci.ExtendedVoteInfo + +func (v extendedVoteInfos) Len() int { + return len(v) +} + +func (v extendedVoteInfos) Less(i, j int) bool { + if v[i].Validator.Power == v[j].Validator.Power { + return bytes.Compare(v[i].Validator.Address, v[j].Validator.Address) == -1 + } + return v[i].Validator.Power > v[j].Validator.Power +} + +func (v extendedVoteInfos) Swap(i, j int) { + v[i], v[j] = v[j], v[i] +} From 69f03cd17f2264c8be576f1b71abb02322146bf6 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Fri, 1 Mar 2024 18:24:16 +0100 Subject: [PATCH 17/18] feat(x/gov): add custom fuction to calculate vote results and vp (#19592) --- docs/architecture/adr-069-gov-improvements.md | 18 ++++---- simapp/app.go | 2 +- tests/integration/gov/keeper/keeper_test.go | 2 +- x/gov/CHANGELOG.md | 2 + x/gov/depinject.go | 2 +- x/gov/keeper/common_test.go | 2 +- x/gov/keeper/config.go | 42 +++++++++++++++++++ x/gov/keeper/deposit.go | 6 +-- x/gov/keeper/export_test.go | 2 +- x/gov/keeper/keeper.go | 7 ++-- x/gov/keeper/msg_server.go | 4 +- x/gov/keeper/proposal.go | 2 +- x/gov/keeper/tally.go | 9 +++- x/gov/types/config.go | 20 --------- 14 files changed, 73 insertions(+), 47 deletions(-) create mode 100644 x/gov/keeper/config.go delete mode 100644 x/gov/types/config.go diff --git a/docs/architecture/adr-069-gov-improvements.md b/docs/architecture/adr-069-gov-improvements.md index 6d5c80fad288..af5b12645205 100644 --- a/docs/architecture/adr-069-gov-improvements.md +++ b/docs/architecture/adr-069-gov-improvements.md @@ -164,19 +164,15 @@ Due to the vote option change, each proposal can have the same tallying method. However, chains may want to change the tallying function (weighted vote per voting power) of `x/gov` for a different algorithm (using a quadratic function on the voter stake, for instance). -The custom tallying function can be passed to the `x/gov` keeper with the following interface: +The custom tallying function can be passed to the `x/gov` keeper config: ```go -type Tally interface{ - // to be decided - - // Calculate calculates the tally result - Calculate(proposal v1.Proposal, govKeeper GovKeeper, stakingKeeper StakingKeeper) govv1.TallyResult - // IsAccepted returns true if the proposal passes/is accepted - IsAccepted() bool - // BurnDeposit returns true if the proposal deposit should be burned - BurnDeposit() bool -} +type CalculateVoteResultsAndVotingPowerFn func( + ctx context.Context, + keeper Keeper, + proposalID uint64, + validators map[string]v1.ValidatorGovInfo, +) (totalVoterPower math.LegacyDec, results map[v1.VoteOption]math.LegacyDec, err error) ``` ## Consequences diff --git a/simapp/app.go b/simapp/app.go index 510af074c4aa..2c1e47b95bf5 100644 --- a/simapp/app.go +++ b/simapp/app.go @@ -375,7 +375,7 @@ func NewSimApp( // by granting the governance module the right to execute the message. // See: https://docs.cosmos.network/main/modules/gov#proposal-messages govRouter := govv1beta1.NewRouter() - govConfig := govtypes.DefaultConfig() + govConfig := govkeeper.DefaultConfig() /* Example of setting gov params: govConfig.MaxMetadataLen = 10000 diff --git a/tests/integration/gov/keeper/keeper_test.go b/tests/integration/gov/keeper/keeper_test.go index 39756b834f34..68561f4a7336 100644 --- a/tests/integration/gov/keeper/keeper_test.go +++ b/tests/integration/gov/keeper/keeper_test.go @@ -112,7 +112,7 @@ func initFixture(tb testing.TB) *fixture { stakingKeeper, poolKeeper, router, - types.DefaultConfig(), + keeper.DefaultConfig(), authority.String(), ) assert.NilError(tb, govKeeper.ProposalID.Set(newCtx, 1)) diff --git a/x/gov/CHANGELOG.md b/x/gov/CHANGELOG.md index cc844666388d..0524fd23ff8b 100644 --- a/x/gov/CHANGELOG.md +++ b/x/gov/CHANGELOG.md @@ -27,6 +27,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Features +* [#19592](https://github.com/cosmos/cosmos-sdk/pull/19592) Add custom tally function. * [#19304](https://github.com/cosmos/cosmos-sdk/pull/19304) Add `MsgSudoExec` for allowing executing any message as a sudo. * [#19101](https://github.com/cosmos/cosmos-sdk/pull/19101) Add message based params configuration. * [#18532](https://github.com/cosmos/cosmos-sdk/pull/18532) Add SPAM vote to proposals. @@ -59,6 +60,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### API Breaking Changes +* [#19592](https://github.com/cosmos/cosmos-sdk/pull/19592) `types.Config` and `types.DefaultConfig` have been moved to the keeper package in order to support the custom tallying function. * [#19349](https://github.com/cosmos/cosmos-sdk/pull/19349) Simplify state management in `x/gov`. Note `k.VotingPeriodProposals` and `k.SetProposal` are no longer needed and have been removed. * [#18532](https://github.com/cosmos/cosmos-sdk/pull/18532) All functions that were taking an expedited bool parameter now take a `ProposalType` parameter instead. * [#17496](https://github.com/cosmos/cosmos-sdk/pull/17496) in `x/gov/types/v1beta1/vote.go` `NewVote` was removed, constructing the struct is required for this type. diff --git a/x/gov/depinject.go b/x/gov/depinject.go index 1b99aeccc770..3776ddf46025 100644 --- a/x/gov/depinject.go +++ b/x/gov/depinject.go @@ -60,7 +60,7 @@ type ModuleOutputs struct { } func ProvideModule(in ModuleInputs) ModuleOutputs { - defaultConfig := govtypes.DefaultConfig() + defaultConfig := keeper.DefaultConfig() if in.Config.MaxTitleLen != 0 { defaultConfig.MaxTitleLen = in.Config.MaxTitleLen } diff --git a/x/gov/keeper/common_test.go b/x/gov/keeper/common_test.go index be8d44ea20c9..fb78f6fca0ca 100644 --- a/x/gov/keeper/common_test.go +++ b/x/gov/keeper/common_test.go @@ -130,7 +130,7 @@ func setupGovKeeper(t *testing.T, expectations ...func(sdk.Context, mocks)) ( // Gov keeper initializations - govKeeper := keeper.NewKeeper(encCfg.Codec, storeService, m.acctKeeper, m.bankKeeper, m.stakingKeeper, m.poolKeeper, baseApp.MsgServiceRouter(), types.DefaultConfig(), govAcct.String()) + govKeeper := keeper.NewKeeper(encCfg.Codec, storeService, m.acctKeeper, m.bankKeeper, m.stakingKeeper, m.poolKeeper, baseApp.MsgServiceRouter(), keeper.DefaultConfig(), govAcct.String()) require.NoError(t, govKeeper.ProposalID.Set(ctx, 1)) govRouter := v1beta1.NewRouter() // Also register legacy gov handlers to test them too. govRouter.AddRoute(types.RouterKey, v1beta1.ProposalHandler) diff --git a/x/gov/keeper/config.go b/x/gov/keeper/config.go new file mode 100644 index 000000000000..5e8f3a7d0c6a --- /dev/null +++ b/x/gov/keeper/config.go @@ -0,0 +1,42 @@ +package keeper + +import ( + "context" + + "cosmossdk.io/math" + v1 "cosmossdk.io/x/gov/types/v1" +) + +// CalculateVoteResultsAndVotingPowerFn is a function signature for calculating vote results and voting power +// It can be overridden to customize the voting power calculation for proposals +// It gets the proposal tallied and the validators governance infos (bonded tokens, voting power, etc.) +// It must return the total voting power and the results of the vote +type CalculateVoteResultsAndVotingPowerFn func( + ctx context.Context, + keeper Keeper, + proposalID uint64, + validators map[string]v1.ValidatorGovInfo, +) (totalVoterPower math.LegacyDec, results map[v1.VoteOption]math.LegacyDec, err error) + +// Config is a config struct used for initializing the gov module to avoid using globals. +type Config struct { + // MaxTitleLen defines the amount of characters that can be used for proposal title + MaxTitleLen uint64 + // MaxMetadataLen defines the amount of characters that can be used for proposal metadata + MaxMetadataLen uint64 + // MaxSummaryLen defines the amount of characters that can be used for proposal summary + MaxSummaryLen uint64 + // CalculateVoteResultsAndVotingPowerFn is a function signature for calculating vote results and voting power + // Keeping it nil will use the default implementation + CalculateVoteResultsAndVotingPowerFn CalculateVoteResultsAndVotingPowerFn +} + +// DefaultConfig returns the default config for gov. +func DefaultConfig() Config { + return Config{ + MaxTitleLen: 255, + MaxMetadataLen: 255, + MaxSummaryLen: 10200, + CalculateVoteResultsAndVotingPowerFn: nil, + } +} diff --git a/x/gov/keeper/deposit.go b/x/gov/keeper/deposit.go index 34512ae253bf..ece9eac79059 100644 --- a/x/gov/keeper/deposit.go +++ b/x/gov/keeper/deposit.go @@ -98,7 +98,7 @@ func (k Keeper) AddDeposit(ctx context.Context, proposalID uint64, depositorAddr } // the deposit must only contain valid denoms (listed in the min deposit param) - if err := k.validateDepositDenom(ctx, params, depositAmount); err != nil { + if err := k.validateDepositDenom(params, depositAmount); err != nil { return false, err } @@ -280,7 +280,7 @@ func (k Keeper) ChargeDeposit(ctx context.Context, proposalID uint64, destAddres // validateInitialDeposit validates if initial deposit is greater than or equal to the minimum // required at the time of proposal submission. This threshold amount is determined by // the deposit parameters. Returns nil on success, error otherwise. -func (k Keeper) validateInitialDeposit(ctx context.Context, params v1.Params, initialDeposit sdk.Coins, proposalType v1.ProposalType) error { +func (k Keeper) validateInitialDeposit(params v1.Params, initialDeposit sdk.Coins, proposalType v1.ProposalType) error { if !initialDeposit.IsValid() || initialDeposit.IsAnyNegative() { return errors.Wrap(sdkerrors.ErrInvalidCoins, initialDeposit.String()) } @@ -311,7 +311,7 @@ func (k Keeper) validateInitialDeposit(ctx context.Context, params v1.Params, in } // validateDepositDenom validates if the deposit denom is accepted by the governance module. -func (k Keeper) validateDepositDenom(ctx context.Context, params v1.Params, depositAmount sdk.Coins) error { +func (k Keeper) validateDepositDenom(params v1.Params, depositAmount sdk.Coins) error { denoms := []string{} acceptedDenoms := make(map[string]bool, len(params.MinDeposit)) for _, coin := range params.MinDeposit { diff --git a/x/gov/keeper/export_test.go b/x/gov/keeper/export_test.go index 1421e96781d1..8294a34d95b7 100644 --- a/x/gov/keeper/export_test.go +++ b/x/gov/keeper/export_test.go @@ -14,5 +14,5 @@ func (k Keeper) ValidateInitialDeposit(ctx sdk.Context, initialDeposit sdk.Coins return err } - return k.validateInitialDeposit(ctx, params, initialDeposit, proposalType) + return k.validateInitialDeposit(params, initialDeposit, proposalType) } diff --git a/x/gov/keeper/keeper.go b/x/gov/keeper/keeper.go index 6a82442a401c..6ffa959c71c1 100644 --- a/x/gov/keeper/keeper.go +++ b/x/gov/keeper/keeper.go @@ -42,7 +42,8 @@ type Keeper struct { // Msg server router router baseapp.MessageRouter - config types.Config + // Config represent extra module configuration + config Config // the address capable of executing a MsgUpdateParams message. Typically, this // should be the x/gov module account. @@ -88,7 +89,7 @@ func (k Keeper) GetAuthority() string { func NewKeeper( cdc codec.Codec, storeService corestoretypes.KVStoreService, authKeeper types.AccountKeeper, bankKeeper types.BankKeeper, sk types.StakingKeeper, pk types.PoolKeeper, - router baseapp.MessageRouter, config types.Config, authority string, + router baseapp.MessageRouter, config Config, authority string, ) *Keeper { // ensure governance module account is set if addr := authKeeper.GetModuleAddress(types.ModuleName); addr == nil { @@ -99,7 +100,7 @@ func NewKeeper( panic(fmt.Sprintf("invalid authority address: %s", authority)) } - defaultConfig := types.DefaultConfig() + defaultConfig := DefaultConfig() // If MaxMetadataLen not set by app developer, set to default value. if config.MaxTitleLen == 0 { config.MaxTitleLen = defaultConfig.MaxTitleLen diff --git a/x/gov/keeper/msg_server.go b/x/gov/keeper/msg_server.go index 9fd9b8b6c86f..e6cc63a2b8f6 100644 --- a/x/gov/keeper/msg_server.go +++ b/x/gov/keeper/msg_server.go @@ -76,11 +76,11 @@ func (k msgServer) SubmitProposal(goCtx context.Context, msg *v1.MsgSubmitPropos if msg.Expedited { // checking for backward compatibility msg.ProposalType = v1.ProposalType_PROPOSAL_TYPE_EXPEDITED } - if err := k.validateInitialDeposit(ctx, params, msg.GetInitialDeposit(), msg.ProposalType); err != nil { + if err := k.validateInitialDeposit(params, msg.GetInitialDeposit(), msg.ProposalType); err != nil { return nil, err } - if err := k.validateDepositDenom(ctx, params, msg.GetInitialDeposit()); err != nil { + if err := k.validateDepositDenom(params, msg.GetInitialDeposit()); err != nil { return nil, err } diff --git a/x/gov/keeper/proposal.go b/x/gov/keeper/proposal.go index 73d4566fa5a0..8e7801f8f520 100644 --- a/x/gov/keeper/proposal.go +++ b/x/gov/keeper/proposal.go @@ -264,7 +264,7 @@ func (k Keeper) ActivateVotingPeriod(ctx context.Context, proposal v1.Proposal) customMessageParams, err := k.MessageBasedParams.Get(ctx, sdk.MsgTypeURL(proposal.Messages[0])) if err == nil { votingPeriod = customMessageParams.VotingPeriod - } else if err != nil && !errors.Is(err, collections.ErrNotFound) { + } else if !errors.Is(err, collections.ErrNotFound) { return err } } diff --git a/x/gov/keeper/tally.go b/x/gov/keeper/tally.go index bf45e796e9c1..8f87ec3570d2 100644 --- a/x/gov/keeper/tally.go +++ b/x/gov/keeper/tally.go @@ -18,7 +18,11 @@ func (k Keeper) Tally(ctx context.Context, proposal v1.Proposal) (passes, burnDe return false, false, v1.TallyResult{}, err } - totalVoterPower, results, err := k.calculateVoteResultsAndVotingPower(ctx, proposal.Id, validators) + if k.config.CalculateVoteResultsAndVotingPowerFn == nil { + k.config.CalculateVoteResultsAndVotingPowerFn = defaultCalculateVoteResultsAndVotingPower + } + + totalVoterPower, results, err := k.config.CalculateVoteResultsAndVotingPowerFn(ctx, k, proposal.Id, validators) if err != nil { return false, false, v1.TallyResult{}, err } @@ -232,8 +236,9 @@ func (k Keeper) getCurrentValidators(ctx context.Context) (map[string]v1.Validat // calculateVoteResultsAndVotingPower iterate over all votes, tally up the voting power of each validator // and returns the votes results from voters -func (k Keeper) calculateVoteResultsAndVotingPower( +func defaultCalculateVoteResultsAndVotingPower( ctx context.Context, + k Keeper, proposalID uint64, validators map[string]v1.ValidatorGovInfo, ) (math.LegacyDec, map[v1.VoteOption]math.LegacyDec, error) { diff --git a/x/gov/types/config.go b/x/gov/types/config.go deleted file mode 100644 index 919d54e5b9ad..000000000000 --- a/x/gov/types/config.go +++ /dev/null @@ -1,20 +0,0 @@ -package types - -// Config is a config struct used for initializing the gov module to avoid using globals. -type Config struct { - // MaxTitleLen defines the amount of characters that can be used for proposal title - MaxTitleLen uint64 - // MaxMetadataLen defines the amount of characters that can be used for proposal metadata. - MaxMetadataLen uint64 - // MaxSummaryLen defines the amount of characters that can be used for proposal summary - MaxSummaryLen uint64 -} - -// DefaultConfig returns the default config for gov. -func DefaultConfig() Config { - return Config{ - MaxTitleLen: 255, - MaxMetadataLen: 255, - MaxSummaryLen: 10200, - } -} From 7628592c6a1fbefdff0afa71e89f08b147a02977 Mon Sep 17 00:00:00 2001 From: Marko Date: Fri, 1 Mar 2024 19:05:20 +0100 Subject: [PATCH 18/18] chore(core): bring changes from serverv2 (#19617) --- core/CHANGELOG.md | 11 +++ core/appmodule/environment.go | 17 +--- core/appmodule/module.go | 41 +++------ core/appmodule/v2/appmodule.go | 92 ++++++++++++++++++++ core/appmodule/v2/environment.go | 22 +++++ core/appmodule/v2/genesis.go | 17 ++++ core/appmodule/v2/handlers.go | 142 +++++++++++++++++++++++++++++++ core/appmodule/v2/message.go | 21 +++++ core/appmodule/v2/migrations.go | 41 +++++++++ core/event/event.go | 29 +++++++ core/event/service.go | 9 -- core/gas/meter.go | 17 +++- core/go.mod | 3 + core/go.sum | 5 ++ core/store/database.go | 23 +++++ core/transaction/transaction.go | 32 +++++++ 16 files changed, 470 insertions(+), 52 deletions(-) create mode 100644 core/appmodule/v2/appmodule.go create mode 100644 core/appmodule/v2/environment.go create mode 100644 core/appmodule/v2/genesis.go create mode 100644 core/appmodule/v2/handlers.go create mode 100644 core/appmodule/v2/message.go create mode 100644 core/appmodule/v2/migrations.go create mode 100644 core/event/event.go create mode 100644 core/store/database.go create mode 100644 core/transaction/transaction.go diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index 27ee7b8be825..8dec182fa0c3 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -42,6 +42,17 @@ Ref: https://keepachangelog.com/en/1.0.0/ * [#18457](https://github.com/cosmos/cosmos-sdk/pull/18457) Add branch.ExecuteWithGasLimit. * [#19041](https://github.com/cosmos/cosmos-sdk/pull/19041) Add `appmodule.Environment` interface to fetch different services * [#19370](https://github.com/cosmos/cosmos-sdk/pull/19370) Add `appmodule.Migrations` interface to handle migrations +* [#19617](https://github.com/cosmos/cosmos-sdk/pull/19617) Add DataBaseService to store non-consensus data in a database + * Create V2 appmodule with v2 api for runtime/v2 + * Introduce `Transaction.Tx` for use in runtime/v2 + * Introduce `HasUpdateValidators` interface and `ValidatorUpdate` struct for validator updates + * Introduce `HasTxValidation` interface for modules to register tx validation handlers + * `HasGenesis` interface for modules to register import, export, validation and default genesis handlers. The new api works with `proto.Message` + * Add `PreMsghandler`and `PostMsgHandler` for pre and post message hooks + * Add `MsgHandler` as an alternative to grpc handlers + * Provide separate `MigrationRegistrar` instead of grouping with `RegisterServices` + +### Improvements ### API Breaking Changes diff --git a/core/appmodule/environment.go b/core/appmodule/environment.go index 17ab778191c0..93778e9e9bbe 100644 --- a/core/appmodule/environment.go +++ b/core/appmodule/environment.go @@ -1,21 +1,8 @@ package appmodule import ( - "cosmossdk.io/core/branch" - "cosmossdk.io/core/event" - "cosmossdk.io/core/gas" - "cosmossdk.io/core/header" - "cosmossdk.io/core/store" - "cosmossdk.io/log" + appmodule "cosmossdk.io/core/appmodule/v2" ) // Environment is used to get all services to their respective module -type Environment struct { - BranchService branch.Service - EventService event.Service - GasService gas.Service - HeaderService header.Service - KVStoreService store.KVStoreService - MemStoreService store.MemoryStoreService - Logger log.Logger -} +type Environment = appmodule.Environment diff --git a/core/appmodule/module.go b/core/appmodule/module.go index ac30c246fde8..7f352a28e7b6 100644 --- a/core/appmodule/module.go +++ b/core/appmodule/module.go @@ -5,20 +5,27 @@ import ( "google.golang.org/grpc" "google.golang.org/protobuf/runtime/protoiface" + + appmodule "cosmossdk.io/core/appmodule/v2" ) // AppModule is a tag interface for app module implementations to use as a basis // for extension interfaces. It provides no functionality itself, but is the // type that all valid app modules should provide so that they can be identified // by other modules (usually via depinject) as app modules. -type AppModule interface { - // IsAppModule is a dummy method to tag a struct as implementing an AppModule. - IsAppModule() +type AppModule = appmodule.AppModule + +// HasMigrations is the extension interface that modules should implement to register migrations. +type HasMigrations interface { + AppModule - // IsOnePerModuleType is a dummy method to help depinject resolve modules. - IsOnePerModuleType() + // RegisterMigrations registers the module's migrations with the app's migrator. + RegisterMigrations(MigrationRegistrar) error } +// HasConsensusVersion is the interface for declaring a module consensus version. +type HasConsensusVersion = appmodule.HasConsensusVersion + // HasServices is the extension interface that modules should implement to register // implementations of services defined in .proto files. type HasServices interface { @@ -39,14 +46,6 @@ type HasServices interface { RegisterServices(grpc.ServiceRegistrar) error } -// HasMigrations is the extension interface that modules should implement to register migrations. -type HasMigrations interface { - AppModule - - // RegisterMigrations registers the module's migrations with the app's migrator. - RegisterMigrations(MigrationRegistrar) error -} - // ResponsePreBlock represents the response from the PreBlock method. // It can modify consensus parameters in storage and signal the caller through the return value. // When it returns ConsensusParamsChanged=true, the caller must refresh the consensus parameter in the finalize context. @@ -65,23 +64,11 @@ type HasPreBlocker interface { // HasBeginBlocker is the extension interface that modules should implement to run // custom logic before transaction processing in a block. -type HasBeginBlocker interface { - AppModule - - // BeginBlock is a method that will be run before transactions are processed in - // a block. - BeginBlock(context.Context) error -} +type HasBeginBlocker = appmodule.HasBeginBlocker // HasEndBlocker is the extension interface that modules should implement to run // custom logic after transaction processing in a block. -type HasEndBlocker interface { - AppModule - - // EndBlock is a method that will be run after transactions are processed in - // a block. - EndBlock(context.Context) error -} +type HasEndBlocker = appmodule.HasEndBlocker // MsgHandlerRouter is implemented by the runtime provider. type MsgHandlerRouter interface { diff --git a/core/appmodule/v2/appmodule.go b/core/appmodule/v2/appmodule.go new file mode 100644 index 000000000000..eb44c9f513b8 --- /dev/null +++ b/core/appmodule/v2/appmodule.go @@ -0,0 +1,92 @@ +package appmodule + +import ( + "context" + + "cosmossdk.io/core/transaction" +) + +// AppModule is a tag interface for app module implementations to use as a basis +// for extension interfaces. It provides no functionality itself, but is the +// type that all valid app modules should provide so that they can be identified +// by other modules (usually via depinject) as app modules. +type AppModule interface { + // IsAppModule is a dummy method to tag a struct as implementing an AppModule. + IsAppModule() + + // IsOnePerModuleType is a dummy method to help depinject resolve modules. + IsOnePerModuleType() +} + +// HasBeginBlocker is the extension interface that modules should implement to run +// custom logic before transaction processing in a block. +type HasBeginBlocker interface { + AppModule + + // BeginBlock is a method that will be run before transactions are processed in + // a block. + BeginBlock(context.Context) error +} + +// HasEndBlocker is the extension interface that modules should implement to run +// custom logic after transaction processing in a block. +type HasEndBlocker interface { + AppModule + + // EndBlock is a method that will be run after transactions are processed in + // a block. + EndBlock(context.Context) error +} + +// HasTxValidation is the extension interface that modules should implement to run +// custom logic for validating transactions. +// It was previously known as AnteHandler/Decorator. +type HasTxValidation[T transaction.Tx] interface { + AppModule + + // TxValidator is a method that will be run on each transaction. + // If an error is returned: + // ,---. + // / | + // / | + // You shall not pass! / | + // / | + // \ ___,' | + // < -' : + // `-.__..--'``-,_\_ + // |o/ ` :,.)_`> + // :/ ` ||/) + // (_.).__,-` |\ + // /( `.`` `| : + // \'`-.) ` ; ; + // | ` /-< + // | ` / `. + // ,-_-..____ /| ` :__..-'\ + // /,'-.__\\ ``-./ :` ; \ + // `\ `\ `\\ \ : ( ` / , `. \ + // \` \ \\ | | ` : : .\ \ + // \ `\_ )) : ; | | ): : + // (`-.-'\ || |\ \ ` ; ; | | + // \-_ `;;._ ( ` / /_ | | + // `-.-.// ,'`-._\__/_,' ; | + // \:: : / ` , / | + // || | ( ,' / / | + // || ,' / | + TxValidator(ctx context.Context, tx T) error +} + +// HasUpdateValidators is an extension interface that contains information about the AppModule and UpdateValidators. +// It can be seen as the alternative of the Cosmos SDK' HasABCIEndBlocker. +// Both are still supported. +type HasUpdateValidators interface { + AppModule + + UpdateValidators(ctx context.Context) ([]ValidatorUpdate, error) +} + +// ValidatorUpdate defines a validator update. +type ValidatorUpdate struct { + PubKey []byte + PubKeyType string + Power int64 // updated power of the validtor +} diff --git a/core/appmodule/v2/environment.go b/core/appmodule/v2/environment.go new file mode 100644 index 000000000000..9badbddc2f73 --- /dev/null +++ b/core/appmodule/v2/environment.go @@ -0,0 +1,22 @@ +package appmodule + +import ( + "cosmossdk.io/core/branch" + "cosmossdk.io/core/event" + "cosmossdk.io/core/gas" + "cosmossdk.io/core/header" + "cosmossdk.io/core/store" + "cosmossdk.io/log" +) + +// Environment is used to get all services to their respective module +type Environment struct { + BranchService branch.Service + EventService event.Service + GasService gas.Service + HeaderService header.Service + KVStoreService store.KVStoreService + MemStoreService store.MemoryStoreService + DataBaseService store.DatabaseService + Logger log.Logger +} diff --git a/core/appmodule/v2/genesis.go b/core/appmodule/v2/genesis.go new file mode 100644 index 000000000000..d457ac89d8c3 --- /dev/null +++ b/core/appmodule/v2/genesis.go @@ -0,0 +1,17 @@ +package appmodule + +import ( + "context" + "encoding/json" +) + +// HasGenesis defines a custom genesis handling API implementation. +// WARNING: this API is meant as a short-term solution to allow for the +// migration of existing modules to the new app module API. It is intended to be replaced by collections +type HasGenesis interface { + AppModule + DefaultGenesis() Message + ValidateGenesis(data json.RawMessage) error + InitGenesis(ctx context.Context, data json.RawMessage) error + ExportGenesis(ctx context.Context) (json.RawMessage, error) +} diff --git a/core/appmodule/v2/handlers.go b/core/appmodule/v2/handlers.go new file mode 100644 index 000000000000..7bfc46bf24cf --- /dev/null +++ b/core/appmodule/v2/handlers.go @@ -0,0 +1,142 @@ +package appmodule + +import ( + "context" + "fmt" +) + +type ( + // PreMsgHandler is a handler that is executed before Handler. If it errors the execution reverts. + PreMsgHandler = func(ctx context.Context, msg Message) error + // Handler handles the state transition of the provided message. + Handler = func(ctx context.Context, msg Message) (msgResp Message, err error) + // PostMsgHandler runs after Handler, only if Handler does not error. If PostMsgHandler errors + // then the execution is reverted. + PostMsgHandler = func(ctx context.Context, msg, msgResp Message) error +) + +// RegisterHandler is a helper function that modules can use to not lose type safety when registering handlers to the +// QueryRouter or MsgRouter. Example usage: +// ```go +// +// func (k Keeper) QueryBalance(ctx context.Context, req *types.QueryBalanceRequest) (*types.QueryBalanceResponse, error) { +// ... query logic ... +// } +// +// func (m Module) RegisterQueryHandlers(router appmodule.QueryRouter) { +// appmodule.RegisterHandler(router, keeper.QueryBalance) +// } +// +// ``` +func RegisterHandler[R interface{ Register(string, Handler) }, Req, Resp Message]( + router R, + handler func(ctx context.Context, msg Req) (msgResp Resp, err error), +) { + untypedHandler := func(ctx context.Context, m Message) (Message, error) { + typed, ok := m.(Req) + if !ok { + return nil, fmt.Errorf("unexpected type %T, wanted: %T", m, *new(Req)) + } + return handler(ctx, typed) + } + router.Register(messageName[Req](), untypedHandler) +} + +// RegisterPreHandler is a helper function that modules can use to not lose type safety when registering PreMsgHandler to the +// PreMsgRouter. Example usage: +// ```go +// +// func (k Keeper) BeforeSend(ctx context.Context, req *types.MsgSend) (*types.QueryBalanceResponse, error) { +// ... before send logic ... +// } +// +// func (m Module) RegisterPreMsgHandlers(router appmodule.PreMsgRouter) { +// appmodule.RegisterPreHandler(router, keeper.BeforeSend) +// } +// +// ``` +func RegisterPreHandler[Req Message]( + router PreMsgRouter, + handler func(ctx context.Context, msg Req) error, +) { + untypedHandler := func(ctx context.Context, m Message) error { + typed, ok := m.(Req) + if !ok { + return fmt.Errorf("unexpected type %T, wanted: %T", m, *new(Req)) + } + return handler(ctx, typed) + } + router.Register(messageName[Req](), untypedHandler) +} + +// RegisterPostHandler is a helper function that modules can use to not lose type safety when registering handlers to the +// PostMsgRouter. Example usage: +// ```go +// +// func (k Keeper) AfterSend(ctx context.Context, req *types.MsgSend, resp *types.MsgSendResponse) error { +// ... query logic ... +// } +// +// func (m Module) RegisterPostMsgHandlers(router appmodule.PostMsgRouter) { +// appmodule.RegisterPostHandler(router, keeper.AfterSend) +// } +// +// ``` +func RegisterPostHandler[Req, Resp Message]( + router PostMsgRouter, + handler func(ctx context.Context, msg Req, msgResp Resp) error, +) { + untypedHandler := func(ctx context.Context, m, mResp Message) error { + typed, ok := m.(Req) + if !ok { + return fmt.Errorf("unexpected type %T, wanted: %T", m, *new(Req)) + } + typedResp, ok := mResp.(Resp) + if !ok { + return fmt.Errorf("unexpected type %T, wanted: %T", m, *new(Resp)) + } + return handler(ctx, typed, typedResp) + } + router.Register(messageName[Req](), untypedHandler) +} + +// msg handler + +type PreMsgRouter interface { + // Register will register a specific message handler hooking into the message with + // the provided name. + Register(msgName string, handler PreMsgHandler) + // RegisterGlobal will register a global message handler hooking into any message + // being executed. + RegisterGlobal(handler PreMsgHandler) +} + +type HasPreMsgHandlers interface { + RegisterPreMsgHandlers(router PreMsgRouter) +} + +type MsgRouter interface { + Register(msgName string, handler Handler) +} + +type HasMsgHandlers interface { + RegisterMsgHandlers(router MsgRouter) +} + +type PostMsgRouter interface { + // Register will register a specific message handler hooking after the execution of message with + // the provided name. + Register(msgName string, handler PostMsgHandler) + // RegisterGlobal will register a global message handler hooking after the execution of any message. + RegisterGlobal(handler PreMsgHandler) +} + +// query handler + +type QueryRouter interface { + Register(queryName string, handler Handler) +} + +type HasQueryHandlers interface { + RegisterQueryHandlers(router QueryRouter) +} diff --git a/core/appmodule/v2/message.go b/core/appmodule/v2/message.go new file mode 100644 index 000000000000..8a8753c9195e --- /dev/null +++ b/core/appmodule/v2/message.go @@ -0,0 +1,21 @@ +package appmodule + +import ( + gogoproto "github.com/cosmos/gogoproto/proto" + protov2 "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/runtime/protoiface" +) + +// Message aliases protoiface.MessageV1 for convenience. +type Message = protoiface.MessageV1 + +func messageName[M Message]() string { + switch m := any(*new(M)).(type) { + case protov2.Message: + return string(m.ProtoReflect().Descriptor().FullName()) + case gogoproto.Message: + return gogoproto.MessageName(m) + default: + panic("unknown message type") + } +} diff --git a/core/appmodule/v2/migrations.go b/core/appmodule/v2/migrations.go new file mode 100644 index 000000000000..794fb4a28cc8 --- /dev/null +++ b/core/appmodule/v2/migrations.go @@ -0,0 +1,41 @@ +package appmodule + +import "context" + +// HasConsensusVersion is the interface for declaring a module consensus version. +type HasConsensusVersion interface { + // ConsensusVersion is a sequence number for state-breaking change of the + // module. It should be incremented on each consensus-breaking change + // introduced by the module. To avoid wrong/empty versions, the initial version + // should be set to 1. + ConsensusVersion() uint64 +} + +// HasMigrations is implemented by a module which upgrades or has upgraded +// to a new consensus version. +type HasMigrations interface { + AppModule + HasConsensusVersion + + // RegisterMigrations registers the module's migrations with the app's migrator. + RegisterMigrations(MigrationRegistrar) error +} + +type MigrationRegistrar interface { + // Register registers an in-place store migration for a module. The + // handler is a migration script to perform in-place migrations from version + // `fromVersion` to version `fromVersion+1`. + // + // EACH TIME a module's ConsensusVersion increments, a new migration MUST + // be registered using this function. If a migration handler is missing for + // a particular function, the upgrade logic (see RunMigrations function) + // will panic. If the ConsensusVersion bump does not introduce any store + // changes, then a no-op function must be registered here. + Register(moduleName string, fromVersion uint64, handler MigrationHandler) error +} + +// MigrationHandler is the migration function that each module registers. +type MigrationHandler func(context.Context) error + +// VersionMap is a map of moduleName -> version +type VersionMap map[string]uint64 diff --git a/core/event/event.go b/core/event/event.go new file mode 100644 index 000000000000..4304e6e2b4af --- /dev/null +++ b/core/event/event.go @@ -0,0 +1,29 @@ +package event + +// Attribute is a kv-pair event attribute. +type Attribute struct { + Key, Value string +} + +func NewAttribute(key, value string) Attribute { + return Attribute{Key: key, Value: value} +} + +// Events represents a list of events. +type Events struct { + Events []Event +} + +func NewEvents(events ...Event) Events { + return Events{Events: events} +} + +// Event defines how an event will emitted +type Event struct { + Type string + Attributes []Attribute +} + +func NewEvent(ty string, attrs ...Attribute) Event { + return Event{Type: ty, Attributes: attrs} +} diff --git a/core/event/service.go b/core/event/service.go index 941f142db5f9..6668c1d5bfa8 100644 --- a/core/event/service.go +++ b/core/event/service.go @@ -36,12 +36,3 @@ type Manager interface { // not a state-machine breaking change. EmitNonConsensus(event protoiface.MessageV1) error } - -// KVEventAttribute is a kv-pair event attribute. -type Attribute struct { - Key, Value string -} - -func NewAttribute(key, value string) Attribute { - return Attribute{Key: key, Value: value} -} diff --git a/core/gas/meter.go b/core/gas/meter.go index 0774fd2a7733..9495201aa4c0 100644 --- a/core/gas/meter.go +++ b/core/gas/meter.go @@ -1,10 +1,25 @@ // Package gas provides a basic API for app modules to track gas usage. package gas -import "context" +import ( + "context" + "errors" + "math" +) +// ErrOutOfGas must be used by GasMeter implementers to signal +// that the state transition consumed all the allowed computational +// gas. +var ErrOutOfGas = errors.New("out of gas") + +// Gas defines type alias of uint64 for gas consumption. Gas is used +// to measure computational overhead when executing state transitions, +// it might be related to storage access and not only. type Gas = uint64 +// NoGasLimit signals that no gas limit must be applied. +const NoGasLimit Gas = math.MaxUint64 + // Service represents a gas service which can retrieve and set a gas meter in a context. // gas.Service is a core API type that should be provided by the runtime module being used to // build an app via depinject. diff --git a/core/go.mod b/core/go.mod index e7bf2f319d5e..e732129de93a 100644 --- a/core/go.mod +++ b/core/go.mod @@ -4,6 +4,7 @@ go 1.20 require ( cosmossdk.io/log v1.3.1 + github.com/cosmos/gogoproto v1.4.11 github.com/stretchr/testify v1.8.4 google.golang.org/grpc v1.62.0 google.golang.org/protobuf v1.32.0 @@ -12,6 +13,7 @@ require ( require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/golang/protobuf v1.5.3 // indirect + github.com/google/go-cmp v0.6.0 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect @@ -19,6 +21,7 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rogpeppe/go-internal v1.11.0 // indirect github.com/rs/zerolog v1.32.0 // indirect + golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb // indirect golang.org/x/net v0.21.0 // indirect golang.org/x/sys v0.17.0 // indirect golang.org/x/text v0.14.0 // indirect diff --git a/core/go.sum b/core/go.sum index 105975b5b061..57133f587985 100644 --- a/core/go.sum +++ b/core/go.sum @@ -1,6 +1,8 @@ cosmossdk.io/log v1.3.1 h1:UZx8nWIkfbbNEWusZqzAx3ZGvu54TZacWib3EzUYmGI= cosmossdk.io/log v1.3.1/go.mod h1:2/dIomt8mKdk6vl3OWJcPk2be3pGOS8OQaLUM/3/tCM= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/cosmos/gogoproto v1.4.11 h1:LZcMHrx4FjUgrqQSWeaGC1v/TeuVFqSLa43CC6aWR2g= +github.com/cosmos/gogoproto v1.4.11/go.mod h1:/g39Mh8m17X8Q/GDEs5zYTSNaNnInBSohtaxzQnYq1Y= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -10,6 +12,7 @@ github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= @@ -36,6 +39,8 @@ github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0= github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb h1:mIKbk8weKhSeLH2GmUTrvx8CjkyJmnU1wFmg59CUjFA= +golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/core/store/database.go b/core/store/database.go new file mode 100644 index 000000000000..551727a6342b --- /dev/null +++ b/core/store/database.go @@ -0,0 +1,23 @@ +package store + +// Database provides access to the underlying database for CRUD operations of non-consensus data. +// WARNING: using this api will make your module unprovable for fraud and validity proofs +type DatabaseService interface { + GetDatabase() NonConsensusStore +} + +// NonConsensusStore is a simple key-value store that is used to store non-consensus data. +// Note the non-consensus data is not committed to the blockchain and does not allow iteration +type NonConsensusStore interface { + // Get returns nil iff key doesn't exist. Errors on nil key. + Get(key []byte) ([]byte, error) + + // Has checks if a key exists. Errors on nil key. + Has(key []byte) (bool, error) + + // Set sets the key. Errors on nil key or value. + Set(key, value []byte) error + + // Delete deletes the key. Errors on nil key. + Delete(key []byte) error +} diff --git a/core/transaction/transaction.go b/core/transaction/transaction.go new file mode 100644 index 000000000000..be1e2960ad94 --- /dev/null +++ b/core/transaction/transaction.go @@ -0,0 +1,32 @@ +package transaction + +import ( + "google.golang.org/protobuf/proto" +) + +type ( + Type = proto.Message + Identity = []byte +) + +// Codec defines the TX codec, which converts a TX from bytes to its concrete representation. +type Codec[T Tx] interface { + // Decode decodes the tx bytes into a DecodedTx, containing + // both concrete and bytes representation of the tx. + Decode([]byte) (T, error) +} + +type Tx interface { + // Hash returns the unique identifier for the Tx. + Hash() [32]byte // TODO evaluate if 32 bytes is the right size & benchmark overhead of hashing instead of using identifier + // GetMessages returns the list of state transitions of the Tx. + GetMessages() []Type + // GetSenders returns the tx state transition sender. + GetSenders() []Identity // TODO reduce this to a single identity if accepted + // GetGasLimit returns the gas limit of the tx. Must return math.MaxUint64 for infinite gas + // txs. + GetGasLimit() uint64 + // Bytes returns the encoded version of this tx. Note: this is ideally cached + // from the first instance of the decoding of the tx. + Bytes() []byte +}