From cb6d2354d1235b9ed36a4e7200dda25434b46bfb Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sat, 18 Nov 2023 00:56:39 +0100 Subject: [PATCH 01/13] fix(client/tx): simulate with correct pk (backport #18472) (#18503) --- CHANGELOG.md | 4 ++ client/tx/factory.go | 40 ++++++++++----- client/tx/factory_test.go | 100 +++++++++++++++++++++++++++++++++++--- client/tx/tx_test.go | 21 ++++---- 4 files changed, 137 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b88442d0c402..c5230ff3bfca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,10 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## [Unreleased] +### Bug Fixes + +* (client/tx) [#18472](https://github.com/cosmos/cosmos-sdk/pull/18472) Utilizes the correct Pubkey when simulating a transaction. + ## [v0.47.6](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.47.6) - 2023-11-14 ### Features diff --git a/client/tx/factory.go b/client/tx/factory.go index aa7940a2d7b3..6eee79894117 100644 --- a/client/tx/factory.go +++ b/client/tx/factory.go @@ -15,6 +15,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" codectypes "github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/crypto/keyring" + "github.com/cosmos/cosmos-sdk/crypto/keys/multisig" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" sdk "github.com/cosmos/cosmos-sdk/types" @@ -34,6 +35,7 @@ type Factory struct { timeoutHeight uint64 gasAdjustment float64 chainID string + fromName string offline bool generateOnly bool memo string @@ -86,6 +88,7 @@ func NewFactoryCLI(clientCtx client.Context, flagSet *pflag.FlagSet) (Factory, e accountRetriever: clientCtx.AccountRetriever, keybase: clientCtx.Keyring, chainID: clientCtx.ChainID, + fromName: clientCtx.FromName, offline: clientCtx.Offline, generateOnly: clientCtx.GenerateOnly, gas: gasSetting.Gas, @@ -414,10 +417,8 @@ func (f Factory) BuildSimTx(msgs ...sdk.Msg) ([]byte, error) { // Create an empty signature literal as the ante handler will populate with a // sentinel pubkey. sig := signing.SignatureV2{ - PubKey: pk, - Data: &signing.SingleSignatureData{ - SignMode: f.signMode, - }, + PubKey: pk, + Data: f.getSimSignatureData(pk), Sequence: f.Sequence(), } if err := txb.SetSignatures(sig); err != nil { @@ -438,16 +439,13 @@ func (f Factory) getSimPK() (cryptotypes.PubKey, error) { pk cryptotypes.PubKey = &secp256k1.PubKey{} // use default public key type ) - // Use the first element from the list of keys in order to generate a valid - // pubkey that supports multiple algorithms. if f.simulateAndExecute && f.keybase != nil { - records, _ := f.keybase.List() - if len(records) == 0 { - return nil, errors.New("cannot build signature for simulation, key records slice is empty") + record, err := f.keybase.Key(f.fromName) + if err != nil { + return nil, err } - // take the first record just for simulation purposes - pk, ok = records[0].PubKey.GetCachedValue().(cryptotypes.PubKey) + pk, ok = record.PubKey.GetCachedValue().(cryptotypes.PubKey) if !ok { return nil, errors.New("cannot build signature for simulation, failed to convert proto Any to public key") } @@ -456,6 +454,26 @@ func (f Factory) getSimPK() (cryptotypes.PubKey, error) { return pk, nil } +// getSimSignatureData based on the pubKey type gets the correct SignatureData type +// to use for building a simulation tx. +func (f Factory) getSimSignatureData(pk cryptotypes.PubKey) signing.SignatureData { + multisigPubKey, ok := pk.(*multisig.LegacyAminoPubKey) + if !ok { + return &signing.SingleSignatureData{SignMode: f.signMode} + } + + multiSignatureData := make([]signing.SignatureData, 0, multisigPubKey.Threshold) + for i := uint32(0); i < multisigPubKey.Threshold; i++ { + multiSignatureData = append(multiSignatureData, &signing.SingleSignatureData{ + SignMode: f.SignMode(), + }) + } + + return &signing.MultiSignatureData{ + Signatures: multiSignatureData, + } +} + // Prepare ensures the account defined by ctx.GetFromAddress() exists and // if the account number and/or the account sequence number are zero (not set), // they will be queried for and set on the provided Factory. diff --git a/client/tx/factory_test.go b/client/tx/factory_test.go index 7a8c4cc2dd46..4c96118407bf 100644 --- a/client/tx/factory_test.go +++ b/client/tx/factory_test.go @@ -1,34 +1,120 @@ -package tx_test +package tx import ( "testing" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/tx" "github.com/stretchr/testify/require" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/crypto/hd" + "github.com/cosmos/cosmos-sdk/crypto/keyring" + "github.com/cosmos/cosmos-sdk/crypto/keys/multisig" + "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" + "github.com/cosmos/cosmos-sdk/crypto/types" + "github.com/cosmos/cosmos-sdk/testutil/testdata" + "github.com/cosmos/cosmos-sdk/types/tx/signing" + + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" ) -func TestFactoryPrepate(t *testing.T) { +func TestFactoryPrepare(t *testing.T) { t.Parallel() - factory := tx.Factory{} + factory := Factory{} clientCtx := client.Context{} output, err := factory.Prepare(clientCtx.WithOffline(true)) require.NoError(t, err) require.Equal(t, output, factory) - factory = tx.Factory{}.WithAccountRetriever(client.MockAccountRetriever{ReturnAccNum: 10, ReturnAccSeq: 1}).WithAccountNumber(5) + factory = Factory{}.WithAccountRetriever(client.MockAccountRetriever{ReturnAccNum: 10, ReturnAccSeq: 1}).WithAccountNumber(5) output, err = factory.Prepare(clientCtx.WithFrom("foo")) require.NoError(t, err) require.NotEqual(t, output, factory) require.Equal(t, output.AccountNumber(), uint64(5)) require.Equal(t, output.Sequence(), uint64(1)) - factory = tx.Factory{}.WithAccountRetriever(client.MockAccountRetriever{ReturnAccNum: 10, ReturnAccSeq: 1}) + factory = Factory{}.WithAccountRetriever(client.MockAccountRetriever{ReturnAccNum: 10, ReturnAccSeq: 1}) output, err = factory.Prepare(clientCtx.WithFrom("foo")) require.NoError(t, err) require.NotEqual(t, output, factory) require.Equal(t, output.AccountNumber(), uint64(10)) require.Equal(t, output.Sequence(), uint64(1)) } + +func TestFactory_getSimPKType(t *testing.T) { + // setup keyring + registry := codectypes.NewInterfaceRegistry() + cryptocodec.RegisterInterfaces(registry) + k := keyring.NewInMemory(codec.NewProtoCodec(registry)) + + tests := []struct { + name string + fromName string + genKey func(fromName string, k keyring.Keyring) error + wantType types.PubKey + }{ + { + name: "simple key", + fromName: "testKey", + genKey: func(fromName string, k keyring.Keyring) error { + _, err := k.NewAccount(fromName, testdata.TestMnemonic, "", "", hd.Secp256k1) + return err + }, + wantType: (*secp256k1.PubKey)(nil), + }, + { + name: "multisig key", + fromName: "multiKey", + genKey: func(fromName string, k keyring.Keyring) error { + pk := multisig.NewLegacyAminoPubKey(1, []types.PubKey{&multisig.LegacyAminoPubKey{}}) + _, err := k.SaveMultisig(fromName, pk) + return err + }, + wantType: (*multisig.LegacyAminoPubKey)(nil), + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := tt.genKey(tt.fromName, k) + require.NoError(t, err) + f := Factory{ + keybase: k, + fromName: tt.fromName, + simulateAndExecute: true, + } + got, err := f.getSimPK() + require.NoError(t, err) + require.IsType(t, tt.wantType, got) + }) + } +} + +func TestFactory_getSimSignatureData(t *testing.T) { + tests := []struct { + name string + pk types.PubKey + wantType any + }{ + { + name: "simple pubkey", + pk: &secp256k1.PubKey{}, + wantType: (*signing.SingleSignatureData)(nil), + }, + { + name: "multisig pubkey", + pk: &multisig.LegacyAminoPubKey{}, + wantType: (*signing.MultiSignatureData)(nil), + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := Factory{}.getSimSignatureData(tt.pk) + require.IsType(t, tt.wantType, got) + }) + } +} diff --git a/client/tx/tx_test.go b/client/tx/tx_test.go index b9eb1a7a42b8..f1b38919eaa5 100644 --- a/client/tx/tx_test.go +++ b/client/tx/tx_test.go @@ -1,4 +1,4 @@ -package tx_test +package tx import ( gocontext "context" @@ -13,7 +13,6 @@ import ( "github.com/cosmos/cosmos-sdk/client" clienttestutil "github.com/cosmos/cosmos-sdk/client/testutil" - "github.com/cosmos/cosmos-sdk/client/tx" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/crypto/hd" @@ -86,7 +85,7 @@ func TestCalculateGas(t *testing.T) { stc := tc txCfg, _ := newTestTxConfig(t) - txf := tx.Factory{}. + txf := Factory{}. WithChainID("test-chain"). WithTxConfig(txCfg).WithSignMode(txCfg.SignModeHandler().DefaultMode()) @@ -95,7 +94,7 @@ func TestCalculateGas(t *testing.T) { gasUsed: tc.args.mockGasUsed, wantErr: tc.args.mockWantErr, } - simRes, gotAdjusted, err := tx.CalculateGas(mockClientCtx, txf.WithGasAdjustment(stc.args.adjustment)) + simRes, gotAdjusted, err := CalculateGas(mockClientCtx, txf.WithGasAdjustment(stc.args.adjustment)) if stc.expPass { require.NoError(t, err) require.Equal(t, simRes.GasInfo.GasUsed, stc.wantEstimate) @@ -109,8 +108,8 @@ func TestCalculateGas(t *testing.T) { } } -func mockTxFactory(txCfg client.TxConfig) tx.Factory { - return tx.Factory{}. +func mockTxFactory(txCfg client.TxConfig) Factory { + return Factory{}. WithTxConfig(txCfg). WithAccountNumber(50). WithSequence(23). @@ -198,7 +197,7 @@ func TestMnemonicInMemo(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { - txf := tx.Factory{}. + txf := Factory{}. WithTxConfig(txConfig). WithAccountNumber(50). WithSequence(23). @@ -269,7 +268,7 @@ func TestSign(t *testing.T) { testCases := []struct { name string - txf tx.Factory + txf Factory txb client.TxBuilder from string overwrite bool @@ -356,7 +355,7 @@ func TestSign(t *testing.T) { var prevSigs []signingtypes.SignatureV2 for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { - err = tx.Sign(tc.txf, tc.from, tc.txb, tc.overwrite) + err = Sign(tc.txf, tc.from, tc.txb, tc.overwrite) if len(tc.expectedPKs) == 0 { requireT.Error(err) } else { @@ -372,6 +371,8 @@ func TestSign(t *testing.T) { } func TestPreprocessHook(t *testing.T) { + _, _, addr2 := testdata.KeyTestPubAddr() + txConfig, cdc := newTestTxConfig(t) requireT := require.New(t) path := hd.CreateHDPath(118, 0, 0).String() @@ -420,7 +421,7 @@ func TestPreprocessHook(t *testing.T) { msg2 := banktypes.NewMsgSend(addr2, sdk.AccAddress("to"), nil) txb, err := txfDirect.BuildUnsignedTx(msg1, msg2) - err = tx.Sign(txfDirect, from, txb, false) + err = Sign(txfDirect, from, txb, false) requireT.NoError(err) // Run preprocessing From 60112c6ab8b74f5ee4d8126d4c0eabc4ae3d786f Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sun, 19 Nov 2023 15:29:22 +0000 Subject: [PATCH 02/13] feat(server): cmd flag to disable colored logs (backport #18478) (#18508) Co-authored-by: Julien Robert --- CHANGELOG.md | 4 ++++ client/flags/flags.go | 5 +++-- server/cmd/execute.go | 1 + server/util.go | 8 +++++--- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c5230ff3bfca..589168d79e10 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,10 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## [Unreleased] +### Improvements + +* (server) [#18478](https://github.com/cosmos/cosmos-sdk/pull/18478) Add command flag to disable colored logs. + ### Bug Fixes * (client/tx) [#18472](https://github.com/cosmos/cosmos-sdk/pull/18472) Utilizes the correct Pubkey when simulating a transaction. diff --git a/client/flags/flags.go b/client/flags/flags.go index 51918b473a98..b7cf758237bf 100644 --- a/client/flags/flags.go +++ b/client/flags/flags.go @@ -85,8 +85,9 @@ const ( FlagOutput = tmcli.OutputFlag // Tendermint logging flags - FlagLogLevel = "log_level" - FlagLogFormat = "log_format" + FlagLogLevel = "log_level" + FlagLogFormat = "log_format" + FlagLogNoColor = "log_no_color" ) // LineBreak can be included in a command list to provide a blank line diff --git a/server/cmd/execute.go b/server/cmd/execute.go index 843cfc0393cb..1f869b1b317b 100644 --- a/server/cmd/execute.go +++ b/server/cmd/execute.go @@ -27,6 +27,7 @@ func Execute(rootCmd *cobra.Command, envPrefix string, defaultHome string) error rootCmd.PersistentFlags().String(flags.FlagLogLevel, tmcfg.DefaultLogLevel, "The logging level (trace|debug|info|warn|error|fatal|panic)") rootCmd.PersistentFlags().String(flags.FlagLogFormat, tmcfg.LogFormatPlain, "The logging format (json|plain)") + rootCmd.PersistentFlags().Bool(flags.FlagLogNoColor, false, "Disable colored logs") executor := tmcli.PrepareBaseCmd(rootCmd, envPrefix, defaultHome) return executor.ExecuteContext(ctx) diff --git a/server/util.go b/server/util.go index 73a90615bfde..98c193ad77e6 100644 --- a/server/util.go +++ b/server/util.go @@ -160,6 +160,11 @@ func InterceptConfigsPreRunHandler(cmd *cobra.Command, customAppConfigTemplate s opts = append(opts, log.OutputJSONOption()) } + opts = append(opts, + log.ColorOption(!serverCtx.Viper.GetBool(flags.FlagLogNoColor)), + // We use CometBFT flag (cmtcli.TraceFlag) for trace logging. + log.TraceOption(serverCtx.Viper.GetBool(FlagTrace))) + // check and set filter level or keys for the logger if any logLvlStr := serverCtx.Viper.GetString(flags.FlagLogLevel) if logLvlStr != "" { @@ -178,9 +183,6 @@ func InterceptConfigsPreRunHandler(cmd *cobra.Command, customAppConfigTemplate s } } - // Check if the CometBFT flag for trace logging is set and enable stack traces if so. - opts = append(opts, log.TraceOption(serverCtx.Viper.GetBool("trace"))) // cmtcli.TraceFlag - logger := log.NewLogger(tmlog.NewSyncWriter(os.Stdout), opts...).With(log.ModuleKey, "server") serverCtx.Logger = serverlog.CometLoggerWrapper{Logger: logger} From d79964b4bfe55da8e5c7a28f0db2444c24eacb6d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Nov 2023 10:06:48 +0100 Subject: [PATCH 03/13] build(deps): Bump github.com/cometbft/cometbft from 0.37.2 to 0.37.3 (#18515) --- go.mod | 4 ++-- go.sum | 8 ++++---- orm/go.mod | 12 ++++++------ orm/go.sum | 24 ++++++++++++------------ simapp/go.mod | 4 ++-- simapp/go.sum | 8 ++++---- tests/go.mod | 4 ++-- tests/go.sum | 8 ++++---- tools/cosmovisor/go.mod | 4 ++-- tools/cosmovisor/go.sum | 8 ++++---- tools/rosetta/go.mod | 4 ++-- tools/rosetta/go.sum | 9 +++++---- 12 files changed, 49 insertions(+), 48 deletions(-) diff --git a/go.mod b/go.mod index eda45f98b6fc..7b69ff4b7a66 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ require ( github.com/chzyer/readline v1.5.1 github.com/cockroachdb/apd/v2 v2.0.2 github.com/cockroachdb/errors v1.10.0 - github.com/cometbft/cometbft v0.37.2 + github.com/cometbft/cometbft v0.37.3 github.com/cometbft/cometbft-db v0.7.0 github.com/confio/ics23/go v0.9.0 github.com/cosmos/btcutil v1.0.5 @@ -74,7 +74,7 @@ require ( cloud.google.com/go/storage v1.30.1 // indirect filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect - github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect + github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect github.com/aws/aws-sdk-go v1.44.203 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect diff --git a/go.sum b/go.sum index e25e0e88d632..caffc3496d8d 100644 --- a/go.sum +++ b/go.sum @@ -209,8 +209,8 @@ github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= +github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= +github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= @@ -312,8 +312,8 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= -github.com/cometbft/cometbft v0.37.2 h1:XB0yyHGT0lwmJlFmM4+rsRnczPlHoAKFX6K8Zgc2/Jc= -github.com/cometbft/cometbft v0.37.2/go.mod h1:Y2MMMN//O5K4YKd8ze4r9jmk4Y7h0ajqILXbH5JQFVs= +github.com/cometbft/cometbft v0.37.3 h1:DetxyHjSqf74N8iwFWjlZNBPZ0zhq6I2IfNuP60HjZo= +github.com/cometbft/cometbft v0.37.3/go.mod h1:C80s7clYDvEO3llbWH2A6Edoc62ds55JK7IEQsYliwk= github.com/cometbft/cometbft-db v0.7.0 h1:uBjbrBx4QzU0zOEnU8KxoDl18dMNgDh+zZRUE0ucsbo= github.com/cometbft/cometbft-db v0.7.0/go.mod h1:yiKJIm2WKrt6x8Cyxtq9YTEcIMPcEe4XPxhgX59Fzf0= github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4= diff --git a/orm/go.mod b/orm/go.mod index 582a3e29c0af..32e112e91d3e 100644 --- a/orm/go.mod +++ b/orm/go.mod @@ -13,7 +13,7 @@ require ( github.com/regen-network/gocuke v0.6.2 github.com/stretchr/testify v1.8.4 golang.org/x/exp v0.0.0-20230131160201-f062dba9d201 - google.golang.org/grpc v1.56.2 + google.golang.org/grpc v1.58.3 google.golang.org/protobuf v1.31.0 gotest.tools/v3 v3.4.0 pgregory.net/rapid v0.5.5 @@ -52,11 +52,11 @@ require ( github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect go.etcd.io/bbolt v1.3.6 // indirect - golang.org/x/net v0.12.0 // indirect - golang.org/x/sys v0.10.0 // indirect - golang.org/x/text v0.11.0 // indirect - google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529 // indirect + golang.org/x/net v0.17.0 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/text v0.13.0 // indirect + google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230711160842-782d3b101e98 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/orm/go.sum b/orm/go.sum index 737482a3efe8..64bee5c589a5 100644 --- a/orm/go.sum +++ b/orm/go.sum @@ -171,8 +171,8 @@ golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= -golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -196,14 +196,14 @@ golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= -golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= -golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -213,14 +213,14 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130 h1:Au6te5hbKUV8pIYWHqOUZ1pva5qK/rwbIhoXEUB9Lu8= -google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:O9kGHb51iE/nOGvQaDUuadVYqovW56s5emA88lQnj6Y= -google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529 h1:s5YSX+ZH5b5vS9rnpGymvIyMpLRJizowqDlOuyjXnTk= -google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98 h1:Z0hjGZePRE0ZBWotvtrwxFNrNE9CUAGtplaDK5NNI/g= +google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98/go.mod h1:S7mY02OqCJTD0E1OiQy1F72PWFB4bZJ87cAtLPYgDR0= +google.golang.org/genproto/googleapis/api v0.0.0-20230711160842-782d3b101e98 h1:FmF5cCW94Ij59cfpoLiwTgodWmm60eEV0CjlsVg2fuw= +google.golang.org/genproto/googleapis/api v0.0.0-20230711160842-782d3b101e98/go.mod h1:rsr7RhLuwsDKL7RmgDDCUc6yaGr1iqceVb5Wv6f6YvQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 h1:bVf09lpb+OJbByTj913DRJioFFAjf/ZGxEz7MajTp2U= google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= -google.golang.org/grpc v1.56.2 h1:fVRFRnXvU+x6C4IlHZewvJOVHoOv1TUuQyoRsYnB4bI= -google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/grpc v1.58.3 h1:BjnpXut1btbtgN/6sp+brB2Kbm2LjNXnidYujAVbSoQ= +google.golang.org/grpc v1.58.3/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/simapp/go.mod b/simapp/go.mod index 4ec70b6de3d6..f23fbf6c420c 100644 --- a/simapp/go.mod +++ b/simapp/go.mod @@ -8,7 +8,7 @@ require ( cosmossdk.io/depinject v1.0.0-alpha.4 cosmossdk.io/math v1.2.0 cosmossdk.io/tools/rosetta v0.2.1 - github.com/cometbft/cometbft v0.37.2 + github.com/cometbft/cometbft v0.37.3 github.com/cometbft/cometbft-db v0.8.0 github.com/cosmos/cosmos-sdk v0.47.2 github.com/golang/mock v1.6.0 @@ -31,7 +31,7 @@ require ( filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.1 // indirect - github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect + github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/aws/aws-sdk-go v1.44.203 // indirect github.com/beorn7/perks v1.0.1 // indirect diff --git a/simapp/go.sum b/simapp/go.sum index 102c848680c8..b1b8c244b509 100644 --- a/simapp/go.sum +++ b/simapp/go.sum @@ -209,8 +209,8 @@ github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= +github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= +github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= @@ -311,8 +311,8 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= -github.com/cometbft/cometbft v0.37.2 h1:XB0yyHGT0lwmJlFmM4+rsRnczPlHoAKFX6K8Zgc2/Jc= -github.com/cometbft/cometbft v0.37.2/go.mod h1:Y2MMMN//O5K4YKd8ze4r9jmk4Y7h0ajqILXbH5JQFVs= +github.com/cometbft/cometbft v0.37.3 h1:DetxyHjSqf74N8iwFWjlZNBPZ0zhq6I2IfNuP60HjZo= +github.com/cometbft/cometbft v0.37.3/go.mod h1:C80s7clYDvEO3llbWH2A6Edoc62ds55JK7IEQsYliwk= github.com/cometbft/cometbft-db v0.8.0 h1:vUMDaH3ApkX8m0KZvOFFy9b5DZHBAjsnEuo9AKVZpjo= github.com/cometbft/cometbft-db v0.8.0/go.mod h1:6ASCP4pfhmrCBpfk01/9E1SI29nD3HfVHrY4PG8x5c0= github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4= diff --git a/tests/go.mod b/tests/go.mod index fe0e8ab3bc10..ae61ceef238f 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -7,7 +7,7 @@ require ( cosmossdk.io/depinject v1.0.0-alpha.4 cosmossdk.io/math v1.2.0 cosmossdk.io/simapp v0.0.0-00010101000000-000000000000 - github.com/cometbft/cometbft v0.37.2 + github.com/cometbft/cometbft v0.37.3 github.com/cometbft/cometbft-db v0.8.0 github.com/cosmos/cosmos-sdk v0.47.2 github.com/cosmos/gogoproto v1.4.10 @@ -33,7 +33,7 @@ require ( filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.1 // indirect - github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect + github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/aws/aws-sdk-go v1.44.203 // indirect github.com/beorn7/perks v1.0.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index cc8eaf2902c5..fd1e752672de 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -209,8 +209,8 @@ github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= +github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= +github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= @@ -311,8 +311,8 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= -github.com/cometbft/cometbft v0.37.2 h1:XB0yyHGT0lwmJlFmM4+rsRnczPlHoAKFX6K8Zgc2/Jc= -github.com/cometbft/cometbft v0.37.2/go.mod h1:Y2MMMN//O5K4YKd8ze4r9jmk4Y7h0ajqILXbH5JQFVs= +github.com/cometbft/cometbft v0.37.3 h1:DetxyHjSqf74N8iwFWjlZNBPZ0zhq6I2IfNuP60HjZo= +github.com/cometbft/cometbft v0.37.3/go.mod h1:C80s7clYDvEO3llbWH2A6Edoc62ds55JK7IEQsYliwk= github.com/cometbft/cometbft-db v0.8.0 h1:vUMDaH3ApkX8m0KZvOFFy9b5DZHBAjsnEuo9AKVZpjo= github.com/cometbft/cometbft-db v0.8.0/go.mod h1:6ASCP4pfhmrCBpfk01/9E1SI29nD3HfVHrY4PG8x5c0= github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4= diff --git a/tools/cosmovisor/go.mod b/tools/cosmovisor/go.mod index 2b8d6220e1f2..627c8d55b091 100644 --- a/tools/cosmovisor/go.mod +++ b/tools/cosmovisor/go.mod @@ -25,7 +25,7 @@ require ( filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.1 // indirect - github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect + github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/aws/aws-sdk-go v1.44.203 // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -37,7 +37,7 @@ require ( github.com/cockroachdb/errors v1.10.0 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect github.com/cockroachdb/redact v1.1.5 // indirect - github.com/cometbft/cometbft v0.37.2 // indirect + github.com/cometbft/cometbft v0.37.3 // indirect github.com/cometbft/cometbft-db v0.8.0 // indirect github.com/confio/ics23/go v0.9.0 // indirect github.com/cosmos/btcutil v1.0.5 // indirect diff --git a/tools/cosmovisor/go.sum b/tools/cosmovisor/go.sum index 1247c1adb6cc..f7247801c688 100644 --- a/tools/cosmovisor/go.sum +++ b/tools/cosmovisor/go.sum @@ -207,8 +207,8 @@ github.com/99designs/keyring v1.2.1 h1:tYLp1ULvO7i3fI5vE21ReQuj99QFSs7lGm0xWyJo8 github.com/99designs/keyring v1.2.1/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= +github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= +github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -270,8 +270,8 @@ github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9D github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= -github.com/cometbft/cometbft v0.37.2 h1:XB0yyHGT0lwmJlFmM4+rsRnczPlHoAKFX6K8Zgc2/Jc= -github.com/cometbft/cometbft v0.37.2/go.mod h1:Y2MMMN//O5K4YKd8ze4r9jmk4Y7h0ajqILXbH5JQFVs= +github.com/cometbft/cometbft v0.37.3 h1:DetxyHjSqf74N8iwFWjlZNBPZ0zhq6I2IfNuP60HjZo= +github.com/cometbft/cometbft v0.37.3/go.mod h1:C80s7clYDvEO3llbWH2A6Edoc62ds55JK7IEQsYliwk= github.com/cometbft/cometbft-db v0.8.0 h1:vUMDaH3ApkX8m0KZvOFFy9b5DZHBAjsnEuo9AKVZpjo= github.com/cometbft/cometbft-db v0.8.0/go.mod h1:6ASCP4pfhmrCBpfk01/9E1SI29nD3HfVHrY4PG8x5c0= github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4= diff --git a/tools/rosetta/go.mod b/tools/rosetta/go.mod index b7ddb730b5da..69a9d2e5615a 100644 --- a/tools/rosetta/go.mod +++ b/tools/rosetta/go.mod @@ -6,7 +6,7 @@ require ( cosmossdk.io/math v1.2.0 github.com/btcsuite/btcd/btcec/v2 v2.3.2 github.com/coinbase/rosetta-sdk-go/types v1.0.0 - github.com/cometbft/cometbft v0.37.2 + github.com/cometbft/cometbft v0.37.3 github.com/cosmos/cosmos-sdk v0.47.0-rc3 github.com/cosmos/rosetta-sdk-go v0.10.0 github.com/spf13/cobra v1.6.1 @@ -23,7 +23,7 @@ require ( filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.1 // indirect - github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect + github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect diff --git a/tools/rosetta/go.sum b/tools/rosetta/go.sum index b3bad337074e..31794d638fef 100644 --- a/tools/rosetta/go.sum +++ b/tools/rosetta/go.sum @@ -54,8 +54,8 @@ github.com/99designs/keyring v1.2.1 h1:tYLp1ULvO7i3fI5vE21ReQuj99QFSs7lGm0xWyJo8 github.com/99designs/keyring v1.2.1/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= +github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= +github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -106,8 +106,8 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= -github.com/cometbft/cometbft v0.37.2 h1:XB0yyHGT0lwmJlFmM4+rsRnczPlHoAKFX6K8Zgc2/Jc= -github.com/cometbft/cometbft v0.37.2/go.mod h1:Y2MMMN//O5K4YKd8ze4r9jmk4Y7h0ajqILXbH5JQFVs= +github.com/cometbft/cometbft v0.37.3 h1:DetxyHjSqf74N8iwFWjlZNBPZ0zhq6I2IfNuP60HjZo= +github.com/cometbft/cometbft v0.37.3/go.mod h1:C80s7clYDvEO3llbWH2A6Edoc62ds55JK7IEQsYliwk= github.com/cometbft/cometbft-db v0.8.0 h1:vUMDaH3ApkX8m0KZvOFFy9b5DZHBAjsnEuo9AKVZpjo= github.com/cometbft/cometbft-db v0.8.0/go.mod h1:6ASCP4pfhmrCBpfk01/9E1SI29nD3HfVHrY4PG8x5c0= github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4= @@ -623,6 +623,7 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= From 58b0cdde1a1dae9ad2d728c389f8cd1ddbcaddb5 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Mon, 20 Nov 2023 11:24:41 +0100 Subject: [PATCH 04/13] Revert "build(deps): Bump github.com/cometbft/cometbft from 0.37.2 to 0.37.3" (#18520) --- go.mod | 4 ++-- go.sum | 8 ++++---- orm/go.mod | 12 ++++++------ orm/go.sum | 24 ++++++++++++------------ simapp/go.mod | 4 ++-- simapp/go.sum | 8 ++++---- tests/go.mod | 4 ++-- tests/go.sum | 8 ++++---- tools/cosmovisor/go.mod | 4 ++-- tools/cosmovisor/go.sum | 8 ++++---- tools/rosetta/go.mod | 4 ++-- tools/rosetta/go.sum | 9 ++++----- 12 files changed, 48 insertions(+), 49 deletions(-) diff --git a/go.mod b/go.mod index 7b69ff4b7a66..eda45f98b6fc 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ require ( github.com/chzyer/readline v1.5.1 github.com/cockroachdb/apd/v2 v2.0.2 github.com/cockroachdb/errors v1.10.0 - github.com/cometbft/cometbft v0.37.3 + github.com/cometbft/cometbft v0.37.2 github.com/cometbft/cometbft-db v0.7.0 github.com/confio/ics23/go v0.9.0 github.com/cosmos/btcutil v1.0.5 @@ -74,7 +74,7 @@ require ( cloud.google.com/go/storage v1.30.1 // indirect filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect - github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect + github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect github.com/aws/aws-sdk-go v1.44.203 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect diff --git a/go.sum b/go.sum index caffc3496d8d..e25e0e88d632 100644 --- a/go.sum +++ b/go.sum @@ -209,8 +209,8 @@ github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= -github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= +github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= +github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= @@ -312,8 +312,8 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= -github.com/cometbft/cometbft v0.37.3 h1:DetxyHjSqf74N8iwFWjlZNBPZ0zhq6I2IfNuP60HjZo= -github.com/cometbft/cometbft v0.37.3/go.mod h1:C80s7clYDvEO3llbWH2A6Edoc62ds55JK7IEQsYliwk= +github.com/cometbft/cometbft v0.37.2 h1:XB0yyHGT0lwmJlFmM4+rsRnczPlHoAKFX6K8Zgc2/Jc= +github.com/cometbft/cometbft v0.37.2/go.mod h1:Y2MMMN//O5K4YKd8ze4r9jmk4Y7h0ajqILXbH5JQFVs= github.com/cometbft/cometbft-db v0.7.0 h1:uBjbrBx4QzU0zOEnU8KxoDl18dMNgDh+zZRUE0ucsbo= github.com/cometbft/cometbft-db v0.7.0/go.mod h1:yiKJIm2WKrt6x8Cyxtq9YTEcIMPcEe4XPxhgX59Fzf0= github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4= diff --git a/orm/go.mod b/orm/go.mod index 32e112e91d3e..582a3e29c0af 100644 --- a/orm/go.mod +++ b/orm/go.mod @@ -13,7 +13,7 @@ require ( github.com/regen-network/gocuke v0.6.2 github.com/stretchr/testify v1.8.4 golang.org/x/exp v0.0.0-20230131160201-f062dba9d201 - google.golang.org/grpc v1.58.3 + google.golang.org/grpc v1.56.2 google.golang.org/protobuf v1.31.0 gotest.tools/v3 v3.4.0 pgregory.net/rapid v0.5.5 @@ -52,11 +52,11 @@ require ( github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect go.etcd.io/bbolt v1.3.6 // indirect - golang.org/x/net v0.17.0 // indirect - golang.org/x/sys v0.13.0 // indirect - golang.org/x/text v0.13.0 // indirect - google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230711160842-782d3b101e98 // indirect + golang.org/x/net v0.12.0 // indirect + golang.org/x/sys v0.10.0 // indirect + golang.org/x/text v0.11.0 // indirect + google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/orm/go.sum b/orm/go.sum index 64bee5c589a5..737482a3efe8 100644 --- a/orm/go.sum +++ b/orm/go.sum @@ -171,8 +171,8 @@ golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= +golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -196,14 +196,14 @@ golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= +golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= +golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -213,14 +213,14 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98 h1:Z0hjGZePRE0ZBWotvtrwxFNrNE9CUAGtplaDK5NNI/g= -google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98/go.mod h1:S7mY02OqCJTD0E1OiQy1F72PWFB4bZJ87cAtLPYgDR0= -google.golang.org/genproto/googleapis/api v0.0.0-20230711160842-782d3b101e98 h1:FmF5cCW94Ij59cfpoLiwTgodWmm60eEV0CjlsVg2fuw= -google.golang.org/genproto/googleapis/api v0.0.0-20230711160842-782d3b101e98/go.mod h1:rsr7RhLuwsDKL7RmgDDCUc6yaGr1iqceVb5Wv6f6YvQ= +google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130 h1:Au6te5hbKUV8pIYWHqOUZ1pva5qK/rwbIhoXEUB9Lu8= +google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:O9kGHb51iE/nOGvQaDUuadVYqovW56s5emA88lQnj6Y= +google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529 h1:s5YSX+ZH5b5vS9rnpGymvIyMpLRJizowqDlOuyjXnTk= +google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 h1:bVf09lpb+OJbByTj913DRJioFFAjf/ZGxEz7MajTp2U= google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= -google.golang.org/grpc v1.58.3 h1:BjnpXut1btbtgN/6sp+brB2Kbm2LjNXnidYujAVbSoQ= -google.golang.org/grpc v1.58.3/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +google.golang.org/grpc v1.56.2 h1:fVRFRnXvU+x6C4IlHZewvJOVHoOv1TUuQyoRsYnB4bI= +google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/simapp/go.mod b/simapp/go.mod index f23fbf6c420c..4ec70b6de3d6 100644 --- a/simapp/go.mod +++ b/simapp/go.mod @@ -8,7 +8,7 @@ require ( cosmossdk.io/depinject v1.0.0-alpha.4 cosmossdk.io/math v1.2.0 cosmossdk.io/tools/rosetta v0.2.1 - github.com/cometbft/cometbft v0.37.3 + github.com/cometbft/cometbft v0.37.2 github.com/cometbft/cometbft-db v0.8.0 github.com/cosmos/cosmos-sdk v0.47.2 github.com/golang/mock v1.6.0 @@ -31,7 +31,7 @@ require ( filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.1 // indirect - github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect + github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/aws/aws-sdk-go v1.44.203 // indirect github.com/beorn7/perks v1.0.1 // indirect diff --git a/simapp/go.sum b/simapp/go.sum index b1b8c244b509..102c848680c8 100644 --- a/simapp/go.sum +++ b/simapp/go.sum @@ -209,8 +209,8 @@ github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= -github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= +github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= +github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= @@ -311,8 +311,8 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= -github.com/cometbft/cometbft v0.37.3 h1:DetxyHjSqf74N8iwFWjlZNBPZ0zhq6I2IfNuP60HjZo= -github.com/cometbft/cometbft v0.37.3/go.mod h1:C80s7clYDvEO3llbWH2A6Edoc62ds55JK7IEQsYliwk= +github.com/cometbft/cometbft v0.37.2 h1:XB0yyHGT0lwmJlFmM4+rsRnczPlHoAKFX6K8Zgc2/Jc= +github.com/cometbft/cometbft v0.37.2/go.mod h1:Y2MMMN//O5K4YKd8ze4r9jmk4Y7h0ajqILXbH5JQFVs= github.com/cometbft/cometbft-db v0.8.0 h1:vUMDaH3ApkX8m0KZvOFFy9b5DZHBAjsnEuo9AKVZpjo= github.com/cometbft/cometbft-db v0.8.0/go.mod h1:6ASCP4pfhmrCBpfk01/9E1SI29nD3HfVHrY4PG8x5c0= github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4= diff --git a/tests/go.mod b/tests/go.mod index ae61ceef238f..fe0e8ab3bc10 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -7,7 +7,7 @@ require ( cosmossdk.io/depinject v1.0.0-alpha.4 cosmossdk.io/math v1.2.0 cosmossdk.io/simapp v0.0.0-00010101000000-000000000000 - github.com/cometbft/cometbft v0.37.3 + github.com/cometbft/cometbft v0.37.2 github.com/cometbft/cometbft-db v0.8.0 github.com/cosmos/cosmos-sdk v0.47.2 github.com/cosmos/gogoproto v1.4.10 @@ -33,7 +33,7 @@ require ( filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.1 // indirect - github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect + github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/aws/aws-sdk-go v1.44.203 // indirect github.com/beorn7/perks v1.0.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index fd1e752672de..cc8eaf2902c5 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -209,8 +209,8 @@ github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= -github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= +github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= +github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= @@ -311,8 +311,8 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= -github.com/cometbft/cometbft v0.37.3 h1:DetxyHjSqf74N8iwFWjlZNBPZ0zhq6I2IfNuP60HjZo= -github.com/cometbft/cometbft v0.37.3/go.mod h1:C80s7clYDvEO3llbWH2A6Edoc62ds55JK7IEQsYliwk= +github.com/cometbft/cometbft v0.37.2 h1:XB0yyHGT0lwmJlFmM4+rsRnczPlHoAKFX6K8Zgc2/Jc= +github.com/cometbft/cometbft v0.37.2/go.mod h1:Y2MMMN//O5K4YKd8ze4r9jmk4Y7h0ajqILXbH5JQFVs= github.com/cometbft/cometbft-db v0.8.0 h1:vUMDaH3ApkX8m0KZvOFFy9b5DZHBAjsnEuo9AKVZpjo= github.com/cometbft/cometbft-db v0.8.0/go.mod h1:6ASCP4pfhmrCBpfk01/9E1SI29nD3HfVHrY4PG8x5c0= github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4= diff --git a/tools/cosmovisor/go.mod b/tools/cosmovisor/go.mod index 627c8d55b091..2b8d6220e1f2 100644 --- a/tools/cosmovisor/go.mod +++ b/tools/cosmovisor/go.mod @@ -25,7 +25,7 @@ require ( filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.1 // indirect - github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect + github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/aws/aws-sdk-go v1.44.203 // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -37,7 +37,7 @@ require ( github.com/cockroachdb/errors v1.10.0 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect github.com/cockroachdb/redact v1.1.5 // indirect - github.com/cometbft/cometbft v0.37.3 // indirect + github.com/cometbft/cometbft v0.37.2 // indirect github.com/cometbft/cometbft-db v0.8.0 // indirect github.com/confio/ics23/go v0.9.0 // indirect github.com/cosmos/btcutil v1.0.5 // indirect diff --git a/tools/cosmovisor/go.sum b/tools/cosmovisor/go.sum index f7247801c688..1247c1adb6cc 100644 --- a/tools/cosmovisor/go.sum +++ b/tools/cosmovisor/go.sum @@ -207,8 +207,8 @@ github.com/99designs/keyring v1.2.1 h1:tYLp1ULvO7i3fI5vE21ReQuj99QFSs7lGm0xWyJo8 github.com/99designs/keyring v1.2.1/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= -github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= +github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= +github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -270,8 +270,8 @@ github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9D github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= -github.com/cometbft/cometbft v0.37.3 h1:DetxyHjSqf74N8iwFWjlZNBPZ0zhq6I2IfNuP60HjZo= -github.com/cometbft/cometbft v0.37.3/go.mod h1:C80s7clYDvEO3llbWH2A6Edoc62ds55JK7IEQsYliwk= +github.com/cometbft/cometbft v0.37.2 h1:XB0yyHGT0lwmJlFmM4+rsRnczPlHoAKFX6K8Zgc2/Jc= +github.com/cometbft/cometbft v0.37.2/go.mod h1:Y2MMMN//O5K4YKd8ze4r9jmk4Y7h0ajqILXbH5JQFVs= github.com/cometbft/cometbft-db v0.8.0 h1:vUMDaH3ApkX8m0KZvOFFy9b5DZHBAjsnEuo9AKVZpjo= github.com/cometbft/cometbft-db v0.8.0/go.mod h1:6ASCP4pfhmrCBpfk01/9E1SI29nD3HfVHrY4PG8x5c0= github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4= diff --git a/tools/rosetta/go.mod b/tools/rosetta/go.mod index 69a9d2e5615a..b7ddb730b5da 100644 --- a/tools/rosetta/go.mod +++ b/tools/rosetta/go.mod @@ -6,7 +6,7 @@ require ( cosmossdk.io/math v1.2.0 github.com/btcsuite/btcd/btcec/v2 v2.3.2 github.com/coinbase/rosetta-sdk-go/types v1.0.0 - github.com/cometbft/cometbft v0.37.3 + github.com/cometbft/cometbft v0.37.2 github.com/cosmos/cosmos-sdk v0.47.0-rc3 github.com/cosmos/rosetta-sdk-go v0.10.0 github.com/spf13/cobra v1.6.1 @@ -23,7 +23,7 @@ require ( filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.1 // indirect - github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect + github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect diff --git a/tools/rosetta/go.sum b/tools/rosetta/go.sum index 31794d638fef..b3bad337074e 100644 --- a/tools/rosetta/go.sum +++ b/tools/rosetta/go.sum @@ -54,8 +54,8 @@ github.com/99designs/keyring v1.2.1 h1:tYLp1ULvO7i3fI5vE21ReQuj99QFSs7lGm0xWyJo8 github.com/99designs/keyring v1.2.1/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= -github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= +github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= +github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -106,8 +106,8 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= -github.com/cometbft/cometbft v0.37.3 h1:DetxyHjSqf74N8iwFWjlZNBPZ0zhq6I2IfNuP60HjZo= -github.com/cometbft/cometbft v0.37.3/go.mod h1:C80s7clYDvEO3llbWH2A6Edoc62ds55JK7IEQsYliwk= +github.com/cometbft/cometbft v0.37.2 h1:XB0yyHGT0lwmJlFmM4+rsRnczPlHoAKFX6K8Zgc2/Jc= +github.com/cometbft/cometbft v0.37.2/go.mod h1:Y2MMMN//O5K4YKd8ze4r9jmk4Y7h0ajqILXbH5JQFVs= github.com/cometbft/cometbft-db v0.8.0 h1:vUMDaH3ApkX8m0KZvOFFy9b5DZHBAjsnEuo9AKVZpjo= github.com/cometbft/cometbft-db v0.8.0/go.mod h1:6ASCP4pfhmrCBpfk01/9E1SI29nD3HfVHrY4PG8x5c0= github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4= @@ -623,7 +623,6 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= From 55c6d55c5583bacd37f6ddbe60570688edb81d76 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 22 Nov 2023 17:40:03 +0000 Subject: [PATCH 05/13] fix(server): properly parse multiple gas config (backport #18537) (#18544) Co-authored-by: Julien Robert --- CHANGELOG.md | 1 + server/README.md | 22 ++++------------------ server/config/config.go | 17 ++++------------- server/config/config_test.go | 12 ++++++++++-- server/config/toml.go | 2 +- 5 files changed, 20 insertions(+), 34 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 589168d79e10..7fce80dadb19 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,6 +43,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Bug Fixes +* (server) [#18537](https://github.com/cosmos/cosmos-sdk/pull/18537) Fix panic when defining minimum gas config as `100stake;100uatom`. Use a `,` delimiter instead of `;`. Fixes the server config getter to use the correct delimiter. * (client/tx) [#18472](https://github.com/cosmos/cosmos-sdk/pull/18472) Utilizes the correct Pubkey when simulating a transaction. ## [v0.47.6](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.47.6) - 2023-11-14 diff --git a/server/README.md b/server/README.md index 21c6bed620d8..a7c0e275fe1b 100644 --- a/server/README.md +++ b/server/README.md @@ -74,26 +74,12 @@ the viper literal and passed to the application construction. Example: ```go -func newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, appOpts server.AppOptions) server.Application { - var cache sdk.MultiStorePersistentCache - - if cast.ToBool(appOpts.Get(server.FlagInterBlockCache)) { - cache = store.NewCommitKVStoreCacheManager() - } - - pruningOpts, err := server.GetPruningOptionsFromFlags(appOpts) - if err != nil { - panic(err) - } - +func newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, appOpts servertypes.AppOptions) servertypes.Application { + baseappOptions := server.DefaultBaseappOptions(appOpts) return simapp.NewSimApp( logger, db, traceStore, true, - baseapp.SetPruning(pruningOpts), - baseapp.SetMinGasPrices(cast.ToString(appOpts.Get(server.FlagMinGasPrices))), - baseapp.SetHaltHeight(cast.ToUint64(appOpts.Get(server.FlagHaltHeight))), - baseapp.SetHaltTime(cast.ToUint64(appOpts.Get(server.FlagHaltTime))), - baseapp.SetInterBlockCache(cache), - baseapp.SetTrace(cast.ToBool(appOpts.Get(server.FlagTrace))), + appOpts, + baseappOptions..., ) } ``` diff --git a/server/config/config.go b/server/config/config.go index 3e01afe60757..f4ac30a30dd9 100644 --- a/server/config/config.go +++ b/server/config/config.go @@ -3,7 +3,6 @@ package config import ( "fmt" "math" - "strings" "github.com/spf13/viper" @@ -264,23 +263,15 @@ func (c *Config) SetMinGasPrices(gasPrices sdk.DecCoins) { c.MinGasPrices = gasPrices.String() } -// GetMinGasPrices returns the validator's minimum gas prices based on the set -// configuration. +// GetMinGasPrices returns the validator's minimum gas prices based on the set configuration. func (c *Config) GetMinGasPrices() sdk.DecCoins { if c.MinGasPrices == "" { return sdk.DecCoins{} } - gasPricesStr := strings.Split(c.MinGasPrices, ";") - gasPrices := make(sdk.DecCoins, len(gasPricesStr)) - - for i, s := range gasPricesStr { - gasPrice, err := sdk.ParseDecCoin(s) - if err != nil { - panic(fmt.Errorf("failed to parse minimum gas price coin (%s): %s", s, err)) - } - - gasPrices[i] = gasPrice + gasPrices, err := sdk.ParseDecCoins(c.MinGasPrices) + if err != nil { + panic(fmt.Sprintf("invalid minimum gas prices: %v", err)) } return gasPrices diff --git a/server/config/config_test.go b/server/config/config_test.go index a706424d8833..d4562374f779 100644 --- a/server/config/config_test.go +++ b/server/config/config_test.go @@ -17,10 +17,18 @@ func TestDefaultConfig(t *testing.T) { require.True(t, cfg.GetMinGasPrices().IsZero()) } -func TestSetMinimumFees(t *testing.T) { +func TestGetAndSetMinimumGas(t *testing.T) { cfg := DefaultConfig() - cfg.SetMinGasPrices(sdk.DecCoins{sdk.NewInt64DecCoin("foo", 5)}) + + input := sdk.DecCoins{sdk.NewInt64DecCoin("foo", 5)} + cfg.SetMinGasPrices(input) require.Equal(t, "5.000000000000000000foo", cfg.MinGasPrices) + require.EqualValues(t, cfg.GetMinGasPrices(), input) + + input = sdk.DecCoins{sdk.NewInt64DecCoin("bar", 1), sdk.NewInt64DecCoin("foo", 5)} + cfg.SetMinGasPrices(input) + require.Equal(t, "1.000000000000000000bar,5.000000000000000000foo", cfg.MinGasPrices) + require.EqualValues(t, cfg.GetMinGasPrices(), input) } func TestIndexEventsMarshalling(t *testing.T) { diff --git a/server/config/toml.go b/server/config/toml.go index 870bcb618bdc..40fa0ed239a8 100644 --- a/server/config/toml.go +++ b/server/config/toml.go @@ -18,7 +18,7 @@ const DefaultConfigTemplate = `# This is a TOML config file. # The minimum gas prices a validator is willing to accept for processing a # transaction. A transaction's fees must meet the minimum of any denomination -# specified in this config (e.g. 0.25token1;0.0001token2). +# specified in this config (e.g. 0.25token1,0.0001token2). minimum-gas-prices = "{{ .BaseConfig.MinGasPrices }}" # default: the last 362880 states are kept, pruning at 10 block intervals From 044ff4d8c015ca6fbac7c3ae0d2b0a714427a693 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Nov 2023 21:26:28 +0000 Subject: [PATCH 06/13] build(deps): Bump github.com/cometbft/cometbft from 0.37.2 to 0.37.4 (#18572) 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> --- go.mod | 4 ++-- go.sum | 8 ++++---- orm/go.mod | 12 ++++++------ orm/go.sum | 24 ++++++++++++------------ simapp/go.mod | 4 ++-- simapp/go.sum | 8 ++++---- tests/go.mod | 4 ++-- tests/go.sum | 8 ++++---- tools/cosmovisor/go.mod | 4 ++-- tools/cosmovisor/go.sum | 8 ++++---- tools/rosetta/go.mod | 4 ++-- tools/rosetta/go.sum | 9 +++++---- 12 files changed, 49 insertions(+), 48 deletions(-) diff --git a/go.mod b/go.mod index eda45f98b6fc..9a1a1cbf88f1 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ require ( github.com/chzyer/readline v1.5.1 github.com/cockroachdb/apd/v2 v2.0.2 github.com/cockroachdb/errors v1.10.0 - github.com/cometbft/cometbft v0.37.2 + github.com/cometbft/cometbft v0.37.4 github.com/cometbft/cometbft-db v0.7.0 github.com/confio/ics23/go v0.9.0 github.com/cosmos/btcutil v1.0.5 @@ -74,7 +74,7 @@ require ( cloud.google.com/go/storage v1.30.1 // indirect filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect - github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect + github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect github.com/aws/aws-sdk-go v1.44.203 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect diff --git a/go.sum b/go.sum index e25e0e88d632..730f81cdebaf 100644 --- a/go.sum +++ b/go.sum @@ -209,8 +209,8 @@ github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= +github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= +github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= @@ -312,8 +312,8 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= -github.com/cometbft/cometbft v0.37.2 h1:XB0yyHGT0lwmJlFmM4+rsRnczPlHoAKFX6K8Zgc2/Jc= -github.com/cometbft/cometbft v0.37.2/go.mod h1:Y2MMMN//O5K4YKd8ze4r9jmk4Y7h0ajqILXbH5JQFVs= +github.com/cometbft/cometbft v0.37.4 h1:xyvvEqlyfK8MgNIIKVJaMsuIp03wxOcFmVkT26+Ikpg= +github.com/cometbft/cometbft v0.37.4/go.mod h1:Cmg5Hp4sNpapm7j+x0xRyt2g0juQfmB752ous+pA0G8= github.com/cometbft/cometbft-db v0.7.0 h1:uBjbrBx4QzU0zOEnU8KxoDl18dMNgDh+zZRUE0ucsbo= github.com/cometbft/cometbft-db v0.7.0/go.mod h1:yiKJIm2WKrt6x8Cyxtq9YTEcIMPcEe4XPxhgX59Fzf0= github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4= diff --git a/orm/go.mod b/orm/go.mod index 582a3e29c0af..32e112e91d3e 100644 --- a/orm/go.mod +++ b/orm/go.mod @@ -13,7 +13,7 @@ require ( github.com/regen-network/gocuke v0.6.2 github.com/stretchr/testify v1.8.4 golang.org/x/exp v0.0.0-20230131160201-f062dba9d201 - google.golang.org/grpc v1.56.2 + google.golang.org/grpc v1.58.3 google.golang.org/protobuf v1.31.0 gotest.tools/v3 v3.4.0 pgregory.net/rapid v0.5.5 @@ -52,11 +52,11 @@ require ( github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect go.etcd.io/bbolt v1.3.6 // indirect - golang.org/x/net v0.12.0 // indirect - golang.org/x/sys v0.10.0 // indirect - golang.org/x/text v0.11.0 // indirect - google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529 // indirect + golang.org/x/net v0.17.0 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/text v0.13.0 // indirect + google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230711160842-782d3b101e98 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/orm/go.sum b/orm/go.sum index 737482a3efe8..64bee5c589a5 100644 --- a/orm/go.sum +++ b/orm/go.sum @@ -171,8 +171,8 @@ golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= -golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -196,14 +196,14 @@ golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= -golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= -golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -213,14 +213,14 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130 h1:Au6te5hbKUV8pIYWHqOUZ1pva5qK/rwbIhoXEUB9Lu8= -google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:O9kGHb51iE/nOGvQaDUuadVYqovW56s5emA88lQnj6Y= -google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529 h1:s5YSX+ZH5b5vS9rnpGymvIyMpLRJizowqDlOuyjXnTk= -google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98 h1:Z0hjGZePRE0ZBWotvtrwxFNrNE9CUAGtplaDK5NNI/g= +google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98/go.mod h1:S7mY02OqCJTD0E1OiQy1F72PWFB4bZJ87cAtLPYgDR0= +google.golang.org/genproto/googleapis/api v0.0.0-20230711160842-782d3b101e98 h1:FmF5cCW94Ij59cfpoLiwTgodWmm60eEV0CjlsVg2fuw= +google.golang.org/genproto/googleapis/api v0.0.0-20230711160842-782d3b101e98/go.mod h1:rsr7RhLuwsDKL7RmgDDCUc6yaGr1iqceVb5Wv6f6YvQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 h1:bVf09lpb+OJbByTj913DRJioFFAjf/ZGxEz7MajTp2U= google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= -google.golang.org/grpc v1.56.2 h1:fVRFRnXvU+x6C4IlHZewvJOVHoOv1TUuQyoRsYnB4bI= -google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/grpc v1.58.3 h1:BjnpXut1btbtgN/6sp+brB2Kbm2LjNXnidYujAVbSoQ= +google.golang.org/grpc v1.58.3/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/simapp/go.mod b/simapp/go.mod index 4ec70b6de3d6..da50e223837f 100644 --- a/simapp/go.mod +++ b/simapp/go.mod @@ -8,7 +8,7 @@ require ( cosmossdk.io/depinject v1.0.0-alpha.4 cosmossdk.io/math v1.2.0 cosmossdk.io/tools/rosetta v0.2.1 - github.com/cometbft/cometbft v0.37.2 + github.com/cometbft/cometbft v0.37.4 github.com/cometbft/cometbft-db v0.8.0 github.com/cosmos/cosmos-sdk v0.47.2 github.com/golang/mock v1.6.0 @@ -31,7 +31,7 @@ require ( filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.1 // indirect - github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect + github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/aws/aws-sdk-go v1.44.203 // indirect github.com/beorn7/perks v1.0.1 // indirect diff --git a/simapp/go.sum b/simapp/go.sum index 102c848680c8..81f14b63286a 100644 --- a/simapp/go.sum +++ b/simapp/go.sum @@ -209,8 +209,8 @@ github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= +github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= +github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= @@ -311,8 +311,8 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= -github.com/cometbft/cometbft v0.37.2 h1:XB0yyHGT0lwmJlFmM4+rsRnczPlHoAKFX6K8Zgc2/Jc= -github.com/cometbft/cometbft v0.37.2/go.mod h1:Y2MMMN//O5K4YKd8ze4r9jmk4Y7h0ajqILXbH5JQFVs= +github.com/cometbft/cometbft v0.37.4 h1:xyvvEqlyfK8MgNIIKVJaMsuIp03wxOcFmVkT26+Ikpg= +github.com/cometbft/cometbft v0.37.4/go.mod h1:Cmg5Hp4sNpapm7j+x0xRyt2g0juQfmB752ous+pA0G8= github.com/cometbft/cometbft-db v0.8.0 h1:vUMDaH3ApkX8m0KZvOFFy9b5DZHBAjsnEuo9AKVZpjo= github.com/cometbft/cometbft-db v0.8.0/go.mod h1:6ASCP4pfhmrCBpfk01/9E1SI29nD3HfVHrY4PG8x5c0= github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4= diff --git a/tests/go.mod b/tests/go.mod index fe0e8ab3bc10..b370a3dfd91e 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -7,7 +7,7 @@ require ( cosmossdk.io/depinject v1.0.0-alpha.4 cosmossdk.io/math v1.2.0 cosmossdk.io/simapp v0.0.0-00010101000000-000000000000 - github.com/cometbft/cometbft v0.37.2 + github.com/cometbft/cometbft v0.37.4 github.com/cometbft/cometbft-db v0.8.0 github.com/cosmos/cosmos-sdk v0.47.2 github.com/cosmos/gogoproto v1.4.10 @@ -33,7 +33,7 @@ require ( filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.1 // indirect - github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect + github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/aws/aws-sdk-go v1.44.203 // indirect github.com/beorn7/perks v1.0.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index cc8eaf2902c5..954bd567195a 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -209,8 +209,8 @@ github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= +github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= +github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= @@ -311,8 +311,8 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= -github.com/cometbft/cometbft v0.37.2 h1:XB0yyHGT0lwmJlFmM4+rsRnczPlHoAKFX6K8Zgc2/Jc= -github.com/cometbft/cometbft v0.37.2/go.mod h1:Y2MMMN//O5K4YKd8ze4r9jmk4Y7h0ajqILXbH5JQFVs= +github.com/cometbft/cometbft v0.37.4 h1:xyvvEqlyfK8MgNIIKVJaMsuIp03wxOcFmVkT26+Ikpg= +github.com/cometbft/cometbft v0.37.4/go.mod h1:Cmg5Hp4sNpapm7j+x0xRyt2g0juQfmB752ous+pA0G8= github.com/cometbft/cometbft-db v0.8.0 h1:vUMDaH3ApkX8m0KZvOFFy9b5DZHBAjsnEuo9AKVZpjo= github.com/cometbft/cometbft-db v0.8.0/go.mod h1:6ASCP4pfhmrCBpfk01/9E1SI29nD3HfVHrY4PG8x5c0= github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4= diff --git a/tools/cosmovisor/go.mod b/tools/cosmovisor/go.mod index 2b8d6220e1f2..93a547dcb923 100644 --- a/tools/cosmovisor/go.mod +++ b/tools/cosmovisor/go.mod @@ -25,7 +25,7 @@ require ( filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.1 // indirect - github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect + github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/aws/aws-sdk-go v1.44.203 // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -37,7 +37,7 @@ require ( github.com/cockroachdb/errors v1.10.0 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect github.com/cockroachdb/redact v1.1.5 // indirect - github.com/cometbft/cometbft v0.37.2 // indirect + github.com/cometbft/cometbft v0.37.4 // indirect github.com/cometbft/cometbft-db v0.8.0 // indirect github.com/confio/ics23/go v0.9.0 // indirect github.com/cosmos/btcutil v1.0.5 // indirect diff --git a/tools/cosmovisor/go.sum b/tools/cosmovisor/go.sum index 1247c1adb6cc..68779579c8f4 100644 --- a/tools/cosmovisor/go.sum +++ b/tools/cosmovisor/go.sum @@ -207,8 +207,8 @@ github.com/99designs/keyring v1.2.1 h1:tYLp1ULvO7i3fI5vE21ReQuj99QFSs7lGm0xWyJo8 github.com/99designs/keyring v1.2.1/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= +github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= +github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -270,8 +270,8 @@ github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9D github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= -github.com/cometbft/cometbft v0.37.2 h1:XB0yyHGT0lwmJlFmM4+rsRnczPlHoAKFX6K8Zgc2/Jc= -github.com/cometbft/cometbft v0.37.2/go.mod h1:Y2MMMN//O5K4YKd8ze4r9jmk4Y7h0ajqILXbH5JQFVs= +github.com/cometbft/cometbft v0.37.4 h1:xyvvEqlyfK8MgNIIKVJaMsuIp03wxOcFmVkT26+Ikpg= +github.com/cometbft/cometbft v0.37.4/go.mod h1:Cmg5Hp4sNpapm7j+x0xRyt2g0juQfmB752ous+pA0G8= github.com/cometbft/cometbft-db v0.8.0 h1:vUMDaH3ApkX8m0KZvOFFy9b5DZHBAjsnEuo9AKVZpjo= github.com/cometbft/cometbft-db v0.8.0/go.mod h1:6ASCP4pfhmrCBpfk01/9E1SI29nD3HfVHrY4PG8x5c0= github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4= diff --git a/tools/rosetta/go.mod b/tools/rosetta/go.mod index b7ddb730b5da..3563358853c5 100644 --- a/tools/rosetta/go.mod +++ b/tools/rosetta/go.mod @@ -6,7 +6,7 @@ require ( cosmossdk.io/math v1.2.0 github.com/btcsuite/btcd/btcec/v2 v2.3.2 github.com/coinbase/rosetta-sdk-go/types v1.0.0 - github.com/cometbft/cometbft v0.37.2 + github.com/cometbft/cometbft v0.37.4 github.com/cosmos/cosmos-sdk v0.47.0-rc3 github.com/cosmos/rosetta-sdk-go v0.10.0 github.com/spf13/cobra v1.6.1 @@ -23,7 +23,7 @@ require ( filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.1 // indirect - github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect + github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect diff --git a/tools/rosetta/go.sum b/tools/rosetta/go.sum index b3bad337074e..b2b538e90103 100644 --- a/tools/rosetta/go.sum +++ b/tools/rosetta/go.sum @@ -54,8 +54,8 @@ github.com/99designs/keyring v1.2.1 h1:tYLp1ULvO7i3fI5vE21ReQuj99QFSs7lGm0xWyJo8 github.com/99designs/keyring v1.2.1/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= +github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= +github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -106,8 +106,8 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= -github.com/cometbft/cometbft v0.37.2 h1:XB0yyHGT0lwmJlFmM4+rsRnczPlHoAKFX6K8Zgc2/Jc= -github.com/cometbft/cometbft v0.37.2/go.mod h1:Y2MMMN//O5K4YKd8ze4r9jmk4Y7h0ajqILXbH5JQFVs= +github.com/cometbft/cometbft v0.37.4 h1:xyvvEqlyfK8MgNIIKVJaMsuIp03wxOcFmVkT26+Ikpg= +github.com/cometbft/cometbft v0.37.4/go.mod h1:Cmg5Hp4sNpapm7j+x0xRyt2g0juQfmB752ous+pA0G8= github.com/cometbft/cometbft-db v0.8.0 h1:vUMDaH3ApkX8m0KZvOFFy9b5DZHBAjsnEuo9AKVZpjo= github.com/cometbft/cometbft-db v0.8.0/go.mod h1:6ASCP4pfhmrCBpfk01/9E1SI29nD3HfVHrY4PG8x5c0= github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4= @@ -623,6 +623,7 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= From d88d3a7bfdd809de37cbecf3d0aa7f54f7fb9133 Mon Sep 17 00:00:00 2001 From: Rex Milce Date: Wed, 29 Nov 2023 22:41:07 +0100 Subject: [PATCH 07/13] create logic for expedited proposal --- api/cosmos/gov/v1/gov.pulsar.go | 476 ++++++++--- proto/cosmos/gov/v1/gov.proto | 7 + x/gov/abci.go | 42 +- x/gov/migrations/v3/json_test.go | 1 + x/gov/migrations/v4/json_test.go | 1 + x/gov/types/events.go | 25 +- x/gov/types/v1/gov.pb.go | 269 ++++-- x/staking/types/staking.pb.go | 1348 +++++++++++++++--------------- 8 files changed, 1255 insertions(+), 914 deletions(-) diff --git a/api/cosmos/gov/v1/gov.pulsar.go b/api/cosmos/gov/v1/gov.pulsar.go index ceb82da18d45..3101778362b7 100644 --- a/api/cosmos/gov/v1/gov.pulsar.go +++ b/api/cosmos/gov/v1/gov.pulsar.go @@ -1210,6 +1210,7 @@ var ( fd_Proposal_title protoreflect.FieldDescriptor fd_Proposal_summary protoreflect.FieldDescriptor fd_Proposal_proposer protoreflect.FieldDescriptor + fd_Proposal_expedited protoreflect.FieldDescriptor ) func init() { @@ -1228,6 +1229,7 @@ func init() { fd_Proposal_title = md_Proposal.Fields().ByName("title") fd_Proposal_summary = md_Proposal.Fields().ByName("summary") fd_Proposal_proposer = md_Proposal.Fields().ByName("proposer") + fd_Proposal_expedited = md_Proposal.Fields().ByName("expedited") } var _ protoreflect.Message = (*fastReflection_Proposal)(nil) @@ -1373,6 +1375,12 @@ func (x *fastReflection_Proposal) Range(f func(protoreflect.FieldDescriptor, pro return } } + if x.Expedited != false { + value := protoreflect.ValueOfBool(x.Expedited) + if !f(fd_Proposal_expedited, value) { + return + } + } } // Has reports whether a field is populated. @@ -1414,6 +1422,8 @@ func (x *fastReflection_Proposal) Has(fd protoreflect.FieldDescriptor) bool { return x.Summary != "" case "cosmos.gov.v1.Proposal.proposer": return x.Proposer != "" + case "cosmos.gov.v1.Proposal.expedited": + return x.Expedited != false default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1.Proposal")) @@ -1456,6 +1466,8 @@ func (x *fastReflection_Proposal) Clear(fd protoreflect.FieldDescriptor) { x.Summary = "" case "cosmos.gov.v1.Proposal.proposer": x.Proposer = "" + case "cosmos.gov.v1.Proposal.expedited": + x.Expedited = false default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1.Proposal")) @@ -1517,6 +1529,9 @@ func (x *fastReflection_Proposal) Get(descriptor protoreflect.FieldDescriptor) p case "cosmos.gov.v1.Proposal.proposer": value := x.Proposer return protoreflect.ValueOfString(value) + case "cosmos.gov.v1.Proposal.expedited": + value := x.Expedited + return protoreflect.ValueOfBool(value) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1.Proposal")) @@ -1567,6 +1582,8 @@ func (x *fastReflection_Proposal) Set(fd protoreflect.FieldDescriptor, value pro x.Summary = value.Interface().(string) case "cosmos.gov.v1.Proposal.proposer": x.Proposer = value.Interface().(string) + case "cosmos.gov.v1.Proposal.expedited": + x.Expedited = value.Bool() default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1.Proposal")) @@ -1636,6 +1653,8 @@ func (x *fastReflection_Proposal) Mutable(fd protoreflect.FieldDescriptor) proto panic(fmt.Errorf("field summary of message cosmos.gov.v1.Proposal is not mutable")) case "cosmos.gov.v1.Proposal.proposer": panic(fmt.Errorf("field proposer of message cosmos.gov.v1.Proposal is not mutable")) + case "cosmos.gov.v1.Proposal.expedited": + panic(fmt.Errorf("field expedited of message cosmos.gov.v1.Proposal is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1.Proposal")) @@ -1682,6 +1701,8 @@ func (x *fastReflection_Proposal) NewField(fd protoreflect.FieldDescriptor) prot return protoreflect.ValueOfString("") case "cosmos.gov.v1.Proposal.proposer": return protoreflect.ValueOfString("") + case "cosmos.gov.v1.Proposal.expedited": + return protoreflect.ValueOfBool(false) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1.Proposal")) @@ -1805,6 +1826,9 @@ func (x *fastReflection_Proposal) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } + if x.Expedited { + n += 2 + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -1834,6 +1858,16 @@ func (x *fastReflection_Proposal) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if x.Expedited { + i-- + if x.Expedited { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x70 + } if len(x.Proposer) > 0 { i -= len(x.Proposer) copy(dAtA[i:], x.Proposer) @@ -2437,6 +2471,26 @@ func (x *fastReflection_Proposal) ProtoMethods() *protoiface.Methods { } x.Proposer = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 14: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Expedited", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.Expedited = bool(v != 0) default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -5361,6 +5415,57 @@ func (x *_Params_1_list) IsValid() bool { return x.list != nil } +var _ protoreflect.List = (*_Params_12_list)(nil) + +type _Params_12_list struct { + list *[]*v1beta1.Coin +} + +func (x *_Params_12_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_Params_12_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_Params_12_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*v1beta1.Coin) + (*x.list)[i] = concreteValue +} + +func (x *_Params_12_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*v1beta1.Coin) + *x.list = append(*x.list, concreteValue) +} + +func (x *_Params_12_list) AppendMutable() protoreflect.Value { + v := new(v1beta1.Coin) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_Params_12_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_Params_12_list) NewElement() protoreflect.Value { + v := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_Params_12_list) IsValid() bool { + return x.list != nil +} + var ( md_Params protoreflect.MessageDescriptor fd_Params_min_deposit protoreflect.FieldDescriptor @@ -5370,6 +5475,7 @@ var ( fd_Params_threshold protoreflect.FieldDescriptor fd_Params_veto_threshold protoreflect.FieldDescriptor fd_Params_min_initial_deposit_ratio protoreflect.FieldDescriptor + fd_Params_expedited_min_deposit protoreflect.FieldDescriptor fd_Params_burn_vote_quorum protoreflect.FieldDescriptor fd_Params_burn_proposal_deposit_prevote protoreflect.FieldDescriptor fd_Params_burn_vote_veto protoreflect.FieldDescriptor @@ -5385,6 +5491,7 @@ func init() { fd_Params_threshold = md_Params.Fields().ByName("threshold") fd_Params_veto_threshold = md_Params.Fields().ByName("veto_threshold") fd_Params_min_initial_deposit_ratio = md_Params.Fields().ByName("min_initial_deposit_ratio") + fd_Params_expedited_min_deposit = md_Params.Fields().ByName("expedited_min_deposit") fd_Params_burn_vote_quorum = md_Params.Fields().ByName("burn_vote_quorum") fd_Params_burn_proposal_deposit_prevote = md_Params.Fields().ByName("burn_proposal_deposit_prevote") fd_Params_burn_vote_veto = md_Params.Fields().ByName("burn_vote_veto") @@ -5497,6 +5604,12 @@ func (x *fastReflection_Params) Range(f func(protoreflect.FieldDescriptor, proto return } } + if len(x.ExpeditedMinDeposit) != 0 { + value := protoreflect.ValueOfList(&_Params_12_list{list: &x.ExpeditedMinDeposit}) + if !f(fd_Params_expedited_min_deposit, value) { + return + } + } if x.BurnVoteQuorum != false { value := protoreflect.ValueOfBool(x.BurnVoteQuorum) if !f(fd_Params_burn_vote_quorum, value) { @@ -5544,6 +5657,8 @@ func (x *fastReflection_Params) Has(fd protoreflect.FieldDescriptor) bool { return x.VetoThreshold != "" case "cosmos.gov.v1.Params.min_initial_deposit_ratio": return x.MinInitialDepositRatio != "" + case "cosmos.gov.v1.Params.expedited_min_deposit": + return len(x.ExpeditedMinDeposit) != 0 case "cosmos.gov.v1.Params.burn_vote_quorum": return x.BurnVoteQuorum != false case "cosmos.gov.v1.Params.burn_proposal_deposit_prevote": @@ -5580,6 +5695,8 @@ func (x *fastReflection_Params) Clear(fd protoreflect.FieldDescriptor) { x.VetoThreshold = "" case "cosmos.gov.v1.Params.min_initial_deposit_ratio": x.MinInitialDepositRatio = "" + case "cosmos.gov.v1.Params.expedited_min_deposit": + x.ExpeditedMinDeposit = nil case "cosmos.gov.v1.Params.burn_vote_quorum": x.BurnVoteQuorum = false case "cosmos.gov.v1.Params.burn_proposal_deposit_prevote": @@ -5626,6 +5743,12 @@ func (x *fastReflection_Params) Get(descriptor protoreflect.FieldDescriptor) pro case "cosmos.gov.v1.Params.min_initial_deposit_ratio": value := x.MinInitialDepositRatio return protoreflect.ValueOfString(value) + case "cosmos.gov.v1.Params.expedited_min_deposit": + if len(x.ExpeditedMinDeposit) == 0 { + return protoreflect.ValueOfList(&_Params_12_list{}) + } + listValue := &_Params_12_list{list: &x.ExpeditedMinDeposit} + return protoreflect.ValueOfList(listValue) case "cosmos.gov.v1.Params.burn_vote_quorum": value := x.BurnVoteQuorum return protoreflect.ValueOfBool(value) @@ -5671,6 +5794,10 @@ func (x *fastReflection_Params) Set(fd protoreflect.FieldDescriptor, value proto x.VetoThreshold = value.Interface().(string) case "cosmos.gov.v1.Params.min_initial_deposit_ratio": x.MinInitialDepositRatio = value.Interface().(string) + case "cosmos.gov.v1.Params.expedited_min_deposit": + lv := value.List() + clv := lv.(*_Params_12_list) + x.ExpeditedMinDeposit = *clv.list case "cosmos.gov.v1.Params.burn_vote_quorum": x.BurnVoteQuorum = value.Bool() case "cosmos.gov.v1.Params.burn_proposal_deposit_prevote": @@ -5713,6 +5840,12 @@ func (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protore x.VotingPeriod = new(durationpb.Duration) } return protoreflect.ValueOfMessage(x.VotingPeriod.ProtoReflect()) + case "cosmos.gov.v1.Params.expedited_min_deposit": + if x.ExpeditedMinDeposit == nil { + x.ExpeditedMinDeposit = []*v1beta1.Coin{} + } + value := &_Params_12_list{list: &x.ExpeditedMinDeposit} + return protoreflect.ValueOfList(value) case "cosmos.gov.v1.Params.quorum": panic(fmt.Errorf("field quorum of message cosmos.gov.v1.Params is not mutable")) case "cosmos.gov.v1.Params.threshold": @@ -5757,6 +5890,9 @@ func (x *fastReflection_Params) NewField(fd protoreflect.FieldDescriptor) protor return protoreflect.ValueOfString("") case "cosmos.gov.v1.Params.min_initial_deposit_ratio": return protoreflect.ValueOfString("") + case "cosmos.gov.v1.Params.expedited_min_deposit": + list := []*v1beta1.Coin{} + return protoreflect.ValueOfList(&_Params_12_list{list: &list}) case "cosmos.gov.v1.Params.burn_vote_quorum": return protoreflect.ValueOfBool(false) case "cosmos.gov.v1.Params.burn_proposal_deposit_prevote": @@ -5862,6 +5998,12 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } + if len(x.ExpeditedMinDeposit) > 0 { + for _, e := range x.ExpeditedMinDeposit { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } if x.BurnVoteQuorum { n += 2 } @@ -5930,6 +6072,22 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { i-- dAtA[i] = 0x68 } + if len(x.ExpeditedMinDeposit) > 0 { + for iNdEx := len(x.ExpeditedMinDeposit) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.ExpeditedMinDeposit[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x62 + } + } if len(x.MinInitialDepositRatio) > 0 { i -= len(x.MinInitialDepositRatio) copy(dAtA[i:], x.MinInitialDepositRatio) @@ -6285,6 +6443,40 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { } x.MinInitialDepositRatio = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 12: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ExpeditedMinDeposit", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.ExpeditedMinDeposit = append(x.ExpeditedMinDeposit, &v1beta1.Coin{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.ExpeditedMinDeposit[len(x.ExpeditedMinDeposit)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex case 13: if wireType != 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field BurnVoteQuorum", wireType) @@ -6668,6 +6860,8 @@ type Proposal struct { // // Since: cosmos-sdk 0.47 Proposer string `protobuf:"bytes,13,opt,name=proposer,proto3" json:"proposer,omitempty"` + // expedited defines if the proposal is expedited + Expedited bool `protobuf:"varint,14,opt,name=expedited,proto3" json:"expedited,omitempty"` } func (x *Proposal) Reset() { @@ -6781,6 +6975,13 @@ func (x *Proposal) GetProposer() string { return "" } +func (x *Proposal) GetExpedited() bool { + if x != nil { + return x.Expedited + } + return false +} + // TallyResult defines a standard tally for a governance proposal. type TallyResult struct { state protoimpl.MessageState @@ -7076,6 +7277,8 @@ type Params struct { VetoThreshold string `protobuf:"bytes,6,opt,name=veto_threshold,json=vetoThreshold,proto3" json:"veto_threshold,omitempty"` // The ratio representing the proportion of the deposit value that must be paid at proposal submission. MinInitialDepositRatio string `protobuf:"bytes,7,opt,name=min_initial_deposit_ratio,json=minInitialDepositRatio,proto3" json:"min_initial_deposit_ratio,omitempty"` + // Minimum expedited deposit for a proposal to enter voting period. + ExpeditedMinDeposit []*v1beta1.Coin `protobuf:"bytes,12,rep,name=expedited_min_deposit,json=expeditedMinDeposit,proto3" json:"expedited_min_deposit,omitempty"` // burn deposits if a proposal does not meet quorum BurnVoteQuorum bool `protobuf:"varint,13,opt,name=burn_vote_quorum,json=burnVoteQuorum,proto3" json:"burn_vote_quorum,omitempty"` // burn deposits if the proposal does not enter voting period @@ -7153,6 +7356,13 @@ func (x *Params) GetMinInitialDepositRatio() string { return "" } +func (x *Params) GetExpeditedMinDeposit() []*v1beta1.Coin { + if x != nil { + return x.ExpeditedMinDeposit + } + return nil +} + func (x *Params) GetBurnVoteQuorum() bool { if x != nil { return x.BurnVoteQuorum @@ -7208,7 +7418,7 @@ var file_cosmos_gov_v1_gov_proto_rawDesc = []byte{ 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, - 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xc1, 0x05, 0x0a, + 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xdf, 0x05, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, @@ -7253,130 +7463,137 @@ var file_cosmos_gov_v1_gov_proto_rawDesc = []byte{ 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, - 0x22, 0xd7, 0x01, 0x0a, 0x0b, 0x54, 0x61, 0x6c, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x2b, 0x0a, 0x09, 0x79, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x49, 0x6e, 0x74, 0x52, 0x08, 0x79, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x33, 0x0a, - 0x0d, 0x61, 0x62, 0x73, 0x74, 0x61, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0c, 0x61, 0x62, 0x73, 0x74, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x08, 0x6e, 0x6f, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x07, 0x6e, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3b, 0x0a, - 0x12, 0x6e, 0x6f, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x74, 0x6f, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0f, 0x6e, 0x6f, 0x57, 0x69, 0x74, - 0x68, 0x56, 0x65, 0x74, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xb6, 0x01, 0x0a, 0x04, 0x56, - 0x6f, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x76, - 0x6f, 0x74, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, - 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x56, 0x6f, - 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x04, 0x08, - 0x03, 0x10, 0x04, 0x22, 0xd9, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x59, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x1d, 0xc8, 0xde, 0x1f, 0x00, 0xea, 0xde, 0x1f, 0x15, 0x6d, - 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x2c, 0x6f, 0x6d, 0x69, 0x74, 0x65, - 0x6d, 0x70, 0x74, 0x79, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x12, 0x6d, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, - 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x24, 0xea, 0xde, 0x1f, 0x1c, 0x6d, 0x61, 0x78, - 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x2c, - 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x98, 0xdf, 0x1f, 0x01, 0x52, 0x10, 0x6d, - 0x61, 0x78, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x22, - 0x54, 0x0a, 0x0c, 0x56, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, - 0x44, 0x0a, 0x0d, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x04, 0x98, 0xdf, 0x1f, 0x01, 0x52, 0x0c, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x50, - 0x65, 0x72, 0x69, 0x6f, 0x64, 0x22, 0x9a, 0x01, 0x0a, 0x0b, 0x54, 0x61, 0x6c, 0x6c, 0x79, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x26, 0x0a, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x12, 0x2c, 0x0a, - 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, - 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x35, 0x0a, 0x0e, 0x76, - 0x65, 0x74, 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x44, 0x65, 0x63, 0x52, 0x0d, 0x76, 0x65, 0x74, 0x6f, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, - 0x6c, 0x64, 0x22, 0xcf, 0x04, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x45, 0x0a, - 0x0b, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, - 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x44, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x12, 0x4d, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0x98, 0xdf, 0x1f, - 0x01, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50, 0x65, 0x72, - 0x69, 0x6f, 0x64, 0x12, 0x44, 0x0a, 0x0d, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, - 0x72, 0x69, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, + 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x22, 0xd7, + 0x01, 0x0a, 0x0b, 0x54, 0x61, 0x6c, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2b, + 0x0a, 0x09, 0x79, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, + 0x74, 0x52, 0x08, 0x79, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x0d, 0x61, + 0x62, 0x73, 0x74, 0x61, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, + 0x6e, 0x74, 0x52, 0x0c, 0x61, 0x62, 0x73, 0x74, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x29, 0x0a, 0x08, 0x6e, 0x6f, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, + 0x6e, 0x74, 0x52, 0x07, 0x6e, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x12, 0x6e, + 0x6f, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0f, 0x6e, 0x6f, 0x57, 0x69, 0x74, 0x68, 0x56, + 0x65, 0x74, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xb6, 0x01, 0x0a, 0x04, 0x56, 0x6f, 0x74, + 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x76, 0x6f, 0x74, + 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, + 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x56, 0x6f, 0x74, 0x65, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x04, 0x08, 0x03, 0x10, + 0x04, 0x22, 0xd9, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x12, 0x59, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, + 0x6f, 0x69, 0x6e, 0x42, 0x1d, 0xc8, 0xde, 0x1f, 0x00, 0xea, 0xde, 0x1f, 0x15, 0x6d, 0x69, 0x6e, + 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x2c, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x6d, 0x70, + 0x74, 0x79, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x6d, + 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x70, 0x65, + 0x72, 0x69, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0x98, 0xdf, 0x1f, 0x01, 0x52, 0x0c, 0x76, 0x6f, 0x74, - 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x26, 0x0a, 0x06, 0x71, 0x75, 0x6f, - 0x72, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, - 0x6d, 0x12, 0x2c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x44, 0x65, 0x63, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, - 0x35, 0x0a, 0x0e, 0x76, 0x65, 0x74, 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, - 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0d, 0x76, 0x65, 0x74, 0x6f, 0x54, 0x68, 0x72, - 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x49, 0x0a, 0x19, 0x6d, 0x69, 0x6e, 0x5f, 0x69, 0x6e, - 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x16, 0x6d, 0x69, 0x6e, 0x49, 0x6e, - 0x69, 0x74, 0x69, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x61, 0x74, 0x69, - 0x6f, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x75, 0x72, 0x6e, 0x5f, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x71, - 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, 0x75, 0x72, - 0x6e, 0x56, 0x6f, 0x74, 0x65, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x12, 0x41, 0x0a, 0x1d, 0x62, - 0x75, 0x72, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x6f, 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x1a, 0x62, 0x75, 0x72, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50, 0x72, 0x65, 0x76, 0x6f, 0x74, 0x65, 0x12, 0x24, - 0x0a, 0x0e, 0x62, 0x75, 0x72, 0x6e, 0x5f, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x76, 0x65, 0x74, 0x6f, - 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x62, 0x75, 0x72, 0x6e, 0x56, 0x6f, 0x74, 0x65, - 0x56, 0x65, 0x74, 0x6f, 0x2a, 0x89, 0x01, 0x0a, 0x0a, 0x56, 0x6f, 0x74, 0x65, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x59, 0x45, 0x53, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x42, 0x53, 0x54, 0x41, 0x49, 0x4e, 0x10, 0x02, 0x12, 0x12, - 0x0a, 0x0e, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, - 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x4e, 0x4f, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x56, 0x45, 0x54, 0x4f, 0x10, 0x04, - 0x2a, 0xce, 0x01, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x5f, - 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, 0x4f, 0x50, - 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x56, 0x4f, 0x54, 0x49, - 0x4e, 0x47, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x50, - 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, - 0x41, 0x53, 0x53, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x50, 0x4f, - 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, - 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, - 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, - 0x05, 0x42, 0x99, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x42, 0x08, 0x47, 0x6f, 0x76, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x50, 0x01, 0x5a, 0x24, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, - 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x67, 0x6f, 0x76, - 0x2f, 0x76, 0x31, 0x3b, 0x67, 0x6f, 0x76, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x47, 0x58, 0xaa, - 0x02, 0x0d, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x47, 0x6f, 0x76, 0x2e, 0x56, 0x31, 0xca, - 0x02, 0x0d, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, 0x31, 0xe2, - 0x02, 0x19, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, 0x31, 0x5c, - 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x43, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x47, 0x6f, 0x76, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x24, 0xea, 0xde, 0x1f, 0x1c, 0x6d, 0x61, 0x78, 0x5f, 0x64, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x2c, 0x6f, 0x6d, + 0x69, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x98, 0xdf, 0x1f, 0x01, 0x52, 0x10, 0x6d, 0x61, 0x78, + 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x22, 0x54, 0x0a, + 0x0c, 0x56, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x44, 0x0a, + 0x0d, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x04, 0x98, 0xdf, 0x1f, 0x01, 0x52, 0x0c, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, + 0x69, 0x6f, 0x64, 0x22, 0x9a, 0x01, 0x0a, 0x0b, 0x54, 0x61, 0x6c, 0x6c, 0x79, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x12, 0x26, 0x0a, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x44, 0x65, 0x63, 0x52, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x12, 0x2c, 0x0a, 0x09, 0x74, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, + 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x09, + 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x35, 0x0a, 0x0e, 0x76, 0x65, 0x74, + 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, + 0x63, 0x52, 0x0d, 0x76, 0x65, 0x74, 0x6f, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, + 0x22, 0xa9, 0x05, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x45, 0x0a, 0x0b, 0x6d, + 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, + 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x12, 0x4d, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0x98, 0xdf, 0x1f, 0x01, 0x52, + 0x10, 0x6d, 0x61, 0x78, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, + 0x64, 0x12, 0x44, 0x0a, 0x0d, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x69, + 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x04, 0x98, 0xdf, 0x1f, 0x01, 0x52, 0x0c, 0x76, 0x6f, 0x74, 0x69, 0x6e, + 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x26, 0x0a, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, + 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x12, + 0x2c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, + 0x65, 0x63, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x35, 0x0a, + 0x0e, 0x76, 0x65, 0x74, 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0d, 0x76, 0x65, 0x74, 0x6f, 0x54, 0x68, 0x72, 0x65, 0x73, + 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x49, 0x0a, 0x19, 0x6d, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x69, 0x74, + 0x69, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x16, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x69, 0x74, + 0x69, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, + 0x58, 0x0a, 0x15, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, + 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, + 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x13, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x4d, + 0x69, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x75, 0x72, + 0x6e, 0x5f, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, 0x75, 0x72, 0x6e, 0x56, 0x6f, 0x74, 0x65, 0x51, 0x75, 0x6f, + 0x72, 0x75, 0x6d, 0x12, 0x41, 0x0a, 0x1d, 0x62, 0x75, 0x72, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x70, + 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x70, 0x72, 0x65, + 0x76, 0x6f, 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x62, 0x75, 0x72, 0x6e, + 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50, + 0x72, 0x65, 0x76, 0x6f, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x62, 0x75, 0x72, 0x6e, 0x5f, 0x76, + 0x6f, 0x74, 0x65, 0x5f, 0x76, 0x65, 0x74, 0x6f, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, + 0x62, 0x75, 0x72, 0x6e, 0x56, 0x6f, 0x74, 0x65, 0x56, 0x65, 0x74, 0x6f, 0x2a, 0x89, 0x01, 0x0a, + 0x0a, 0x56, 0x6f, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x56, + 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x4f, 0x54, 0x45, + 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x59, 0x45, 0x53, 0x10, 0x01, 0x12, 0x17, 0x0a, + 0x13, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x42, 0x53, + 0x54, 0x41, 0x49, 0x4e, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, + 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x56, 0x4f, + 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x5f, 0x57, 0x49, 0x54, + 0x48, 0x5f, 0x56, 0x45, 0x54, 0x4f, 0x10, 0x04, 0x2a, 0xce, 0x01, 0x0a, 0x0e, 0x50, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x50, + 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, + 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, + 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x10, 0x01, + 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x55, 0x53, 0x5f, 0x56, 0x4f, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, + 0x44, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x45, 0x44, 0x10, 0x03, 0x12, + 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x1a, 0x0a, + 0x16, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x42, 0x99, 0x01, 0x0a, 0x11, 0x63, 0x6f, + 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x42, + 0x08, 0x47, 0x6f, 0x76, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x24, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x67, 0x6f, 0x76, 0x2f, 0x76, 0x31, 0x3b, 0x67, 0x6f, 0x76, 0x76, + 0x31, 0xa2, 0x02, 0x03, 0x43, 0x47, 0x58, 0xaa, 0x02, 0x0d, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x47, 0x6f, 0x76, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0d, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x19, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x47, 0x6f, + 0x76, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -7428,11 +7645,12 @@ var file_cosmos_gov_v1_gov_proto_depIdxs = []int32{ 11, // 14: cosmos.gov.v1.Params.min_deposit:type_name -> cosmos.base.v1beta1.Coin 14, // 15: cosmos.gov.v1.Params.max_deposit_period:type_name -> google.protobuf.Duration 14, // 16: cosmos.gov.v1.Params.voting_period:type_name -> google.protobuf.Duration - 17, // [17:17] is the sub-list for method output_type - 17, // [17:17] is the sub-list for method input_type - 17, // [17:17] is the sub-list for extension type_name - 17, // [17:17] is the sub-list for extension extendee - 0, // [0:17] is the sub-list for field type_name + 11, // 17: cosmos.gov.v1.Params.expedited_min_deposit:type_name -> cosmos.base.v1beta1.Coin + 18, // [18:18] is the sub-list for method output_type + 18, // [18:18] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name } func init() { file_cosmos_gov_v1_gov_proto_init() } diff --git a/proto/cosmos/gov/v1/gov.proto b/proto/cosmos/gov/v1/gov.proto index 49bfcc264b49..db25328b356c 100644 --- a/proto/cosmos/gov/v1/gov.proto +++ b/proto/cosmos/gov/v1/gov.proto @@ -96,6 +96,9 @@ message Proposal { // // Since: cosmos-sdk 0.47 string proposer = 13 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // expedited defines if the proposal is expedited + bool expedited = 14; } // ProposalStatus enumerates the valid statuses of a proposal. @@ -209,6 +212,10 @@ message Params { // The ratio representing the proportion of the deposit value that must be paid at proposal submission. string min_initial_deposit_ratio = 7 [(cosmos_proto.scalar) = "cosmos.Dec"]; + // Minimum expedited deposit for a proposal to enter voting period. + repeated cosmos.base.v1beta1.Coin expedited_min_deposit = 12 + [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; + // burn deposits if a proposal does not meet quorum bool burn_vote_quorum = 13; diff --git a/x/gov/abci.go b/x/gov/abci.go index fd0df2981779..32d885bca713 100644 --- a/x/gov/abci.go +++ b/x/gov/abci.go @@ -44,6 +44,7 @@ func EndBlocker(ctx sdk.Context, keeper *keeper.Keeper) { "proposal did not meet minimum deposit; deleted", "proposal", proposal.Id, "min_deposit", sdk.NewCoins(params.MinDeposit...).String(), + "min_expedited_deposit", sdk.NewCoins(params.ExpeditedMinDeposit...).String(), "total_deposit", sdk.NewCoins(proposal.TotalDeposit...).String(), ) @@ -56,12 +57,20 @@ func EndBlocker(ctx sdk.Context, keeper *keeper.Keeper) { passes, burnDeposits, tallyResults := keeper.Tally(ctx, proposal) - if burnDeposits { - keeper.DeleteAndBurnDeposits(ctx, proposal.Id) - } else { - keeper.RefundAndDeleteDeposits(ctx, proposal.Id) + // If an expedited proposal fails, we do not want to update + // the deposit at this point since the proposal is converted to regular. + // As a result, the deposits are either deleted or refunded in all casses + // EXCEPT when an expedited proposal fails. + if !(proposal.Expedited && !passes) { + if burnDeposits { + keeper.DeleteAndBurnDeposits(ctx, proposal.Id) + } else { + keeper.RefundAndDeleteDeposits(ctx, proposal.Id) + } } + keeper.RemoveFromActiveProposalQueue(ctx, proposal.Id, *proposal.VotingEndTime) + if passes { var ( idx int @@ -107,15 +116,32 @@ func EndBlocker(ctx sdk.Context, keeper *keeper.Keeper) { logMsg = fmt.Sprintf("passed, but msg %d (%s) failed on execution: %s", idx, sdk.MsgTypeURL(msg), err) } } else { - proposal.Status = v1.StatusRejected - tagValue = types.AttributeValueProposalRejected - logMsg = "rejected" + // proposal did not pass after voting period ends + if proposal.Expedited { + // When expedited proposal fails, it is converted to a regular proposal. + // As a result, the voting period is extended. + // Once the regular voting period expires again, the tally is repeated + // according to the regular proposal rules. + proposal.Expedited = false + params := keeper.GetParams(ctx) + newVotingEndTime := proposal.VotingStartTime.Add(*params.VotingPeriod) + proposal.VotingEndTime = &newVotingEndTime + + keeper.InsertActiveProposalQueue(ctx, proposal.Id, *proposal.VotingEndTime) + tagValue = types.AttributeValueExpeditedConverted + logMsg = "expedited proposal converted to regular" + } else { + // When regular proposal fails, it is rejected and + // the proposal with that id is done forever. + proposal.Status = v1.StatusRejected + tagValue = types.AttributeValueProposalRejected + logMsg = "rejected" + } } proposal.FinalTallyResult = &tallyResults keeper.SetProposal(ctx, proposal) - keeper.RemoveFromActiveProposalQueue(ctx, proposal.Id, *proposal.VotingEndTime) // when proposal become active keeper.Hooks().AfterProposalVotingPeriodEnded(ctx, proposal.Id) diff --git a/x/gov/migrations/v3/json_test.go b/x/gov/migrations/v3/json_test.go index 29f70ff5f715..726d6c506d18 100644 --- a/x/gov/migrations/v3/json_test.go +++ b/x/gov/migrations/v3/json_test.go @@ -87,6 +87,7 @@ func TestMigrateJSON(t *testing.T) { "proposals": [ { "deposit_end_time": "2001-09-09T01:46:40Z", + "expedited": false, "final_tally_result": { "abstain_count": "0", "no_count": "0", diff --git a/x/gov/migrations/v4/json_test.go b/x/gov/migrations/v4/json_test.go index b16247f43ea6..42a36e331eb9 100644 --- a/x/gov/migrations/v4/json_test.go +++ b/x/gov/migrations/v4/json_test.go @@ -62,6 +62,7 @@ func TestMigrateJSON(t *testing.T) { "burn_proposal_deposit_prevote": false, "burn_vote_quorum": false, "burn_vote_veto": true, + "expedited_min_deposit": [], "max_deposit_period": "172800s", "min_deposit": [ { diff --git a/x/gov/types/events.go b/x/gov/types/events.go index 76927591af8e..39fa92d6dee2 100644 --- a/x/gov/types/events.go +++ b/x/gov/types/events.go @@ -9,16 +9,17 @@ const ( EventTypeActiveProposal = "active_proposal" EventTypeSignalProposal = "signal_proposal" - AttributeKeyProposalResult = "proposal_result" - AttributeKeyOption = "option" - AttributeKeyProposalID = "proposal_id" - AttributeKeyProposalMessages = "proposal_messages" // Msg type_urls in the proposal - AttributeKeyVotingPeriodStart = "voting_period_start" - AttributeValueProposalDropped = "proposal_dropped" // didn't meet min deposit - AttributeValueProposalPassed = "proposal_passed" // met vote quorum - AttributeValueProposalRejected = "proposal_rejected" // didn't meet vote quorum - AttributeValueProposalFailed = "proposal_failed" // error on proposal handler - AttributeKeyProposalType = "proposal_type" - AttributeSignalTitle = "signal_title" - AttributeSignalDescription = "signal_description" + AttributeKeyProposalResult = "proposal_result" + AttributeKeyOption = "option" + AttributeKeyProposalID = "proposal_id" + AttributeKeyProposalMessages = "proposal_messages" // Msg type_urls in the proposal + AttributeKeyVotingPeriodStart = "voting_period_start" + AttributeValueProposalDropped = "proposal_dropped" // didn't meet min deposit + AttributeValueProposalPassed = "proposal_passed" // met vote quorum + AttributeValueProposalRejected = "proposal_rejected" // didn't meet vote quorum + AttributeValueExpeditedConverted = "expedited_proposal_converted" // didn't pass expedition and converted to regular proposal + AttributeValueProposalFailed = "proposal_failed" // error on proposal handler + AttributeKeyProposalType = "proposal_type" + AttributeSignalTitle = "signal_title" + AttributeSignalDescription = "signal_description" ) diff --git a/x/gov/types/v1/gov.pb.go b/x/gov/types/v1/gov.pb.go index 747eab5c4ca6..d2f2c4183d84 100644 --- a/x/gov/types/v1/gov.pb.go +++ b/x/gov/types/v1/gov.pb.go @@ -277,6 +277,8 @@ type Proposal struct { // // Since: cosmos-sdk 0.47 Proposer string `protobuf:"bytes,13,opt,name=proposer,proto3" json:"proposer,omitempty"` + // expedited defines if the proposal is expedited + Expedited bool `protobuf:"varint,14,opt,name=expedited,proto3" json:"expedited,omitempty"` } func (m *Proposal) Reset() { *m = Proposal{} } @@ -403,6 +405,13 @@ func (m *Proposal) GetProposer() string { return "" } +func (m *Proposal) GetExpedited() bool { + if m != nil { + return m.Expedited + } + return false +} + // TallyResult defines a standard tally for a governance proposal. type TallyResult struct { // yes_count is the number of yes votes on a proposal. @@ -739,6 +748,8 @@ type Params struct { VetoThreshold string `protobuf:"bytes,6,opt,name=veto_threshold,json=vetoThreshold,proto3" json:"veto_threshold,omitempty"` // The ratio representing the proportion of the deposit value that must be paid at proposal submission. MinInitialDepositRatio string `protobuf:"bytes,7,opt,name=min_initial_deposit_ratio,json=minInitialDepositRatio,proto3" json:"min_initial_deposit_ratio,omitempty"` + // Minimum expedited deposit for a proposal to enter voting period. + ExpeditedMinDeposit []types.Coin `protobuf:"bytes,12,rep,name=expedited_min_deposit,json=expeditedMinDeposit,proto3" json:"expedited_min_deposit"` // burn deposits if a proposal does not meet quorum BurnVoteQuorum bool `protobuf:"varint,13,opt,name=burn_vote_quorum,json=burnVoteQuorum,proto3" json:"burn_vote_quorum,omitempty"` // burn deposits if the proposal does not enter voting period @@ -829,6 +840,13 @@ func (m *Params) GetMinInitialDepositRatio() string { return "" } +func (m *Params) GetExpeditedMinDeposit() []types.Coin { + if m != nil { + return m.ExpeditedMinDeposit + } + return nil +} + func (m *Params) GetBurnVoteQuorum() bool { if m != nil { return m.BurnVoteQuorum @@ -867,87 +885,89 @@ func init() { func init() { proto.RegisterFile("cosmos/gov/v1/gov.proto", fileDescriptor_e05cb1c0d030febb) } var fileDescriptor_e05cb1c0d030febb = []byte{ - // 1276 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0xcf, 0x73, 0xd3, 0xc6, - 0x17, 0x8f, 0x6c, 0xd9, 0x71, 0x9e, 0x63, 0x47, 0x2c, 0xf9, 0x82, 0x12, 0x88, 0x1d, 0x3c, 0x0c, - 0x93, 0x2f, 0x3f, 0xec, 0x6f, 0xe0, 0x4b, 0x2f, 0xf4, 0xe2, 0xc4, 0xa2, 0x88, 0xa1, 0xb1, 0x2b, - 0x8b, 0x30, 0xf4, 0xa2, 0x91, 0xa3, 0xc5, 0xd9, 0xa9, 0xa5, 0x75, 0xa5, 0xb5, 0xc1, 0x7f, 0x42, - 0x6f, 0x1c, 0x3b, 0x3d, 0xf5, 0xd8, 0x63, 0x0f, 0x4c, 0xef, 0xbd, 0x71, 0x6a, 0x19, 0x2e, 0x6d, - 0x2f, 0xb4, 0x03, 0x87, 0xce, 0xf0, 0x57, 0x74, 0x76, 0xb5, 0xb2, 0x1d, 0xc7, 0x9d, 0x04, 0x2e, - 0xb1, 0xf4, 0xde, 0xe7, 0xf3, 0xde, 0xdb, 0xf7, 0x6b, 0x15, 0x38, 0x7f, 0x40, 0x23, 0x9f, 0x46, - 0xb5, 0x2e, 0x1d, 0xd6, 0x86, 0xdb, 0xfc, 0xa7, 0xda, 0x0f, 0x29, 0xa3, 0xa8, 0x10, 0x2b, 0xaa, - 0x5c, 0x32, 0xdc, 0x5e, 0x2f, 0x49, 0x5c, 0xc7, 0x8d, 0x70, 0x6d, 0xb8, 0xdd, 0xc1, 0xcc, 0xdd, - 0xae, 0x1d, 0x50, 0x12, 0xc4, 0xf0, 0xf5, 0xd5, 0x2e, 0xed, 0x52, 0xf1, 0x58, 0xe3, 0x4f, 0x52, - 0x5a, 0xee, 0x52, 0xda, 0xed, 0xe1, 0x9a, 0x78, 0xeb, 0x0c, 0x9e, 0xd4, 0x18, 0xf1, 0x71, 0xc4, - 0x5c, 0xbf, 0x2f, 0x01, 0x6b, 0xb3, 0x00, 0x37, 0x18, 0x49, 0x55, 0x69, 0x56, 0xe5, 0x0d, 0x42, - 0x97, 0x11, 0x9a, 0x78, 0x5c, 0x8b, 0x23, 0x72, 0x62, 0xa7, 0x32, 0xda, 0x58, 0x75, 0xc6, 0xf5, - 0x49, 0x40, 0x6b, 0xe2, 0x6f, 0x2c, 0xaa, 0x50, 0x40, 0x8f, 0x30, 0xe9, 0x1e, 0x32, 0xec, 0xed, - 0x53, 0x86, 0x9b, 0x7d, 0x6e, 0x09, 0x6d, 0x43, 0x96, 0x8a, 0x27, 0x5d, 0xd9, 0x54, 0xb6, 0x8a, - 0x37, 0xd7, 0xaa, 0x47, 0x4e, 0x5d, 0x9d, 0x40, 0x2d, 0x09, 0x44, 0x57, 0x20, 0xfb, 0x54, 0x18, - 0xd2, 0x53, 0x9b, 0xca, 0xd6, 0xd2, 0x4e, 0xf1, 0xf5, 0x8b, 0x1b, 0x20, 0x59, 0x0d, 0x7c, 0x60, - 0x49, 0x6d, 0xe5, 0x7b, 0x05, 0x16, 0x1b, 0xb8, 0x4f, 0x23, 0xc2, 0x50, 0x19, 0xf2, 0xfd, 0x90, - 0xf6, 0x69, 0xe4, 0xf6, 0x1c, 0xe2, 0x09, 0x5f, 0xaa, 0x05, 0x89, 0xc8, 0xf4, 0xd0, 0x27, 0xb0, - 0xe4, 0xc5, 0x58, 0x1a, 0x4a, 0xbb, 0xfa, 0xeb, 0x17, 0x37, 0x56, 0xa5, 0xdd, 0xba, 0xe7, 0x85, - 0x38, 0x8a, 0xda, 0x2c, 0x24, 0x41, 0xd7, 0x9a, 0x40, 0xd1, 0xa7, 0x90, 0x75, 0x7d, 0x3a, 0x08, - 0x98, 0x9e, 0xde, 0x4c, 0x6f, 0xe5, 0x27, 0xf1, 0xf3, 0x32, 0x55, 0x65, 0x99, 0xaa, 0xbb, 0x94, - 0x04, 0x3b, 0x4b, 0x2f, 0xdf, 0x94, 0x17, 0x7e, 0xf8, 0xfb, 0xc7, 0xab, 0x8a, 0x25, 0x39, 0x95, - 0x9f, 0x33, 0x90, 0x6b, 0xc9, 0x20, 0x50, 0x11, 0x52, 0xe3, 0xd0, 0x52, 0xc4, 0x43, 0xff, 0x83, - 0x9c, 0x8f, 0xa3, 0xc8, 0xed, 0xe2, 0x48, 0x4f, 0x09, 0xe3, 0xab, 0xd5, 0xb8, 0x22, 0xd5, 0xa4, - 0x22, 0xd5, 0x7a, 0x30, 0xb2, 0xc6, 0x28, 0x74, 0x1b, 0xb2, 0x11, 0x73, 0xd9, 0x20, 0xd2, 0xd3, - 0x22, 0x99, 0x1b, 0x33, 0xc9, 0x4c, 0x5c, 0xb5, 0x05, 0xc8, 0x92, 0x60, 0x74, 0x0f, 0xd0, 0x13, - 0x12, 0xb8, 0x3d, 0x87, 0xb9, 0xbd, 0xde, 0xc8, 0x09, 0x71, 0x34, 0xe8, 0x31, 0x5d, 0xdd, 0x54, - 0xb6, 0xf2, 0x37, 0xd7, 0x67, 0x4c, 0xd8, 0x1c, 0x62, 0x09, 0x84, 0xa5, 0x09, 0xd6, 0x94, 0x04, - 0xd5, 0x21, 0x1f, 0x0d, 0x3a, 0x3e, 0x61, 0x0e, 0x6f, 0x33, 0x3d, 0x23, 0x4d, 0xcc, 0x46, 0x6d, - 0x27, 0x3d, 0xb8, 0xa3, 0x3e, 0xff, 0xb3, 0xac, 0x58, 0x10, 0x93, 0xb8, 0x18, 0xdd, 0x07, 0x4d, - 0x66, 0xd7, 0xc1, 0x81, 0x17, 0xdb, 0xc9, 0x9e, 0xd2, 0x4e, 0x51, 0x32, 0x8d, 0xc0, 0x13, 0xb6, - 0x4c, 0x28, 0x30, 0xca, 0xdc, 0x9e, 0x23, 0xe5, 0xfa, 0xe2, 0x07, 0xd4, 0x68, 0x59, 0x50, 0x93, - 0x06, 0x7a, 0x00, 0x67, 0x86, 0x94, 0x91, 0xa0, 0xeb, 0x44, 0xcc, 0x0d, 0xe5, 0xf9, 0x72, 0xa7, - 0x8c, 0x6b, 0x25, 0xa6, 0xb6, 0x39, 0x53, 0x04, 0x76, 0x0f, 0xa4, 0x68, 0x72, 0xc6, 0xa5, 0x53, - 0xda, 0x2a, 0xc4, 0xc4, 0xe4, 0x88, 0xeb, 0xbc, 0x49, 0x98, 0xeb, 0xb9, 0xcc, 0xd5, 0x81, 0xb7, - 0xad, 0x35, 0x7e, 0x47, 0xab, 0x90, 0x61, 0x84, 0xf5, 0xb0, 0x9e, 0x17, 0x8a, 0xf8, 0x05, 0xe9, - 0xb0, 0x18, 0x0d, 0x7c, 0xdf, 0x0d, 0x47, 0xfa, 0xb2, 0x90, 0x27, 0xaf, 0xe8, 0xff, 0x90, 0x8b, - 0x27, 0x02, 0x87, 0x7a, 0xe1, 0x84, 0x11, 0x18, 0x23, 0x2b, 0xbf, 0x29, 0x90, 0x9f, 0xee, 0x81, - 0x6b, 0xb0, 0x34, 0xc2, 0x91, 0x73, 0x20, 0x86, 0x42, 0x39, 0x36, 0xa1, 0x66, 0xc0, 0xac, 0xdc, - 0x08, 0x47, 0xbb, 0x5c, 0x8f, 0x6e, 0x41, 0xc1, 0xed, 0x44, 0xcc, 0x25, 0x81, 0x24, 0xa4, 0xe6, - 0x12, 0x96, 0x25, 0x28, 0x26, 0xfd, 0x17, 0x72, 0x01, 0x95, 0xf8, 0xf4, 0x5c, 0xfc, 0x62, 0x40, - 0x63, 0xe8, 0x1d, 0x40, 0x01, 0x75, 0x9e, 0x12, 0x76, 0xe8, 0x0c, 0x31, 0x4b, 0x48, 0xea, 0x5c, - 0xd2, 0x4a, 0x40, 0x1f, 0x11, 0x76, 0xb8, 0x8f, 0x59, 0x4c, 0xae, 0xfc, 0xa4, 0x80, 0xca, 0xf7, - 0xcf, 0xc9, 0xdb, 0xa3, 0x0a, 0x99, 0x21, 0x65, 0xf8, 0xe4, 0xcd, 0x11, 0xc3, 0xd0, 0x1d, 0x58, - 0x8c, 0x97, 0x59, 0xa4, 0xab, 0xa2, 0x25, 0x2f, 0xcd, 0x8c, 0xd9, 0xf1, 0x4d, 0x69, 0x25, 0x8c, - 0x23, 0x25, 0xcf, 0x1c, 0x2d, 0xf9, 0x7d, 0x35, 0x97, 0xd6, 0xd4, 0xca, 0x1f, 0x0a, 0x14, 0x64, - 0xe3, 0xb6, 0xdc, 0xd0, 0xf5, 0x23, 0xf4, 0x18, 0xf2, 0x3e, 0x09, 0xc6, 0x73, 0xa0, 0x9c, 0x34, - 0x07, 0x1b, 0x7c, 0x0e, 0xde, 0xbf, 0x29, 0xff, 0x67, 0x8a, 0x75, 0x9d, 0xfa, 0x84, 0x61, 0xbf, - 0xcf, 0x46, 0x16, 0xf8, 0x24, 0x48, 0x26, 0xc3, 0x07, 0xe4, 0xbb, 0xcf, 0x12, 0x90, 0xd3, 0xc7, - 0x21, 0xa1, 0x9e, 0x48, 0x04, 0xf7, 0x30, 0xdb, 0xce, 0x0d, 0x79, 0x85, 0xec, 0x5c, 0x7e, 0xff, - 0xa6, 0x7c, 0xf1, 0x38, 0x71, 0xe2, 0xe4, 0x5b, 0xde, 0xed, 0x9a, 0xef, 0x3e, 0x4b, 0x4e, 0x22, - 0xf4, 0x15, 0x1b, 0x96, 0xf7, 0xc5, 0x04, 0xc8, 0x93, 0x35, 0x40, 0x4e, 0x44, 0xe2, 0x59, 0x39, - 0xc9, 0xb3, 0x2a, 0x2c, 0x2f, 0xc7, 0x2c, 0x69, 0xf5, 0xbb, 0xa4, 0x89, 0xa5, 0xd5, 0x2b, 0x90, - 0xfd, 0x7a, 0x40, 0xc3, 0x81, 0x3f, 0xa7, 0x83, 0xc5, 0x1d, 0x13, 0x6b, 0xd1, 0x75, 0x58, 0x62, - 0x87, 0x21, 0x8e, 0x0e, 0x69, 0xcf, 0xfb, 0x97, 0xeb, 0x68, 0x02, 0x40, 0xb7, 0xa1, 0x28, 0xba, - 0x70, 0x42, 0x49, 0xcf, 0xa5, 0x14, 0x38, 0xca, 0x4e, 0x40, 0x95, 0x5f, 0x55, 0xc8, 0xca, 0xb8, - 0x8c, 0x0f, 0xac, 0xe3, 0xd4, 0x3e, 0x9b, 0xae, 0xd9, 0xe7, 0x1f, 0x57, 0x33, 0x75, 0x7e, 0x4d, - 0x8e, 0xd7, 0x20, 0xfd, 0x11, 0x35, 0x98, 0xca, 0xb9, 0x7a, 0xfa, 0x9c, 0x67, 0x3e, 0x3c, 0xe7, - 0xd9, 0x53, 0xe4, 0x1c, 0x99, 0xb0, 0xc6, 0x13, 0x4d, 0x02, 0xc2, 0xc8, 0xe4, 0x02, 0x71, 0x44, - 0xf8, 0xfa, 0xe2, 0x5c, 0x0b, 0xe7, 0x7c, 0x12, 0x98, 0x31, 0x5e, 0xa6, 0xc7, 0xe2, 0x68, 0xb4, - 0x05, 0x5a, 0x67, 0x10, 0x06, 0x0e, 0x1f, 0x7d, 0x47, 0x9e, 0x90, 0xaf, 0xd7, 0x9c, 0x55, 0xe4, - 0x72, 0x3e, 0xe2, 0x5f, 0xc4, 0x27, 0xab, 0xc3, 0x86, 0x40, 0x8e, 0x97, 0xcd, 0xb8, 0x40, 0x21, - 0xe6, 0x6c, 0xbd, 0x28, 0x68, 0xeb, 0x1c, 0x94, 0xdc, 0xe5, 0x49, 0x25, 0x62, 0x04, 0xba, 0x0c, - 0xc5, 0x89, 0x33, 0x7e, 0x24, 0x7d, 0x45, 0x70, 0x96, 0x13, 0x57, 0x7c, 0xbd, 0x5d, 0xfd, 0x46, - 0x01, 0x98, 0xfa, 0x08, 0xbb, 0x00, 0xe7, 0xf7, 0x9b, 0xb6, 0xe1, 0x34, 0x5b, 0xb6, 0xd9, 0xdc, - 0x73, 0x1e, 0xee, 0xb5, 0x5b, 0xc6, 0xae, 0x79, 0xd7, 0x34, 0x1a, 0xda, 0x02, 0x3a, 0x0b, 0x2b, - 0xd3, 0xca, 0xc7, 0x46, 0x5b, 0x53, 0xd0, 0x79, 0x38, 0x3b, 0x2d, 0xac, 0xef, 0xb4, 0xed, 0xba, - 0xb9, 0xa7, 0xa5, 0x10, 0x82, 0xe2, 0xb4, 0x62, 0xaf, 0xa9, 0xa5, 0xd1, 0x45, 0xd0, 0x8f, 0xca, - 0x9c, 0x47, 0xa6, 0x7d, 0xcf, 0xd9, 0x37, 0xec, 0xa6, 0xa6, 0x5e, 0xfd, 0x45, 0x81, 0xe2, 0xd1, - 0x0f, 0x13, 0x54, 0x86, 0x0b, 0x2d, 0xab, 0xd9, 0x6a, 0xb6, 0xeb, 0x0f, 0x9c, 0xb6, 0x5d, 0xb7, - 0x1f, 0xb6, 0x67, 0x62, 0xaa, 0x40, 0x69, 0x16, 0xd0, 0x30, 0x5a, 0xcd, 0xb6, 0x69, 0x3b, 0x2d, - 0xc3, 0x32, 0x9b, 0x0d, 0x4d, 0x41, 0x97, 0x60, 0x63, 0x16, 0xb3, 0xdf, 0xb4, 0xcd, 0xbd, 0xcf, - 0x12, 0x48, 0x0a, 0xad, 0xc3, 0xb9, 0x59, 0x48, 0xab, 0xde, 0x6e, 0x1b, 0x8d, 0x38, 0xe8, 0x59, - 0x9d, 0x65, 0xdc, 0x37, 0x76, 0x6d, 0xa3, 0xa1, 0xa9, 0xf3, 0x98, 0x77, 0xeb, 0xe6, 0x03, 0xa3, - 0xa1, 0x65, 0x76, 0x8c, 0x97, 0x6f, 0x4b, 0xca, 0xab, 0xb7, 0x25, 0xe5, 0xaf, 0xb7, 0x25, 0xe5, - 0xf9, 0xbb, 0xd2, 0xc2, 0xab, 0x77, 0xa5, 0x85, 0xdf, 0xdf, 0x95, 0x16, 0xbe, 0xbc, 0xd6, 0x25, - 0xec, 0x70, 0xd0, 0xa9, 0x1e, 0x50, 0x5f, 0x7e, 0x2e, 0xcb, 0x9f, 0x1b, 0x91, 0xf7, 0x55, 0xed, - 0x99, 0xf8, 0x17, 0x80, 0x8d, 0xfa, 0x38, 0xe2, 0xdf, 0xf7, 0x59, 0x31, 0x35, 0xb7, 0xfe, 0x09, - 0x00, 0x00, 0xff, 0xff, 0xbc, 0x24, 0x6f, 0xb5, 0x20, 0x0c, 0x00, 0x00, + // 1310 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0x4b, 0x73, 0xd3, 0xd6, + 0x17, 0x8f, 0xfc, 0x8a, 0x7d, 0xfc, 0x88, 0xb9, 0x04, 0x50, 0x02, 0xb1, 0x83, 0x87, 0x61, 0xf2, + 0xe7, 0x61, 0xff, 0x03, 0xa5, 0x1b, 0xba, 0x71, 0x62, 0x51, 0xc4, 0x40, 0xec, 0xca, 0x22, 0x94, + 0x6e, 0x34, 0x72, 0x74, 0x71, 0xee, 0xd4, 0xd2, 0x75, 0xa5, 0x6b, 0x13, 0x7f, 0x84, 0xee, 0x58, + 0x76, 0xba, 0xea, 0xb2, 0xdd, 0x75, 0xc1, 0xf4, 0x33, 0xb0, 0xea, 0x30, 0x6c, 0xda, 0x6e, 0xa0, + 0x03, 0x8b, 0xce, 0xf0, 0x29, 0x3a, 0xf7, 0xea, 0xca, 0x76, 0x1c, 0x77, 0x92, 0xb0, 0xb1, 0xa5, + 0x73, 0x7e, 0xbf, 0x73, 0xce, 0x3d, 0x2f, 0x49, 0x70, 0x61, 0x8f, 0x06, 0x2e, 0x0d, 0x6a, 0x5d, + 0x3a, 0xac, 0x0d, 0x37, 0xf9, 0x5f, 0xb5, 0xef, 0x53, 0x46, 0x51, 0x3e, 0x54, 0x54, 0xb9, 0x64, + 0xb8, 0xb9, 0x5a, 0x92, 0xb8, 0x8e, 0x1d, 0xe0, 0xda, 0x70, 0xb3, 0x83, 0x99, 0xbd, 0x59, 0xdb, + 0xa3, 0xc4, 0x0b, 0xe1, 0xab, 0xcb, 0x5d, 0xda, 0xa5, 0xe2, 0xb2, 0xc6, 0xaf, 0xa4, 0xb4, 0xdc, + 0xa5, 0xb4, 0xdb, 0xc3, 0x35, 0x71, 0xd7, 0x19, 0x3c, 0xab, 0x31, 0xe2, 0xe2, 0x80, 0xd9, 0x6e, + 0x5f, 0x02, 0x56, 0x66, 0x01, 0xb6, 0x37, 0x92, 0xaa, 0xd2, 0xac, 0xca, 0x19, 0xf8, 0x36, 0x23, + 0x34, 0xf2, 0xb8, 0x12, 0x46, 0x64, 0x85, 0x4e, 0x65, 0xb4, 0xa1, 0xea, 0x8c, 0xed, 0x12, 0x8f, + 0xd6, 0xc4, 0x6f, 0x28, 0xaa, 0x50, 0x40, 0x4f, 0x30, 0xe9, 0xee, 0x33, 0xec, 0xec, 0x52, 0x86, + 0x9b, 0x7d, 0x6e, 0x09, 0x6d, 0x42, 0x8a, 0x8a, 0x2b, 0x55, 0x59, 0x57, 0x36, 0x0a, 0xb7, 0x56, + 0xaa, 0x87, 0x4e, 0x5d, 0x9d, 0x40, 0x0d, 0x09, 0x44, 0x57, 0x21, 0xf5, 0x5c, 0x18, 0x52, 0x63, + 0xeb, 0xca, 0x46, 0x66, 0xab, 0xf0, 0xe6, 0xe5, 0x4d, 0x90, 0xac, 0x06, 0xde, 0x33, 0xa4, 0xb6, + 0xf2, 0x93, 0x02, 0x8b, 0x0d, 0xdc, 0xa7, 0x01, 0x61, 0xa8, 0x0c, 0xd9, 0xbe, 0x4f, 0xfb, 0x34, + 0xb0, 0x7b, 0x16, 0x71, 0x84, 0xaf, 0x84, 0x01, 0x91, 0x48, 0x77, 0xd0, 0xe7, 0x90, 0x71, 0x42, + 0x2c, 0xf5, 0xa5, 0x5d, 0xf5, 0xcd, 0xcb, 0x9b, 0xcb, 0xd2, 0x6e, 0xdd, 0x71, 0x7c, 0x1c, 0x04, + 0x6d, 0xe6, 0x13, 0xaf, 0x6b, 0x4c, 0xa0, 0xe8, 0x0b, 0x48, 0xd9, 0x2e, 0x1d, 0x78, 0x4c, 0x8d, + 0xaf, 0xc7, 0x37, 0xb2, 0x93, 0xf8, 0x79, 0x99, 0xaa, 0xb2, 0x4c, 0xd5, 0x6d, 0x4a, 0xbc, 0xad, + 0xcc, 0xab, 0xb7, 0xe5, 0x85, 0x9f, 0xff, 0xf9, 0xf5, 0x9a, 0x62, 0x48, 0x4e, 0xe5, 0x5d, 0x12, + 0xd2, 0x2d, 0x19, 0x04, 0x2a, 0x40, 0x6c, 0x1c, 0x5a, 0x8c, 0x38, 0xe8, 0xff, 0x90, 0x76, 0x71, + 0x10, 0xd8, 0x5d, 0x1c, 0xa8, 0x31, 0x61, 0x7c, 0xb9, 0x1a, 0x56, 0xa4, 0x1a, 0x55, 0xa4, 0x5a, + 0xf7, 0x46, 0xc6, 0x18, 0x85, 0xee, 0x40, 0x2a, 0x60, 0x36, 0x1b, 0x04, 0x6a, 0x5c, 0x24, 0x73, + 0x6d, 0x26, 0x99, 0x91, 0xab, 0xb6, 0x00, 0x19, 0x12, 0x8c, 0xee, 0x03, 0x7a, 0x46, 0x3c, 0xbb, + 0x67, 0x31, 0xbb, 0xd7, 0x1b, 0x59, 0x3e, 0x0e, 0x06, 0x3d, 0xa6, 0x26, 0xd6, 0x95, 0x8d, 0xec, + 0xad, 0xd5, 0x19, 0x13, 0x26, 0x87, 0x18, 0x02, 0x61, 0x14, 0x05, 0x6b, 0x4a, 0x82, 0xea, 0x90, + 0x0d, 0x06, 0x1d, 0x97, 0x30, 0x8b, 0xb7, 0x99, 0x9a, 0x94, 0x26, 0x66, 0xa3, 0x36, 0xa3, 0x1e, + 0xdc, 0x4a, 0xbc, 0x78, 0x57, 0x56, 0x0c, 0x08, 0x49, 0x5c, 0x8c, 0x1e, 0x40, 0x51, 0x66, 0xd7, + 0xc2, 0x9e, 0x13, 0xda, 0x49, 0x9d, 0xd0, 0x4e, 0x41, 0x32, 0x35, 0xcf, 0x11, 0xb6, 0x74, 0xc8, + 0x33, 0xca, 0xec, 0x9e, 0x25, 0xe5, 0xea, 0xe2, 0x29, 0x6a, 0x94, 0x13, 0xd4, 0xa8, 0x81, 0x1e, + 0xc2, 0x99, 0x21, 0x65, 0xc4, 0xeb, 0x5a, 0x01, 0xb3, 0x7d, 0x79, 0xbe, 0xf4, 0x09, 0xe3, 0x5a, + 0x0a, 0xa9, 0x6d, 0xce, 0x14, 0x81, 0xdd, 0x07, 0x29, 0x9a, 0x9c, 0x31, 0x73, 0x42, 0x5b, 0xf9, + 0x90, 0x18, 0x1d, 0x71, 0x95, 0x37, 0x09, 0xb3, 0x1d, 0x9b, 0xd9, 0x2a, 0xf0, 0xb6, 0x35, 0xc6, + 0xf7, 0x68, 0x19, 0x92, 0x8c, 0xb0, 0x1e, 0x56, 0xb3, 0x42, 0x11, 0xde, 0x20, 0x15, 0x16, 0x83, + 0x81, 0xeb, 0xda, 0xfe, 0x48, 0xcd, 0x09, 0x79, 0x74, 0x8b, 0x3e, 0x83, 0x74, 0x38, 0x11, 0xd8, + 0x57, 0xf3, 0xc7, 0x8c, 0xc0, 0x18, 0x89, 0x2e, 0x41, 0x06, 0x1f, 0xf4, 0xb1, 0x43, 0x18, 0x76, + 0xd4, 0xc2, 0xba, 0xb2, 0x91, 0x36, 0x26, 0x82, 0xca, 0x1f, 0x0a, 0x64, 0xa7, 0x3b, 0xe4, 0x3a, + 0x64, 0x46, 0x38, 0xb0, 0xf6, 0xc4, 0xc8, 0x28, 0x47, 0xe6, 0x57, 0xf7, 0x98, 0x91, 0x1e, 0xe1, + 0x60, 0x9b, 0xeb, 0xd1, 0x6d, 0xc8, 0xdb, 0x9d, 0x80, 0xd9, 0xc4, 0x93, 0x84, 0xd8, 0x5c, 0x42, + 0x4e, 0x82, 0x42, 0xd2, 0xff, 0x20, 0xed, 0x51, 0x89, 0x8f, 0xcf, 0xc5, 0x2f, 0x7a, 0x34, 0x84, + 0xde, 0x05, 0xe4, 0x51, 0xeb, 0x39, 0x61, 0xfb, 0xd6, 0x10, 0xb3, 0x88, 0x94, 0x98, 0x4b, 0x5a, + 0xf2, 0xe8, 0x13, 0xc2, 0xf6, 0x77, 0x31, 0x0b, 0xc9, 0x95, 0xdf, 0x14, 0x48, 0xf0, 0xed, 0x74, + 0xfc, 0x6e, 0xa9, 0x42, 0x72, 0x48, 0x19, 0x3e, 0x7e, 0xaf, 0x84, 0x30, 0x74, 0x17, 0x16, 0xc3, + 0x55, 0x17, 0xa8, 0x09, 0xd1, 0xb0, 0x97, 0x67, 0x86, 0xf0, 0xe8, 0x1e, 0x35, 0x22, 0xc6, 0xa1, + 0x86, 0x48, 0x1e, 0x6e, 0x88, 0x07, 0x89, 0x74, 0xbc, 0x98, 0xa8, 0xfc, 0xa5, 0x40, 0x5e, 0xb6, + 0x75, 0xcb, 0xf6, 0x6d, 0x37, 0x40, 0x4f, 0x21, 0xeb, 0x12, 0x6f, 0x3c, 0x25, 0xca, 0x71, 0x53, + 0xb2, 0xc6, 0xa7, 0xe4, 0xe3, 0xdb, 0xf2, 0xb9, 0x29, 0xd6, 0x0d, 0xea, 0x12, 0x86, 0xdd, 0x3e, + 0x1b, 0x19, 0xe0, 0x12, 0x2f, 0x9a, 0x1b, 0x17, 0x90, 0x6b, 0x1f, 0x44, 0x20, 0xab, 0x8f, 0x7d, + 0x42, 0x1d, 0x91, 0x08, 0xee, 0x61, 0xb6, 0xd9, 0x1b, 0xf2, 0x01, 0xb3, 0x75, 0xe5, 0xe3, 0xdb, + 0xf2, 0xa5, 0xa3, 0xc4, 0x89, 0x93, 0x1f, 0xf8, 0x2c, 0x14, 0x5d, 0xfb, 0x20, 0x3a, 0x89, 0xd0, + 0x57, 0x4c, 0xc8, 0xed, 0x8a, 0xf9, 0x90, 0x27, 0x6b, 0x80, 0x9c, 0x97, 0xc8, 0xb3, 0x72, 0x9c, + 0xe7, 0x84, 0xb0, 0x9c, 0x0b, 0x59, 0xd2, 0xea, 0x8f, 0x51, 0x13, 0x4b, 0xab, 0x57, 0x21, 0xf5, + 0xdd, 0x80, 0xfa, 0x03, 0x77, 0x4e, 0x07, 0x8b, 0x27, 0x50, 0xa8, 0x45, 0x37, 0x20, 0xc3, 0xf6, + 0x7d, 0x1c, 0xec, 0xd3, 0x9e, 0xf3, 0x1f, 0x0f, 0xab, 0x09, 0x00, 0xdd, 0x81, 0x82, 0xe8, 0xc2, + 0x09, 0x25, 0x3e, 0x97, 0x92, 0xe7, 0x28, 0x33, 0x02, 0x55, 0x7e, 0x49, 0x42, 0x4a, 0xc6, 0xa5, + 0x9d, 0xb2, 0x8e, 0x53, 0xdb, 0x6e, 0xba, 0x66, 0x8f, 0x3e, 0xad, 0x66, 0x89, 0xf9, 0x35, 0x39, + 0x5a, 0x83, 0xf8, 0x27, 0xd4, 0x60, 0x2a, 0xe7, 0x89, 0x93, 0xe7, 0x3c, 0x79, 0xfa, 0x9c, 0xa7, + 0x4e, 0x90, 0x73, 0xa4, 0xc3, 0x0a, 0x4f, 0x34, 0xf1, 0x08, 0x23, 0x93, 0xc7, 0x8b, 0x25, 0xc2, + 0x57, 0x17, 0xe7, 0x5a, 0x38, 0xef, 0x12, 0x4f, 0x0f, 0xf1, 0x32, 0x3d, 0x06, 0x47, 0xa3, 0xaf, + 0xe1, 0xdc, 0x78, 0x5b, 0x5a, 0xd3, 0xd5, 0xcb, 0x9d, 0xa2, 0x7a, 0x67, 0xc7, 0x26, 0x1e, 0x4d, + 0xca, 0xb8, 0x01, 0xc5, 0xce, 0xc0, 0xf7, 0x2c, 0xbe, 0x54, 0x2c, 0x99, 0xbb, 0xbc, 0xd8, 0xcf, + 0x05, 0x2e, 0xe7, 0xcb, 0xe3, 0xab, 0x30, 0x67, 0x75, 0x58, 0x13, 0xc8, 0xf1, 0x1a, 0x1b, 0x97, + 0xde, 0xc7, 0x9c, 0x2d, 0xd7, 0xfa, 0x2a, 0x07, 0x45, 0xef, 0x10, 0x51, 0x8d, 0x43, 0x04, 0xba, + 0x02, 0x85, 0x89, 0x33, 0x9e, 0x2c, 0x75, 0x49, 0x70, 0x72, 0x91, 0x2b, 0xbe, 0x38, 0xaf, 0x7d, + 0xaf, 0x00, 0x4c, 0xbd, 0xfc, 0x5d, 0x84, 0x0b, 0xbb, 0x4d, 0x53, 0xb3, 0x9a, 0x2d, 0x53, 0x6f, + 0xee, 0x58, 0x8f, 0x77, 0xda, 0x2d, 0x6d, 0x5b, 0xbf, 0xa7, 0x6b, 0x8d, 0xe2, 0x02, 0x3a, 0x0b, + 0x4b, 0xd3, 0xca, 0xa7, 0x5a, 0xbb, 0xa8, 0xa0, 0x0b, 0x70, 0x76, 0x5a, 0x58, 0xdf, 0x6a, 0x9b, + 0x75, 0x7d, 0xa7, 0x18, 0x43, 0x08, 0x0a, 0xd3, 0x8a, 0x9d, 0x66, 0x31, 0x8e, 0x2e, 0x81, 0x7a, + 0x58, 0x66, 0x3d, 0xd1, 0xcd, 0xfb, 0xd6, 0xae, 0x66, 0x36, 0x8b, 0x89, 0x6b, 0xbf, 0x2b, 0x50, + 0x38, 0xfc, 0x42, 0x84, 0xca, 0x70, 0xb1, 0x65, 0x34, 0x5b, 0xcd, 0x76, 0xfd, 0xa1, 0xd5, 0x36, + 0xeb, 0xe6, 0xe3, 0xf6, 0x4c, 0x4c, 0x15, 0x28, 0xcd, 0x02, 0x1a, 0x5a, 0xab, 0xd9, 0xd6, 0x4d, + 0xab, 0xa5, 0x19, 0x7a, 0xb3, 0x51, 0x54, 0xd0, 0x65, 0x58, 0x9b, 0xc5, 0xec, 0x36, 0x4d, 0x7d, + 0xe7, 0xcb, 0x08, 0x12, 0x43, 0xab, 0x70, 0x7e, 0x16, 0xd2, 0xaa, 0xb7, 0xdb, 0x5a, 0x23, 0x0c, + 0x7a, 0x56, 0x67, 0x68, 0x0f, 0xb4, 0x6d, 0x53, 0x6b, 0x14, 0x13, 0xf3, 0x98, 0xf7, 0xea, 0xfa, + 0x43, 0xad, 0x51, 0x4c, 0x6e, 0x69, 0xaf, 0xde, 0x97, 0x94, 0xd7, 0xef, 0x4b, 0xca, 0xdf, 0xef, + 0x4b, 0xca, 0x8b, 0x0f, 0xa5, 0x85, 0xd7, 0x1f, 0x4a, 0x0b, 0x7f, 0x7e, 0x28, 0x2d, 0x7c, 0x73, + 0xbd, 0x4b, 0xd8, 0xfe, 0xa0, 0x53, 0xdd, 0xa3, 0xae, 0x7c, 0x4d, 0x97, 0x7f, 0x37, 0x03, 0xe7, + 0xdb, 0xda, 0x81, 0xf8, 0xf4, 0x60, 0xa3, 0x3e, 0x0e, 0xf8, 0x77, 0x45, 0x4a, 0xcc, 0xe3, 0xed, + 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x0f, 0x6d, 0xb4, 0xf1, 0x98, 0x0c, 0x00, 0x00, } func (m *WeightedVoteOption) Marshal() (dAtA []byte, err error) { @@ -1054,6 +1074,16 @@ func (m *Proposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.Expedited { + i-- + if m.Expedited { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x70 + } if len(m.Proposer) > 0 { i -= len(m.Proposer) copy(dAtA[i:], m.Proposer) @@ -1456,6 +1486,20 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x68 } + if len(m.ExpeditedMinDeposit) > 0 { + for iNdEx := len(m.ExpeditedMinDeposit) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ExpeditedMinDeposit[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGov(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x62 + } + } if len(m.MinInitialDepositRatio) > 0 { i -= len(m.MinInitialDepositRatio) copy(dAtA[i:], m.MinInitialDepositRatio) @@ -1630,6 +1674,9 @@ func (m *Proposal) Size() (n int) { if l > 0 { n += 1 + l + sovGov(uint64(l)) } + if m.Expedited { + n += 2 + } return n } @@ -1773,6 +1820,12 @@ func (m *Params) Size() (n int) { if l > 0 { n += 1 + l + sovGov(uint64(l)) } + if len(m.ExpeditedMinDeposit) > 0 { + for _, e := range m.ExpeditedMinDeposit { + l = e.Size() + n += 1 + l + sovGov(uint64(l)) + } + } if m.BurnVoteQuorum { n += 2 } @@ -2470,6 +2523,26 @@ func (m *Proposal) Unmarshal(dAtA []byte) error { } m.Proposer = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 14: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Expedited", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGov + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Expedited = bool(v != 0) default: iNdEx = preIndex skippy, err := skipGov(dAtA[iNdEx:]) @@ -3451,6 +3524,40 @@ func (m *Params) Unmarshal(dAtA []byte) error { } m.MinInitialDepositRatio = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExpeditedMinDeposit", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGov + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGov + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGov + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ExpeditedMinDeposit = append(m.ExpeditedMinDeposit, types.Coin{}) + if err := m.ExpeditedMinDeposit[len(m.ExpeditedMinDeposit)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex case 13: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field BurnVoteQuorum", wireType) diff --git a/x/staking/types/staking.pb.go b/x/staking/types/staking.pb.go index 0510eb691dfc..947b5d10b47d 100644 --- a/x/staking/types/staking.pb.go +++ b/x/staking/types/staking.pb.go @@ -1392,690 +1392,670 @@ 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{ - // 10916 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7d, 0x7b, 0x90, 0x1c, 0xc7, - 0x79, 0xdf, 0xed, 0xe3, 0xf6, 0xf1, 0xed, 0x6b, 0xae, 0xef, 0x00, 0x1c, 0x16, 0xe4, 0xdd, 0x71, - 0x28, 0x12, 0x0f, 0x92, 0x07, 0x12, 0x24, 0x40, 0xf2, 0x20, 0x8a, 0xde, 0xdd, 0x5b, 0x1c, 0x16, - 0xb8, 0x97, 0x66, 0xf7, 0xc0, 0x87, 0x63, 0x8d, 0xe7, 0x66, 0xfb, 0xee, 0x86, 0xd8, 0x9d, 0x59, - 0xcd, 0xcc, 0x02, 0x77, 0x2c, 0x57, 0x8a, 0xb6, 0x62, 0x47, 0x46, 0x1c, 0x47, 0x8e, 0x53, 0x36, - 0xfd, 0x80, 0x23, 0xf9, 0x29, 0x3b, 0x76, 0xe2, 0x87, 0x22, 0xcb, 0x51, 0xc5, 0xb1, 0x53, 0x71, - 0x22, 0xbb, 0x52, 0x89, 0xec, 0x4a, 0x25, 0x2e, 0x97, 0xc3, 0xd8, 0x94, 0x2b, 0x52, 0x24, 0x39, - 0xb6, 0x15, 0xba, 0x92, 0x94, 0xca, 0x4e, 0xaa, 0x5f, 0xf3, 0xd8, 0xc7, 0xed, 0x1e, 0x44, 0x32, - 0x4a, 0xe9, 0x1f, 0x60, 0xa7, 0xfb, 0xfb, 0x7e, 0xd3, 0xfd, 0xf5, 0xd7, 0x5f, 0x7f, 0xdf, 0xd7, - 0x3d, 0x7d, 0xf0, 0xc7, 0x65, 0x58, 0xd8, 0xb5, 0xac, 0xdd, 0x16, 0x3e, 0xdf, 0xb1, 0x2d, 0xd7, - 0xda, 0xee, 0xee, 0x9c, 0x6f, 0x62, 0x47, 0xb7, 0x8d, 0x8e, 0x6b, 0xd9, 0x8b, 0xb4, 0x0c, 0x15, - 0x18, 0xc5, 0xa2, 0xa0, 0x90, 0xd7, 0x60, 0xea, 0x8a, 0xd1, 0xc2, 0xcb, 0x1e, 0x61, 0x1d, 0xbb, - 0xe8, 0x19, 0x88, 0xef, 0x18, 0x2d, 0x3c, 0x1b, 0x59, 0x88, 0x9d, 0xc9, 0x5c, 0x78, 0xcf, 0x62, - 0x0f, 0xd3, 0x62, 0x98, 0x63, 0x93, 0x14, 0x2b, 0x94, 0x43, 0xfe, 0xeb, 0x38, 0x4c, 0x0f, 0xa8, - 0x45, 0x08, 0xe2, 0xa6, 0xd6, 0x26, 0x88, 0x91, 0x33, 0x69, 0x85, 0xfe, 0x46, 0xb3, 0x90, 0xec, - 0x68, 0xfa, 0x4d, 0x6d, 0x17, 0xcf, 0x46, 0x69, 0xb1, 0x78, 0x44, 0x73, 0x00, 0x4d, 0xdc, 0xc1, - 0x66, 0x13, 0x9b, 0xfa, 0xc1, 0x6c, 0x6c, 0x21, 0x76, 0x26, 0xad, 0x04, 0x4a, 0xd0, 0x23, 0x30, - 0xd5, 0xe9, 0x6e, 0xb7, 0x0c, 0x5d, 0x0d, 0x90, 0xc1, 0x42, 0xec, 0xcc, 0xa4, 0x22, 0xb1, 0x8a, - 0x65, 0x9f, 0xf8, 0x34, 0x14, 0x6e, 0x63, 0xed, 0x66, 0x90, 0x34, 0x43, 0x49, 0xf3, 0xa4, 0x38, - 0x40, 0x58, 0x81, 0x6c, 0x1b, 0x3b, 0x8e, 0xb6, 0x8b, 0x55, 0xf7, 0xa0, 0x83, 0x67, 0xe3, 0xb4, - 0xf7, 0x0b, 0x7d, 0xbd, 0xef, 0xed, 0x79, 0x86, 0x73, 0x35, 0x0e, 0x3a, 0x18, 0x95, 0x20, 0x8d, - 0xcd, 0x6e, 0x9b, 0x21, 0x4c, 0x0e, 0x91, 0x5f, 0xd5, 0xec, 0xb6, 0x7b, 0x51, 0x52, 0x84, 0x8d, - 0x43, 0x24, 0x1d, 0x6c, 0xdf, 0x32, 0x74, 0x3c, 0x9b, 0xa0, 0x00, 0xa7, 0xfb, 0x00, 0xea, 0xac, - 0xbe, 0x17, 0x43, 0xf0, 0xa1, 0x0a, 0xa4, 0xf1, 0xbe, 0x8b, 0x4d, 0xc7, 0xb0, 0xcc, 0xd9, 0x24, - 0x05, 0x79, 0x68, 0xc0, 0x28, 0xe2, 0x56, 0xb3, 0x17, 0xc2, 0xe7, 0x43, 0x97, 0x20, 0x69, 0x75, - 0x5c, 0xc3, 0x32, 0x9d, 0xd9, 0xd4, 0x42, 0xe4, 0x4c, 0xe6, 0xc2, 0x7d, 0x03, 0x15, 0x61, 0x83, - 0xd1, 0x28, 0x82, 0x18, 0xd5, 0x40, 0x72, 0xac, 0xae, 0xad, 0x63, 0x55, 0xb7, 0x9a, 0x58, 0x35, - 0xcc, 0x1d, 0x6b, 0x36, 0x4d, 0x01, 0xe6, 0xfb, 0x3b, 0x42, 0x09, 0x2b, 0x56, 0x13, 0xd7, 0xcc, - 0x1d, 0x4b, 0xc9, 0x3b, 0xa1, 0x67, 0x74, 0x1c, 0x12, 0xce, 0x81, 0xe9, 0x6a, 0xfb, 0xb3, 0x59, - 0xaa, 0x21, 0xfc, 0x89, 0xa8, 0x0e, 0x6e, 0x1a, 0xe4, 0x75, 0xb3, 0x39, 0xa6, 0x3a, 0xfc, 0x51, - 0xfe, 0xb5, 0x04, 0x14, 0xc6, 0x51, 0xbe, 0xcb, 0x30, 0xb9, 0x43, 0xfa, 0x3f, 0x1b, 0x3d, 0x8a, - 0x74, 0x18, 0x4f, 0x58, 0xbc, 0x89, 0x7b, 0x14, 0x6f, 0x09, 0x32, 0x26, 0x76, 0x5c, 0xdc, 0x64, - 0xba, 0x12, 0x1b, 0x53, 0xdb, 0x80, 0x31, 0xf5, 0x2b, 0x5b, 0xfc, 0x9e, 0x94, 0xed, 0x45, 0x28, - 0x78, 0x4d, 0x52, 0x6d, 0xcd, 0xdc, 0x15, 0x5a, 0x7b, 0x7e, 0x54, 0x4b, 0x16, 0xab, 0x82, 0x4f, - 0x21, 0x6c, 0x4a, 0x1e, 0x87, 0x9e, 0xd1, 0x32, 0x80, 0x65, 0x62, 0x6b, 0x47, 0x6d, 0x62, 0xbd, - 0x35, 0x9b, 0x1a, 0x22, 0xa5, 0x0d, 0x42, 0xd2, 0x27, 0x25, 0x8b, 0x95, 0xea, 0x2d, 0xf4, 0xac, - 0xaf, 0x84, 0xc9, 0x21, 0x3a, 0xb4, 0xc6, 0xa6, 0x5f, 0x9f, 0x1e, 0x6e, 0x41, 0xde, 0xc6, 0x64, - 0x46, 0xe0, 0x26, 0xef, 0x59, 0x9a, 0x36, 0x62, 0x71, 0x64, 0xcf, 0x14, 0xce, 0xc6, 0x3a, 0x96, - 0xb3, 0x83, 0x8f, 0xe8, 0x41, 0xf0, 0x0a, 0x54, 0xaa, 0x56, 0x40, 0xed, 0x53, 0x56, 0x14, 0xae, - 0x6b, 0x6d, 0x5c, 0x7c, 0x15, 0xf2, 0x61, 0xf1, 0xa0, 0x19, 0x98, 0x74, 0x5c, 0xcd, 0x76, 0xa9, - 0x16, 0x4e, 0x2a, 0xec, 0x01, 0x49, 0x10, 0xc3, 0x66, 0x93, 0xda, 0xbf, 0x49, 0x85, 0xfc, 0x44, - 0xdf, 0xe4, 0x77, 0x38, 0x46, 0x3b, 0xfc, 0x70, 0xff, 0x88, 0x86, 0x90, 0x7b, 0xfb, 0x5d, 0x7c, - 0x1a, 0x72, 0xa1, 0x0e, 0x8c, 0xfb, 0x6a, 0xf9, 0xdb, 0xe0, 0xd8, 0x40, 0x68, 0xf4, 0x22, 0xcc, - 0x74, 0x4d, 0xc3, 0x74, 0xb1, 0xdd, 0xb1, 0x31, 0xd1, 0x58, 0xf6, 0xaa, 0xd9, 0xcf, 0x27, 0x87, - 0xe8, 0xdc, 0x56, 0x90, 0x9a, 0xa1, 0x28, 0xd3, 0xdd, 0xfe, 0xc2, 0x73, 0xe9, 0xd4, 0x17, 0x92, - 0xd2, 0x6b, 0xaf, 0xbd, 0xf6, 0x5a, 0x54, 0xfe, 0xcd, 0x04, 0xcc, 0x0c, 0x9a, 0x33, 0x03, 0xa7, - 0xef, 0x71, 0x48, 0x98, 0xdd, 0xf6, 0x36, 0xb6, 0xa9, 0x90, 0x26, 0x15, 0xfe, 0x84, 0x4a, 0x30, - 0xd9, 0xd2, 0xb6, 0x71, 0x6b, 0x36, 0xbe, 0x10, 0x39, 0x93, 0xbf, 0xf0, 0xc8, 0x58, 0xb3, 0x72, - 0x71, 0x95, 0xb0, 0x28, 0x8c, 0x13, 0xbd, 0x0f, 0xe2, 0xdc, 0x78, 0x13, 0x84, 0x73, 0xe3, 0x21, - 0x90, 0xb9, 0xa4, 0x50, 0x3e, 0x74, 0x0a, 0xd2, 0xe4, 0x7f, 0xa6, 0x1b, 0x09, 0xda, 0xe6, 0x14, - 0x29, 0x20, 0x7a, 0x81, 0x8a, 0x90, 0xa2, 0xd3, 0xa4, 0x89, 0xc5, 0xa2, 0xe7, 0x3d, 0x13, 0xc5, - 0x6a, 0xe2, 0x1d, 0xad, 0xdb, 0x72, 0xd5, 0x5b, 0x5a, 0xab, 0x8b, 0xa9, 0xc2, 0xa7, 0x95, 0x2c, - 0x2f, 0xbc, 0x41, 0xca, 0xd0, 0x3c, 0x64, 0xd8, 0xac, 0x32, 0xcc, 0x26, 0xde, 0xa7, 0x76, 0x75, - 0x52, 0x61, 0x13, 0xad, 0x46, 0x4a, 0xc8, 0xeb, 0x5f, 0x71, 0x2c, 0x53, 0xa8, 0x26, 0x7d, 0x05, - 0x29, 0xa0, 0xaf, 0x7f, 0xba, 0xd7, 0xa4, 0xdf, 0x3f, 0xb8, 0x7b, 0x7d, 0x73, 0xe9, 0x34, 0x14, - 0x28, 0xc5, 0x93, 0x7c, 0xe8, 0xb5, 0xd6, 0xec, 0xd4, 0x42, 0xe4, 0x4c, 0x4a, 0xc9, 0xb3, 0xe2, - 0x0d, 0x5e, 0x2a, 0x7f, 0x32, 0x0a, 0x71, 0x6a, 0x58, 0x0a, 0x90, 0x69, 0xbc, 0xb4, 0x59, 0x55, - 0x97, 0x37, 0xb6, 0xca, 0xab, 0x55, 0x29, 0x82, 0xf2, 0x00, 0xb4, 0xe0, 0xca, 0xea, 0x46, 0xa9, - 0x21, 0x45, 0xbd, 0xe7, 0xda, 0x7a, 0xe3, 0xd2, 0x53, 0x52, 0xcc, 0x63, 0xd8, 0x62, 0x05, 0xf1, - 0x20, 0xc1, 0x93, 0x17, 0xa4, 0x49, 0x24, 0x41, 0x96, 0x01, 0xd4, 0x5e, 0xac, 0x2e, 0x5f, 0x7a, - 0x4a, 0x4a, 0x84, 0x4b, 0x9e, 0xbc, 0x20, 0x25, 0x51, 0x0e, 0xd2, 0xb4, 0xa4, 0xbc, 0xb1, 0xb1, - 0x2a, 0xa5, 0x3c, 0xcc, 0x7a, 0x43, 0xa9, 0xad, 0xaf, 0x48, 0x69, 0x0f, 0x73, 0x45, 0xd9, 0xd8, - 0xda, 0x94, 0xc0, 0x43, 0x58, 0xab, 0xd6, 0xeb, 0xa5, 0x95, 0xaa, 0x94, 0xf1, 0x28, 0xca, 0x2f, - 0x35, 0xaa, 0x75, 0x29, 0x1b, 0x6a, 0xd6, 0x93, 0x17, 0xa4, 0x9c, 0xf7, 0x8a, 0xea, 0xfa, 0xd6, - 0x9a, 0x94, 0x47, 0x53, 0x90, 0x63, 0xaf, 0x10, 0x8d, 0x28, 0xf4, 0x14, 0x5d, 0x7a, 0x4a, 0x92, - 0xfc, 0x86, 0x30, 0x94, 0xa9, 0x50, 0xc1, 0xa5, 0xa7, 0x24, 0x24, 0x57, 0x60, 0x92, 0xaa, 0x21, - 0x42, 0x90, 0x5f, 0x2d, 0x95, 0xab, 0xab, 0xea, 0xc6, 0x66, 0xa3, 0xb6, 0xb1, 0x5e, 0x5a, 0x95, - 0x22, 0x7e, 0x99, 0x52, 0x7d, 0xff, 0x56, 0x4d, 0xa9, 0x2e, 0x4b, 0xd1, 0x60, 0xd9, 0x66, 0xb5, - 0xd4, 0xa8, 0x2e, 0x4b, 0x31, 0x59, 0x87, 0x99, 0x41, 0x06, 0x75, 0xe0, 0x14, 0x0a, 0xe8, 0x42, - 0x74, 0x88, 0x2e, 0x50, 0xac, 0x5e, 0x5d, 0x90, 0x3f, 0x17, 0x85, 0xe9, 0x01, 0x8b, 0xca, 0xc0, - 0x97, 0x3c, 0x0f, 0x93, 0x4c, 0x97, 0xd9, 0x32, 0x7b, 0x76, 0xe0, 0xea, 0x44, 0x35, 0xbb, 0x6f, - 0xa9, 0xa5, 0x7c, 0x41, 0x27, 0x24, 0x36, 0xc4, 0x09, 0x21, 0x10, 0x7d, 0x0a, 0xfb, 0x2d, 0x7d, - 0xc6, 0x9f, 0xad, 0x8f, 0x97, 0xc6, 0x59, 0x1f, 0x69, 0xd9, 0xd1, 0x16, 0x81, 0xc9, 0x01, 0x8b, - 0xc0, 0x65, 0x98, 0xea, 0x03, 0x1a, 0xdb, 0x18, 0x7f, 0x28, 0x02, 0xb3, 0xc3, 0x84, 0x33, 0xc2, - 0x24, 0x46, 0x43, 0x26, 0xf1, 0x72, 0xaf, 0x04, 0x1f, 0x18, 0x3e, 0x08, 0x7d, 0x63, 0xfd, 0x33, - 0x11, 0x38, 0x3e, 0xd8, 0xd9, 0x1c, 0xd8, 0x86, 0xf7, 0x41, 0xa2, 0x8d, 0xdd, 0x3d, 0x4b, 0xb8, - 0x55, 0x0f, 0x0f, 0x58, 0xac, 0x49, 0x75, 0xef, 0x60, 0x73, 0xae, 0xe0, 0x6a, 0x1f, 0x1b, 0xe6, - 0x31, 0xb2, 0xd6, 0xf4, 0xb5, 0xf4, 0xbb, 0xa3, 0x70, 0x6c, 0x20, 0xf8, 0xc0, 0x86, 0xde, 0x0f, - 0x60, 0x98, 0x9d, 0xae, 0xcb, 0x5c, 0x27, 0x66, 0x89, 0xd3, 0xb4, 0x84, 0x1a, 0x2f, 0x62, 0x65, - 0xbb, 0xae, 0x57, 0x1f, 0xa3, 0xf5, 0xc0, 0x8a, 0x28, 0xc1, 0x33, 0x7e, 0x43, 0xe3, 0xb4, 0xa1, - 0x73, 0x43, 0x7a, 0xda, 0xa7, 0x98, 0x8f, 0x83, 0xa4, 0xb7, 0x0c, 0x6c, 0xba, 0xaa, 0xe3, 0xda, - 0x58, 0x6b, 0x1b, 0xe6, 0x2e, 0x5d, 0x6a, 0x52, 0x4b, 0x93, 0x3b, 0x5a, 0xcb, 0xc1, 0x4a, 0x81, - 0x55, 0xd7, 0x45, 0x2d, 0xe1, 0xa0, 0x0a, 0x64, 0x07, 0x38, 0x12, 0x21, 0x0e, 0x56, 0xed, 0x71, - 0xc8, 0xdf, 0x97, 0x86, 0x4c, 0xc0, 0x35, 0x47, 0x0f, 0x40, 0xf6, 0x15, 0xed, 0x96, 0xa6, 0x8a, - 0x70, 0x8b, 0x49, 0x22, 0x43, 0xca, 0x36, 0x79, 0xc8, 0xf5, 0x38, 0xcc, 0x50, 0x12, 0xab, 0xeb, - 0x62, 0x5b, 0xd5, 0x5b, 0x9a, 0xe3, 0x50, 0xa1, 0xa5, 0x28, 0x29, 0x22, 0x75, 0x1b, 0xa4, 0xaa, - 0x22, 0x6a, 0xd0, 0x45, 0x98, 0xa6, 0x1c, 0xed, 0x6e, 0xcb, 0x35, 0x3a, 0x2d, 0xac, 0x92, 0x00, - 0xd0, 0xa1, 0x4b, 0x8e, 0xd7, 0xb2, 0x29, 0x42, 0xb1, 0xc6, 0x09, 0x48, 0x8b, 0x1c, 0xb4, 0x0c, - 0xf7, 0x53, 0xb6, 0x5d, 0x6c, 0x62, 0x5b, 0x73, 0xb1, 0x8a, 0x3f, 0xd8, 0xd5, 0x5a, 0x8e, 0xaa, - 0x99, 0x4d, 0x75, 0x4f, 0x73, 0xf6, 0x66, 0x67, 0x08, 0x40, 0x39, 0x3a, 0x1b, 0x51, 0x4e, 0x12, - 0xc2, 0x15, 0x4e, 0x57, 0xa5, 0x64, 0x25, 0xb3, 0x79, 0x55, 0x73, 0xf6, 0xd0, 0x12, 0x1c, 0xa7, - 0x28, 0x8e, 0x6b, 0x1b, 0xe6, 0xae, 0xaa, 0xef, 0x61, 0xfd, 0xa6, 0xda, 0x75, 0x77, 0x9e, 0x99, - 0x3d, 0x15, 0x7c, 0x3f, 0x6d, 0x61, 0x9d, 0xd2, 0x54, 0x08, 0xc9, 0x96, 0xbb, 0xf3, 0x0c, 0xaa, - 0x43, 0x96, 0x0c, 0x46, 0xdb, 0x78, 0x15, 0xab, 0x3b, 0x96, 0x4d, 0xd7, 0xd0, 0xfc, 0x00, 0xd3, - 0x14, 0x90, 0xe0, 0xe2, 0x06, 0x67, 0x58, 0xb3, 0x9a, 0x78, 0x69, 0xb2, 0xbe, 0x59, 0xad, 0x2e, - 0x2b, 0x19, 0x81, 0x72, 0xc5, 0xb2, 0x89, 0x42, 0xed, 0x5a, 0x9e, 0x80, 0x33, 0x4c, 0xa1, 0x76, - 0x2d, 0x21, 0xde, 0x8b, 0x30, 0xad, 0xeb, 0xac, 0xcf, 0x86, 0xae, 0xf2, 0x30, 0xcd, 0x99, 0x95, - 0x42, 0xc2, 0xd2, 0xf5, 0x15, 0x46, 0xc0, 0x75, 0xdc, 0x41, 0xcf, 0xc2, 0x31, 0x5f, 0x58, 0x41, - 0xc6, 0xa9, 0xbe, 0x5e, 0xf6, 0xb2, 0x5e, 0x84, 0xe9, 0xce, 0x41, 0x3f, 0x23, 0x0a, 0xbd, 0xb1, - 0x73, 0xd0, 0xcb, 0xf6, 0x34, 0xcc, 0x74, 0xf6, 0x3a, 0xfd, 0x7c, 0xe7, 0x82, 0x7c, 0xa8, 0xb3, - 0xd7, 0xe9, 0x65, 0x7c, 0x88, 0xc6, 0xec, 0x36, 0xd6, 0x35, 0x17, 0x37, 0x67, 0x4f, 0x04, 0xc9, - 0x03, 0x15, 0x68, 0x11, 0x24, 0x5d, 0x57, 0xb1, 0xa9, 0x6d, 0xb7, 0xb0, 0xaa, 0xd9, 0xd8, 0xd4, - 0x9c, 0xd9, 0x79, 0x4a, 0x1c, 0x77, 0xed, 0x2e, 0x56, 0xf2, 0xba, 0x5e, 0xa5, 0x95, 0x25, 0x5a, - 0x87, 0xce, 0xc1, 0x94, 0xb5, 0xfd, 0x8a, 0xce, 0x34, 0x52, 0xed, 0xd8, 0x78, 0xc7, 0xd8, 0x9f, - 0x7d, 0x0f, 0x15, 0x6f, 0x81, 0x54, 0x50, 0x7d, 0xdc, 0xa4, 0xc5, 0xe8, 0x2c, 0x48, 0xba, 0xb3, - 0xa7, 0xd9, 0x1d, 0x6a, 0x92, 0x9d, 0x8e, 0xa6, 0xe3, 0xd9, 0x87, 0x18, 0x29, 0x2b, 0x5f, 0x17, - 0xc5, 0x64, 0x46, 0x38, 0xb7, 0x8d, 0x1d, 0x57, 0x20, 0x9e, 0x66, 0x33, 0x82, 0x96, 0x71, 0xb4, - 0x33, 0x20, 0x11, 0x49, 0x84, 0x5e, 0x7c, 0x86, 0x92, 0xe5, 0x3b, 0x7b, 0x9d, 0xe0, 0x7b, 0x1f, - 0x84, 0x1c, 0xa1, 0xf4, 0x5f, 0x7a, 0x96, 0x39, 0x6e, 0x9d, 0xbd, 0xc0, 0x1b, 0x9f, 0x82, 0xe3, - 0x84, 0xa8, 0x8d, 0x5d, 0xad, 0xa9, 0xb9, 0x5a, 0x80, 0xfa, 0x51, 0x4a, 0x4d, 0xc4, 0xbe, 0xc6, - 0x2b, 0x43, 0xed, 0xb4, 0xbb, 0xdb, 0x07, 0x9e, 0x62, 0x3d, 0xc6, 0xda, 0x49, 0xca, 0x84, 0x6a, - 0xbd, 0x63, 0xce, 0xb9, 0xbc, 0x04, 0xd9, 0xa0, 0xde, 0xa3, 0x34, 0x30, 0xcd, 0x97, 0x22, 0xc4, - 0x09, 0xaa, 0x6c, 0x2c, 0x13, 0xf7, 0xe5, 0xe5, 0xaa, 0x14, 0x25, 0x6e, 0xd4, 0x6a, 0xad, 0x51, - 0x55, 0x95, 0xad, 0xf5, 0x46, 0x6d, 0xad, 0x2a, 0xc5, 0x02, 0x8e, 0xfd, 0xb5, 0x78, 0xea, 0x61, - 0xe9, 0xb4, 0xfc, 0xe9, 0x18, 0xe4, 0xc3, 0x91, 0x1a, 0x7a, 0x2f, 0x9c, 0x10, 0x09, 0x17, 0x07, - 0xbb, 0xea, 0x6d, 0xc3, 0xa6, 0x13, 0xb2, 0xad, 0xb1, 0xc5, 0xd1, 0xd3, 0x9f, 0x19, 0x4e, 0x55, - 0xc7, 0xee, 0x0b, 0x86, 0x4d, 0xa6, 0x5b, 0x5b, 0x73, 0xd1, 0x2a, 0xcc, 0x9b, 0x96, 0xea, 0xb8, - 0x9a, 0xd9, 0xd4, 0xec, 0xa6, 0xea, 0xa7, 0xba, 0x54, 0x4d, 0xd7, 0xb1, 0xe3, 0x58, 0x6c, 0x21, - 0xf4, 0x50, 0xee, 0x33, 0xad, 0x3a, 0x27, 0xf6, 0x57, 0x88, 0x12, 0x27, 0xed, 0x51, 0xdf, 0xd8, - 0x30, 0xf5, 0x3d, 0x05, 0xe9, 0xb6, 0xd6, 0x51, 0xb1, 0xe9, 0xda, 0x07, 0xd4, 0x3f, 0x4f, 0x29, - 0xa9, 0xb6, 0xd6, 0xa9, 0x92, 0x67, 0x74, 0x03, 0x1e, 0xf6, 0x49, 0xd5, 0x16, 0xde, 0xd5, 0xf4, - 0x03, 0x95, 0x3a, 0xe3, 0x34, 0x6d, 0xa0, 0xea, 0x96, 0xb9, 0xd3, 0x32, 0x74, 0xd7, 0xa1, 0xf6, - 0x81, 0xd9, 0x38, 0xd9, 0xe7, 0x58, 0xa5, 0x0c, 0xd7, 0x1c, 0xcb, 0xa4, 0x3e, 0x78, 0x45, 0x50, - 0xbf, 0x2b, 0xe1, 0xd7, 0xb5, 0x78, 0x2a, 0x2e, 0x4d, 0x5e, 0x8b, 0xa7, 0x26, 0xa5, 0xc4, 0xb5, - 0x78, 0x2a, 0x21, 0x25, 0xaf, 0xc5, 0x53, 0x29, 0x29, 0x7d, 0x2d, 0x9e, 0x4a, 0x4b, 0x20, 0xff, - 0x6a, 0x0a, 0xb2, 0xc1, 0xc8, 0x80, 0x04, 0x5a, 0x3a, 0x5d, 0x1b, 0x23, 0xd4, 0x7a, 0x3e, 0x78, - 0x68, 0x1c, 0xb1, 0x58, 0x21, 0x8b, 0xe6, 0x52, 0x82, 0xb9, 0xe1, 0x0a, 0xe3, 0x24, 0x0e, 0x0b, - 0x51, 0x6b, 0xcc, 0xdc, 0x9e, 0x94, 0xc2, 0x9f, 0xd0, 0x0a, 0x24, 0x5e, 0x71, 0x28, 0x76, 0x82, - 0x62, 0xbf, 0xe7, 0x70, 0xec, 0x6b, 0x75, 0x0a, 0x9e, 0xbe, 0x56, 0x57, 0xd7, 0x37, 0x94, 0xb5, - 0xd2, 0xaa, 0xc2, 0xd9, 0xd1, 0x49, 0x88, 0xb7, 0xb4, 0x57, 0x0f, 0xc2, 0xcb, 0x2b, 0x2d, 0x42, - 0x8b, 0x50, 0xe8, 0x9a, 0xb7, 0xb0, 0x6d, 0xec, 0x18, 0x64, 0xa8, 0x08, 0x55, 0x21, 0x48, 0x95, - 0xf7, 0x6b, 0x57, 0x09, 0xfd, 0x98, 0xea, 0x71, 0x12, 0xe2, 0xb7, 0xb1, 0x76, 0x33, 0xbc, 0x08, - 0xd2, 0x22, 0x74, 0x06, 0xb2, 0x4d, 0xbc, 0xdd, 0xdd, 0x55, 0x6d, 0xdc, 0xd4, 0x74, 0x37, 0x6c, - 0xfa, 0x33, 0xb4, 0x4a, 0xa1, 0x35, 0xe8, 0x3a, 0xa4, 0xc9, 0x18, 0x99, 0x74, 0x8c, 0xa7, 0xa8, - 0x08, 0x1e, 0x3b, 0x5c, 0x04, 0x7c, 0x88, 0x05, 0x93, 0xe2, 0xf3, 0xa3, 0x2b, 0x90, 0x70, 0x35, - 0x7b, 0x17, 0xbb, 0xd4, 0xf2, 0xe7, 0x07, 0x24, 0x3f, 0x06, 0x20, 0x35, 0x28, 0x07, 0x8d, 0x69, - 0x39, 0xf7, 0x3b, 0x68, 0x65, 0xce, 0xc3, 0x24, 0x55, 0x0f, 0x04, 0xc0, 0x15, 0x44, 0x9a, 0x40, - 0x29, 0x88, 0x57, 0x36, 0x14, 0x62, 0x69, 0x24, 0xc8, 0xb2, 0x52, 0x75, 0xb3, 0x56, 0xad, 0x54, - 0xa5, 0xa8, 0x7c, 0x11, 0x12, 0x6c, 0xcc, 0x89, 0x15, 0xf2, 0x46, 0x5d, 0x9a, 0xe0, 0x8f, 0x1c, - 0x23, 0x22, 0x6a, 0xb7, 0xd6, 0xca, 0x55, 0x45, 0x8a, 0xca, 0x5b, 0x50, 0xe8, 0x91, 0x13, 0x3a, - 0x06, 0x53, 0x4a, 0xb5, 0x51, 0x5d, 0x27, 0x71, 0x96, 0xba, 0xb5, 0x7e, 0x7d, 0x7d, 0xe3, 0x85, - 0x75, 0x69, 0x22, 0x5c, 0x2c, 0x4c, 0x5a, 0x04, 0xcd, 0x80, 0xe4, 0x17, 0xd7, 0x37, 0xb6, 0x14, - 0xda, 0x9a, 0xef, 0x89, 0x82, 0xd4, 0x2b, 0x35, 0x74, 0x02, 0xa6, 0x1b, 0x25, 0x65, 0xa5, 0xda, - 0x50, 0x59, 0xec, 0xe8, 0x41, 0xcf, 0x80, 0x14, 0xac, 0xb8, 0x52, 0xa3, 0xa1, 0xf1, 0x3c, 0x9c, - 0x0a, 0x96, 0x56, 0x5f, 0x6c, 0x54, 0xd7, 0xeb, 0xf4, 0xe5, 0xa5, 0xf5, 0x15, 0x62, 0x5f, 0x7b, - 0xf0, 0x44, 0xb4, 0x1a, 0x23, 0x4d, 0x0d, 0xe3, 0x55, 0x57, 0x97, 0xa5, 0x78, 0x6f, 0xf1, 0xc6, - 0x7a, 0x75, 0xe3, 0x8a, 0x34, 0xd9, 0xfb, 0x76, 0x1a, 0xc1, 0x26, 0x50, 0x11, 0x8e, 0xf7, 0x96, - 0xaa, 0xd5, 0xf5, 0x86, 0xf2, 0x92, 0x94, 0xec, 0x7d, 0x71, 0xbd, 0xaa, 0xdc, 0xa8, 0x55, 0xaa, - 0x52, 0x0a, 0x1d, 0x07, 0x14, 0x6e, 0x51, 0xe3, 0xea, 0xc6, 0xb2, 0x94, 0xee, 0xb3, 0x28, 0xb2, - 0x03, 0xd9, 0x60, 0x18, 0xf9, 0xee, 0xe4, 0x92, 0x5e, 0x8f, 0x42, 0x26, 0x10, 0x16, 0x12, 0x7f, - 0x5e, 0x6b, 0xb5, 0xac, 0xdb, 0xaa, 0xd6, 0x32, 0x34, 0x87, 0xdb, 0x1b, 0xa0, 0x45, 0x25, 0x52, - 0x32, 0xee, 0xfc, 0x1e, 0xdf, 0xc2, 0x27, 0xbe, 0x1e, 0x2d, 0xfc, 0xa4, 0x94, 0x90, 0x7f, 0x2c, - 0x02, 0x52, 0x6f, 0xbc, 0xd7, 0xd3, 0xfd, 0xc8, 0xb0, 0xee, 0xbf, 0x2b, 0x63, 0xf7, 0xa3, 0x11, - 0xc8, 0x87, 0x83, 0xbc, 0x9e, 0xe6, 0x3d, 0xf0, 0xff, 0xb4, 0x79, 0x7f, 0x14, 0x85, 0x5c, 0x28, - 0xb4, 0x1b, 0xb7, 0x75, 0x1f, 0x84, 0x29, 0xa3, 0x89, 0xdb, 0x1d, 0xcb, 0xc5, 0xa6, 0x7e, 0xa0, - 0xb6, 0xf0, 0x2d, 0xdc, 0x9a, 0x95, 0xa9, 0x51, 0x3e, 0x7f, 0x78, 0xf0, 0xb8, 0x58, 0xf3, 0xf9, - 0x56, 0x09, 0xdb, 0xd2, 0x74, 0x6d, 0xb9, 0xba, 0xb6, 0xb9, 0xd1, 0xa8, 0xae, 0x57, 0x5e, 0x12, - 0xd6, 0x45, 0x91, 0x8c, 0x1e, 0xb2, 0x77, 0xd0, 0x68, 0x6f, 0x82, 0xd4, 0xdb, 0x28, 0x62, 0x2b, - 0x06, 0x34, 0x4b, 0x9a, 0x40, 0xd3, 0x50, 0x58, 0xdf, 0x50, 0xeb, 0xb5, 0xe5, 0xaa, 0x5a, 0xbd, - 0x72, 0xa5, 0x5a, 0x69, 0xd4, 0x59, 0x3a, 0xd0, 0xa3, 0x6e, 0x48, 0xd1, 0xa0, 0x88, 0x7f, 0x38, - 0x06, 0xd3, 0x03, 0x5a, 0x82, 0x4a, 0x3c, 0x90, 0x67, 0xb9, 0x85, 0xc7, 0xc6, 0x69, 0xfd, 0x22, - 0x71, 0xa5, 0x37, 0x35, 0xdb, 0xe5, 0x71, 0xff, 0x59, 0x20, 0x52, 0x32, 0x5d, 0xb2, 0xb2, 0xdb, - 0x3c, 0xcd, 0xca, 0xa2, 0xfb, 0x82, 0x5f, 0xce, 0x32, 0xad, 0x8f, 0x02, 0xea, 0x58, 0x8e, 0xe1, - 0x1a, 0xb7, 0xb0, 0x6a, 0x98, 0x22, 0x27, 0x4b, 0xa2, 0xfd, 0xb8, 0x22, 0x89, 0x9a, 0x9a, 0xe9, - 0x7a, 0xd4, 0x26, 0xde, 0xd5, 0x7a, 0xa8, 0x89, 0xe7, 0x11, 0x53, 0x24, 0x51, 0xe3, 0x51, 0x3f, - 0x00, 0xd9, 0xa6, 0xd5, 0x25, 0x21, 0x10, 0xa3, 0x23, 0xd6, 0x22, 0xa2, 0x64, 0x58, 0x99, 0x47, - 0xc2, 0x83, 0x5b, 0x3f, 0x19, 0x9c, 0x55, 0x32, 0xac, 0x8c, 0x91, 0x9c, 0x86, 0x82, 0xb6, 0xbb, - 0x6b, 0x13, 0x70, 0x01, 0xc4, 0xc2, 0xf5, 0xbc, 0x57, 0x4c, 0x09, 0x8b, 0xd7, 0x20, 0x25, 0xe4, - 0x40, 0x3c, 0x58, 0x22, 0x09, 0xb5, 0xc3, 0x72, 0x50, 0xd1, 0x33, 0x69, 0x25, 0x65, 0x8a, 0xca, - 0x07, 0x20, 0x6b, 0x38, 0xaa, 0xbf, 0xb7, 0x15, 0x5d, 0x88, 0x9e, 0x49, 0x29, 0x19, 0xc3, 0xf1, - 0xf6, 0x05, 0xe4, 0x9f, 0x89, 0x42, 0x3e, 0xbc, 0x6b, 0x87, 0x96, 0x21, 0xd5, 0xb2, 0x74, 0x8d, - 0xaa, 0x16, 0xdb, 0x32, 0x3e, 0x33, 0x62, 0xa3, 0x6f, 0x71, 0x95, 0xd3, 0x2b, 0x1e, 0x67, 0xf1, - 0xdf, 0x45, 0x20, 0x25, 0x8a, 0xd1, 0x71, 0x88, 0x77, 0x34, 0x77, 0x8f, 0xc2, 0x4d, 0x96, 0xa3, - 0x52, 0x44, 0xa1, 0xcf, 0xa4, 0xdc, 0xe9, 0x68, 0x26, 0x55, 0x01, 0x5e, 0x4e, 0x9e, 0xc9, 0xb8, - 0xb6, 0xb0, 0xd6, 0xa4, 0xb9, 0x00, 0xab, 0xdd, 0xc6, 0xa6, 0xeb, 0x88, 0x71, 0xe5, 0xe5, 0x15, - 0x5e, 0x8c, 0x1e, 0x81, 0x29, 0xd7, 0xd6, 0x8c, 0x56, 0x88, 0x36, 0x4e, 0x69, 0x25, 0x51, 0xe1, - 0x11, 0x2f, 0xc1, 0x49, 0x81, 0xdb, 0xc4, 0xae, 0xa6, 0xef, 0xe1, 0xa6, 0xcf, 0x94, 0xa0, 0x39, - 0xbf, 0x13, 0x9c, 0x60, 0x99, 0xd7, 0x0b, 0x5e, 0xf9, 0xb3, 0x51, 0x98, 0x12, 0xd9, 0x8b, 0xa6, - 0x27, 0xac, 0x35, 0x00, 0xcd, 0x34, 0x2d, 0x37, 0x28, 0xae, 0x7e, 0x55, 0xee, 0xe3, 0x5b, 0x2c, - 0x79, 0x4c, 0x4a, 0x00, 0xa0, 0xf8, 0xa5, 0x08, 0x80, 0x5f, 0x35, 0x54, 0x6e, 0xf3, 0x90, 0xe1, - 0x7b, 0xb2, 0x74, 0x63, 0x9f, 0x25, 0xbc, 0x80, 0x15, 0x5d, 0x31, 0x5a, 0x34, 0x2d, 0xb9, 0x8d, - 0x77, 0x0d, 0x93, 0xef, 0xa7, 0xb0, 0x07, 0x91, 0x96, 0x8c, 0xfb, 0xdb, 0x53, 0x0a, 0xa4, 0x1c, - 0xdc, 0xd6, 0x4c, 0xd7, 0xd0, 0xf9, 0x0e, 0xc9, 0xa5, 0x23, 0x35, 0x7e, 0xb1, 0xce, 0xb9, 0x15, - 0x0f, 0x47, 0x3e, 0x03, 0x29, 0x51, 0x4a, 0x1c, 0xbf, 0xf5, 0x8d, 0xf5, 0xaa, 0x34, 0x81, 0x92, - 0x10, 0xab, 0x57, 0x1b, 0x52, 0x84, 0x84, 0x9d, 0xa5, 0xd5, 0x5a, 0xa9, 0x2e, 0x45, 0xcb, 0x7f, - 0x13, 0xa6, 0x75, 0xab, 0xdd, 0xfb, 0xc2, 0xb2, 0xd4, 0x93, 0xf2, 0x73, 0xae, 0x46, 0x5e, 0x7e, - 0x8c, 0x13, 0xed, 0x5a, 0x2d, 0xcd, 0xdc, 0x5d, 0xb4, 0xec, 0x5d, 0xff, 0x58, 0x04, 0x89, 0x0e, - 0x9c, 0xc0, 0xe1, 0x88, 0xce, 0xf6, 0xff, 0x8a, 0x44, 0x7e, 0x3c, 0x1a, 0x5b, 0xd9, 0x2c, 0xff, - 0x5c, 0xb4, 0xb8, 0xc2, 0x18, 0x37, 0x45, 0x77, 0x14, 0xbc, 0xd3, 0xc2, 0x3a, 0x69, 0x3c, 0xfc, - 0xe9, 0x23, 0x30, 0xb3, 0x6b, 0xed, 0x5a, 0x14, 0xe9, 0x3c, 0xf9, 0xc5, 0xcf, 0x55, 0xa4, 0xbd, - 0xd2, 0xe2, 0xc8, 0x43, 0x18, 0x4b, 0xeb, 0x30, 0xcd, 0x89, 0x55, 0xba, 0x7d, 0xcb, 0x92, 0x0b, - 0xe8, 0xd0, 0xcc, 0xf6, 0xec, 0x2f, 0xfd, 0x09, 0xf5, 0x4a, 0x94, 0x29, 0xce, 0x4a, 0xea, 0x58, - 0xfe, 0x61, 0x49, 0x81, 0x63, 0x21, 0x3c, 0x66, 0x23, 0xb0, 0x3d, 0x02, 0xf1, 0xb7, 0x38, 0xe2, - 0x74, 0x00, 0xb1, 0xce, 0x59, 0x97, 0x2a, 0x90, 0x3b, 0x0a, 0xd6, 0xbf, 0xe6, 0x58, 0x59, 0x1c, - 0x04, 0x59, 0x81, 0x02, 0x05, 0xd1, 0xbb, 0x8e, 0x6b, 0xb5, 0xa9, 0x01, 0x3e, 0x1c, 0xe6, 0xdf, - 0xfc, 0x09, 0x9b, 0xb4, 0x79, 0xc2, 0x56, 0xf1, 0xb8, 0x96, 0x96, 0x80, 0xee, 0x58, 0x37, 0xb1, - 0xde, 0x1a, 0x81, 0xf0, 0x19, 0xde, 0x10, 0x8f, 0x7e, 0xe9, 0x06, 0xcc, 0x90, 0xdf, 0xd4, 0x3e, - 0x06, 0x5b, 0x32, 0x3a, 0x0d, 0x3e, 0xfb, 0xbb, 0x1f, 0x62, 0x76, 0x61, 0xda, 0x03, 0x08, 0xb4, - 0x29, 0x30, 0x8a, 0xbb, 0xd8, 0x75, 0xb1, 0xed, 0xa8, 0x5a, 0x6b, 0x50, 0xf3, 0x02, 0x79, 0xc4, - 0xd9, 0x1f, 0xfa, 0x72, 0x78, 0x14, 0x57, 0x18, 0x67, 0xa9, 0xd5, 0x5a, 0xda, 0x82, 0x13, 0x03, - 0xb4, 0x62, 0x0c, 0xcc, 0x1f, 0xe6, 0x98, 0x33, 0x7d, 0x9a, 0x41, 0x60, 0x37, 0x41, 0x94, 0x7b, - 0x63, 0x39, 0x06, 0xe6, 0x8f, 0x70, 0x4c, 0xc4, 0x79, 0xc5, 0x90, 0x12, 0xc4, 0x6b, 0x30, 0x75, - 0x0b, 0xdb, 0xdb, 0x96, 0xc3, 0x73, 0xb7, 0x63, 0xc0, 0xfd, 0x28, 0x87, 0x2b, 0x70, 0x46, 0x9a, - 0xcc, 0x25, 0x58, 0xcf, 0x42, 0x6a, 0x47, 0xd3, 0xf1, 0x18, 0x10, 0x77, 0x39, 0x44, 0x92, 0xd0, - 0x13, 0xd6, 0x12, 0x64, 0x77, 0x2d, 0xbe, 0x44, 0x8e, 0x66, 0xff, 0x31, 0xce, 0x9e, 0x11, 0x3c, - 0x1c, 0xa2, 0x63, 0x75, 0xba, 0x2d, 0xb2, 0x7e, 0x8e, 0x86, 0xf8, 0x87, 0x02, 0x42, 0xf0, 0x70, - 0x88, 0x23, 0x88, 0xf5, 0xa3, 0x02, 0xc2, 0x09, 0xc8, 0xf3, 0x79, 0xc8, 0x58, 0x66, 0xeb, 0xc0, - 0x32, 0xc7, 0x69, 0xc4, 0xc7, 0x38, 0x02, 0x70, 0x16, 0x02, 0x70, 0x19, 0xd2, 0xe3, 0x0e, 0xc4, - 0x4f, 0x7d, 0x59, 0x4c, 0x0f, 0x31, 0x02, 0x2b, 0x50, 0x10, 0x06, 0xca, 0xb0, 0xcc, 0x31, 0x20, - 0x7e, 0x9a, 0x43, 0xe4, 0x03, 0x6c, 0xbc, 0x1b, 0x2e, 0x76, 0xdc, 0x5d, 0x3c, 0x0e, 0xc8, 0xcf, - 0x88, 0x6e, 0x70, 0x16, 0x2e, 0xca, 0x6d, 0x6c, 0xea, 0x7b, 0xe3, 0x21, 0x7c, 0x5c, 0x88, 0x52, - 0xf0, 0x10, 0x88, 0x0a, 0xe4, 0xda, 0x9a, 0xed, 0xec, 0x69, 0xad, 0xb1, 0x86, 0xe3, 0x67, 0x39, - 0x46, 0xd6, 0x63, 0xe2, 0x12, 0xe9, 0x9a, 0x47, 0x81, 0xf9, 0x39, 0x21, 0x91, 0x00, 0x1b, 0x9f, - 0x7a, 0x8e, 0x4b, 0x13, 0xdd, 0x47, 0x41, 0xfb, 0x47, 0x62, 0xea, 0x31, 0xde, 0xb5, 0x20, 0xe2, - 0x65, 0x48, 0x3b, 0xc6, 0xab, 0x63, 0xc1, 0xfc, 0xbc, 0x18, 0x69, 0xca, 0x40, 0x98, 0x5f, 0x82, - 0x93, 0x03, 0x97, 0x89, 0x31, 0xc0, 0x7e, 0x81, 0x83, 0x1d, 0x1f, 0xb0, 0x54, 0x70, 0x93, 0x70, - 0x54, 0xc8, 0x7f, 0x2c, 0x4c, 0x02, 0xee, 0xc1, 0xda, 0x24, 0x41, 0x8b, 0xa3, 0xed, 0x1c, 0x4d, - 0x6a, 0xff, 0x44, 0x48, 0x8d, 0xf1, 0x86, 0xa4, 0xd6, 0x80, 0xe3, 0x1c, 0xf1, 0x68, 0xe3, 0xfa, - 0x8b, 0xc2, 0xb0, 0x32, 0xee, 0xad, 0xf0, 0xe8, 0x7e, 0x33, 0x14, 0x3d, 0x71, 0x0a, 0xef, 0xd8, - 0x51, 0xdb, 0x5a, 0x67, 0x0c, 0xe4, 0x5f, 0xe2, 0xc8, 0xc2, 0xe2, 0x7b, 0xee, 0xb5, 0xb3, 0xa6, - 0x75, 0x08, 0xf8, 0x8b, 0x30, 0x2b, 0xc0, 0xbb, 0xa6, 0x8d, 0x75, 0x6b, 0xd7, 0x34, 0x5e, 0xc5, - 0xcd, 0x31, 0xa0, 0x7f, 0xb9, 0x67, 0xa8, 0xb6, 0x02, 0xec, 0x04, 0xb9, 0x06, 0x92, 0xe7, 0xab, - 0xa8, 0x46, 0xbb, 0x63, 0xd9, 0xee, 0x08, 0xc4, 0x5f, 0x11, 0x23, 0xe5, 0xf1, 0xd5, 0x28, 0xdb, - 0x52, 0x15, 0xd8, 0xe9, 0x8f, 0x71, 0x55, 0xf2, 0x13, 0x1c, 0x28, 0xe7, 0x73, 0x71, 0xc3, 0xa1, - 0x5b, 0xed, 0x8e, 0x66, 0x8f, 0x63, 0xff, 0xfe, 0xa9, 0x30, 0x1c, 0x9c, 0x85, 0x1b, 0x0e, 0xe2, - 0xd1, 0x91, 0xd5, 0x7e, 0x0c, 0x84, 0x4f, 0x0a, 0xc3, 0x21, 0x78, 0x38, 0x84, 0x70, 0x18, 0xc6, - 0x80, 0xf8, 0x55, 0x01, 0x21, 0x78, 0x08, 0xc4, 0xfb, 0xfd, 0x85, 0xd6, 0xc6, 0xbb, 0x86, 0xe3, - 0xda, 0xcc, 0x25, 0x3f, 0x1c, 0xea, 0x53, 0x5f, 0x0e, 0x3b, 0x61, 0x4a, 0x80, 0x95, 0x58, 0x22, - 0xbe, 0xf5, 0x41, 0x43, 0xb6, 0xd1, 0x0d, 0xfb, 0x35, 0x61, 0x89, 0x02, 0x6c, 0xa4, 0x6d, 0x01, - 0x0f, 0x91, 0x88, 0x5d, 0x27, 0x81, 0xca, 0x18, 0x70, 0xff, 0xac, 0xa7, 0x71, 0x75, 0xc1, 0x4b, - 0x30, 0x03, 0xfe, 0x4f, 0xd7, 0xbc, 0x89, 0x0f, 0xc6, 0xd2, 0xce, 0x4f, 0xf7, 0xf8, 0x3f, 0x5b, - 0x8c, 0x93, 0xd9, 0x90, 0x42, 0x8f, 0x3f, 0x85, 0x46, 0x9d, 0xf5, 0x9b, 0xfd, 0xf6, 0xb7, 0x78, - 0x7f, 0xc3, 0xee, 0xd4, 0xd2, 0x2a, 0x51, 0xf2, 0xb0, 0xd3, 0x33, 0x1a, 0xec, 0x43, 0x6f, 0x79, - 0x7a, 0x1e, 0xf2, 0x79, 0x96, 0xae, 0x40, 0x2e, 0xe4, 0xf0, 0x8c, 0x86, 0xfa, 0x5b, 0x1c, 0x2a, - 0x1b, 0xf4, 0x77, 0x96, 0x2e, 0x42, 0x9c, 0x38, 0x2f, 0xa3, 0xd9, 0xbf, 0x93, 0xb3, 0x53, 0xf2, - 0xa5, 0xe7, 0x20, 0x25, 0x9c, 0x96, 0xd1, 0xac, 0xdf, 0xc5, 0x59, 0x3d, 0x16, 0xc2, 0x2e, 0x1c, - 0x96, 0xd1, 0xec, 0x7f, 0x5b, 0xb0, 0x0b, 0x16, 0xc2, 0x3e, 0xbe, 0x08, 0x7f, 0xe3, 0xef, 0xc4, - 0xf9, 0xa2, 0x23, 0x64, 0x77, 0x19, 0x92, 0xdc, 0x53, 0x19, 0xcd, 0xfd, 0xdd, 0xfc, 0xe5, 0x82, - 0x63, 0xe9, 0x69, 0x98, 0x1c, 0x53, 0xe0, 0x7f, 0x97, 0xb3, 0x32, 0xfa, 0xa5, 0x0a, 0x64, 0x02, - 0xde, 0xc9, 0x68, 0xf6, 0xef, 0xe5, 0xec, 0x41, 0x2e, 0xd2, 0x74, 0xee, 0x9d, 0x8c, 0x06, 0xf8, - 0x7b, 0xa2, 0xe9, 0x9c, 0x83, 0x88, 0x4d, 0x38, 0x26, 0xa3, 0xb9, 0x3f, 0x22, 0xa4, 0x2e, 0x58, - 0x96, 0x9e, 0x87, 0xb4, 0xb7, 0xd8, 0x8c, 0xe6, 0xff, 0x3e, 0xce, 0xef, 0xf3, 0x10, 0x09, 0x04, - 0x16, 0xbb, 0xd1, 0x10, 0x7f, 0x5f, 0x48, 0x20, 0xc0, 0x45, 0xa6, 0x51, 0xaf, 0x03, 0x33, 0x1a, - 0xe9, 0xfb, 0xc5, 0x34, 0xea, 0xf1, 0x5f, 0xc8, 0x68, 0x52, 0x9b, 0x3f, 0x1a, 0xe2, 0x1f, 0x88, - 0xd1, 0xa4, 0xf4, 0xa4, 0x19, 0xbd, 0x1e, 0xc1, 0x68, 0x8c, 0x1f, 0x14, 0xcd, 0xe8, 0x71, 0x08, - 0x96, 0x36, 0x01, 0xf5, 0x7b, 0x03, 0xa3, 0xf1, 0x5e, 0xe7, 0x78, 0x53, 0x7d, 0xce, 0xc0, 0xd2, - 0x0b, 0x70, 0x7c, 0xb0, 0x27, 0x30, 0x1a, 0xf5, 0x87, 0xde, 0xea, 0x89, 0xdd, 0x82, 0x8e, 0xc0, - 0x52, 0xc3, 0x5f, 0x52, 0x82, 0x5e, 0xc0, 0x68, 0xd8, 0x1f, 0x7e, 0x2b, 0x6c, 0xb8, 0x83, 0x4e, - 0xc0, 0x52, 0x09, 0xc0, 0x5f, 0x80, 0x47, 0x63, 0xfd, 0x28, 0xc7, 0x0a, 0x30, 0x91, 0xa9, 0xc1, - 0xd7, 0xdf, 0xd1, 0xfc, 0x77, 0xc5, 0xd4, 0xe0, 0x1c, 0x64, 0x6a, 0x88, 0xa5, 0x77, 0x34, 0xf7, - 0x8f, 0x89, 0xa9, 0x21, 0x58, 0x88, 0x66, 0x07, 0x56, 0xb7, 0xd1, 0x08, 0x1f, 0x13, 0x9a, 0x1d, - 0xe0, 0x5a, 0x5a, 0x87, 0xa9, 0xbe, 0x05, 0x71, 0x34, 0xd4, 0x8f, 0x73, 0x28, 0xa9, 0x77, 0x3d, - 0x0c, 0x2e, 0x5e, 0x7c, 0x31, 0x1c, 0x8d, 0xf6, 0x13, 0x3d, 0x8b, 0x17, 0x5f, 0x0b, 0x97, 0x2e, - 0x43, 0xca, 0xec, 0xb6, 0x5a, 0x64, 0xf2, 0xa0, 0xc3, 0xcf, 0xe7, 0xce, 0xfe, 0xb7, 0xaf, 0x72, - 0xe9, 0x08, 0x86, 0xa5, 0x8b, 0x30, 0x89, 0xdb, 0xdb, 0xb8, 0x39, 0x8a, 0xf3, 0x8b, 0x5f, 0x15, - 0x06, 0x93, 0x50, 0x2f, 0x3d, 0x0f, 0xc0, 0x52, 0x23, 0x74, 0xe3, 0x7c, 0x04, 0xef, 0x97, 0xbe, - 0xca, 0x0f, 0xc4, 0xf9, 0x2c, 0x3e, 0x00, 0x3b, 0x5e, 0x77, 0x38, 0xc0, 0x97, 0xc3, 0x00, 0x74, - 0x44, 0x9e, 0x85, 0xe4, 0x2b, 0x8e, 0x65, 0xba, 0xda, 0xee, 0x28, 0xee, 0x3f, 0xe5, 0xdc, 0x82, - 0x9e, 0x08, 0xac, 0x6d, 0xd9, 0xd8, 0xd5, 0x76, 0x9d, 0x51, 0xbc, 0xff, 0x9d, 0xf3, 0x7a, 0x0c, - 0x84, 0x59, 0xd7, 0x1c, 0x77, 0x9c, 0x7e, 0xff, 0x99, 0x60, 0x16, 0x0c, 0xa4, 0xd1, 0xe4, 0xf7, - 0x4d, 0x7c, 0x30, 0x8a, 0xf7, 0xcf, 0x45, 0xa3, 0x39, 0xfd, 0xd2, 0x73, 0x90, 0x26, 0x3f, 0xd9, - 0x29, 0xd7, 0x11, 0xcc, 0x7f, 0xc1, 0x99, 0x7d, 0x0e, 0xf2, 0x66, 0xc7, 0x6d, 0xba, 0xc6, 0x68, - 0x61, 0x7f, 0x85, 0x8f, 0xb4, 0xa0, 0x5f, 0x2a, 0x41, 0xc6, 0x71, 0x9b, 0xcd, 0x2e, 0xf7, 0x4f, - 0x47, 0xb0, 0xff, 0x8f, 0xaf, 0x7a, 0x29, 0x0b, 0x8f, 0x87, 0x8c, 0xf6, 0xed, 0x9b, 0x6e, 0xc7, - 0xa2, 0xfb, 0x2d, 0xa3, 0x10, 0xde, 0xe2, 0x08, 0x01, 0x96, 0xa5, 0x0a, 0x64, 0x49, 0x5f, 0x6c, - 0xdc, 0xc1, 0x74, 0x73, 0x6c, 0x04, 0xc4, 0x5f, 0x72, 0x01, 0x84, 0x98, 0xca, 0xdf, 0xfa, 0x99, - 0x37, 0xe7, 0x22, 0x9f, 0x7d, 0x73, 0x2e, 0xf2, 0x47, 0x6f, 0xce, 0x45, 0x3e, 0xf2, 0xb9, 0xb9, - 0x89, 0xcf, 0x7e, 0x6e, 0x6e, 0xe2, 0xf7, 0x3f, 0x37, 0x37, 0x31, 0x38, 0x4b, 0x0c, 0x2b, 0xd6, - 0x8a, 0xc5, 0xf2, 0xc3, 0x2f, 0x3f, 0xb4, 0x6b, 0xb8, 0x7b, 0xdd, 0xed, 0x45, 0xdd, 0x6a, 0x9f, - 0xd7, 0x2d, 0xa7, 0x6d, 0x39, 0xe7, 0xc3, 0x79, 0x5d, 0xfa, 0x0b, 0xfe, 0x2a, 0x42, 0x62, 0xe6, - 0x70, 0x3a, 0x57, 0x33, 0x0f, 0x86, 0x7d, 0x4c, 0x77, 0x09, 0x62, 0x25, 0xf3, 0x00, 0x9d, 0x64, - 0x06, 0x4e, 0xed, 0xda, 0x2d, 0x7e, 0xd4, 0x32, 0x49, 0x9e, 0xb7, 0xec, 0x16, 0x9a, 0xf1, 0xcf, - 0x43, 0x47, 0xce, 0x64, 0xf9, 0x21, 0xe7, 0xf2, 0xf7, 0x46, 0x8e, 0xd6, 0x93, 0x54, 0xc9, 0x3c, - 0xa0, 0x1d, 0xd9, 0x8c, 0xbc, 0xfc, 0xe8, 0xc8, 0x3c, 0xf7, 0x4d, 0xd3, 0xba, 0x6d, 0x92, 0x66, - 0x77, 0xb6, 0x45, 0x8e, 0x7b, 0xae, 0x37, 0xc7, 0xfd, 0x02, 0x6e, 0xb5, 0xae, 0x13, 0xba, 0x06, - 0x61, 0xd9, 0x4e, 0xb0, 0x53, 0xfd, 0xf0, 0xfd, 0x51, 0x98, 0xeb, 0x4b, 0x67, 0x73, 0x25, 0x18, - 0x26, 0x84, 0x25, 0x48, 0x2d, 0x0b, 0xdd, 0x9a, 0x85, 0xa4, 0x83, 0x75, 0xcb, 0x6c, 0x3a, 0x54, - 0x10, 0x31, 0x45, 0x3c, 0x12, 0x41, 0x98, 0x9a, 0x69, 0x39, 0xfc, 0xb0, 0x32, 0x7b, 0x28, 0xff, - 0xc8, 0x11, 0x05, 0x91, 0x13, 0x6f, 0x12, 0xd2, 0x78, 0x62, 0x4c, 0x69, 0x88, 0x4e, 0x84, 0x32, - 0xff, 0xe3, 0x4a, 0xe5, 0x07, 0xa3, 0x30, 0xdf, 0x2b, 0x15, 0x32, 0xb3, 0x1c, 0x57, 0x6b, 0x77, - 0x86, 0x89, 0xe5, 0x32, 0xa4, 0x1b, 0x82, 0xe6, 0xc8, 0x72, 0xb9, 0x7b, 0x44, 0xb9, 0xe4, 0xbd, - 0x57, 0x09, 0xc1, 0x5c, 0x18, 0x53, 0x30, 0x5e, 0x3f, 0xee, 0x49, 0x32, 0xff, 0x3b, 0x01, 0x27, - 0xd9, 0x74, 0x52, 0xd9, 0x54, 0x62, 0x0f, 0x5c, 0x26, 0xd9, 0x60, 0xd5, 0xe8, 0x7d, 0x12, 0xf9, - 0x3a, 0x4c, 0xd7, 0x88, 0xb5, 0x20, 0x51, 0x90, 0xbf, 0xc3, 0x33, 0xf0, 0x3c, 0xf7, 0x42, 0xc8, - 0xe1, 0xe7, 0xfb, 0x5b, 0xc1, 0x22, 0xf9, 0xdb, 0x23, 0x20, 0xd5, 0x75, 0xad, 0xa5, 0xd9, 0x5f, - 0x2b, 0x14, 0x7a, 0x1a, 0x80, 0x1d, 0xf7, 0xf0, 0x3e, 0xdc, 0xcb, 0x5f, 0x98, 0x5d, 0x0c, 0x76, - 0x6e, 0x91, 0xbd, 0x89, 0x9e, 0xa0, 0x4a, 0x53, 0x5a, 0xf2, 0xf3, 0xdc, 0x8b, 0x00, 0x7e, 0x05, - 0x3a, 0x05, 0x27, 0xea, 0x95, 0xd2, 0x6a, 0x49, 0x11, 0x87, 0x84, 0xea, 0x9b, 0xd5, 0x4a, 0xed, - 0x4a, 0xad, 0xba, 0x2c, 0x4d, 0xa0, 0xe3, 0x80, 0x82, 0x95, 0xde, 0xa1, 0xa6, 0x63, 0x30, 0x15, - 0x2c, 0x67, 0x5f, 0xa9, 0x44, 0x89, 0xa7, 0x68, 0xb4, 0x3b, 0x2d, 0x4c, 0x77, 0x1e, 0x55, 0x43, - 0x48, 0x6d, 0xb4, 0x13, 0xf2, 0xdb, 0xff, 0x91, 0x7d, 0xb9, 0x30, 0xed, 0xb3, 0x7b, 0x32, 0x5f, - 0x5a, 0x85, 0x29, 0x4d, 0xd7, 0x71, 0x27, 0x04, 0x39, 0xc2, 0x54, 0x13, 0x40, 0xba, 0x97, 0xca, - 0x39, 0x7d, 0xb4, 0xa7, 0x21, 0xe1, 0xd0, 0xde, 0x8f, 0x82, 0xf8, 0x1d, 0x0e, 0xc1, 0xc9, 0x97, - 0x4c, 0x98, 0x22, 0x9e, 0x9f, 0x66, 0xe3, 0x40, 0x33, 0x0e, 0xcf, 0x33, 0xfc, 0xf3, 0x5f, 0x79, - 0x9c, 0xee, 0xac, 0x3e, 0x10, 0x1e, 0x96, 0x01, 0xea, 0xa4, 0x48, 0x1c, 0xdb, 0x6f, 0x28, 0x86, - 0xbc, 0x78, 0x1f, 0x6f, 0xf0, 0xe1, 0x2f, 0xfb, 0x75, 0xfe, 0xb2, 0xb9, 0x41, 0x3a, 0x10, 0x78, - 0x53, 0x8e, 0xa3, 0xb2, 0x8a, 0x72, 0x75, 0xd8, 0x9c, 0x7e, 0xf9, 0x91, 0xfe, 0xd5, 0x89, 0xfd, - 0xf7, 0x18, 0x45, 0xbe, 0x1c, 0x7c, 0x8d, 0x37, 0xf7, 0xfe, 0x20, 0x06, 0x53, 0x5a, 0xdb, 0x30, - 0xad, 0xf3, 0xf4, 0x5f, 0x3e, 0xe7, 0x26, 0xe9, 0xc3, 0x18, 0x9b, 0x92, 0x97, 0xd8, 0x54, 0x18, - 0xad, 0x31, 0x7f, 0xf1, 0x3d, 0x3f, 0x3d, 0xe9, 0x4f, 0x97, 0xa5, 0x35, 0x90, 0xc4, 0x21, 0x5e, - 0x6c, 0xea, 0x56, 0x73, 0xac, 0x2c, 0xc5, 0x57, 0x04, 0x86, 0xc8, 0x6f, 0x55, 0x39, 0xeb, 0xd2, - 0x7b, 0x21, 0xe5, 0xc1, 0x8c, 0xf2, 0x4c, 0x04, 0x88, 0xc7, 0x41, 0xfc, 0x12, 0x36, 0x33, 0xc7, - 0xf1, 0x42, 0xdf, 0x12, 0xfc, 0x6c, 0x86, 0xae, 0x93, 0xde, 0xac, 0x40, 0xbe, 0x69, 0x99, 0xae, - 0x6a, 0xb5, 0x0d, 0x17, 0xb7, 0x3b, 0xee, 0x48, 0xbf, 0xee, 0x2f, 0x19, 0x48, 0x4a, 0xc9, 0x11, - 0xbe, 0x0d, 0xc1, 0x76, 0x4f, 0x83, 0xeb, 0x34, 0x6f, 0x72, 0x5b, 0xec, 0xee, 0xb3, 0x41, 0xf4, - 0x06, 0xf7, 0xcf, 0x62, 0x30, 0xc7, 0x89, 0xb7, 0x35, 0x07, 0x9f, 0xbf, 0xf5, 0xc4, 0x36, 0x76, - 0xb5, 0x27, 0xce, 0xeb, 0x96, 0x21, 0x16, 0xe2, 0x69, 0x6e, 0x6b, 0x49, 0xfd, 0x22, 0xaf, 0x2f, - 0x0e, 0xdc, 0xad, 0x2e, 0x0e, 0xb7, 0xd1, 0xc5, 0x7e, 0x15, 0x92, 0x5f, 0x86, 0x78, 0xc5, 0x32, - 0x4c, 0xb2, 0x34, 0x35, 0xb1, 0x69, 0xb5, 0xb9, 0xb5, 0x64, 0x0f, 0xe8, 0x12, 0x24, 0xb4, 0xb6, - 0xd5, 0x35, 0x5d, 0x66, 0x29, 0xcb, 0x73, 0x9f, 0x79, 0x63, 0x7e, 0xe2, 0x0f, 0xde, 0x98, 0x8f, - 0xd5, 0x4c, 0xf7, 0xf7, 0x3e, 0xf1, 0x18, 0x70, 0xf4, 0x9a, 0xe9, 0x7e, 0xfc, 0xf3, 0xbf, 0x78, - 0x2e, 0xa2, 0x70, 0xea, 0xa5, 0xf8, 0x17, 0x3e, 0x3a, 0x1f, 0x91, 0x5f, 0x84, 0xe4, 0x32, 0xd6, - 0x0f, 0x81, 0x7f, 0xa2, 0x07, 0xfe, 0xa4, 0x80, 0x5f, 0xc6, 0x7a, 0x00, 0x7e, 0x19, 0xeb, 0x3d, - 0xc8, 0x4f, 0x43, 0xaa, 0x66, 0xba, 0xec, 0x0b, 0xa0, 0x47, 0x20, 0x66, 0x98, 0xec, 0x50, 0x79, - 0x00, 0xa1, 0xaf, 0x81, 0x0a, 0xa1, 0x22, 0x8c, 0xcb, 0x58, 0xf7, 0x18, 0x9b, 0x58, 0xef, 0x65, - 0xec, 0x7f, 0x35, 0xa1, 0x2a, 0x2f, 0xff, 0xfe, 0x1f, 0xcf, 0x4d, 0xbc, 0xf6, 0xe6, 0xdc, 0xc4, - 0xd0, 0xa1, 0x97, 0x47, 0x0f, 0xbd, 0x37, 0xe2, 0x3f, 0x1d, 0x87, 0xfb, 0xe9, 0x87, 0xa1, 0x76, - 0xdb, 0x30, 0xdd, 0xf3, 0xba, 0x7d, 0xd0, 0x71, 0x2d, 0x32, 0x7f, 0xad, 0x1d, 0x3e, 0xe0, 0x53, - 0x7e, 0xf5, 0x22, 0xab, 0x1e, 0x3c, 0xdc, 0xf2, 0x0e, 0x4c, 0x6e, 0x12, 0x3e, 0x22, 0x62, 0xd7, - 0x72, 0xb5, 0x16, 0x77, 0x3a, 0xd8, 0x03, 0x29, 0x65, 0x1f, 0x93, 0x46, 0x59, 0xa9, 0x21, 0xbe, - 0x23, 0x6d, 0x61, 0x6d, 0x87, 0x7d, 0x93, 0x13, 0xa3, 0xde, 0x6a, 0x8a, 0x14, 0xd0, 0xcf, 0x6f, - 0x66, 0x60, 0x52, 0xeb, 0xb2, 0x73, 0x33, 0x31, 0xe2, 0xc6, 0xd2, 0x07, 0xf9, 0x3a, 0x24, 0xf9, - 0xf6, 0x39, 0x92, 0x20, 0x76, 0x13, 0x1f, 0xd0, 0xf7, 0x64, 0x15, 0xf2, 0x13, 0x2d, 0xc2, 0x24, - 0x6d, 0x3c, 0xff, 0xd8, 0x70, 0x76, 0xb1, 0xaf, 0xf5, 0x8b, 0xb4, 0x91, 0x0a, 0x23, 0x93, 0xaf, - 0x41, 0x6a, 0xd9, 0x22, 0x5a, 0x18, 0x46, 0x4b, 0x33, 0x34, 0xda, 0xe6, 0x4e, 0x97, 0x6b, 0x85, - 0xc2, 0x1e, 0xd0, 0x71, 0x48, 0xb0, 0x6f, 0xb4, 0xf8, 0xd9, 0x1f, 0xfe, 0x24, 0x57, 0x20, 0x49, - 0xb1, 0x37, 0x3a, 0x64, 0xc5, 0xf7, 0x8e, 0xad, 0xa7, 0xf9, 0x17, 0xbb, 0x1c, 0x3e, 0xea, 0x37, - 0x16, 0x41, 0xbc, 0xa9, 0xb9, 0x1a, 0xef, 0x37, 0xfd, 0x2d, 0xbf, 0x0f, 0x52, 0x1c, 0xc4, 0x41, - 0x17, 0x20, 0x66, 0x75, 0x1c, 0x7e, 0x7a, 0xa7, 0x38, 0xac, 0x2b, 0x1b, 0x9d, 0x72, 0x9c, 0xe8, - 0x8c, 0x42, 0x88, 0xcb, 0xeb, 0x43, 0xd5, 0xe2, 0xa9, 0x90, 0x5a, 0xb4, 0xb1, 0xbb, 0xbd, 0xe3, - 0xfa, 0x3f, 0xd8, 0x70, 0xf6, 0xa9, 0x82, 0xa7, 0x28, 0x77, 0xa3, 0x30, 0x17, 0xa8, 0xbd, 0x85, - 0x6d, 0xc7, 0xb0, 0x4c, 0xa6, 0x4d, 0x5c, 0x53, 0x50, 0xa0, 0x81, 0xbc, 0x7e, 0x88, 0xaa, 0x3c, - 0x07, 0xb1, 0x52, 0xa7, 0x83, 0x8a, 0x90, 0xa2, 0xcf, 0xba, 0xc5, 0x74, 0x25, 0xae, 0x78, 0xcf, - 0xa4, 0xce, 0xb1, 0x76, 0xdc, 0xdb, 0x9a, 0xed, 0x7d, 0xc2, 0x2c, 0x9e, 0xe5, 0x67, 0x21, 0x5d, - 0xb1, 0x4c, 0x07, 0x9b, 0x4e, 0x97, 0xba, 0xb2, 0xdb, 0x2d, 0x4b, 0xbf, 0xc9, 0x11, 0xd8, 0x03, - 0x11, 0xb6, 0xd6, 0xe9, 0x50, 0xce, 0xb8, 0x42, 0x7e, 0xb2, 0xf9, 0x5a, 0xde, 0x18, 0x2a, 0x9e, - 0x8b, 0x47, 0x13, 0x0f, 0xef, 0xa0, 0xef, 0x93, 0x46, 0xe0, 0xbe, 0xfe, 0x89, 0x74, 0x13, 0x1f, - 0x38, 0x47, 0x9d, 0x47, 0x2f, 0x42, 0x7a, 0x93, 0xde, 0x2e, 0x72, 0x1d, 0x1f, 0xa0, 0x22, 0x24, - 0x71, 0xf3, 0xc2, 0xc5, 0x8b, 0x4f, 0x3c, 0xcb, 0xb4, 0xfc, 0xea, 0x84, 0x22, 0x0a, 0xd0, 0x1c, - 0xa4, 0x1d, 0xac, 0x77, 0x2e, 0x5c, 0xbc, 0x74, 0xf3, 0x09, 0xa6, 0x56, 0x57, 0x27, 0x14, 0xbf, - 0x68, 0x29, 0x45, 0x7a, 0xfc, 0x85, 0x8f, 0xcd, 0x47, 0xca, 0x93, 0x10, 0x73, 0xba, 0xed, 0x77, - 0x4c, 0x37, 0x7e, 0x60, 0x12, 0x16, 0x02, 0xb5, 0x6c, 0x71, 0xb9, 0xa5, 0xb5, 0x8c, 0xa6, 0xe6, - 0xdf, 0x09, 0x23, 0x05, 0xfa, 0x4f, 0x29, 0x86, 0xac, 0x1a, 0x87, 0x4a, 0x51, 0xfe, 0xe5, 0x08, - 0x64, 0x6f, 0x08, 0xe4, 0x3a, 0x76, 0xd1, 0x65, 0x00, 0xef, 0x4d, 0x62, 0xaa, 0x9c, 0x5a, 0xec, - 0x7d, 0xd7, 0xa2, 0xc7, 0xa3, 0x04, 0xc8, 0xd1, 0xd3, 0x54, 0x01, 0x3b, 0x96, 0xc3, 0x3f, 0x67, - 0x1d, 0xc1, 0xea, 0x11, 0xa3, 0x47, 0x01, 0x51, 0xab, 0xa6, 0xde, 0xb2, 0x5c, 0xc3, 0xdc, 0x55, - 0x3b, 0xd6, 0x6d, 0x7e, 0x49, 0x40, 0x4c, 0x91, 0x68, 0xcd, 0x0d, 0x5a, 0xb1, 0x49, 0xca, 0x49, - 0xa3, 0xd3, 0x1e, 0x0a, 0x89, 0xca, 0xb4, 0x66, 0xd3, 0xc6, 0x8e, 0xc3, 0x0d, 0x97, 0x78, 0x44, - 0x97, 0x21, 0xd9, 0xe9, 0x6e, 0xab, 0xc2, 0x4a, 0x64, 0x2e, 0xdc, 0x37, 0x68, 0xce, 0x0b, 0xdd, - 0xe0, 0xb3, 0x3e, 0xd1, 0xe9, 0x6e, 0x13, 0x4d, 0x79, 0x00, 0xb2, 0x03, 0x1a, 0x93, 0xb9, 0xe5, - 0xb7, 0x83, 0x5e, 0x68, 0xc3, 0x7b, 0xa0, 0x76, 0x6c, 0xc3, 0xb2, 0x0d, 0xf7, 0x80, 0x9e, 0xba, - 0x8b, 0x29, 0x92, 0xa8, 0xd8, 0xe4, 0xe5, 0xf2, 0x4d, 0x28, 0xd4, 0xa9, 0xb7, 0xee, 0xb7, 0xfc, - 0xa2, 0xdf, 0xbe, 0xc8, 0xe8, 0xf6, 0x0d, 0x6d, 0x59, 0xb4, 0xaf, 0x65, 0xe5, 0xb5, 0xa1, 0x9a, - 0xf9, 0xe4, 0xd1, 0x34, 0x33, 0xbc, 0xba, 0x7d, 0xe9, 0x64, 0x68, 0x52, 0x72, 0xaf, 0x27, 0x60, - 0xb2, 0xc6, 0x55, 0xca, 0x51, 0x81, 0x78, 0xf1, 0xf0, 0x45, 0xb4, 0x38, 0xc2, 0x74, 0x16, 0x47, - 0x4e, 0x1f, 0xf9, 0x59, 0xc8, 0x6d, 0x6a, 0xb6, 0x5b, 0xc7, 0xee, 0x55, 0xac, 0x35, 0xb1, 0x1d, - 0x5e, 0x65, 0x73, 0x62, 0x95, 0x45, 0x10, 0xa7, 0x4b, 0x29, 0x5b, 0x65, 0xe8, 0x6f, 0x79, 0x0f, - 0xe2, 0xf4, 0xd8, 0xad, 0xb7, 0x02, 0x73, 0x0e, 0xb6, 0x02, 0x13, 0xfb, 0x79, 0xe0, 0x62, 0x47, - 0xe4, 0x8a, 0xe8, 0x03, 0x7a, 0x4a, 0xac, 0xa3, 0xb1, 0xc3, 0xd7, 0x51, 0xae, 0x84, 0x7c, 0x35, - 0x6d, 0x41, 0xb2, 0x4c, 0xcc, 0x6f, 0x6d, 0xd9, 0x6b, 0x48, 0xc4, 0x6f, 0x08, 0x5a, 0x83, 0x42, - 0x47, 0xb3, 0x5d, 0xfa, 0x19, 0xde, 0x1e, 0xed, 0x05, 0xd7, 0xf3, 0xf9, 0xfe, 0x59, 0x17, 0xea, - 0x2c, 0x7f, 0x4b, 0xae, 0x13, 0x2c, 0x94, 0xff, 0x6b, 0x1c, 0x12, 0x5c, 0x18, 0xcf, 0x41, 0x92, - 0x8b, 0x95, 0x6b, 0xe6, 0xfd, 0x8b, 0xfd, 0x8b, 0xd1, 0xa2, 0xb7, 0x68, 0x70, 0x3c, 0xc1, 0x83, - 0x1e, 0x86, 0x94, 0xbe, 0xa7, 0x19, 0xa6, 0x6a, 0x34, 0xb9, 0x03, 0x98, 0x79, 0xf3, 0x8d, 0xf9, - 0x64, 0x85, 0x94, 0xd5, 0x96, 0x95, 0x24, 0xad, 0xac, 0x35, 0xc9, 0xca, 0xbf, 0x87, 0x8d, 0xdd, - 0x3d, 0x97, 0xcf, 0x2e, 0xfe, 0x84, 0x9e, 0x81, 0x38, 0x51, 0x08, 0xfe, 0x91, 0x76, 0xb1, 0xcf, - 0x97, 0xf7, 0xf2, 0x24, 0xe5, 0x14, 0x79, 0xf1, 0x47, 0xfe, 0xcb, 0x7c, 0x44, 0xa1, 0x1c, 0xa8, - 0x02, 0xb9, 0x96, 0xe6, 0xb8, 0x2a, 0x5d, 0xb5, 0xc8, 0xeb, 0x27, 0x29, 0xc4, 0xc9, 0x7e, 0x81, - 0x70, 0xc1, 0xf2, 0xa6, 0x67, 0x08, 0x17, 0x2b, 0x6a, 0xa2, 0x33, 0x20, 0x51, 0x10, 0xdd, 0x6a, - 0xb7, 0x0d, 0x97, 0xf9, 0x52, 0x09, 0x2a, 0xf7, 0x3c, 0x29, 0xaf, 0xd0, 0x62, 0xea, 0x51, 0x9d, - 0x82, 0x34, 0xfd, 0x2c, 0x94, 0x92, 0xb0, 0xb3, 0xde, 0x29, 0x52, 0x40, 0x2b, 0x4f, 0x43, 0xc1, - 0xb7, 0x8d, 0x8c, 0x24, 0xc5, 0x50, 0xfc, 0x62, 0x4a, 0xf8, 0x38, 0xcc, 0x98, 0x78, 0x9f, 0x9e, - 0x3e, 0x0f, 0x51, 0xa7, 0x29, 0x35, 0x22, 0x75, 0x37, 0xc2, 0x1c, 0x0f, 0x41, 0x5e, 0x17, 0xc2, - 0x67, 0xb4, 0x40, 0x69, 0x73, 0x5e, 0x29, 0x25, 0x3b, 0x09, 0x29, 0xad, 0xd3, 0x61, 0x04, 0x19, - 0x6e, 0x1b, 0x3b, 0x1d, 0x5a, 0x75, 0x0e, 0xa6, 0x68, 0x1f, 0x6d, 0xec, 0x74, 0x5b, 0x2e, 0x07, - 0xc9, 0x52, 0x9a, 0x02, 0xa9, 0x50, 0x58, 0x39, 0xa5, 0x7d, 0x10, 0x72, 0xf8, 0x96, 0xd1, 0xc4, - 0xa6, 0x8e, 0x19, 0x5d, 0x8e, 0xd2, 0x65, 0x45, 0x21, 0x25, 0x3a, 0x0b, 0x9e, 0xcd, 0x53, 0x85, - 0x3d, 0xce, 0x33, 0x3c, 0x51, 0x5e, 0x62, 0xc5, 0xf2, 0x2c, 0xc4, 0x97, 0x35, 0x57, 0x23, 0x4e, - 0x85, 0xbb, 0xcf, 0x16, 0x99, 0xac, 0x42, 0x7e, 0xca, 0x5f, 0x88, 0x42, 0xfc, 0x86, 0xe5, 0x62, - 0xf4, 0x64, 0xc0, 0xe1, 0xcb, 0x0f, 0xd2, 0xe7, 0xba, 0xb1, 0x6b, 0xe2, 0xe6, 0x9a, 0xb3, 0x1b, - 0xb8, 0xc3, 0xc5, 0x57, 0xa7, 0x68, 0x48, 0x9d, 0x66, 0x60, 0xd2, 0xb6, 0xba, 0x66, 0x53, 0x9c, - 0x92, 0xa6, 0x0f, 0xa8, 0x0a, 0x29, 0x4f, 0x4b, 0xe2, 0xa3, 0xb4, 0xa4, 0x40, 0xb4, 0x84, 0xe8, - 0x30, 0x2f, 0x50, 0x92, 0xdb, 0x5c, 0x59, 0xca, 0x90, 0xf6, 0x8c, 0x17, 0xd7, 0xb6, 0xf1, 0x14, - 0xd6, 0x67, 0x23, 0x0b, 0x89, 0x37, 0xf6, 0x9e, 0xf0, 0x98, 0xc6, 0x49, 0x5e, 0x05, 0x97, 0x5e, - 0x48, 0xad, 0xf8, 0x7d, 0x32, 0x49, 0xda, 0x2f, 0x5f, 0xad, 0xd8, 0x9d, 0x32, 0xf7, 0x41, 0xda, - 0x31, 0x76, 0x4d, 0xcd, 0xed, 0xda, 0x98, 0x6b, 0x9e, 0x5f, 0x20, 0xff, 0x46, 0x04, 0x12, 0x4c, - 0x93, 0x03, 0x72, 0x8b, 0x0c, 0x96, 0x5b, 0x74, 0x98, 0xdc, 0x62, 0xf7, 0x2e, 0xb7, 0x12, 0x80, - 0xd7, 0x18, 0x87, 0x5f, 0xf3, 0x31, 0xc0, 0x5b, 0x60, 0x4d, 0xac, 0x1b, 0xbb, 0x7c, 0xa2, 0x06, - 0x98, 0xe4, 0xff, 0x1c, 0x21, 0x8e, 0x2b, 0xaf, 0x47, 0x25, 0xc8, 0x89, 0x76, 0xa9, 0x3b, 0x2d, - 0x6d, 0x97, 0xeb, 0xce, 0xfd, 0x43, 0x1b, 0x77, 0xa5, 0xa5, 0xed, 0x2a, 0x19, 0xde, 0x1e, 0xf2, - 0x30, 0x78, 0x1c, 0xa2, 0x43, 0xc6, 0x21, 0x34, 0xf0, 0xb1, 0x7b, 0x1b, 0xf8, 0xd0, 0x10, 0xc5, - 0x7b, 0x87, 0xe8, 0x57, 0xa2, 0x34, 0x78, 0xe9, 0x58, 0x8e, 0xd6, 0x7a, 0x37, 0x66, 0xc4, 0x29, - 0x48, 0x77, 0xac, 0x96, 0xca, 0x6a, 0xd8, 0xd7, 0x03, 0xa9, 0x8e, 0xd5, 0x52, 0xfa, 0x86, 0x7d, - 0xf2, 0x6d, 0x9a, 0x2e, 0x89, 0xb7, 0x41, 0x6a, 0xc9, 0x5e, 0xa9, 0xd9, 0x90, 0x65, 0xa2, 0xe0, - 0x6b, 0xd9, 0xe3, 0x44, 0x06, 0x74, 0x71, 0x8c, 0xf4, 0xaf, 0xbd, 0xac, 0xd9, 0x8c, 0x52, 0xe1, - 0x74, 0x84, 0x83, 0x99, 0xfe, 0x41, 0x51, 0x6f, 0x50, 0x2d, 0x15, 0x4e, 0x27, 0xff, 0x40, 0x04, - 0x60, 0x95, 0x48, 0x96, 0xf6, 0x97, 0xac, 0x42, 0x0e, 0x6d, 0x82, 0x1a, 0x7a, 0xf3, 0xdc, 0xb0, - 0x41, 0xe3, 0xef, 0xcf, 0x3a, 0xc1, 0x76, 0x57, 0x20, 0xe7, 0x2b, 0xa3, 0x83, 0x45, 0x63, 0xe6, - 0x0e, 0xf1, 0xa8, 0xeb, 0xd8, 0x55, 0xb2, 0xb7, 0x02, 0x4f, 0xf2, 0xbf, 0x8c, 0x40, 0x9a, 0xb6, - 0x69, 0x0d, 0xbb, 0x5a, 0x68, 0x0c, 0x23, 0xf7, 0x3e, 0x86, 0xf7, 0x03, 0x30, 0x18, 0xc7, 0x78, - 0x15, 0x73, 0xcd, 0x4a, 0xd3, 0x92, 0xba, 0xf1, 0x2a, 0x46, 0x97, 0x3c, 0x81, 0xc7, 0x0e, 0x17, - 0xb8, 0xf0, 0xb8, 0xb9, 0xd8, 0x4f, 0x40, 0x92, 0x5e, 0x8b, 0xb7, 0xef, 0x70, 0x27, 0x3a, 0x61, - 0x76, 0xdb, 0x8d, 0x7d, 0x47, 0x7e, 0x05, 0x92, 0x8d, 0x7d, 0x96, 0x0b, 0x39, 0x05, 0x69, 0xdb, - 0xb2, 0xf8, 0x9a, 0xcc, 0x7c, 0xa1, 0x14, 0x29, 0xa0, 0x4b, 0x90, 0x88, 0xff, 0xa3, 0x7e, 0xfc, - 0xef, 0x27, 0x30, 0x62, 0x63, 0x25, 0x30, 0xce, 0xfd, 0xa7, 0x08, 0x64, 0x02, 0xf6, 0x01, 0x3d, - 0x01, 0xc7, 0xca, 0xab, 0x1b, 0x95, 0xeb, 0x6a, 0x6d, 0x59, 0xbd, 0xb2, 0x5a, 0x5a, 0xf1, 0x3f, - 0x90, 0x2b, 0x1e, 0xbf, 0x73, 0x77, 0x01, 0x05, 0x68, 0xb7, 0x4c, 0xba, 0x19, 0x83, 0xce, 0xc3, - 0x4c, 0x98, 0xa5, 0x54, 0xae, 0x57, 0xd7, 0x1b, 0x52, 0xa4, 0x78, 0xec, 0xce, 0xdd, 0x85, 0xa9, - 0x00, 0x47, 0x69, 0xdb, 0xc1, 0xa6, 0xdb, 0xcf, 0x50, 0xd9, 0x58, 0x5b, 0xab, 0x35, 0xa4, 0x68, - 0x1f, 0x03, 0x37, 0xd8, 0x67, 0x61, 0x2a, 0xcc, 0xb0, 0x5e, 0x5b, 0x95, 0x62, 0x45, 0x74, 0xe7, - 0xee, 0x42, 0x3e, 0x40, 0xbd, 0x6e, 0xb4, 0x8a, 0xa9, 0x0f, 0xff, 0xc4, 0xdc, 0xc4, 0xc7, 0x7f, - 0x72, 0x2e, 0x42, 0x7a, 0x96, 0x0b, 0xd9, 0x08, 0xf4, 0x28, 0x9c, 0xa8, 0xd7, 0x56, 0xd6, 0xab, - 0xcb, 0xea, 0x5a, 0x7d, 0xa5, 0xe7, 0x9b, 0xe7, 0x62, 0xe1, 0xce, 0xdd, 0x85, 0x0c, 0xef, 0xd2, - 0x30, 0xea, 0x4d, 0xa5, 0x7a, 0x63, 0xa3, 0x51, 0x95, 0x22, 0x8c, 0x7a, 0xd3, 0xc6, 0xb7, 0x2c, - 0x97, 0xdd, 0xa8, 0xf9, 0x38, 0x9c, 0x1c, 0x40, 0xed, 0x75, 0x6c, 0xea, 0xce, 0xdd, 0x85, 0xdc, - 0xa6, 0x8d, 0xd9, 0xfc, 0xa1, 0x1c, 0x8b, 0x30, 0xdb, 0xcf, 0xb1, 0xb1, 0xb9, 0x51, 0x2f, 0xad, - 0x4a, 0x0b, 0x45, 0xe9, 0xce, 0xdd, 0x85, 0xac, 0x30, 0x86, 0x84, 0xde, 0xef, 0xd9, 0x3b, 0x15, - 0xed, 0x7c, 0x57, 0x32, 0x94, 0xcb, 0x63, 0x71, 0x44, 0x47, 0xb3, 0xb5, 0xf6, 0x51, 0xc3, 0x9d, - 0x11, 0xbb, 0xb1, 0xf2, 0x6b, 0x51, 0x28, 0x78, 0xce, 0xf4, 0x26, 0x7d, 0x03, 0x7a, 0x32, 0x98, - 0x87, 0xc9, 0x0c, 0x5d, 0xc6, 0x18, 0xb5, 0x48, 0xd3, 0xbc, 0x17, 0x52, 0xc2, 0x29, 0xe3, 0xe6, - 0x62, 0xa1, 0x9f, 0xaf, 0xca, 0x29, 0x38, 0xab, 0xc7, 0x81, 0x9e, 0x87, 0xb4, 0x67, 0x3c, 0xbc, - 0x5b, 0xa7, 0x86, 0x5b, 0x1b, 0xce, 0xef, 0xf3, 0xa0, 0x67, 0xfd, 0xb0, 0x21, 0x3e, 0x2c, 0x10, - 0xb9, 0xc1, 0x08, 0x38, 0xb3, 0xa0, 0x97, 0x6b, 0x7c, 0xda, 0xf1, 0xde, 0xd3, 0x1b, 0x3b, 0xf6, - 0x55, 0x16, 0x49, 0x31, 0xaf, 0x24, 0xd5, 0xd6, 0xf6, 0xcb, 0x34, 0x98, 0x3a, 0x01, 0x49, 0x52, - 0xb9, 0xcb, 0xbf, 0x09, 0x8f, 0x29, 0x89, 0xb6, 0xb6, 0xbf, 0xa2, 0x39, 0xd7, 0xe2, 0xa9, 0x98, - 0x14, 0x97, 0x7f, 0x36, 0x02, 0xf9, 0x70, 0x1f, 0xd1, 0x23, 0x80, 0x08, 0x87, 0xb6, 0x8b, 0x55, - 0x62, 0x62, 0xa8, 0xb0, 0x04, 0x6e, 0xa1, 0xad, 0xed, 0x97, 0x76, 0xf1, 0x7a, 0xb7, 0x4d, 0x1b, - 0xe0, 0xa0, 0x35, 0x90, 0x04, 0xb1, 0x18, 0x27, 0x2e, 0xcc, 0x93, 0xfd, 0x77, 0x50, 0x72, 0x02, - 0xb6, 0x50, 0xbd, 0x4e, 0x16, 0xaa, 0x3c, 0xc3, 0xf3, 0x76, 0xd3, 0x43, 0x5d, 0x89, 0x85, 0xbb, - 0x22, 0x3f, 0x0f, 0x85, 0x1e, 0x79, 0x22, 0x19, 0x72, 0x3c, 0x2b, 0x40, 0x77, 0x2a, 0x99, 0x7f, - 0x9c, 0x56, 0x32, 0x2c, 0xfa, 0xa7, 0x3b, 0xb7, 0x4b, 0xa9, 0x4f, 0x7d, 0x74, 0x3e, 0x42, 0x13, - 0xe6, 0x8f, 0x40, 0x2e, 0x24, 0x51, 0x91, 0xa9, 0x8b, 0xf8, 0x99, 0x3a, 0x9f, 0xf8, 0x65, 0xc8, - 0x12, 0x43, 0x89, 0x9b, 0x9c, 0xf6, 0x61, 0x28, 0x30, 0x43, 0xde, 0x2b, 0x6b, 0xe6, 0x49, 0xad, - 0x09, 0x81, 0xcb, 0xc2, 0xb5, 0x0a, 0x8b, 0x3d, 0x23, 0xa8, 0x56, 0x34, 0xa7, 0xfc, 0xfe, 0x8f, - 0xbf, 0x39, 0x17, 0x79, 0x67, 0x26, 0xe2, 0xef, 0xbe, 0x1f, 0x4e, 0x05, 0x2a, 0xb5, 0x6d, 0xdd, - 0x08, 0x65, 0x1d, 0x0a, 0x01, 0x25, 0x23, 0x95, 0xa3, 0xb2, 0x07, 0x87, 0xe6, 0x30, 0x0e, 0x4f, - 0x98, 0x15, 0x0f, 0xb7, 0x08, 0xa3, 0x13, 0x1b, 0x83, 0x73, 0x94, 0xff, 0x27, 0x05, 0x49, 0x05, - 0x7f, 0xb0, 0x8b, 0x1d, 0x17, 0x5d, 0x80, 0x38, 0xd6, 0xf7, 0xac, 0x41, 0x29, 0x21, 0xd2, 0xb9, - 0x45, 0x4e, 0x57, 0xd5, 0xf7, 0xac, 0xab, 0x13, 0x0a, 0xa5, 0x45, 0x17, 0x61, 0x72, 0xa7, 0xd5, - 0xe5, 0x79, 0x8a, 0x1e, 0x63, 0x11, 0x64, 0xba, 0x42, 0x88, 0xae, 0x4e, 0x28, 0x8c, 0x9a, 0xbc, - 0x8a, 0xde, 0xf3, 0x1b, 0x3b, 0xfc, 0x55, 0x35, 0x73, 0x87, 0xbe, 0x8a, 0xd0, 0xa2, 0x32, 0x80, - 0x61, 0x1a, 0xae, 0x4a, 0x63, 0x78, 0xee, 0x09, 0x3e, 0x30, 0x9c, 0xd3, 0x70, 0x69, 0xd4, 0x7f, - 0x75, 0x42, 0x49, 0x1b, 0xe2, 0x81, 0x34, 0xf7, 0x83, 0x5d, 0x6c, 0x1f, 0x70, 0x07, 0x70, 0x68, - 0x73, 0xdf, 0x4f, 0x88, 0x48, 0x73, 0x29, 0x35, 0xaa, 0x42, 0x86, 0x7e, 0xe0, 0xca, 0xe6, 0x2f, - 0xbf, 0x59, 0x56, 0x1e, 0xc6, 0x5c, 0x26, 0xa4, 0x74, 0x4a, 0x5f, 0x9d, 0x50, 0x60, 0xdb, 0x7b, - 0x22, 0x46, 0x92, 0xdd, 0x3c, 0xe6, 0xee, 0xf3, 0xfb, 0x34, 0xe7, 0x87, 0x61, 0xd0, 0xeb, 0xc7, - 0x1a, 0xfb, 0x57, 0x27, 0x94, 0xa4, 0xce, 0x7e, 0x92, 0xfe, 0x37, 0x71, 0xcb, 0xb8, 0x85, 0x6d, - 0xc2, 0x9f, 0x3e, 0xbc, 0xff, 0xcb, 0x8c, 0x92, 0x22, 0xa4, 0x9b, 0xe2, 0x81, 0x18, 0x5a, 0x6c, - 0x36, 0x79, 0x37, 0xa0, 0xdf, 0x4e, 0x87, 0xc6, 0xd9, 0x6c, 0x8a, 0x4e, 0xa4, 0x30, 0xff, 0x8d, - 0x9e, 0xf1, 0x3c, 0xd4, 0x4c, 0xbf, 0x53, 0x18, 0xea, 0x00, 0xcb, 0x55, 0x4c, 0x08, 0x4f, 0x15, - 0xad, 0x43, 0xbe, 0x65, 0x38, 0xae, 0xea, 0x98, 0x5a, 0xc7, 0xd9, 0xb3, 0x5c, 0x87, 0x06, 0xfd, - 0x99, 0x0b, 0x0f, 0x0d, 0x43, 0x58, 0x35, 0x1c, 0xb7, 0x2e, 0x88, 0xaf, 0x4e, 0x28, 0xb9, 0x56, - 0xb0, 0x80, 0xe0, 0x59, 0x3b, 0x3b, 0xd8, 0xf6, 0x00, 0x69, 0x72, 0xe0, 0x10, 0xbc, 0x0d, 0x42, - 0x2d, 0xf8, 0x09, 0x9e, 0x15, 0x2c, 0x40, 0xdf, 0x0c, 0xd3, 0x2d, 0x4b, 0x6b, 0x7a, 0x70, 0xaa, - 0xbe, 0xd7, 0x35, 0x6f, 0xd2, 0x4c, 0x42, 0xe6, 0xc2, 0xd9, 0xa1, 0x8d, 0xb4, 0xb4, 0xa6, 0x80, - 0xa8, 0x10, 0x86, 0xab, 0x13, 0xca, 0x54, 0xab, 0xb7, 0x10, 0x7d, 0x00, 0x66, 0xb4, 0x4e, 0xa7, - 0x75, 0xd0, 0x8b, 0x5e, 0xa0, 0xe8, 0xe7, 0x86, 0xa1, 0x97, 0x08, 0x4f, 0x2f, 0x3c, 0xd2, 0xfa, - 0x4a, 0x51, 0x03, 0xa4, 0x8e, 0x8d, 0xe9, 0x37, 0x31, 0x1d, 0xee, 0xaa, 0xd0, 0x1b, 0x83, 0x32, - 0x17, 0x4e, 0x0f, 0xc3, 0xde, 0x64, 0xf4, 0xc2, 0xb3, 0xb9, 0x3a, 0xa1, 0x14, 0x3a, 0xe1, 0x22, - 0x86, 0x6a, 0xe9, 0x98, 0x5e, 0x68, 0xc6, 0x51, 0xa7, 0x46, 0xa1, 0x52, 0xfa, 0x30, 0x6a, 0xa8, - 0xa8, 0x9c, 0xe4, 0x67, 0xda, 0xf8, 0x85, 0x2f, 0xa7, 0x21, 0x13, 0x30, 0x2c, 0x68, 0x16, 0x92, - 0x7c, 0x8f, 0x5f, 0x9c, 0x85, 0xe3, 0x8f, 0x72, 0x1e, 0xb2, 0x41, 0x63, 0x22, 0x7f, 0x24, 0xe2, - 0x71, 0xd2, 0x2f, 0xe5, 0x67, 0xc3, 0xa9, 0xc3, 0xb4, 0x9f, 0x15, 0x7c, 0x50, 0xac, 0x22, 0xa2, - 0x9e, 0xed, 0x26, 0x65, 0x69, 0x21, 0x5f, 0xc4, 0xd0, 0x3c, 0x64, 0x3a, 0x17, 0x3a, 0x1e, 0x49, - 0x8c, 0x92, 0x40, 0xe7, 0x42, 0x47, 0x10, 0x3c, 0x00, 0x59, 0xd2, 0x53, 0x35, 0xe8, 0x68, 0xa4, - 0x95, 0x0c, 0x29, 0xe3, 0x24, 0xf2, 0xbf, 0x8d, 0x82, 0xd4, 0x6b, 0x80, 0xbc, 0x9c, 0x62, 0xe4, - 0xc8, 0x39, 0xc5, 0x93, 0xbd, 0xd9, 0x4c, 0x3f, 0x81, 0xb9, 0x0a, 0x92, 0x9f, 0x87, 0x63, 0x0b, - 0xc1, 0x70, 0xc7, 0xa9, 0xc7, 0xc3, 0x53, 0x0a, 0x7a, 0x8f, 0xcb, 0x77, 0x25, 0xb4, 0xf7, 0x22, - 0x2e, 0xb2, 0xef, 0x1d, 0x62, 0xcf, 0x5f, 0xd8, 0xea, 0x34, 0x35, 0x17, 0x8b, 0xbc, 0x48, 0x60, - 0x1b, 0xe6, 0x61, 0x28, 0x68, 0x9d, 0x8e, 0xea, 0xb8, 0x9a, 0x8b, 0xf9, 0xb2, 0x3e, 0xc9, 0xd2, - 0x83, 0x5a, 0xa7, 0x53, 0x27, 0xa5, 0x6c, 0x59, 0x7f, 0x08, 0xf2, 0xc4, 0x26, 0x1b, 0x5a, 0x4b, - 0xe5, 0x59, 0x82, 0x04, 0x5b, 0xfd, 0x79, 0xe9, 0x55, 0x5a, 0x28, 0x37, 0xbd, 0x11, 0xa7, 0xf6, - 0xd8, 0x0b, 0xb3, 0x22, 0x81, 0x30, 0x0b, 0xf1, 0x1b, 0x0c, 0x98, 0x7c, 0xc4, 0xad, 0x0f, 0x83, - 0xb3, 0xbb, 0x33, 0x34, 0x24, 0xbb, 0xc5, 0x12, 0x1e, 0x29, 0x85, 0x3d, 0xc8, 0x1f, 0x8a, 0xc2, - 0x54, 0x9f, 0xe5, 0x1e, 0x98, 0xf6, 0xf6, 0xe3, 0xcb, 0xe8, 0x91, 0xe2, 0xcb, 0xeb, 0xe1, 0xb4, - 0x6e, 0x60, 0xe5, 0x3b, 0xd5, 0x27, 0x64, 0x66, 0x37, 0x89, 0x42, 0x73, 0x90, 0x40, 0xe6, 0x97, - 0xaa, 0xf9, 0x16, 0xcc, 0x6c, 0x1f, 0xbc, 0xaa, 0x99, 0xae, 0x61, 0x62, 0xb5, 0x6f, 0xd4, 0xfa, - 0x97, 0xd2, 0x35, 0xc3, 0xd9, 0xc6, 0x7b, 0xda, 0x2d, 0xc3, 0x12, 0xcd, 0x9a, 0xf6, 0xf8, 0xfd, - 0xe4, 0xae, 0xac, 0x40, 0x3e, 0xbc, 0xf4, 0xa0, 0x3c, 0x44, 0xdd, 0x7d, 0xde, 0xff, 0xa8, 0xbb, - 0x8f, 0x1e, 0xe7, 0x79, 0xa0, 0x28, 0xcd, 0x03, 0xf5, 0xbf, 0x88, 0xf3, 0xf9, 0x49, 0x20, 0x59, - 0xf6, 0x66, 0x83, 0xb7, 0x1c, 0xf5, 0xa2, 0xca, 0x67, 0xa1, 0xd0, 0xb3, 0xde, 0x0c, 0xcb, 0x0a, - 0xca, 0x05, 0xc8, 0x85, 0x16, 0x17, 0xf9, 0x38, 0xcc, 0x0c, 0x5a, 0x2b, 0xe4, 0x3d, 0xaf, 0x3c, - 0x64, 0xf3, 0xd1, 0x45, 0x48, 0x79, 0x8b, 0xc5, 0x80, 0x2c, 0x04, 0xed, 0x85, 0x20, 0x56, 0x3c, - 0xd2, 0x50, 0x32, 0x3b, 0x1a, 0x4a, 0x66, 0xcb, 0xdf, 0x0a, 0xb3, 0xc3, 0x16, 0x82, 0x9e, 0x6e, - 0xc4, 0x3d, 0x2d, 0x3c, 0x0e, 0x09, 0x7e, 0x6b, 0x61, 0x94, 0x6e, 0xdf, 0xf0, 0x27, 0xa2, 0x9d, - 0x6c, 0x51, 0x88, 0xb1, 0x5d, 0x1d, 0xfa, 0x20, 0xab, 0x70, 0x72, 0xe8, 0x62, 0x30, 0x7c, 0x23, - 0x88, 0x01, 0xf1, 0x8d, 0x20, 0x5d, 0x34, 0xc7, 0xa1, 0x7d, 0x15, 0x87, 0x1d, 0xd8, 0x93, 0xfc, - 0x7a, 0x0c, 0x8e, 0x0f, 0x5e, 0x12, 0xd0, 0x02, 0x64, 0x89, 0xdf, 0xed, 0x86, 0x5d, 0x74, 0x68, - 0x6b, 0xfb, 0x0d, 0xee, 0x9f, 0xf3, 0x44, 0x7a, 0xd4, 0x4b, 0xa4, 0xa3, 0x2d, 0x98, 0x6a, 0x59, - 0xba, 0xd6, 0x52, 0x03, 0x1a, 0xcf, 0x95, 0xfd, 0xc1, 0x3e, 0x61, 0x57, 0xd9, 0x5d, 0xe6, 0xcd, - 0x3e, 0xa5, 0x2f, 0x50, 0x8c, 0x55, 0x4f, 0xf3, 0xd1, 0x32, 0x64, 0xda, 0xbe, 0x22, 0x1f, 0x41, - 0xd9, 0x83, 0x6c, 0x81, 0x21, 0x99, 0x1c, 0xb8, 0xed, 0x93, 0x38, 0xb2, 0x89, 0x1e, 0xb6, 0x83, - 0x92, 0x1c, 0xba, 0x83, 0x32, 0x68, 0xbb, 0x22, 0x35, 0x78, 0xbb, 0xe2, 0xc3, 0xc1, 0xa1, 0x09, - 0x2d, 0xa2, 0xfd, 0x3b, 0x18, 0xa8, 0x0e, 0x33, 0x9c, 0xbf, 0x19, 0x92, 0x7d, 0x74, 0x5c, 0x43, - 0x83, 0x04, 0xfb, 0x70, 0xb1, 0xc7, 0xee, 0x4d, 0xec, 0xc2, 0x96, 0xc6, 0x03, 0xb6, 0xf4, 0xff, - 0xb3, 0xa1, 0xf8, 0x0f, 0x69, 0x48, 0x29, 0xd8, 0xe9, 0x90, 0x85, 0x13, 0x95, 0x21, 0x8d, 0xf7, - 0x75, 0xdc, 0x71, 0xfd, 0x6d, 0xca, 0x41, 0xc1, 0x00, 0xa3, 0xae, 0x0a, 0x4a, 0xe2, 0x89, 0x7b, - 0x6c, 0xe8, 0x49, 0x1e, 0x6c, 0x0d, 0x8f, 0x9b, 0x38, 0x7b, 0x30, 0xda, 0xba, 0x24, 0xa2, 0xad, - 0xd8, 0x50, 0xe7, 0x9b, 0x71, 0xf5, 0x84, 0x5b, 0x4f, 0xf2, 0x70, 0x2b, 0x3e, 0xe2, 0x65, 0xa1, - 0x78, 0xab, 0x12, 0x8a, 0xb7, 0x12, 0x23, 0xba, 0x39, 0x24, 0xe0, 0xba, 0x24, 0x02, 0xae, 0xe4, - 0x88, 0x16, 0xf7, 0x44, 0x5c, 0x57, 0xc2, 0x11, 0x57, 0x6a, 0x88, 0x01, 0x11, 0xdc, 0x43, 0x43, - 0xae, 0xe7, 0x02, 0x21, 0x57, 0x7a, 0x68, 0xbc, 0xc3, 0x40, 0x06, 0xc4, 0x5c, 0x95, 0x50, 0xcc, - 0x05, 0x23, 0x64, 0x30, 0x24, 0xe8, 0xfa, 0xa6, 0x60, 0xd0, 0x95, 0x19, 0x1a, 0xb7, 0xf1, 0xf1, - 0x1e, 0x14, 0x75, 0x3d, 0xeb, 0x45, 0x5d, 0xd9, 0xa1, 0x61, 0x23, 0xef, 0x43, 0x6f, 0xd8, 0xb5, - 0xd1, 0x17, 0x76, 0xe5, 0xf8, 0x9f, 0x09, 0x19, 0x06, 0x31, 0x22, 0xee, 0xda, 0xe8, 0x8b, 0xbb, - 0xf2, 0x23, 0x00, 0x47, 0x04, 0x5e, 0x7f, 0x63, 0x70, 0xe0, 0x35, 0x3c, 0x34, 0xe2, 0xcd, 0x1c, - 0x2f, 0xf2, 0x52, 0x87, 0x44, 0x5e, 0x2c, 0x3a, 0x7a, 0x64, 0x28, 0xfc, 0xd8, 0xa1, 0xd7, 0xd6, - 0x80, 0xd0, 0x8b, 0x05, 0x49, 0x67, 0x86, 0x82, 0x8f, 0x11, 0x7b, 0x6d, 0x0d, 0x88, 0xbd, 0xd0, - 0x48, 0xd8, 0xa3, 0x04, 0x5f, 0x93, 0x52, 0x42, 0x3e, 0x4b, 0x5c, 0xdf, 0x1e, 0x3b, 0x45, 0xfc, - 0x07, 0x6c, 0xdb, 0x96, 0x2d, 0x4e, 0xd6, 0xd2, 0x07, 0xf9, 0x0c, 0x71, 0xc6, 0x7d, 0x9b, 0x74, - 0x48, 0xa0, 0x46, 0xfd, 0xb4, 0x80, 0x1d, 0x92, 0x3f, 0x15, 0xf1, 0x79, 0xa9, 0x0f, 0x1b, 0x74, - 0xe4, 0xd3, 0xdc, 0x91, 0x0f, 0x84, 0x6f, 0xd1, 0x70, 0xf8, 0x36, 0x0f, 0x19, 0xe2, 0x7f, 0xf5, - 0x44, 0x66, 0x5a, 0xc7, 0x8b, 0xcc, 0xc4, 0x91, 0x02, 0x16, 0xe4, 0xf1, 0x65, 0x85, 0xed, 0xe4, - 0x14, 0xbc, 0xe3, 0x15, 0x2c, 0xa6, 0x40, 0x8f, 0xc1, 0x74, 0x80, 0xd6, 0xf3, 0xeb, 0x58, 0x98, - 0x22, 0x79, 0xd4, 0x25, 0xee, 0xe0, 0xfd, 0xab, 0x88, 0x2f, 0x21, 0x3f, 0xa4, 0x1b, 0x14, 0x7d, - 0x45, 0xde, 0xa6, 0xe8, 0x2b, 0x7a, 0xcf, 0xd1, 0x57, 0xd0, 0x4f, 0x8d, 0x85, 0xfd, 0xd4, 0xff, - 0x19, 0xf1, 0xc7, 0xc4, 0x8b, 0xa5, 0x74, 0xab, 0x89, 0xb9, 0xe7, 0x48, 0x7f, 0x13, 0xa7, 0xa2, - 0x65, 0xed, 0x72, 0xff, 0x90, 0xfc, 0x24, 0x54, 0xde, 0xc2, 0x91, 0xe6, 0xeb, 0x82, 0xe7, 0x74, - 0x4e, 0x06, 0xcf, 0xff, 0xf2, 0x43, 0xb1, 0x09, 0xff, 0x50, 0xac, 0xf7, 0xed, 0x5a, 0x32, 0xf0, - 0xed, 0x1a, 0x7a, 0x06, 0xd2, 0x34, 0x23, 0xaa, 0x5a, 0x1d, 0xf1, 0x47, 0x65, 0x4e, 0x0d, 0x3f, - 0x10, 0xeb, 0xd0, 0xa3, 0x7a, 0xec, 0x10, 0xad, 0xef, 0x31, 0xa4, 0x43, 0x1e, 0xc3, 0x7d, 0x90, - 0x26, 0xad, 0x67, 0x97, 0xa3, 0x03, 0xff, 0xf0, 0x51, 0x14, 0xc8, 0x1f, 0x00, 0xd4, 0xbf, 0x48, - 0xa0, 0xab, 0x90, 0xc0, 0xb7, 0xe8, 0xa5, 0x7c, 0xec, 0xa0, 0xe1, 0xf1, 0x7e, 0xd7, 0x94, 0x54, - 0x97, 0x67, 0x89, 0x90, 0xbf, 0xf8, 0xc6, 0xbc, 0xc4, 0xa8, 0x1f, 0xf5, 0xce, 0xf9, 0x2b, 0x9c, - 0x5f, 0xfe, 0xc3, 0x28, 0x09, 0x60, 0x42, 0x0b, 0xc8, 0x40, 0xd9, 0x0e, 0xda, 0x22, 0x1c, 0x4f, - 0xde, 0x73, 0x00, 0xbb, 0x9a, 0xa3, 0xde, 0xd6, 0x4c, 0x17, 0x37, 0xb9, 0xd0, 0x03, 0x25, 0xa8, - 0x08, 0x29, 0xf2, 0xd4, 0x75, 0x70, 0x93, 0x87, 0xd1, 0xde, 0x73, 0xa0, 0x9f, 0xc9, 0xaf, 0xad, - 0x9f, 0x61, 0x29, 0xa7, 0x7a, 0xa4, 0x1c, 0x08, 0x2e, 0xd2, 0xc1, 0xe0, 0x82, 0x1d, 0x0c, 0xe6, - 0xe7, 0x13, 0x81, 0xb5, 0x4d, 0x3c, 0xa3, 0x07, 0x21, 0xd7, 0xc6, 0xed, 0x8e, 0x65, 0xb5, 0x54, - 0x66, 0x6e, 0xd8, 0x5f, 0x41, 0xc8, 0xf2, 0xc2, 0x2a, 0xb5, 0x3a, 0xdf, 0x19, 0xf5, 0xe7, 0x9f, - 0x1f, 0x44, 0x7e, 0xc3, 0x09, 0x98, 0x5e, 0x1b, 0xdd, 0xeb, 0x22, 0xa0, 0x7a, 0xf0, 0xd4, 0x48, - 0x97, 0x9a, 0x05, 0xa1, 0xd0, 0xe3, 0xda, 0x0f, 0xff, 0x74, 0x09, 0x2b, 0x76, 0xd0, 0x4b, 0x70, - 0xa2, 0xc7, 0xb6, 0x79, 0xd0, 0xd1, 0x71, 0x4d, 0xdc, 0xb1, 0xb0, 0x89, 0x13, 0xd0, 0xbe, 0xb0, - 0x62, 0x5f, 0xe3, 0xac, 0xab, 0x41, 0x3e, 0xec, 0xf1, 0x0c, 0x1c, 0x7e, 0xfa, 0x57, 0x77, 0x5c, - 0xcd, 0x30, 0xd5, 0x50, 0x3a, 0x28, 0xcb, 0x0a, 0x79, 0x92, 0x69, 0x13, 0x8e, 0x0d, 0xf4, 0x7c, - 0xd0, 0xd3, 0x90, 0xf6, 0x9d, 0x26, 0x26, 0xd5, 0x43, 0xd2, 0x05, 0x3e, 0xad, 0xfc, 0xeb, 0x11, - 0x1f, 0x32, 0x9c, 0x80, 0xa8, 0x42, 0x82, 0x1d, 0x7b, 0xe3, 0x87, 0x69, 0x1e, 0x1b, 0xcf, 0x67, - 0x5a, 0x64, 0x67, 0xe2, 0x14, 0xce, 0x2c, 0x7f, 0x00, 0x12, 0xac, 0x04, 0x65, 0x20, 0xe9, 0xdf, - 0x9b, 0x0b, 0x90, 0x28, 0x55, 0x2a, 0xd5, 0x4d, 0x71, 0x09, 0x66, 0x79, 0x43, 0x69, 0x48, 0x51, - 0x52, 0xac, 0x54, 0xaf, 0x55, 0x2b, 0x0d, 0x29, 0x86, 0xa6, 0x20, 0xc7, 0x7e, 0xab, 0x57, 0x36, - 0x94, 0xb5, 0x52, 0x43, 0x8a, 0x07, 0x8a, 0xea, 0xd5, 0xf5, 0xe5, 0xaa, 0x22, 0x4d, 0xca, 0x4f, - 0xc0, 0xc9, 0xa1, 0x5e, 0x96, 0x9f, 0x5d, 0x88, 0x04, 0xb2, 0x0b, 0xf2, 0xeb, 0x51, 0x28, 0x0e, - 0x77, 0x9d, 0xd0, 0xb5, 0x9e, 0x8e, 0x5f, 0x38, 0x82, 0xdf, 0xd5, 0xd3, 0x7b, 0xf4, 0x10, 0xe4, - 0x6d, 0xbc, 0x83, 0x5d, 0x7d, 0x8f, 0xb9, 0x72, 0x6c, 0xc9, 0xcc, 0x29, 0x39, 0x5e, 0x4a, 0x99, - 0x1c, 0x46, 0xf6, 0x0a, 0xd6, 0x5d, 0x95, 0xd9, 0x22, 0x87, 0xff, 0x61, 0xd0, 0x1c, 0x2b, 0xad, - 0xb3, 0x42, 0xf9, 0x5b, 0x8f, 0x24, 0xcb, 0x34, 0x4c, 0x2a, 0xd5, 0x86, 0xf2, 0x92, 0x14, 0x43, - 0x08, 0xf2, 0xf4, 0xa7, 0x5a, 0x5f, 0x2f, 0x6d, 0xd6, 0xaf, 0x6e, 0x10, 0x59, 0x4e, 0x43, 0x41, - 0xc8, 0x52, 0x14, 0x4e, 0xca, 0x8f, 0xc0, 0x89, 0x21, 0x7e, 0xdf, 0x80, 0x73, 0x88, 0x1f, 0x8b, - 0x04, 0xa9, 0xc3, 0x31, 0xff, 0x06, 0x24, 0x1c, 0x57, 0x73, 0xbb, 0x0e, 0x17, 0xe2, 0xd3, 0xe3, - 0x3a, 0x82, 0x8b, 0xe2, 0x47, 0x9d, 0xb2, 0x2b, 0x1c, 0x46, 0xbe, 0x08, 0xf9, 0x70, 0xcd, 0x70, - 0x19, 0xf8, 0x4a, 0x14, 0x95, 0x5f, 0x02, 0x08, 0xe4, 0x23, 0xbd, 0x13, 0x5d, 0x91, 0xe0, 0x89, - 0xae, 0x8b, 0x30, 0x79, 0xcb, 0x62, 0x36, 0x63, 0xf0, 0xc4, 0xb9, 0x61, 0xb9, 0x38, 0x90, 0x7c, - 0x60, 0xd4, 0xb2, 0x01, 0xa8, 0x3f, 0x27, 0x34, 0xe4, 0x15, 0xcf, 0x85, 0x5f, 0xf1, 0xc0, 0xd0, - 0xec, 0xd2, 0xe0, 0x57, 0xbd, 0x0a, 0x93, 0xd4, 0xda, 0x0c, 0xfc, 0xc4, 0xe7, 0x5b, 0x00, 0x34, - 0xd7, 0xb5, 0x8d, 0xed, 0xae, 0xff, 0x82, 0xf9, 0xc1, 0xd6, 0xaa, 0x24, 0xe8, 0xca, 0xf7, 0x71, - 0xb3, 0x35, 0xe3, 0xb3, 0x06, 0x4c, 0x57, 0x00, 0x50, 0x5e, 0x87, 0x7c, 0x98, 0x77, 0xf0, 0x27, - 0x4b, 0xfe, 0xa7, 0xff, 0x69, 0xe1, 0x3e, 0x79, 0xce, 0x17, 0xbf, 0x8e, 0x83, 0x3e, 0xc8, 0x77, - 0x22, 0x90, 0x6a, 0xec, 0x73, 0x3d, 0x3e, 0xe4, 0x50, 0xa5, 0xff, 0xdd, 0x96, 0x97, 0x2c, 0x64, - 0xf9, 0xd8, 0x98, 0x97, 0xe5, 0xfd, 0x26, 0x6f, 0xa6, 0xc6, 0xc7, 0x8d, 0x76, 0x45, 0xb6, 0x9b, - 0x5b, 0xa7, 0xcb, 0xe3, 0x7d, 0x23, 0x31, 0x03, 0x93, 0xc1, 0xef, 0x1b, 0xd8, 0x83, 0xdc, 0x0c, - 0x1c, 0x4b, 0x60, 0xcb, 0x46, 0xf0, 0x63, 0x8a, 0xc8, 0x91, 0x3f, 0xa6, 0xf0, 0xde, 0x12, 0x0d, - 0xbe, 0xe5, 0x16, 0xa4, 0x84, 0x52, 0xa0, 0xf7, 0x05, 0xcf, 0x9e, 0x88, 0x3d, 0x9a, 0xa1, 0x8b, - 0x27, 0x87, 0x0f, 0x1c, 0x3d, 0x39, 0x07, 0x53, 0xfc, 0xc8, 0x9d, 0x1f, 0x57, 0xf0, 0xbf, 0x18, - 0x50, 0x60, 0x15, 0xab, 0x22, 0xa8, 0x90, 0x7f, 0x2a, 0x02, 0x52, 0xaf, 0x56, 0xbe, 0x9b, 0x0d, - 0x20, 0x46, 0x91, 0x68, 0x7f, 0xe0, 0xca, 0x6e, 0x36, 0xf2, 0x39, 0x52, 0xea, 0x5f, 0xda, 0xfd, - 0xa1, 0x28, 0x64, 0x02, 0x39, 0x3d, 0xf4, 0x54, 0xe8, 0x08, 0xe8, 0xc2, 0x61, 0xf9, 0xbf, 0xc0, - 0x19, 0xd0, 0x50, 0xc7, 0xa2, 0x47, 0xef, 0xd8, 0xdb, 0x7f, 0x48, 0x7f, 0xf0, 0xd7, 0x3e, 0x93, - 0x43, 0xbe, 0xf6, 0xf9, 0x8e, 0x08, 0xa4, 0xbc, 0xa5, 0xfb, 0xa8, 0xd9, 0xfc, 0xe3, 0x90, 0xe0, - 0xab, 0x13, 0x4b, 0xe7, 0xf3, 0xa7, 0x81, 0xb9, 0xd0, 0x22, 0xa4, 0xc4, 0xdf, 0x79, 0xe2, 0x81, - 0xa8, 0xf7, 0x7c, 0xee, 0x59, 0xc8, 0x04, 0x36, 0x56, 0x88, 0x9d, 0x58, 0xaf, 0xbe, 0x20, 0x4d, - 0x14, 0x93, 0x77, 0xee, 0x2e, 0xc4, 0xd6, 0xf1, 0x6d, 0x32, 0xc3, 0x94, 0x6a, 0xe5, 0x6a, 0xb5, - 0x72, 0x5d, 0x8a, 0x14, 0x33, 0x77, 0xee, 0x2e, 0x24, 0x15, 0x4c, 0xd3, 0x57, 0xe7, 0xae, 0x43, - 0xa1, 0x67, 0x60, 0xc2, 0xf6, 0x1d, 0x41, 0x7e, 0x79, 0x6b, 0x73, 0xb5, 0x56, 0x29, 0x35, 0xaa, - 0x2a, 0x3b, 0x4e, 0x87, 0x4e, 0xc0, 0xf4, 0x6a, 0x6d, 0xe5, 0x6a, 0x43, 0xad, 0xac, 0xd6, 0xaa, - 0xeb, 0x0d, 0xb5, 0xd4, 0x68, 0x94, 0x2a, 0xd7, 0xa5, 0xe8, 0x85, 0xaf, 0x02, 0x14, 0x4a, 0xe5, - 0x4a, 0x8d, 0xac, 0xcf, 0x06, 0xbf, 0x75, 0xbd, 0x02, 0x71, 0x9a, 0x0a, 0x38, 0xf4, 0xa8, 0x48, - 0xf1, 0xf0, 0xdc, 0x26, 0xba, 0x02, 0x93, 0x34, 0x4b, 0x80, 0x0e, 0x3f, 0x3b, 0x52, 0x1c, 0x91, - 0xec, 0x24, 0x8d, 0xa1, 0xd3, 0xe9, 0xd0, 0xc3, 0x24, 0xc5, 0xc3, 0x73, 0x9f, 0x48, 0x81, 0xb4, - 0x1f, 0x65, 0x8c, 0x3e, 0x5c, 0x51, 0x1c, 0xc3, 0x3a, 0xa2, 0x55, 0x48, 0x8a, 0xc0, 0x70, 0xd4, - 0x71, 0x8f, 0xe2, 0xc8, 0xe4, 0x24, 0x11, 0x17, 0x0b, 0xe0, 0x0f, 0x3f, 0xbb, 0x52, 0x1c, 0x91, - 0x69, 0x45, 0x35, 0xef, 0x10, 0xfe, 0x88, 0x23, 0x1c, 0xc5, 0x51, 0xc9, 0x46, 0x22, 0x34, 0x3f, - 0x35, 0x32, 0xfa, 0x44, 0x4e, 0x71, 0x8c, 0x24, 0x32, 0xda, 0x02, 0x08, 0x84, 0xeb, 0x63, 0x1c, - 0xb5, 0x29, 0x8e, 0x93, 0x1c, 0x46, 0x1b, 0x90, 0xf2, 0xa2, 0xa7, 0x91, 0x07, 0x5f, 0x8a, 0xa3, - 0xb3, 0xb4, 0xe8, 0x03, 0x90, 0x0b, 0x47, 0x0d, 0xe3, 0x1d, 0x67, 0x29, 0x8e, 0x99, 0x7e, 0x25, - 0xf8, 0xe1, 0x10, 0x62, 0xbc, 0xe3, 0x2d, 0xc5, 0x31, 0xb3, 0xb1, 0xe8, 0x15, 0x98, 0xea, 0x77, - 0xf1, 0xc7, 0x3f, 0xed, 0x52, 0x3c, 0x42, 0x7e, 0x16, 0xb5, 0x01, 0x0d, 0x08, 0x0d, 0x8e, 0x70, - 0xf8, 0xa5, 0x78, 0x94, 0x74, 0x2d, 0x6a, 0x42, 0xa1, 0xd7, 0xdf, 0x1e, 0xf7, 0x30, 0x4c, 0x71, - 0xec, 0xd4, 0x2d, 0x7b, 0x4b, 0xd8, 0x4f, 0x1f, 0xf7, 0x70, 0x4c, 0x71, 0xec, 0x4c, 0x6e, 0xb9, - 0x34, 0xf4, 0x7c, 0xe3, 0xe9, 0x43, 0xcf, 0x37, 0xfa, 0x27, 0x16, 0xbd, 0x33, 0x8d, 0xdf, 0xfe, - 0x04, 0xbc, 0x87, 0x5f, 0x26, 0xe0, 0xb8, 0xda, 0x4d, 0xc3, 0xdc, 0xf5, 0x6e, 0x87, 0xe0, 0xcf, - 0xfc, 0x70, 0xe3, 0x71, 0x7e, 0x61, 0x81, 0x28, 0x1d, 0x71, 0x47, 0xc4, 0xd0, 0x7b, 0xaf, 0x46, - 0x1d, 0x42, 0x1e, 0x7d, 0x74, 0xf1, 0x90, 0xfb, 0x27, 0x46, 0xdc, 0x72, 0x31, 0xe0, 0x7e, 0x8a, - 0x11, 0x87, 0x30, 0x0f, 0x3b, 0xef, 0x29, 0x7f, 0x7f, 0x04, 0xf2, 0x57, 0x0d, 0xc7, 0xb5, 0x6c, - 0x43, 0xd7, 0x5a, 0x74, 0xc5, 0xb8, 0x3c, 0xee, 0x47, 0x1e, 0xe5, 0x34, 0x71, 0x46, 0xf8, 0xa5, - 0x16, 0xfc, 0x60, 0xc8, 0x32, 0x24, 0x6e, 0x69, 0x2d, 0xf6, 0x89, 0x45, 0xf0, 0xfa, 0x99, 0x5e, - 0x99, 0x07, 0xbc, 0xa4, 0x20, 0x0a, 0xe3, 0x95, 0x7f, 0x9e, 0x1e, 0xe2, 0x6e, 0xb7, 0x0d, 0x87, - 0xfd, 0x25, 0x76, 0x17, 0x3b, 0x68, 0x13, 0xe2, 0xb6, 0xe6, 0xf2, 0xa0, 0xa6, 0xfc, 0x5e, 0x7e, - 0x15, 0xc5, 0xc3, 0xa3, 0x2f, 0x94, 0x58, 0xec, 0xbf, 0xad, 0x82, 0x22, 0xa1, 0x17, 0x20, 0xd5, - 0xd6, 0xf6, 0x55, 0x8a, 0x1a, 0x7d, 0x1b, 0x50, 0x93, 0x6d, 0x6d, 0x9f, 0xb4, 0x95, 0xcc, 0x20, - 0x02, 0xac, 0xef, 0x69, 0xe6, 0x2e, 0x66, 0xf8, 0xb1, 0xb7, 0x01, 0x3f, 0xd7, 0xd6, 0xf6, 0x2b, - 0x14, 0x93, 0xbc, 0x65, 0x29, 0xf5, 0xfa, 0x47, 0xe7, 0x27, 0xe8, 0x59, 0xe4, 0xdf, 0x8a, 0xf0, - 0xf8, 0x95, 0x8a, 0x0b, 0x69, 0x20, 0xe9, 0xde, 0x13, 0x7d, 0xbd, 0xc8, 0xe5, 0x9f, 0x1e, 0x36, - 0x1a, 0x3d, 0xc2, 0x2e, 0xe7, 0x48, 0x43, 0x3f, 0xfb, 0xc6, 0x7c, 0x84, 0x8d, 0x4b, 0x41, 0xef, - 0x19, 0x8c, 0x6b, 0x90, 0x61, 0x29, 0x34, 0x95, 0xfa, 0xad, 0xd1, 0x91, 0x7e, 0x6b, 0x4e, 0xf8, - 0xad, 0x0c, 0x10, 0x18, 0x37, 0xa9, 0x0f, 0xf4, 0xe3, 0xe7, 0x23, 0x90, 0x59, 0x0e, 0x5c, 0x33, - 0x35, 0x0b, 0xc9, 0xb6, 0x65, 0x1a, 0x37, 0xb1, 0xed, 0x6d, 0xc8, 0xb0, 0x47, 0xe2, 0x5f, 0xb2, - 0xbf, 0x56, 0xe4, 0x1e, 0x88, 0x2b, 0x18, 0xc4, 0x33, 0xe1, 0xba, 0x8d, 0xb7, 0x1d, 0x43, 0x48, - 0x5d, 0x11, 0x8f, 0xe8, 0x2c, 0x48, 0x0e, 0xd6, 0xbb, 0xb6, 0xe1, 0x1e, 0xa8, 0xba, 0x65, 0xba, - 0x9a, 0xee, 0xf2, 0xb4, 0x69, 0x41, 0x94, 0x57, 0x58, 0x31, 0x01, 0x69, 0x62, 0x57, 0x33, 0x5a, - 0xec, 0xbc, 0x57, 0x5a, 0x11, 0x8f, 0x81, 0xe6, 0x7e, 0x3a, 0x19, 0x8c, 0x0b, 0x2b, 0x20, 0x59, - 0x1d, 0x6c, 0x87, 0xbe, 0x77, 0x63, 0xba, 0x3a, 0xfb, 0x7b, 0x9f, 0x78, 0x6c, 0x86, 0x0b, 0x9e, - 0xef, 0xbe, 0xb3, 0x9b, 0x95, 0x95, 0x82, 0xe0, 0x10, 0x1f, 0xc2, 0xbd, 0x14, 0xda, 0x86, 0xe9, - 0x6e, 0xfb, 0xdf, 0xdb, 0xcf, 0xf4, 0x09, 0xb7, 0x64, 0x1e, 0x94, 0x67, 0x7f, 0xc7, 0x87, 0xf6, - 0xe3, 0xc6, 0xeb, 0xf8, 0x20, 0xb8, 0x27, 0x43, 0x61, 0x88, 0xfb, 0xfe, 0x8a, 0x66, 0xb4, 0xc4, - 0x1f, 0x77, 0x53, 0xf8, 0x13, 0x5a, 0xf2, 0x72, 0x30, 0x71, 0x1a, 0x0b, 0xc9, 0xc3, 0x74, 0xa4, - 0x6c, 0x99, 0xcd, 0x70, 0xba, 0x05, 0x35, 0x20, 0xe1, 0x5a, 0x37, 0xb1, 0xc9, 0x85, 0x74, 0x24, - 0xfd, 0xee, 0xbf, 0x7c, 0x86, 0x63, 0xa1, 0x5d, 0x90, 0x9a, 0xb8, 0x85, 0x77, 0xd9, 0xd7, 0x5a, - 0x7b, 0x9a, 0x8d, 0xd9, 0x17, 0x9c, 0x5f, 0xeb, 0xfc, 0x29, 0x78, 0xa8, 0x75, 0x0a, 0x8a, 0x36, - 0xc3, 0x17, 0x9d, 0x25, 0xf9, 0x96, 0xfc, 0x90, 0xfe, 0x07, 0x34, 0x33, 0x68, 0xb3, 0x42, 0x17, - 0xa3, 0x9d, 0x05, 0xa9, 0x6b, 0x6e, 0x5b, 0x26, 0xfd, 0x7b, 0x49, 0x3c, 0xba, 0x4a, 0xb1, 0x6d, - 0x3b, 0xaf, 0x9c, 0x6f, 0xdb, 0x6d, 0x42, 0xde, 0x27, 0xa5, 0xb3, 0x28, 0x7d, 0xd4, 0x59, 0x94, - 0xf3, 0x00, 0x08, 0x09, 0x5a, 0x03, 0xf0, 0xe7, 0xa9, 0xb7, 0xb5, 0x3f, 0x72, 0xc6, 0x07, 0x3b, - 0x13, 0x00, 0x40, 0x2d, 0x98, 0x6e, 0x1b, 0xa6, 0xea, 0xe0, 0xd6, 0x8e, 0xca, 0x25, 0x47, 0x70, - 0x33, 0x6f, 0xc3, 0x48, 0x4f, 0xb5, 0x0d, 0xb3, 0x8e, 0x5b, 0x3b, 0xcb, 0x1e, 0x2c, 0x7a, 0x2f, - 0x9c, 0xf2, 0xc5, 0x61, 0x99, 0xea, 0x9e, 0xd5, 0x6a, 0xaa, 0x36, 0xde, 0x51, 0x75, 0x7a, 0xf7, - 0x51, 0x96, 0x0a, 0xf1, 0x84, 0x47, 0xb2, 0x61, 0x5e, 0xb5, 0x5a, 0x4d, 0x05, 0xef, 0x54, 0x48, - 0x35, 0x7a, 0x10, 0x7c, 0x59, 0xa8, 0x46, 0xd3, 0x99, 0xcd, 0x2d, 0xc4, 0xce, 0xc4, 0x95, 0xac, - 0x57, 0x58, 0x6b, 0x3a, 0x4b, 0xd9, 0x0f, 0x7f, 0x74, 0x7e, 0x82, 0xcf, 0xde, 0x09, 0x79, 0x93, - 0xde, 0xd6, 0xc1, 0x27, 0x1e, 0x76, 0xd0, 0x25, 0x48, 0x6b, 0xe2, 0x81, 0x7d, 0x27, 0x72, 0xc8, - 0xc4, 0xf5, 0x49, 0x99, 0x3d, 0x78, 0xed, 0x0f, 0x17, 0x22, 0xf2, 0x4f, 0x46, 0x20, 0xb1, 0x7c, - 0x63, 0x53, 0x33, 0x6c, 0x54, 0x85, 0x29, 0x5f, 0x85, 0xc7, 0xb5, 0x06, 0xbe, 0xd6, 0x0b, 0x73, - 0x50, 0x1d, 0xf6, 0x11, 0xed, 0xa1, 0x30, 0xbd, 0x9f, 0xd7, 0xf6, 0x74, 0xfc, 0x1a, 0x24, 0x59, - 0x2b, 0x1d, 0xf4, 0x3c, 0x4c, 0x76, 0xc8, 0x0f, 0xbe, 0x19, 0x30, 0x37, 0x54, 0xf5, 0x29, 0x7d, - 0x50, 0x51, 0x18, 0x9f, 0xfc, 0x57, 0x11, 0x80, 0xe5, 0x1b, 0x37, 0x1a, 0xb6, 0xd1, 0x69, 0x61, - 0xf7, 0xed, 0xea, 0xf6, 0x2a, 0x1c, 0x0b, 0x7c, 0xae, 0x69, 0xeb, 0x63, 0x77, 0x7d, 0xda, 0xff, - 0x60, 0xd3, 0xd6, 0x07, 0xa2, 0x35, 0x1d, 0xd7, 0x43, 0x8b, 0x8d, 0x8d, 0xb6, 0xec, 0xb8, 0x83, - 0x65, 0xf9, 0x22, 0x64, 0xfc, 0xee, 0x3b, 0xa8, 0x06, 0x29, 0x97, 0xff, 0xe6, 0x22, 0x95, 0x87, - 0x8b, 0x54, 0xb0, 0x05, 0xc5, 0xea, 0xb1, 0xcb, 0x7f, 0x4d, 0x24, 0xeb, 0x4f, 0x8f, 0xaf, 0x2b, - 0x85, 0x22, 0x76, 0x9f, 0xdb, 0xe5, 0xb7, 0xc3, 0xaf, 0xe1, 0x58, 0x3d, 0xa2, 0xfd, 0x70, 0x14, - 0xa6, 0xb7, 0xc4, 0xf4, 0xfd, 0xba, 0x95, 0xc4, 0x16, 0x24, 0xb1, 0xe9, 0xda, 0x06, 0x16, 0x3b, - 0x80, 0x8f, 0x0f, 0x1b, 0xf0, 0x01, 0x7d, 0xa1, 0x7f, 0x34, 0x3b, 0x38, 0xfc, 0x02, 0xab, 0x47, - 0x14, 0xbf, 0x19, 0x83, 0xd9, 0x61, 0xec, 0xe8, 0x34, 0x14, 0x74, 0x1b, 0xd3, 0x02, 0x35, 0x94, - 0x25, 0xcf, 0x8b, 0x62, 0xbe, 0xe0, 0x28, 0x40, 0xdc, 0x38, 0xa2, 0x5d, 0x84, 0xf4, 0xde, 0xfc, - 0xb6, 0xbc, 0x8f, 0x40, 0x97, 0x1c, 0x0c, 0x05, 0x71, 0xec, 0x7d, 0x5b, 0x6b, 0x69, 0xa6, 0x7e, - 0x2f, 0x9e, 0x6e, 0xff, 0xfa, 0x20, 0xce, 0xd2, 0x97, 0x19, 0x26, 0xba, 0x01, 0x49, 0x01, 0x1f, - 0x7f, 0x1b, 0xe0, 0x05, 0x18, 0x7a, 0x00, 0xb2, 0xc1, 0x65, 0x83, 0x7a, 0x31, 0x71, 0x25, 0x13, - 0x58, 0x35, 0x46, 0xad, 0x4b, 0x89, 0x43, 0xd7, 0xa5, 0x80, 0xb3, 0xf8, 0x2f, 0x62, 0x30, 0xa5, - 0xe0, 0xe6, 0x37, 0xe0, 0xe0, 0x7d, 0x33, 0x00, 0x9b, 0xe0, 0xc4, 0xf8, 0xde, 0xc3, 0xf8, 0xf5, - 0x1b, 0x8c, 0x34, 0xc3, 0x5b, 0x76, 0xdc, 0x77, 0x73, 0x04, 0xff, 0x7d, 0x14, 0xb2, 0xc1, 0x11, - 0xfc, 0x06, 0x58, 0xed, 0xd0, 0xba, 0x6f, 0xde, 0xd8, 0x01, 0xf5, 0xb3, 0xc3, 0xcc, 0x5b, 0x9f, - 0x6e, 0x8f, 0x61, 0xd7, 0x7e, 0x30, 0x06, 0x09, 0x7e, 0x62, 0x6c, 0xa3, 0xcf, 0x1b, 0x8e, 0x8c, - 0xfa, 0x4c, 0x38, 0x27, 0x3e, 0x13, 0x1e, 0xe8, 0x0c, 0x3f, 0x04, 0x79, 0x12, 0x83, 0x87, 0x8e, - 0xa1, 0x45, 0xce, 0xe4, 0x68, 0x10, 0xed, 0x1f, 0x9a, 0x46, 0xf3, 0x90, 0x21, 0x64, 0xbe, 0x0d, - 0x27, 0x34, 0xd0, 0xd6, 0xf6, 0xab, 0xac, 0x04, 0x3d, 0x06, 0x68, 0xcf, 0xcb, 0x8f, 0xa8, 0xbe, - 0x30, 0x08, 0xdd, 0x94, 0x5f, 0x23, 0xc8, 0xef, 0x07, 0x20, 0xad, 0x50, 0xd9, 0x45, 0x9e, 0xfc, - 0x76, 0x55, 0x52, 0xb2, 0x4c, 0x2f, 0xf3, 0xfc, 0x36, 0xe6, 0x53, 0xf7, 0x84, 0xe7, 0x3c, 0xba, - 0x59, 0x3d, 0xda, 0xa4, 0xf8, 0xca, 0x1b, 0xf3, 0xc5, 0x03, 0xad, 0xdd, 0x5a, 0x92, 0x07, 0x40, - 0xca, 0xd4, 0xc7, 0x0e, 0x87, 0xf5, 0x4b, 0x67, 0x84, 0x2e, 0xdf, 0xf9, 0xfc, 0x2f, 0x9e, 0x3b, - 0x15, 0xc0, 0xdc, 0xf7, 0x12, 0x67, 0x6c, 0x38, 0xe4, 0x5f, 0x88, 0x00, 0xf2, 0x17, 0x1a, 0xef, - 0x98, 0xf8, 0x1a, 0x3d, 0x3c, 0x2c, 0x22, 0x81, 0xc8, 0xe1, 0x11, 0x86, 0xcf, 0x1f, 0x8a, 0x30, - 0x02, 0x13, 0xe8, 0x7d, 0xbe, 0x59, 0x17, 0x1f, 0x85, 0x0f, 0xb8, 0xc2, 0x75, 0xb1, 0x62, 0x19, - 0x21, 0x08, 0xc1, 0xe4, 0xcd, 0xcd, 0x09, 0xf9, 0x8d, 0x08, 0x9c, 0xec, 0xd3, 0x40, 0xaf, 0xd9, - 0x3a, 0x20, 0x3b, 0x50, 0x49, 0x47, 0x51, 0x6c, 0xbd, 0xde, 0x9b, 0x42, 0x4f, 0xd9, 0x7d, 0xa6, - 0xfc, 0x1d, 0x5a, 0xa3, 0xf8, 0x65, 0xae, 0xbf, 0x1d, 0x81, 0x99, 0x60, 0x8b, 0xbc, 0xbe, 0xd5, - 0x21, 0x1b, 0x6c, 0x0b, 0xef, 0xd5, 0x7b, 0xc6, 0xe9, 0x55, 0xb0, 0x43, 0x21, 0x10, 0xd2, 0x17, - 0xa1, 0xe9, 0x2c, 0x8d, 0xf7, 0xc4, 0xd8, 0x52, 0xf2, 0xb6, 0x28, 0x06, 0x4d, 0xff, 0x38, 0x1d, - 0xac, 0xef, 0x8d, 0x42, 0x7c, 0xd3, 0xb2, 0x5a, 0xe8, 0x3b, 0x22, 0x30, 0x65, 0x5a, 0xae, 0x4a, - 0xe6, 0x07, 0x6e, 0xaa, 0x3c, 0x95, 0xc0, 0x2c, 0xe8, 0x8d, 0xa3, 0x49, 0xef, 0x8b, 0x6f, 0xcc, - 0xf7, 0x43, 0x0d, 0xba, 0x7d, 0xb7, 0x60, 0x5a, 0x6e, 0x99, 0x12, 0x35, 0x58, 0xb6, 0xe1, 0x36, - 0xe4, 0xc2, 0xef, 0x67, 0x66, 0x57, 0x39, 0xf2, 0xfb, 0x73, 0x23, 0xdf, 0x9d, 0xdd, 0x0e, 0xbc, - 0x98, 0xdd, 0x81, 0xf9, 0xe7, 0x64, 0x70, 0x5f, 0x02, 0xe9, 0x46, 0xef, 0xa1, 0xb5, 0x2a, 0x24, - 0x8f, 0x7a, 0xfe, 0x2d, 0x28, 0x71, 0xce, 0x7b, 0xee, 0x93, 0x11, 0x00, 0x3f, 0x71, 0x83, 0x1e, - 0x85, 0x13, 0xe5, 0x8d, 0xf5, 0x65, 0xb5, 0xde, 0x28, 0x35, 0xb6, 0xea, 0xe1, 0x1b, 0xd7, 0xc5, - 0x35, 0x25, 0x4e, 0x07, 0xeb, 0xc6, 0x8e, 0x81, 0x9b, 0xe8, 0x61, 0x98, 0x09, 0x53, 0x93, 0xa7, - 0xea, 0xb2, 0x14, 0x29, 0x66, 0xef, 0xdc, 0x5d, 0x48, 0x31, 0x97, 0x14, 0x37, 0xd1, 0x19, 0x38, - 0xd6, 0x4f, 0x57, 0x5b, 0x5f, 0x91, 0xa2, 0xc5, 0xdc, 0x9d, 0xbb, 0x0b, 0x69, 0xcf, 0x77, 0x45, - 0x32, 0xa0, 0x20, 0x25, 0xc7, 0x8b, 0x15, 0xe1, 0xce, 0xdd, 0x85, 0x04, 0x1b, 0x96, 0x62, 0xfc, - 0xc3, 0x3f, 0x31, 0x37, 0x71, 0xee, 0x5b, 0x00, 0x6a, 0xe6, 0x8e, 0xad, 0xd1, 0x3f, 0x3b, 0x8c, - 0x8a, 0x70, 0xbc, 0xb6, 0x7e, 0x45, 0x29, 0x55, 0x1a, 0xb5, 0x8d, 0xf5, 0x9e, 0x8b, 0xe2, 0xc3, - 0x75, 0xcb, 0x1b, 0x5b, 0xe5, 0xd5, 0xaa, 0x5a, 0xaf, 0xad, 0xac, 0xb3, 0xcd, 0xdf, 0x50, 0xdd, - 0x0b, 0xeb, 0x8d, 0xda, 0x5a, 0x55, 0x8a, 0x96, 0xaf, 0x0c, 0xdd, 0x7e, 0x78, 0xf4, 0xd0, 0x01, - 0xf7, 0x2d, 0x65, 0x68, 0x0f, 0xe2, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0xa7, 0x67, 0x40, 0xb3, - 0x7c, 0x9a, 0x00, 0x00, + // 10603 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7d, 0x7b, 0x70, 0x24, 0xc7, + 0x79, 0x1f, 0xf6, 0xbd, 0xfb, 0xed, 0x6b, 0xd0, 0x00, 0xef, 0x70, 0x7b, 0x24, 0x00, 0x0e, 0x45, + 0xde, 0x83, 0x24, 0x8e, 0x3c, 0xf2, 0x8e, 0x24, 0x4e, 0x14, 0xbd, 0xbb, 0xd8, 0xbb, 0xc3, 0x11, + 0x2f, 0xcd, 0x02, 0xc7, 0x87, 0x63, 0x8d, 0x07, 0xbb, 0x0d, 0x60, 0x78, 0xbb, 0x33, 0xa3, 0x99, + 0xd9, 0x3b, 0x80, 0xe5, 0x4a, 0xd1, 0x56, 0xec, 0xc8, 0x17, 0xc7, 0x91, 0xed, 0x94, 0x2d, 0x3f, + 0xce, 0x91, 0xfc, 0x94, 0x1d, 0x3b, 0x91, 0x2d, 0x45, 0x91, 0xe3, 0x8a, 0x23, 0xa7, 0xe2, 0x44, + 0x76, 0xa5, 0x12, 0xc9, 0x95, 0x4a, 0x5c, 0x2e, 0x87, 0x71, 0x28, 0x55, 0xa4, 0xc8, 0x72, 0x6c, + 0xcb, 0x74, 0x25, 0x29, 0x95, 0x93, 0x54, 0xbf, 0xe6, 0xb1, 0x0f, 0xcc, 0xe2, 0x44, 0xd2, 0x4e, + 0xe9, 0x9f, 0xbb, 0x9d, 0xee, 0xef, 0xfb, 0x4d, 0xf7, 0xd7, 0x5f, 0x7f, 0xfd, 0x7d, 0x5f, 0xf7, + 0x34, 0xe0, 0xcf, 0x2f, 0xc1, 0xfc, 0xae, 0x69, 0xee, 0x76, 0xf0, 0x39, 0xcb, 0x36, 0x5d, 0x73, + 0xbb, 0xb7, 0x73, 0xae, 0x8d, 0x9d, 0x96, 0xad, 0x5b, 0xae, 0x69, 0x2f, 0xd0, 0x32, 0x54, 0x66, + 0x14, 0x0b, 0x82, 0x42, 0x5e, 0x85, 0xc9, 0xcb, 0x7a, 0x07, 0x2f, 0x79, 0x84, 0x4d, 0xec, 0xa2, + 0xa7, 0x21, 0xb9, 0xa3, 0x77, 0xf0, 0x4c, 0x6c, 0x3e, 0x71, 0x3a, 0x7f, 0xfe, 0x5d, 0x0b, 0x7d, + 0x4c, 0x0b, 0x61, 0x8e, 0x0d, 0x52, 0xac, 0x50, 0x0e, 0xf9, 0x8b, 0x49, 0x98, 0x1a, 0x52, 0x8b, + 0x10, 0x24, 0x0d, 0xad, 0x4b, 0x10, 0x63, 0xa7, 0x73, 0x0a, 0xfd, 0x8d, 0x66, 0x20, 0x63, 0x69, + 0xad, 0x1b, 0xda, 0x2e, 0x9e, 0x89, 0xd3, 0x62, 0xf1, 0x88, 0x66, 0x01, 0xda, 0xd8, 0xc2, 0x46, + 0x1b, 0x1b, 0xad, 0x83, 0x99, 0xc4, 0x7c, 0xe2, 0x74, 0x4e, 0x09, 0x94, 0xa0, 0x87, 0x61, 0xd2, + 0xea, 0x6d, 0x77, 0xf4, 0x96, 0x1a, 0x20, 0x83, 0xf9, 0xc4, 0xe9, 0x94, 0x22, 0xb1, 0x8a, 0x25, + 0x9f, 0xf8, 0x14, 0x94, 0x6f, 0x61, 0xed, 0x46, 0x90, 0x34, 0x4f, 0x49, 0x4b, 0xa4, 0x38, 0x40, + 0x58, 0x87, 0x42, 0x17, 0x3b, 0x8e, 0xb6, 0x8b, 0x55, 0xf7, 0xc0, 0xc2, 0x33, 0x49, 0xda, 0xfb, + 0xf9, 0x81, 0xde, 0xf7, 0xf7, 0x3c, 0xcf, 0xb9, 0x36, 0x0f, 0x2c, 0x8c, 0xaa, 0x90, 0xc3, 0x46, + 0xaf, 0xcb, 0x10, 0x52, 0x23, 0xe4, 0xd7, 0x30, 0x7a, 0xdd, 0x7e, 0x94, 0x2c, 0x61, 0xe3, 0x10, + 0x19, 0x07, 0xdb, 0x37, 0xf5, 0x16, 0x9e, 0x49, 0x53, 0x80, 0x53, 0x03, 0x00, 0x4d, 0x56, 0xdf, + 0x8f, 0x21, 0xf8, 0x50, 0x1d, 0x72, 0x78, 0xdf, 0xc5, 0x86, 0xa3, 0x9b, 0xc6, 0x4c, 0x86, 0x82, + 0x3c, 0x38, 0x64, 0x14, 0x71, 0xa7, 0xdd, 0x0f, 0xe1, 0xf3, 0xa1, 0x8b, 0x90, 0x31, 0x2d, 0x57, + 0x37, 0x0d, 0x67, 0x26, 0x3b, 0x1f, 0x3b, 0x9d, 0x3f, 0x7f, 0xef, 0x50, 0x45, 0x58, 0x67, 0x34, + 0x8a, 0x20, 0x46, 0xcb, 0x20, 0x39, 0x66, 0xcf, 0x6e, 0x61, 0xb5, 0x65, 0xb6, 0xb1, 0xaa, 0x1b, + 0x3b, 0xe6, 0x4c, 0x8e, 0x02, 0xcc, 0x0d, 0x76, 0x84, 0x12, 0xd6, 0xcd, 0x36, 0x5e, 0x36, 0x76, + 0x4c, 0xa5, 0xe4, 0x84, 0x9e, 0xd1, 0x31, 0x48, 0x3b, 0x07, 0x86, 0xab, 0xed, 0xcf, 0x14, 0xa8, + 0x86, 0xf0, 0x27, 0xf9, 0xd7, 0xd2, 0x50, 0x1e, 0x47, 0xc5, 0x2e, 0x41, 0x6a, 0x87, 0xf4, 0x72, + 0x26, 0x7e, 0x14, 0x19, 0x30, 0x9e, 0xb0, 0x10, 0xd3, 0x77, 0x29, 0xc4, 0x2a, 0xe4, 0x0d, 0xec, + 0xb8, 0xb8, 0xcd, 0x34, 0x22, 0x31, 0xa6, 0x4e, 0x01, 0x63, 0x1a, 0x54, 0xa9, 0xe4, 0x5d, 0xa9, + 0xd4, 0x8b, 0x50, 0xf6, 0x9a, 0xa4, 0xda, 0x9a, 0xb1, 0x2b, 0x74, 0xf3, 0x5c, 0x54, 0x4b, 0x16, + 0x1a, 0x82, 0x4f, 0x21, 0x6c, 0x4a, 0x09, 0x87, 0x9e, 0xd1, 0x12, 0x80, 0x69, 0x60, 0x73, 0x47, + 0x6d, 0xe3, 0x56, 0x67, 0x26, 0x3b, 0x42, 0x4a, 0xeb, 0x84, 0x64, 0x40, 0x4a, 0x26, 0x2b, 0x6d, + 0x75, 0xd0, 0x33, 0xbe, 0xaa, 0x65, 0x46, 0x68, 0xca, 0x2a, 0x9b, 0x64, 0x03, 0xda, 0xb6, 0x05, + 0x25, 0x1b, 0x13, 0xbd, 0xc7, 0x6d, 0xde, 0xb3, 0x1c, 0x6d, 0xc4, 0x42, 0x64, 0xcf, 0x14, 0xce, + 0xc6, 0x3a, 0x56, 0xb4, 0x83, 0x8f, 0xe8, 0x01, 0xf0, 0x0a, 0x54, 0xaa, 0x56, 0x40, 0xad, 0x50, + 0x41, 0x14, 0xae, 0x69, 0x5d, 0x5c, 0x79, 0x15, 0x4a, 0x61, 0xf1, 0xa0, 0x69, 0x48, 0x39, 0xae, + 0x66, 0xbb, 0x54, 0x0b, 0x53, 0x0a, 0x7b, 0x40, 0x12, 0x24, 0xb0, 0xd1, 0xa6, 0x56, 0x2e, 0xa5, + 0x90, 0x9f, 0xe8, 0x5b, 0xfc, 0x0e, 0x27, 0x68, 0x87, 0x1f, 0x1a, 0x1c, 0xd1, 0x10, 0x72, 0x7f, + 0xbf, 0x2b, 0x4f, 0x41, 0x31, 0xd4, 0x81, 0x71, 0x5f, 0x2d, 0x7f, 0x07, 0xdc, 0x33, 0x14, 0x1a, + 0xbd, 0x08, 0xd3, 0x3d, 0x43, 0x37, 0x5c, 0x6c, 0x5b, 0x36, 0x26, 0x1a, 0xcb, 0x5e, 0x35, 0xf3, + 0xa5, 0xcc, 0x08, 0x9d, 0xdb, 0x0a, 0x52, 0x33, 0x14, 0x65, 0xaa, 0x37, 0x58, 0x78, 0x36, 0x97, + 0xfd, 0x72, 0x46, 0x7a, 0xed, 0xb5, 0xd7, 0x5e, 0x8b, 0xcb, 0xbf, 0x99, 0x86, 0xe9, 0x61, 0x73, + 0x66, 0xe8, 0xf4, 0x3d, 0x06, 0x69, 0xa3, 0xd7, 0xdd, 0xc6, 0x36, 0x15, 0x52, 0x4a, 0xe1, 0x4f, + 0xa8, 0x0a, 0xa9, 0x8e, 0xb6, 0x8d, 0x3b, 0x33, 0xc9, 0xf9, 0xd8, 0xe9, 0xd2, 0xf9, 0x87, 0xc7, + 0x9a, 0x95, 0x0b, 0x2b, 0x84, 0x45, 0x61, 0x9c, 0xe8, 0x3d, 0x90, 0xe4, 0x26, 0x9a, 0x20, 0x9c, + 0x1d, 0x0f, 0x81, 0xcc, 0x25, 0x85, 0xf2, 0xa1, 0x93, 0x90, 0x23, 0xff, 0x33, 0xdd, 0x48, 0xd3, + 0x36, 0x67, 0x49, 0x01, 0xd1, 0x0b, 0x54, 0x81, 0x2c, 0x9d, 0x26, 0x6d, 0x2c, 0x96, 0x36, 0xef, + 0x99, 0x28, 0x56, 0x1b, 0xef, 0x68, 0xbd, 0x8e, 0xab, 0xde, 0xd4, 0x3a, 0x3d, 0x4c, 0x15, 0x3e, + 0xa7, 0x14, 0x78, 0xe1, 0x75, 0x52, 0x86, 0xe6, 0x20, 0xcf, 0x66, 0x95, 0x6e, 0xb4, 0xf1, 0x3e, + 0xb5, 0x9e, 0x29, 0x85, 0x4d, 0xb4, 0x65, 0x52, 0x42, 0x5e, 0xff, 0x8a, 0x63, 0x1a, 0x42, 0x35, + 0xe9, 0x2b, 0x48, 0x01, 0x7d, 0xfd, 0x53, 0xfd, 0x86, 0xfb, 0xbe, 0xe1, 0xdd, 0x1b, 0x98, 0x4b, + 0xa7, 0xa0, 0x4c, 0x29, 0x9e, 0xe0, 0x43, 0xaf, 0x75, 0x66, 0x26, 0xe7, 0x63, 0xa7, 0xb3, 0x4a, + 0x89, 0x15, 0xaf, 0xf3, 0x52, 0xf9, 0x53, 0x71, 0x48, 0x52, 0xc3, 0x52, 0x86, 0xfc, 0xe6, 0x4b, + 0x1b, 0x0d, 0x75, 0x69, 0x7d, 0xab, 0xb6, 0xd2, 0x90, 0x62, 0xa8, 0x04, 0x40, 0x0b, 0x2e, 0xaf, + 0xac, 0x57, 0x37, 0xa5, 0xb8, 0xf7, 0xbc, 0xbc, 0xb6, 0x79, 0xf1, 0x49, 0x29, 0xe1, 0x31, 0x6c, + 0xb1, 0x82, 0x64, 0x90, 0xe0, 0x89, 0xf3, 0x52, 0x0a, 0x49, 0x50, 0x60, 0x00, 0xcb, 0x2f, 0x36, + 0x96, 0x2e, 0x3e, 0x29, 0xa5, 0xc3, 0x25, 0x4f, 0x9c, 0x97, 0x32, 0xa8, 0x08, 0x39, 0x5a, 0x52, + 0x5b, 0x5f, 0x5f, 0x91, 0xb2, 0x1e, 0x66, 0x73, 0x53, 0x59, 0x5e, 0xbb, 0x22, 0xe5, 0x3c, 0xcc, + 0x2b, 0xca, 0xfa, 0xd6, 0x86, 0x04, 0x1e, 0xc2, 0x6a, 0xa3, 0xd9, 0xac, 0x5e, 0x69, 0x48, 0x79, + 0x8f, 0xa2, 0xf6, 0xd2, 0x66, 0xa3, 0x29, 0x15, 0x42, 0xcd, 0x7a, 0xe2, 0xbc, 0x54, 0xf4, 0x5e, + 0xd1, 0x58, 0xdb, 0x5a, 0x95, 0x4a, 0x68, 0x12, 0x8a, 0xec, 0x15, 0xa2, 0x11, 0xe5, 0xbe, 0xa2, + 0x8b, 0x4f, 0x4a, 0x92, 0xdf, 0x10, 0x86, 0x32, 0x19, 0x2a, 0xb8, 0xf8, 0xa4, 0x84, 0xe4, 0x3a, + 0xa4, 0xa8, 0x1a, 0x22, 0x04, 0xa5, 0x95, 0x6a, 0xad, 0xb1, 0xa2, 0xae, 0x6f, 0x6c, 0x2e, 0xaf, + 0xaf, 0x55, 0x57, 0xa4, 0x98, 0x5f, 0xa6, 0x34, 0xde, 0xbb, 0xb5, 0xac, 0x34, 0x96, 0xa4, 0x78, + 0xb0, 0x6c, 0xa3, 0x51, 0xdd, 0x6c, 0x2c, 0x49, 0x09, 0xb9, 0x05, 0xd3, 0xc3, 0x0c, 0xea, 0xd0, + 0x29, 0x14, 0xd0, 0x85, 0xf8, 0x08, 0x5d, 0xa0, 0x58, 0xfd, 0xba, 0x20, 0x7f, 0x21, 0x0e, 0x53, + 0x43, 0x16, 0x95, 0xa1, 0x2f, 0x79, 0x0e, 0x52, 0x4c, 0x97, 0xd9, 0x32, 0x7b, 0x66, 0xe8, 0xea, + 0x44, 0x35, 0x7b, 0x60, 0xa9, 0xa5, 0x7c, 0x41, 0x57, 0x23, 0x31, 0xc2, 0xd5, 0x20, 0x10, 0x03, + 0x0a, 0xfb, 0x6d, 0x03, 0xc6, 0x9f, 0xad, 0x8f, 0x17, 0xc7, 0x59, 0x1f, 0x69, 0xd9, 0xd1, 0x16, + 0x81, 0xd4, 0x90, 0x45, 0xe0, 0x12, 0x4c, 0x0e, 0x00, 0x8d, 0x6d, 0x8c, 0x3f, 0x10, 0x83, 0x99, + 0x51, 0xc2, 0x89, 0x30, 0x89, 0xf1, 0x90, 0x49, 0xbc, 0xd4, 0x2f, 0xc1, 0xfb, 0x47, 0x0f, 0xc2, + 0xc0, 0x58, 0xff, 0x7c, 0x0c, 0x8e, 0x0d, 0x77, 0x29, 0x87, 0xb6, 0xe1, 0x3d, 0x90, 0xee, 0x62, + 0x77, 0xcf, 0x14, 0x6e, 0xd5, 0x43, 0x43, 0x16, 0x6b, 0x52, 0xdd, 0x3f, 0xd8, 0x9c, 0x2b, 0xb8, + 0xda, 0x27, 0x46, 0xf9, 0x85, 0xac, 0x35, 0x03, 0x2d, 0xfd, 0xde, 0x38, 0xdc, 0x33, 0x14, 0x7c, + 0x68, 0x43, 0xef, 0x03, 0xd0, 0x0d, 0xab, 0xe7, 0x32, 0xd7, 0x89, 0x59, 0xe2, 0x1c, 0x2d, 0xa1, + 0xc6, 0x8b, 0x58, 0xd9, 0x9e, 0xeb, 0xd5, 0x27, 0x68, 0x3d, 0xb0, 0x22, 0x4a, 0xf0, 0xb4, 0xdf, + 0xd0, 0x24, 0x6d, 0xe8, 0xec, 0x88, 0x9e, 0x0e, 0x28, 0xe6, 0x63, 0x20, 0xb5, 0x3a, 0x3a, 0x36, + 0x5c, 0xd5, 0x71, 0x6d, 0xac, 0x75, 0x75, 0x63, 0x97, 0x2e, 0x35, 0xd9, 0xc5, 0xd4, 0x8e, 0xd6, + 0x71, 0xb0, 0x52, 0x66, 0xd5, 0x4d, 0x51, 0x4b, 0x38, 0xa8, 0x02, 0xd9, 0x01, 0x8e, 0x74, 0x88, + 0x83, 0x55, 0x7b, 0x1c, 0xf2, 0x0f, 0xe4, 0x20, 0x1f, 0x70, 0xc0, 0xd1, 0xfd, 0x50, 0x78, 0x45, + 0xbb, 0xa9, 0xa9, 0x22, 0xa8, 0x62, 0x92, 0xc8, 0x93, 0xb2, 0x0d, 0x1e, 0x58, 0x3d, 0x06, 0xd3, + 0x94, 0xc4, 0xec, 0xb9, 0xd8, 0x56, 0x5b, 0x1d, 0xcd, 0x71, 0xa8, 0xd0, 0xb2, 0x94, 0x14, 0x91, + 0xba, 0x75, 0x52, 0x55, 0x17, 0x35, 0xe8, 0x02, 0x4c, 0x51, 0x8e, 0x6e, 0xaf, 0xe3, 0xea, 0x56, + 0x07, 0xab, 0x24, 0xcc, 0x73, 0xe8, 0x92, 0xe3, 0xb5, 0x6c, 0x92, 0x50, 0xac, 0x72, 0x02, 0xd2, + 0x22, 0x07, 0x2d, 0xc1, 0x7d, 0x94, 0x6d, 0x17, 0x1b, 0xd8, 0xd6, 0x5c, 0xac, 0xe2, 0xf7, 0xf7, + 0xb4, 0x8e, 0xa3, 0x6a, 0x46, 0x5b, 0xdd, 0xd3, 0x9c, 0xbd, 0x99, 0x69, 0x02, 0x50, 0x8b, 0xcf, + 0xc4, 0x94, 0x13, 0x84, 0xf0, 0x0a, 0xa7, 0x6b, 0x50, 0xb2, 0xaa, 0xd1, 0xbe, 0xaa, 0x39, 0x7b, + 0x68, 0x11, 0x8e, 0x51, 0x14, 0xc7, 0xb5, 0x75, 0x63, 0x57, 0x6d, 0xed, 0xe1, 0xd6, 0x0d, 0xb5, + 0xe7, 0xee, 0x3c, 0x3d, 0x73, 0x32, 0xf8, 0x7e, 0xda, 0xc2, 0x26, 0xa5, 0xa9, 0x13, 0x92, 0x2d, + 0x77, 0xe7, 0x69, 0xd4, 0x84, 0x02, 0x19, 0x8c, 0xae, 0xfe, 0x2a, 0x56, 0x77, 0x4c, 0x9b, 0xae, + 0xa1, 0xa5, 0x21, 0xa6, 0x29, 0x20, 0xc1, 0x85, 0x75, 0xce, 0xb0, 0x6a, 0xb6, 0xf1, 0x62, 0xaa, + 0xb9, 0xd1, 0x68, 0x2c, 0x29, 0x79, 0x81, 0x72, 0xd9, 0xb4, 0x89, 0x42, 0xed, 0x9a, 0x9e, 0x80, + 0xf3, 0x4c, 0xa1, 0x76, 0x4d, 0x21, 0xde, 0x0b, 0x30, 0xd5, 0x6a, 0xb1, 0x3e, 0xeb, 0x2d, 0x95, + 0x07, 0x63, 0xce, 0x8c, 0x14, 0x12, 0x56, 0xab, 0x75, 0x85, 0x11, 0x70, 0x1d, 0x77, 0xd0, 0x33, + 0x70, 0x8f, 0x2f, 0xac, 0x20, 0xe3, 0xe4, 0x40, 0x2f, 0xfb, 0x59, 0x2f, 0xc0, 0x94, 0x75, 0x30, + 0xc8, 0x88, 0x42, 0x6f, 0xb4, 0x0e, 0xfa, 0xd9, 0x9e, 0x82, 0x69, 0x6b, 0xcf, 0x1a, 0xe4, 0x3b, + 0x1b, 0xe4, 0x43, 0xd6, 0x9e, 0xd5, 0xcf, 0xf8, 0x20, 0x8d, 0xcc, 0x6d, 0xdc, 0xd2, 0x5c, 0xdc, + 0x9e, 0x39, 0x1e, 0x24, 0x0f, 0x54, 0xa0, 0x05, 0x90, 0x5a, 0x2d, 0x15, 0x1b, 0xda, 0x76, 0x07, + 0xab, 0x9a, 0x8d, 0x0d, 0xcd, 0x99, 0x99, 0xa3, 0xc4, 0x49, 0xd7, 0xee, 0x61, 0xa5, 0xd4, 0x6a, + 0x35, 0x68, 0x65, 0x95, 0xd6, 0xa1, 0xb3, 0x30, 0x69, 0x6e, 0xbf, 0xd2, 0x62, 0x1a, 0xa9, 0x5a, + 0x36, 0xde, 0xd1, 0xf7, 0x67, 0xde, 0x45, 0xc5, 0x5b, 0x26, 0x15, 0x54, 0x1f, 0x37, 0x68, 0x31, + 0x3a, 0x03, 0x52, 0xcb, 0xd9, 0xd3, 0x6c, 0x8b, 0x9a, 0x64, 0xc7, 0xd2, 0x5a, 0x78, 0xe6, 0x41, + 0x46, 0xca, 0xca, 0xd7, 0x44, 0x31, 0x99, 0x11, 0xce, 0x2d, 0x7d, 0xc7, 0x15, 0x88, 0xa7, 0xd8, + 0x8c, 0xa0, 0x65, 0x1c, 0xed, 0x34, 0x48, 0x44, 0x12, 0xa1, 0x17, 0x9f, 0xa6, 0x64, 0x25, 0x6b, + 0xcf, 0x0a, 0xbe, 0xf7, 0x01, 0x28, 0x12, 0x4a, 0xff, 0xa5, 0x67, 0x98, 0xe3, 0x66, 0xed, 0x05, + 0xde, 0xf8, 0x24, 0x1c, 0x23, 0x44, 0x5d, 0xec, 0x6a, 0x6d, 0xcd, 0xd5, 0x02, 0xd4, 0x8f, 0x50, + 0x6a, 0x22, 0xf6, 0x55, 0x5e, 0x19, 0x6a, 0xa7, 0xdd, 0xdb, 0x3e, 0xf0, 0x14, 0xeb, 0x51, 0xd6, + 0x4e, 0x52, 0x26, 0x54, 0xeb, 0x6d, 0x73, 0xce, 0xe5, 0x45, 0x28, 0x04, 0xf5, 0x1e, 0xe5, 0x80, + 0x69, 0xbe, 0x14, 0x23, 0x4e, 0x50, 0x7d, 0x7d, 0x89, 0xb8, 0x2f, 0x2f, 0x37, 0xa4, 0x38, 0x71, + 0xa3, 0x56, 0x96, 0x37, 0x1b, 0xaa, 0xb2, 0xb5, 0xb6, 0xb9, 0xbc, 0xda, 0x90, 0x12, 0x01, 0xc7, + 0xfe, 0x5a, 0x32, 0xfb, 0x90, 0x74, 0x8a, 0x78, 0x0d, 0xa5, 0x70, 0xa4, 0x86, 0xde, 0x0d, 0xc7, + 0x45, 0x5a, 0xc5, 0xc1, 0xae, 0x7a, 0x4b, 0xb7, 0xe9, 0x84, 0xec, 0x6a, 0x6c, 0x71, 0xf4, 0xf4, + 0x67, 0x9a, 0x53, 0x35, 0xb1, 0xfb, 0x82, 0x6e, 0x93, 0xe9, 0xd6, 0xd5, 0x5c, 0xb4, 0x02, 0x73, + 0x86, 0xa9, 0x3a, 0xae, 0x66, 0xb4, 0x35, 0xbb, 0xad, 0xfa, 0x09, 0x2d, 0x55, 0x6b, 0xb5, 0xb0, + 0xe3, 0x98, 0x6c, 0x21, 0xf4, 0x50, 0xee, 0x35, 0xcc, 0x26, 0x27, 0xf6, 0x57, 0x88, 0x2a, 0x27, + 0xed, 0x53, 0xdf, 0xc4, 0x28, 0xf5, 0x3d, 0x09, 0xb9, 0xae, 0x66, 0xa9, 0xd8, 0x70, 0xed, 0x03, + 0xea, 0x9f, 0x67, 0x95, 0x6c, 0x57, 0xb3, 0x1a, 0xe4, 0xf9, 0x1d, 0x09, 0x93, 0xae, 0x25, 0xb3, + 0x49, 0x29, 0x75, 0x2d, 0x99, 0x4d, 0x49, 0xe9, 0x6b, 0xc9, 0x6c, 0x5a, 0xca, 0x5c, 0x4b, 0x66, + 0xb3, 0x52, 0xee, 0x5a, 0x32, 0x9b, 0x93, 0x40, 0xfe, 0xc1, 0x24, 0x14, 0x82, 0x1e, 0x3c, 0x09, + 0x88, 0x5a, 0x74, 0x0d, 0x8b, 0x51, 0x2b, 0xf7, 0xc0, 0xa1, 0xfe, 0xfe, 0x42, 0x9d, 0x2c, 0x6e, + 0x8b, 0x69, 0xe6, 0x2e, 0x2b, 0x8c, 0x93, 0x38, 0x16, 0x44, 0xfd, 0x30, 0x73, 0x4f, 0xb2, 0x0a, + 0x7f, 0x42, 0x57, 0x20, 0xfd, 0x8a, 0x43, 0xb1, 0xd3, 0x14, 0xfb, 0x5d, 0x87, 0x63, 0x5f, 0x6b, + 0x52, 0xf0, 0xdc, 0xb5, 0xa6, 0xba, 0xb6, 0xae, 0xac, 0x56, 0x57, 0x14, 0xce, 0x8e, 0x4e, 0x40, + 0xb2, 0xa3, 0xbd, 0x7a, 0x10, 0x5e, 0x06, 0x69, 0x11, 0x5a, 0x80, 0x72, 0xcf, 0xb8, 0x89, 0x6d, + 0x7d, 0x47, 0xc7, 0x6d, 0x95, 0x52, 0x95, 0x83, 0x54, 0x25, 0xbf, 0x76, 0x85, 0xd0, 0x8f, 0x39, + 0x8c, 0x27, 0x20, 0x79, 0x0b, 0x6b, 0x37, 0xc2, 0x8b, 0x15, 0x2d, 0x7a, 0x1b, 0xa7, 0xd3, 0x39, + 0x48, 0x51, 0xf9, 0x22, 0x00, 0x2e, 0x61, 0x69, 0x02, 0x65, 0x21, 0x59, 0x5f, 0x57, 0xc8, 0x94, + 0x92, 0xa0, 0xc0, 0x4a, 0xd5, 0x8d, 0xe5, 0x46, 0xbd, 0x21, 0xc5, 0xe5, 0x0b, 0x90, 0x66, 0x42, + 0x23, 0xd3, 0xcd, 0x13, 0x9b, 0x34, 0xc1, 0x1f, 0x39, 0x46, 0x4c, 0xd4, 0x6e, 0xad, 0xd6, 0x1a, + 0x8a, 0x14, 0x1f, 0x50, 0x16, 0xd9, 0x81, 0x42, 0xd0, 0x93, 0x7f, 0x67, 0xc2, 0xf9, 0xcf, 0xc4, + 0x20, 0x1f, 0xf0, 0xcc, 0x89, 0x4b, 0xa5, 0x75, 0x3a, 0xe6, 0x2d, 0x55, 0xeb, 0xe8, 0x9a, 0xc3, + 0x55, 0x09, 0x68, 0x51, 0x95, 0x94, 0x8c, 0x3b, 0x74, 0xef, 0xd0, 0x24, 0x4b, 0x49, 0x69, 0xf9, + 0x27, 0x63, 0x20, 0xf5, 0xbb, 0xc6, 0x7d, 0xcd, 0x8c, 0xfd, 0x55, 0x36, 0x53, 0xfe, 0x89, 0x18, + 0x94, 0xc2, 0xfe, 0x70, 0x5f, 0xf3, 0xee, 0xff, 0x2b, 0x6d, 0xde, 0x1f, 0xc6, 0xa1, 0x18, 0xf2, + 0x82, 0xc7, 0x6d, 0xdd, 0xfb, 0x61, 0x52, 0x6f, 0xe3, 0xae, 0x65, 0xba, 0xd8, 0x68, 0x1d, 0xa8, + 0x1d, 0x7c, 0x13, 0x77, 0x66, 0x64, 0x6a, 0x64, 0xce, 0x1d, 0xee, 0x67, 0x2f, 0x2c, 0xfb, 0x7c, + 0x2b, 0x84, 0x6d, 0x71, 0x6a, 0x79, 0xa9, 0xb1, 0xba, 0xb1, 0xbe, 0xd9, 0x58, 0xab, 0xbf, 0xa4, + 0x6e, 0xad, 0x3d, 0xbf, 0xb6, 0xfe, 0xc2, 0x9a, 0x22, 0xe9, 0x7d, 0x64, 0x6f, 0xe3, 0xb4, 0xdf, + 0x00, 0xa9, 0xbf, 0x51, 0xe8, 0x38, 0x0c, 0x6b, 0x96, 0x34, 0x81, 0xa6, 0xa0, 0xbc, 0xb6, 0xae, + 0x36, 0x97, 0x97, 0x1a, 0x6a, 0xe3, 0xf2, 0xe5, 0x46, 0x7d, 0xb3, 0xc9, 0x32, 0x27, 0x1e, 0xf5, + 0x66, 0x68, 0x82, 0xcb, 0x3f, 0x96, 0x80, 0xa9, 0x21, 0x2d, 0x41, 0x55, 0x1e, 0xf3, 0xb0, 0x30, + 0xec, 0xd1, 0x71, 0x5a, 0xbf, 0x40, 0xbc, 0x8e, 0x0d, 0xcd, 0x76, 0x79, 0x88, 0x74, 0x06, 0x88, + 0x94, 0x0c, 0x97, 0x18, 0x57, 0x9b, 0x67, 0xa4, 0x58, 0x20, 0x54, 0xf6, 0xcb, 0x59, 0x52, 0xea, + 0x11, 0x40, 0x96, 0xe9, 0xe8, 0xae, 0x7e, 0x13, 0xab, 0xba, 0x21, 0xd2, 0x57, 0x24, 0x30, 0x4a, + 0x2a, 0x92, 0xa8, 0x59, 0x36, 0x5c, 0x8f, 0xda, 0xc0, 0xbb, 0x5a, 0x1f, 0x35, 0x31, 0xfe, 0x09, + 0x45, 0x12, 0x35, 0x1e, 0xf5, 0xfd, 0x50, 0x68, 0x9b, 0x3d, 0xe2, 0x2d, 0x32, 0x3a, 0xb2, 0xd6, + 0xc4, 0x94, 0x3c, 0x2b, 0xf3, 0x48, 0x78, 0x1c, 0xe0, 0xe7, 0xcd, 0x0a, 0x4a, 0x9e, 0x95, 0x31, + 0x92, 0x53, 0x50, 0xd6, 0x76, 0x77, 0x6d, 0x02, 0x2e, 0x80, 0x58, 0x64, 0x53, 0xf2, 0x8a, 0x29, + 0x61, 0xe5, 0x1a, 0x64, 0x85, 0x1c, 0xc8, 0x62, 0x4f, 0x24, 0xa1, 0x5a, 0x2c, 0x5c, 0x8f, 0x9f, + 0xce, 0x29, 0x59, 0x43, 0x54, 0xde, 0x0f, 0x05, 0xdd, 0x51, 0xfd, 0x6d, 0x80, 0xf8, 0x7c, 0xfc, + 0x74, 0x56, 0xc9, 0xeb, 0x8e, 0x97, 0x42, 0x95, 0x7f, 0x3e, 0x0e, 0xa5, 0xf0, 0x36, 0x06, 0x5a, + 0x82, 0x6c, 0xc7, 0x6c, 0x69, 0x54, 0xb5, 0xd8, 0x1e, 0xda, 0xe9, 0x88, 0x9d, 0x8f, 0x85, 0x15, + 0x4e, 0xaf, 0x78, 0x9c, 0x95, 0x7f, 0x17, 0x83, 0xac, 0x28, 0x46, 0xc7, 0x20, 0x69, 0x69, 0xee, + 0x1e, 0x85, 0x4b, 0xd5, 0xe2, 0x52, 0x4c, 0xa1, 0xcf, 0xa4, 0xdc, 0xb1, 0x34, 0x83, 0xaa, 0x00, + 0x2f, 0x27, 0xcf, 0x64, 0x5c, 0x3b, 0x58, 0x6b, 0xd3, 0xb0, 0xc9, 0xec, 0x76, 0xb1, 0xe1, 0x3a, + 0x62, 0x5c, 0x79, 0x79, 0x9d, 0x17, 0xa3, 0x87, 0x61, 0xd2, 0xb5, 0x35, 0xbd, 0x13, 0xa2, 0x4d, + 0x52, 0x5a, 0x49, 0x54, 0x78, 0xc4, 0x8b, 0x70, 0x42, 0xe0, 0xb6, 0xb1, 0xab, 0xb5, 0xf6, 0x70, + 0xdb, 0x67, 0x4a, 0xd3, 0xf4, 0xc8, 0x71, 0x4e, 0xb0, 0xc4, 0xeb, 0x05, 0xaf, 0xfc, 0xf9, 0x18, + 0x4c, 0x8a, 0x40, 0xaf, 0xed, 0x09, 0x6b, 0x15, 0x40, 0x33, 0x0c, 0xd3, 0x0d, 0x8a, 0x6b, 0x50, + 0x95, 0x07, 0xf8, 0x16, 0xaa, 0x1e, 0x93, 0x12, 0x00, 0xa8, 0x74, 0x01, 0xfc, 0x9a, 0x91, 0x62, + 0x9b, 0x83, 0x3c, 0xdf, 0xa3, 0xa2, 0x1b, 0x9d, 0x2c, 0x35, 0x00, 0xac, 0x88, 0x44, 0x84, 0x68, + 0x1a, 0x52, 0xdb, 0x78, 0x57, 0x37, 0x78, 0xe6, 0x99, 0x3d, 0x88, 0x04, 0x4e, 0xd2, 0x4b, 0xe0, + 0xd4, 0xfe, 0x26, 0x4c, 0xb5, 0xcc, 0x6e, 0x7f, 0x73, 0x6b, 0x52, 0x5f, 0x7a, 0xc2, 0xb9, 0x1a, + 0x7b, 0xf9, 0x51, 0x4e, 0xb4, 0x6b, 0x76, 0x34, 0x63, 0x77, 0xc1, 0xb4, 0x77, 0xfd, 0x8d, 0x5a, + 0xe2, 0x21, 0x39, 0x81, 0xed, 0x5a, 0x6b, 0xfb, 0x7f, 0xc5, 0x62, 0x3f, 0x15, 0x4f, 0x5c, 0xd9, + 0xa8, 0xfd, 0x62, 0xbc, 0x72, 0x85, 0x31, 0x6e, 0x08, 0x61, 0x28, 0x78, 0xa7, 0x83, 0x5b, 0xa4, + 0x83, 0xf0, 0xc7, 0x0f, 0xc3, 0xf4, 0xae, 0xb9, 0x6b, 0x52, 0xa4, 0x73, 0xe4, 0x17, 0xdf, 0xe9, + 0xcd, 0x79, 0xa5, 0x95, 0xc8, 0x6d, 0xe1, 0xc5, 0x35, 0x98, 0xe2, 0xc4, 0x2a, 0xdd, 0x6a, 0x62, + 0x81, 0x10, 0x3a, 0x34, 0x0b, 0x37, 0xf3, 0x2b, 0x5f, 0xa4, 0xcb, 0xb7, 0x32, 0xc9, 0x59, 0x49, + 0x1d, 0x8b, 0x95, 0x16, 0x15, 0xb8, 0x27, 0x84, 0xc7, 0x26, 0x29, 0xb6, 0x23, 0x10, 0x7f, 0x8b, + 0x23, 0x4e, 0x05, 0x10, 0x9b, 0x9c, 0x75, 0xb1, 0x0e, 0xc5, 0xa3, 0x60, 0xfd, 0x6b, 0x8e, 0x55, + 0xc0, 0x41, 0x90, 0x2b, 0x50, 0xa6, 0x20, 0xad, 0x9e, 0xe3, 0x9a, 0x5d, 0x6a, 0x01, 0x0f, 0x87, + 0xf9, 0x37, 0x5f, 0x64, 0xb3, 0xa6, 0x44, 0xd8, 0xea, 0x1e, 0xd7, 0xe2, 0x22, 0xd0, 0xdd, 0xb5, + 0x36, 0x6e, 0x75, 0x22, 0x10, 0x3e, 0xcb, 0x1b, 0xe2, 0xd1, 0x2f, 0x5e, 0x87, 0x69, 0xf2, 0x9b, + 0x1a, 0xa8, 0x60, 0x4b, 0xa2, 0x53, 0x76, 0x33, 0x9f, 0xff, 0x00, 0x9b, 0x98, 0x53, 0x1e, 0x40, + 0xa0, 0x4d, 0x81, 0x51, 0xdc, 0xc5, 0xae, 0x8b, 0x6d, 0x47, 0xd5, 0x3a, 0xc3, 0x9a, 0x17, 0xc8, + 0x79, 0xcc, 0xfc, 0xe8, 0x57, 0xc3, 0xa3, 0x78, 0x85, 0x71, 0x56, 0x3b, 0x9d, 0xc5, 0x2d, 0x38, + 0x3e, 0x44, 0x2b, 0xc6, 0xc0, 0xfc, 0x31, 0x8e, 0x39, 0x3d, 0xa0, 0x19, 0x04, 0x76, 0x03, 0x44, + 0xb9, 0x37, 0x96, 0x63, 0x60, 0xfe, 0x38, 0xc7, 0x44, 0x9c, 0x57, 0x0c, 0x29, 0x41, 0xbc, 0x06, + 0x93, 0x37, 0xb1, 0xbd, 0x6d, 0x3a, 0x3c, 0xcf, 0x34, 0x06, 0xdc, 0x4f, 0x70, 0xb8, 0x32, 0x67, + 0xa4, 0x89, 0x27, 0x82, 0xf5, 0x0c, 0x64, 0x77, 0xb4, 0x16, 0x1e, 0x03, 0xe2, 0x0e, 0x87, 0xc8, + 0x10, 0x7a, 0xc2, 0x5a, 0x85, 0xc2, 0xae, 0xc9, 0xd7, 0xa8, 0x68, 0xf6, 0x9f, 0xe4, 0xec, 0x79, + 0xc1, 0xc3, 0x21, 0x2c, 0xd3, 0xea, 0x75, 0xc8, 0x02, 0x16, 0x0d, 0xf1, 0x0f, 0x04, 0x84, 0xe0, + 0xe1, 0x10, 0x47, 0x10, 0xeb, 0x47, 0x04, 0x84, 0x13, 0x90, 0xe7, 0x73, 0x90, 0x37, 0x8d, 0xce, + 0x81, 0x69, 0x8c, 0xd3, 0x88, 0x8f, 0x72, 0x04, 0xe0, 0x2c, 0x04, 0xe0, 0x12, 0xe4, 0xc6, 0x1d, + 0x88, 0x9f, 0xfd, 0xaa, 0x98, 0x1e, 0x62, 0x04, 0xae, 0x40, 0x59, 0x18, 0x28, 0xdd, 0x34, 0xc6, + 0x80, 0xf8, 0x39, 0x0e, 0x51, 0x0a, 0xb0, 0xf1, 0x6e, 0xb8, 0xd8, 0x71, 0x77, 0xf1, 0x38, 0x20, + 0x3f, 0x2f, 0xba, 0xc1, 0x59, 0xb8, 0x28, 0xb7, 0xb1, 0xd1, 0xda, 0x1b, 0x0f, 0xe1, 0x63, 0x42, + 0x94, 0x82, 0x87, 0x40, 0xd4, 0xa1, 0xd8, 0xd5, 0x6c, 0x67, 0x4f, 0xeb, 0x8c, 0x35, 0x1c, 0xbf, + 0xc0, 0x31, 0x0a, 0x1e, 0x13, 0x97, 0x48, 0xcf, 0x38, 0x0a, 0xcc, 0x2f, 0x0a, 0x89, 0x04, 0xd8, + 0xf8, 0xd4, 0x73, 0x5c, 0x9a, 0x94, 0x3b, 0x0a, 0xda, 0x3f, 0x14, 0x53, 0x8f, 0xf1, 0xae, 0x06, + 0x11, 0x2f, 0x41, 0xce, 0xd1, 0x5f, 0x1d, 0x0b, 0xe6, 0x97, 0xc4, 0x48, 0x53, 0x06, 0xc2, 0xfc, + 0x12, 0x9c, 0x18, 0xba, 0x4c, 0x8c, 0x01, 0xf6, 0xcb, 0x1c, 0xec, 0xd8, 0x90, 0xa5, 0x82, 0x9b, + 0x84, 0xa3, 0x42, 0xfe, 0x23, 0x61, 0x12, 0x70, 0x1f, 0xd6, 0x06, 0x89, 0x1a, 0x1c, 0x6d, 0xe7, + 0x68, 0x52, 0xfb, 0xc7, 0x42, 0x6a, 0x8c, 0x37, 0x24, 0xb5, 0x4d, 0x38, 0xc6, 0x11, 0x8f, 0x36, + 0xae, 0x1f, 0x17, 0x86, 0x95, 0x71, 0x6f, 0x85, 0x47, 0xf7, 0x5b, 0xa1, 0xe2, 0x89, 0x53, 0xb8, + 0xa7, 0x8e, 0xda, 0xd5, 0xac, 0x31, 0x90, 0x7f, 0x85, 0x23, 0x0b, 0x8b, 0xef, 0xf9, 0xb7, 0xce, + 0xaa, 0x66, 0x11, 0xf0, 0x17, 0x61, 0x46, 0x80, 0xf7, 0x0c, 0x1b, 0xb7, 0xcc, 0x5d, 0x43, 0x7f, + 0x15, 0xb7, 0xc7, 0x80, 0xfe, 0xd5, 0xbe, 0xa1, 0xda, 0x0a, 0xb0, 0x13, 0xe4, 0x65, 0x90, 0x3c, + 0x5f, 0x45, 0xd5, 0xbb, 0x96, 0x69, 0xbb, 0x11, 0x88, 0x9f, 0x10, 0x23, 0xe5, 0xf1, 0x2d, 0x53, + 0xb6, 0xc5, 0x06, 0xb0, 0x9d, 0xea, 0x71, 0x55, 0xf2, 0x93, 0x1c, 0xa8, 0xe8, 0x73, 0x71, 0xc3, + 0xd1, 0x32, 0xbb, 0x96, 0x66, 0x8f, 0x63, 0xff, 0xfe, 0x89, 0x30, 0x1c, 0x9c, 0x85, 0x1b, 0x0e, + 0xe2, 0xd1, 0x91, 0xd5, 0x7e, 0x0c, 0x84, 0x4f, 0x09, 0xc3, 0x21, 0x78, 0x38, 0x84, 0x70, 0x18, + 0xc6, 0x80, 0xf8, 0xa7, 0x02, 0x42, 0xf0, 0x10, 0x88, 0xf7, 0xfa, 0x0b, 0xad, 0x8d, 0x77, 0x75, + 0xc7, 0xb5, 0x99, 0x53, 0x7c, 0x38, 0xd4, 0xa7, 0xbf, 0x1a, 0x76, 0xc2, 0x94, 0x00, 0x2b, 0xb1, + 0x44, 0x3c, 0x4d, 0x4b, 0x63, 0xa6, 0xe8, 0x86, 0xfd, 0x9a, 0xb0, 0x44, 0x01, 0x36, 0xd2, 0xb6, + 0x80, 0x87, 0x48, 0xc4, 0xde, 0x22, 0x91, 0xc2, 0x18, 0x70, 0xff, 0xac, 0xaf, 0x71, 0x4d, 0xc1, + 0x4b, 0x30, 0x03, 0xfe, 0x4f, 0xcf, 0xb8, 0x81, 0x0f, 0xc6, 0xd2, 0xce, 0x5f, 0xef, 0xf3, 0x7f, + 0xb6, 0x18, 0x27, 0xb3, 0x21, 0xe5, 0x3e, 0x7f, 0x0a, 0x45, 0x9d, 0x4b, 0x9a, 0xf9, 0xce, 0x37, + 0x79, 0x7f, 0xc3, 0xee, 0xd4, 0xe2, 0x0a, 0x51, 0xf2, 0xb0, 0xd3, 0x13, 0x0d, 0xf6, 0x81, 0x37, + 0x3d, 0x3d, 0x0f, 0xf9, 0x3c, 0x8b, 0x97, 0xa1, 0x18, 0x72, 0x78, 0xa2, 0xa1, 0xfe, 0x16, 0x87, + 0x2a, 0x04, 0xfd, 0x9d, 0xc5, 0x0b, 0x90, 0x24, 0xce, 0x4b, 0x34, 0xfb, 0x77, 0x73, 0x76, 0x4a, + 0xbe, 0xf8, 0x2c, 0x64, 0x85, 0xd3, 0x12, 0xcd, 0xfa, 0x3d, 0x9c, 0xd5, 0x63, 0x21, 0xec, 0xc2, + 0x61, 0x89, 0x66, 0xff, 0xdb, 0x82, 0x5d, 0xb0, 0x10, 0xf6, 0xf1, 0x45, 0xf8, 0x99, 0xbf, 0x93, + 0xe4, 0x8b, 0x8e, 0x90, 0xdd, 0x25, 0xc8, 0x70, 0x4f, 0x25, 0x9a, 0xfb, 0x7b, 0xf9, 0xcb, 0x05, + 0xc7, 0xe2, 0x53, 0x90, 0x1a, 0x53, 0xe0, 0x7f, 0x97, 0xb3, 0x32, 0xfa, 0xc5, 0x3a, 0xe4, 0x03, + 0xde, 0x49, 0x34, 0xfb, 0xf7, 0x73, 0xf6, 0x20, 0x17, 0x69, 0x3a, 0xf7, 0x4e, 0xa2, 0x01, 0xfe, + 0x9e, 0x68, 0x3a, 0xe7, 0x20, 0x62, 0x13, 0x8e, 0x49, 0x34, 0xf7, 0x87, 0x84, 0xd4, 0x05, 0xcb, + 0xe2, 0x73, 0x90, 0xf3, 0x16, 0x9b, 0x68, 0xfe, 0x1f, 0xe0, 0xfc, 0x3e, 0x0f, 0x91, 0x40, 0x60, + 0xb1, 0x8b, 0x86, 0xf8, 0x41, 0x21, 0x81, 0x00, 0x17, 0x99, 0x46, 0xfd, 0x0e, 0x4c, 0x34, 0xd2, + 0x0f, 0x89, 0x69, 0xd4, 0xe7, 0xbf, 0x90, 0xd1, 0xa4, 0x36, 0x3f, 0x1a, 0xe2, 0xef, 0x8b, 0xd1, + 0xa4, 0xf4, 0xa4, 0x19, 0xfd, 0x1e, 0x41, 0x34, 0xc6, 0x8f, 0x88, 0x66, 0xf4, 0x39, 0x04, 0x8b, + 0x1b, 0x80, 0x06, 0xbd, 0x81, 0x68, 0xbc, 0x0f, 0x73, 0xbc, 0xc9, 0x01, 0x67, 0x60, 0xf1, 0x05, + 0x38, 0x36, 0xdc, 0x13, 0x88, 0x46, 0xfd, 0xd1, 0x37, 0xfb, 0x62, 0xb7, 0xa0, 0x23, 0xb0, 0xb8, + 0xe9, 0x2f, 0x29, 0x41, 0x2f, 0x20, 0x1a, 0xf6, 0xc7, 0xde, 0x0c, 0x1b, 0xee, 0xa0, 0x13, 0xb0, + 0x58, 0x05, 0xf0, 0x17, 0xe0, 0x68, 0xac, 0x9f, 0xe0, 0x58, 0x01, 0x26, 0x32, 0x35, 0xf8, 0xfa, + 0x1b, 0xcd, 0x7f, 0x47, 0x4c, 0x0d, 0xce, 0x41, 0xa6, 0x86, 0x58, 0x7a, 0xa3, 0xb9, 0x7f, 0x52, + 0x4c, 0x0d, 0xc1, 0x42, 0x34, 0x3b, 0xb0, 0xba, 0x45, 0x23, 0x7c, 0x54, 0x68, 0x76, 0x80, 0x6b, + 0x71, 0x0d, 0x26, 0x07, 0x16, 0xc4, 0x68, 0xa8, 0x9f, 0xe2, 0x50, 0x52, 0xff, 0x7a, 0x18, 0x5c, + 0xbc, 0xf8, 0x62, 0x18, 0x8d, 0xf6, 0xd3, 0x7d, 0x8b, 0x17, 0x5f, 0x0b, 0x17, 0x2f, 0x41, 0xd6, + 0xe8, 0x75, 0x3a, 0x64, 0xf2, 0xa0, 0xc3, 0xcf, 0x12, 0xce, 0xfc, 0xf7, 0xaf, 0x73, 0xe9, 0x08, + 0x86, 0xc5, 0x0b, 0x90, 0xc2, 0xdd, 0x6d, 0xdc, 0x8e, 0xe2, 0xfc, 0xca, 0xd7, 0x85, 0xc1, 0x24, + 0xd4, 0x8b, 0xcf, 0x01, 0xb0, 0xd4, 0x08, 0xdd, 0x3c, 0x8c, 0xe0, 0xfd, 0xa3, 0xaf, 0xf3, 0xc3, + 0x3b, 0x3e, 0x8b, 0x0f, 0xc0, 0x8e, 0x02, 0x1d, 0x0e, 0xf0, 0xd5, 0x30, 0x00, 0x1d, 0x91, 0x67, + 0x20, 0xf3, 0x8a, 0x63, 0x1a, 0xae, 0xb6, 0x1b, 0xc5, 0xfd, 0xc7, 0x9c, 0x5b, 0xd0, 0x13, 0x81, + 0x75, 0x4d, 0x1b, 0xbb, 0xda, 0xae, 0x13, 0xc5, 0xfb, 0x3f, 0x38, 0xaf, 0xc7, 0x40, 0x98, 0x5b, + 0x9a, 0xe3, 0x8e, 0xd3, 0xef, 0x3f, 0x11, 0xcc, 0x82, 0x81, 0x34, 0x9a, 0xfc, 0xbe, 0x81, 0x0f, + 0xa2, 0x78, 0xff, 0x54, 0x34, 0x9a, 0xd3, 0x2f, 0x3e, 0x0b, 0x39, 0xf2, 0x93, 0x9d, 0xc8, 0x8b, + 0x60, 0xfe, 0x33, 0xce, 0xec, 0x73, 0x90, 0x37, 0x3b, 0x6e, 0xdb, 0xd5, 0xa3, 0x85, 0xfd, 0x35, + 0x3e, 0xd2, 0x82, 0x7e, 0xb1, 0x0a, 0x79, 0xc7, 0x6d, 0xb7, 0x7b, 0xdc, 0x3f, 0x8d, 0x60, 0xff, + 0xf3, 0xaf, 0x7b, 0x29, 0x0b, 0x8f, 0x87, 0x8c, 0xf6, 0xad, 0x1b, 0xae, 0x65, 0xd2, 0x0d, 0x8f, + 0x28, 0x84, 0x37, 0x39, 0x42, 0x80, 0x65, 0xb1, 0x0e, 0x05, 0xd2, 0x17, 0x1b, 0x5b, 0x98, 0xee, + 0x4e, 0x45, 0x40, 0xfc, 0x05, 0x17, 0x40, 0x88, 0xa9, 0xf6, 0xed, 0x9f, 0x7d, 0x63, 0x36, 0xf6, + 0xb9, 0x37, 0x66, 0x63, 0x7f, 0xf8, 0xc6, 0x6c, 0xec, 0x43, 0x5f, 0x98, 0x9d, 0xf8, 0xdc, 0x17, + 0x66, 0x27, 0x7e, 0xef, 0x0b, 0xb3, 0x13, 0xc3, 0xb3, 0xc4, 0x70, 0xc5, 0xbc, 0x62, 0xb2, 0xfc, + 0xf0, 0xcb, 0x0f, 0xee, 0xea, 0xee, 0x5e, 0x6f, 0x7b, 0xa1, 0x65, 0x76, 0xcf, 0xb5, 0x4c, 0xa7, + 0x6b, 0x3a, 0xe7, 0xc2, 0x79, 0x5d, 0xfa, 0x0b, 0xfe, 0x32, 0x46, 0x62, 0xe6, 0x70, 0x3a, 0x57, + 0x33, 0x0e, 0x46, 0x7d, 0xde, 0x73, 0x11, 0x12, 0x55, 0xe3, 0x00, 0x9d, 0x60, 0x06, 0x4e, 0xed, + 0xd9, 0x1d, 0x7e, 0x2c, 0x2c, 0x43, 0x9e, 0xb7, 0xec, 0x0e, 0x9a, 0xf6, 0xcf, 0x6e, 0xc6, 0x4e, + 0x17, 0xf8, 0x81, 0xcc, 0xda, 0xf7, 0xc7, 0x8e, 0xd6, 0x93, 0x6c, 0xd5, 0x38, 0xa0, 0x1d, 0xd9, + 0x88, 0xbd, 0xfc, 0x48, 0x64, 0x9e, 0xfb, 0x86, 0x61, 0xde, 0x32, 0x48, 0xb3, 0xad, 0x6d, 0x91, + 0xe3, 0x9e, 0xed, 0xcf, 0x71, 0xbf, 0x80, 0x3b, 0x9d, 0xe7, 0x09, 0xdd, 0x26, 0x61, 0xd9, 0x4e, + 0xb3, 0x13, 0xc8, 0xf0, 0x43, 0x71, 0x98, 0x1d, 0x48, 0x67, 0x73, 0x25, 0x18, 0x25, 0x84, 0x45, + 0xc8, 0x2e, 0x09, 0xdd, 0x9a, 0x81, 0x8c, 0x83, 0x5b, 0xa6, 0xd1, 0x76, 0xa8, 0x20, 0x12, 0x8a, + 0x78, 0x24, 0x82, 0x30, 0x34, 0xc3, 0x74, 0xf8, 0xc1, 0x4a, 0xf6, 0x50, 0xfb, 0xf1, 0x23, 0x0a, + 0xa2, 0x28, 0xde, 0x24, 0xa4, 0xf1, 0xf8, 0x98, 0xd2, 0x10, 0x9d, 0x08, 0x65, 0xfe, 0xc7, 0x95, + 0xca, 0x8f, 0xc4, 0x61, 0xae, 0x5f, 0x2a, 0x64, 0x66, 0x39, 0xae, 0xd6, 0xb5, 0x46, 0x89, 0xe5, + 0x12, 0xe4, 0x36, 0x05, 0xcd, 0x91, 0xe5, 0x72, 0xe7, 0x88, 0x72, 0x29, 0x79, 0xaf, 0x12, 0x82, + 0x39, 0x3f, 0xa6, 0x60, 0xbc, 0x7e, 0xdc, 0x95, 0x64, 0xfe, 0x77, 0x1a, 0x4e, 0xb0, 0xe9, 0xa4, + 0xb2, 0xa9, 0xc4, 0x1e, 0xb8, 0x4c, 0x0a, 0xc1, 0xaa, 0xe8, 0x7d, 0x12, 0xf9, 0x79, 0x98, 0x5a, + 0x26, 0xd6, 0x82, 0x44, 0x41, 0xfe, 0x0e, 0xcf, 0xd0, 0xb3, 0xa7, 0xf3, 0x21, 0x87, 0x9f, 0xef, + 0x30, 0x05, 0x8b, 0xe4, 0xef, 0x8c, 0x81, 0xd4, 0x6c, 0x69, 0x1d, 0xcd, 0xfe, 0x46, 0xa1, 0xd0, + 0x53, 0x00, 0xf4, 0x9b, 0x25, 0xff, 0x23, 0xa3, 0xd2, 0xf9, 0x99, 0x85, 0x60, 0xe7, 0x16, 0xd8, + 0x9b, 0xe8, 0x17, 0x0c, 0x39, 0x4a, 0x4b, 0x7e, 0x9e, 0x7d, 0x11, 0xc0, 0xaf, 0x40, 0x27, 0xe1, + 0x78, 0xb3, 0x5e, 0x5d, 0xa9, 0x2a, 0x2a, 0x3b, 0x0c, 0xbf, 0xd6, 0xdc, 0x68, 0xd4, 0x97, 0x2f, + 0x2f, 0x37, 0x96, 0xa4, 0x09, 0x74, 0x0c, 0x50, 0xb0, 0xd2, 0x3b, 0x97, 0x72, 0x0f, 0x4c, 0x06, + 0xcb, 0xd9, 0x89, 0xfa, 0x38, 0xf1, 0x14, 0xf5, 0xae, 0xd5, 0xc1, 0x74, 0xeb, 0x4f, 0xd5, 0x85, + 0xd4, 0xa2, 0x9d, 0x90, 0xdf, 0xfe, 0x8f, 0xec, 0x94, 0xf5, 0x94, 0xcf, 0xee, 0xc9, 0x7c, 0x71, + 0x05, 0x26, 0xb5, 0x56, 0x0b, 0x5b, 0x21, 0xc8, 0x08, 0x53, 0x4d, 0x00, 0xe9, 0x66, 0x26, 0xe7, + 0xf4, 0xd1, 0x9e, 0x82, 0xb4, 0x43, 0x7b, 0x1f, 0x05, 0xf1, 0x3b, 0x1c, 0x82, 0x93, 0x2f, 0x1a, + 0x30, 0x49, 0x3c, 0x3f, 0xcd, 0xc6, 0x81, 0x66, 0x1c, 0x9e, 0x67, 0xf8, 0xe7, 0x9f, 0x78, 0x8c, + 0x6e, 0x6d, 0xde, 0x1f, 0x1e, 0x96, 0x21, 0xea, 0xa4, 0x48, 0x1c, 0xdb, 0x6f, 0x28, 0x86, 0x92, + 0x78, 0x1f, 0x6f, 0xf0, 0xe1, 0x2f, 0xfb, 0x0d, 0xfe, 0xb2, 0xd9, 0x61, 0x3a, 0x10, 0x78, 0x53, + 0x91, 0xa3, 0xb2, 0x8a, 0x5a, 0x63, 0xd4, 0x9c, 0x7e, 0xf9, 0xe1, 0xc1, 0xd5, 0x89, 0xfd, 0xf7, + 0x28, 0x45, 0xbe, 0x14, 0x7c, 0x8d, 0x37, 0xf7, 0x7e, 0x3f, 0x01, 0x93, 0x5a, 0x57, 0x37, 0xcc, + 0x73, 0xf4, 0x5f, 0x3e, 0xe7, 0x52, 0xf4, 0x61, 0x8c, 0x4d, 0xc9, 0x8b, 0x6c, 0x2a, 0x44, 0x6b, + 0xcc, 0x9f, 0x7d, 0xdf, 0xcf, 0xa5, 0xfc, 0xe9, 0xb2, 0xb8, 0x0a, 0x92, 0x38, 0x70, 0x88, 0x8d, + 0x96, 0xd9, 0x1e, 0x2b, 0x4b, 0xf1, 0x35, 0x81, 0x21, 0xf2, 0x5b, 0x0d, 0xce, 0xba, 0xf8, 0x6e, + 0xc8, 0x7a, 0x30, 0x51, 0x9e, 0x89, 0x00, 0xf1, 0x38, 0x88, 0x5f, 0xc2, 0x66, 0xe6, 0x38, 0x5e, + 0xe8, 0x9b, 0x82, 0x9f, 0xcd, 0xd0, 0x35, 0xd2, 0x9b, 0x2b, 0x50, 0x6a, 0x9b, 0x86, 0xab, 0x9a, + 0x5d, 0xdd, 0xc5, 0x5d, 0xcb, 0x8d, 0xf4, 0xeb, 0xfe, 0x82, 0x81, 0x64, 0x95, 0x22, 0xe1, 0x5b, + 0x17, 0x6c, 0x77, 0x35, 0xb8, 0x4e, 0xfb, 0x06, 0xb7, 0xc5, 0xee, 0x3e, 0x1b, 0x44, 0x6f, 0x70, + 0xff, 0x24, 0x01, 0xb3, 0x9c, 0x78, 0x5b, 0x73, 0xf0, 0xb9, 0x9b, 0x8f, 0x6f, 0x63, 0x57, 0x7b, + 0xfc, 0x5c, 0xcb, 0xd4, 0xc5, 0x42, 0x3c, 0xc5, 0x6d, 0x2d, 0xa9, 0x5f, 0xe0, 0xf5, 0x95, 0xa1, + 0xbb, 0xd5, 0x95, 0xd1, 0x36, 0xba, 0x32, 0xa8, 0x42, 0xf2, 0xcb, 0x90, 0xac, 0x9b, 0xba, 0x41, + 0x96, 0xa6, 0x36, 0x36, 0xcc, 0x2e, 0xb7, 0x96, 0xec, 0x01, 0x5d, 0x84, 0xb4, 0xd6, 0x35, 0x7b, + 0x86, 0xcb, 0x2c, 0x65, 0x6d, 0xf6, 0xb3, 0xaf, 0xcf, 0x4d, 0xfc, 0xfe, 0xeb, 0x73, 0x89, 0x65, + 0xc3, 0xfd, 0xdd, 0x4f, 0x3e, 0x0a, 0x1c, 0x7d, 0xd9, 0x70, 0x3f, 0xf6, 0xa5, 0x8f, 0x9f, 0x8d, + 0x29, 0x9c, 0x7a, 0x31, 0xf9, 0xe5, 0x8f, 0xcc, 0xc5, 0xe4, 0x17, 0x21, 0xb3, 0x84, 0x5b, 0x87, + 0xc0, 0x3f, 0xde, 0x07, 0x7f, 0x42, 0xc0, 0x2f, 0xe1, 0x56, 0x00, 0x7e, 0x09, 0xb7, 0xfa, 0x90, + 0x9f, 0x82, 0xec, 0xb2, 0xe1, 0xb2, 0xaf, 0x15, 0x1e, 0x86, 0x84, 0x6e, 0xb0, 0x03, 0xb0, 0x01, + 0x84, 0x81, 0x06, 0x2a, 0x84, 0x8a, 0x30, 0x2e, 0xe1, 0x96, 0xc7, 0xd8, 0xc6, 0xad, 0x7e, 0xc6, + 0xc1, 0x57, 0x13, 0xaa, 0xda, 0xd2, 0xef, 0xfd, 0xd7, 0xd9, 0x89, 0xd7, 0xde, 0x98, 0x9d, 0x18, + 0x39, 0xf4, 0x72, 0xf4, 0xd0, 0x7b, 0x23, 0xfe, 0x73, 0x49, 0xb8, 0x8f, 0x7e, 0xc4, 0x66, 0x77, + 0x75, 0xc3, 0x3d, 0xd7, 0xb2, 0x0f, 0x2c, 0xd7, 0x24, 0xf3, 0xd7, 0xdc, 0xe1, 0x03, 0x3e, 0xe9, + 0x57, 0x2f, 0xb0, 0xea, 0xe1, 0xc3, 0x2d, 0xef, 0x40, 0x6a, 0x83, 0xf0, 0x11, 0x11, 0xbb, 0xa6, + 0xab, 0x75, 0xb8, 0xd3, 0xc1, 0x1e, 0x48, 0x29, 0xfb, 0xf0, 0x2d, 0xce, 0x4a, 0x75, 0xf1, 0xcd, + 0x5b, 0x07, 0x6b, 0x3b, 0xec, 0xfb, 0x81, 0x04, 0xf5, 0x56, 0xb3, 0xa4, 0x80, 0x7e, 0x2a, 0x30, + 0x0d, 0x29, 0xad, 0xc7, 0x0e, 0xae, 0x24, 0x88, 0x1b, 0x4b, 0x1f, 0xe4, 0xe7, 0x21, 0xc3, 0xb7, + 0xcf, 0x91, 0x04, 0x89, 0x1b, 0xf8, 0x80, 0xbe, 0xa7, 0xa0, 0x90, 0x9f, 0x68, 0x01, 0x52, 0xb4, + 0xf1, 0xfc, 0xc3, 0xa8, 0x99, 0x85, 0x81, 0xd6, 0x2f, 0xd0, 0x46, 0x2a, 0x8c, 0x4c, 0xbe, 0x06, + 0xd9, 0x25, 0x93, 0x68, 0x61, 0x18, 0x2d, 0xc7, 0xd0, 0x68, 0x9b, 0xad, 0x1e, 0xd7, 0x0a, 0x85, + 0x3d, 0xa0, 0x63, 0x90, 0x66, 0xdf, 0x93, 0xf0, 0xc3, 0x37, 0xfc, 0x49, 0xae, 0x43, 0x86, 0x62, + 0xaf, 0x5b, 0x64, 0xc5, 0xf7, 0x8e, 0xee, 0xe6, 0xf8, 0xd7, 0x85, 0x1c, 0x3e, 0xee, 0x37, 0x16, + 0x41, 0xb2, 0xad, 0xb9, 0x1a, 0xef, 0x37, 0xfd, 0x2d, 0xbf, 0x07, 0xb2, 0x1c, 0xc4, 0x41, 0xe7, + 0x21, 0x61, 0x5a, 0x0e, 0x3f, 0x3e, 0x53, 0x19, 0xd5, 0x95, 0x75, 0xab, 0x96, 0x24, 0x3a, 0xa3, + 0x10, 0xe2, 0xda, 0xda, 0x48, 0xb5, 0x78, 0x32, 0xa4, 0x16, 0x5d, 0xec, 0x6e, 0xef, 0xb8, 0xfe, + 0x0f, 0x36, 0x9c, 0x03, 0xaa, 0xe0, 0x29, 0xca, 0x9d, 0x38, 0xcc, 0x06, 0x6a, 0x6f, 0x62, 0xdb, + 0xd1, 0x4d, 0x83, 0x69, 0x13, 0xd7, 0x14, 0x14, 0x68, 0x20, 0xaf, 0x1f, 0xa1, 0x2a, 0xcf, 0x42, + 0xa2, 0x6a, 0x59, 0xa8, 0x02, 0x59, 0xfa, 0xdc, 0x32, 0x99, 0xae, 0x24, 0x15, 0xef, 0x99, 0xd4, + 0x39, 0xe6, 0x8e, 0x7b, 0x4b, 0xb3, 0xbd, 0xcf, 0x2d, 0xc5, 0xb3, 0xfc, 0x0c, 0xe4, 0xea, 0xa6, + 0xe1, 0x60, 0xc3, 0xe9, 0x51, 0x57, 0x76, 0xbb, 0x63, 0xb6, 0x6e, 0x70, 0x04, 0xf6, 0x40, 0x84, + 0xad, 0x59, 0x16, 0xe5, 0x4c, 0x2a, 0xe4, 0x27, 0x9b, 0xaf, 0xb5, 0xf5, 0x91, 0xe2, 0xb9, 0x70, + 0x34, 0xf1, 0xf0, 0x0e, 0xfa, 0x3e, 0x69, 0x0c, 0xee, 0x1d, 0x9c, 0x48, 0x37, 0xf0, 0x81, 0x73, + 0xd4, 0x79, 0xf4, 0x22, 0xe4, 0x36, 0xe8, 0x7d, 0x07, 0xcf, 0xe3, 0x03, 0x54, 0x81, 0x0c, 0x6e, + 0x9f, 0xbf, 0x70, 0xe1, 0xf1, 0x67, 0x98, 0x96, 0x5f, 0x9d, 0x50, 0x44, 0x01, 0x9a, 0x85, 0x9c, + 0x83, 0x5b, 0xd6, 0xf9, 0x0b, 0x17, 0x6f, 0x3c, 0xce, 0xd4, 0xea, 0xea, 0x84, 0xe2, 0x17, 0x2d, + 0x66, 0x49, 0x8f, 0xbf, 0xfc, 0xd1, 0xb9, 0x58, 0x2d, 0x05, 0x09, 0xa7, 0xd7, 0x7d, 0xdb, 0x74, + 0xe3, 0x87, 0x53, 0x30, 0x1f, 0xa8, 0x65, 0x8b, 0xcb, 0x4d, 0xad, 0xa3, 0xb7, 0x35, 0xff, 0x96, + 0x0a, 0x29, 0xd0, 0x7f, 0x4a, 0x31, 0x62, 0xd5, 0x38, 0x54, 0x8a, 0xf2, 0xaf, 0xc6, 0xa0, 0x70, + 0x5d, 0x20, 0x37, 0xb1, 0x8b, 0x2e, 0x01, 0x78, 0x6f, 0x12, 0x53, 0xe5, 0xe4, 0x42, 0xff, 0xbb, + 0x16, 0x3c, 0x1e, 0x25, 0x40, 0x8e, 0x9e, 0xa2, 0x0a, 0x68, 0x99, 0x0e, 0xff, 0xf4, 0x2e, 0x82, + 0xd5, 0x23, 0x46, 0x8f, 0x00, 0xa2, 0x56, 0x4d, 0xbd, 0x69, 0xba, 0xba, 0xb1, 0xab, 0x5a, 0xe6, + 0x2d, 0xfe, 0x41, 0x73, 0x42, 0x91, 0x68, 0xcd, 0x75, 0x5a, 0xb1, 0x41, 0xca, 0x49, 0xa3, 0x73, + 0x1e, 0x0a, 0x89, 0xca, 0xb4, 0x76, 0xdb, 0xc6, 0x8e, 0xc3, 0x0d, 0x97, 0x78, 0x44, 0x97, 0x20, + 0x63, 0xf5, 0xb6, 0x55, 0x61, 0x25, 0xf2, 0xe7, 0xef, 0x1d, 0x36, 0xe7, 0x85, 0x6e, 0xf0, 0x59, + 0x9f, 0xb6, 0x7a, 0xdb, 0x44, 0x53, 0xee, 0x87, 0xc2, 0x90, 0xc6, 0xe4, 0x6f, 0xfa, 0xed, 0xa0, + 0x57, 0x6c, 0xf0, 0x1e, 0xa8, 0x96, 0xad, 0x9b, 0xb6, 0xee, 0x1e, 0xd0, 0x73, 0x6f, 0x09, 0x45, + 0x12, 0x15, 0x1b, 0xbc, 0x5c, 0xbe, 0x01, 0xe5, 0x26, 0xf5, 0xd6, 0xfd, 0x96, 0x5f, 0xf0, 0xdb, + 0x17, 0x8b, 0x6e, 0xdf, 0xc8, 0x96, 0xc5, 0x07, 0x5a, 0x56, 0x5b, 0x1d, 0xa9, 0x99, 0x4f, 0x1c, + 0x4d, 0x33, 0xc3, 0xab, 0xdb, 0x1f, 0x9d, 0x08, 0x4d, 0x4a, 0xee, 0xf5, 0x04, 0x4c, 0xd6, 0xb8, + 0x4a, 0x19, 0x15, 0x88, 0x57, 0x0e, 0x5f, 0x44, 0x2b, 0x11, 0xa6, 0xb3, 0x12, 0x39, 0x7d, 0xe4, + 0x67, 0xa0, 0xb8, 0xa1, 0xd9, 0x6e, 0x13, 0xbb, 0x57, 0xb1, 0xd6, 0xc6, 0x76, 0x78, 0x95, 0x2d, + 0x8a, 0x55, 0x16, 0x41, 0x92, 0x2e, 0xa5, 0x6c, 0x95, 0xa1, 0xbf, 0xe5, 0x3d, 0x48, 0xd2, 0x73, + 0xaf, 0xde, 0x0a, 0xcc, 0x39, 0xd8, 0x0a, 0x4c, 0xec, 0xe7, 0x81, 0x8b, 0x1d, 0x91, 0x2b, 0xa2, + 0x0f, 0xe8, 0x49, 0xb1, 0x8e, 0x26, 0x0e, 0x5f, 0x47, 0xb9, 0x12, 0xf2, 0xd5, 0xb4, 0x03, 0x99, + 0x1a, 0x31, 0xbf, 0xcb, 0x4b, 0x5e, 0x43, 0x62, 0x7e, 0x43, 0xd0, 0x2a, 0x94, 0x2d, 0xcd, 0x76, + 0xe9, 0x27, 0x43, 0x7b, 0xb4, 0x17, 0x5c, 0xcf, 0xe7, 0x06, 0x67, 0x5d, 0xa8, 0xb3, 0xfc, 0x2d, + 0x45, 0x2b, 0x58, 0x28, 0xff, 0xb7, 0x24, 0xa4, 0xb9, 0x30, 0x9e, 0x85, 0x0c, 0x17, 0x2b, 0xd7, + 0xcc, 0xfb, 0x16, 0x06, 0x17, 0xa3, 0x05, 0x6f, 0xd1, 0xe0, 0x78, 0x82, 0x07, 0x3d, 0x04, 0xd9, + 0xd6, 0x9e, 0xa6, 0x1b, 0xaa, 0xde, 0xe6, 0x0e, 0x60, 0xfe, 0x8d, 0xd7, 0xe7, 0x32, 0x75, 0x52, + 0xb6, 0xbc, 0xa4, 0x64, 0x68, 0xe5, 0x72, 0x9b, 0xac, 0xfc, 0x7b, 0x58, 0xdf, 0xdd, 0x73, 0xf9, + 0xec, 0xe2, 0x4f, 0xe8, 0x69, 0x48, 0x12, 0x85, 0xe0, 0x1f, 0x94, 0x56, 0x06, 0x7c, 0x79, 0x2f, + 0x4f, 0x52, 0xcb, 0x92, 0x17, 0x7f, 0xe8, 0xbf, 0xcc, 0xc5, 0x14, 0xca, 0x81, 0xea, 0x50, 0xec, + 0x68, 0x8e, 0xab, 0xd2, 0x55, 0x8b, 0xbc, 0x3e, 0x45, 0x21, 0x4e, 0x0c, 0x0a, 0x84, 0x0b, 0x96, + 0x37, 0x3d, 0x4f, 0xb8, 0x58, 0x51, 0x1b, 0x9d, 0x06, 0x89, 0x82, 0xb4, 0xcc, 0x6e, 0x57, 0x77, + 0x99, 0x2f, 0x95, 0xa6, 0x72, 0x2f, 0x91, 0xf2, 0x3a, 0x2d, 0xa6, 0x1e, 0xd5, 0x49, 0xc8, 0xd1, + 0x4f, 0xd8, 0x28, 0x09, 0x3b, 0x6c, 0x9d, 0x25, 0x05, 0xb4, 0xf2, 0x14, 0x94, 0x7d, 0xdb, 0xc8, + 0x48, 0xb2, 0x0c, 0xc5, 0x2f, 0xa6, 0x84, 0x8f, 0xc1, 0xb4, 0x81, 0xf7, 0xe9, 0xf1, 0xef, 0x10, + 0x75, 0x8e, 0x52, 0x23, 0x52, 0x77, 0x3d, 0xcc, 0xf1, 0x20, 0x94, 0x5a, 0x42, 0xf8, 0x8c, 0x16, + 0x28, 0x6d, 0xd1, 0x2b, 0xa5, 0x64, 0x27, 0x20, 0xab, 0x59, 0x16, 0x23, 0xc8, 0x73, 0xdb, 0x68, + 0x59, 0xb4, 0xea, 0x2c, 0x4c, 0xd2, 0x3e, 0xda, 0xd8, 0xe9, 0x75, 0x5c, 0x0e, 0x52, 0xa0, 0x34, + 0x65, 0x52, 0xa1, 0xb0, 0x72, 0x4a, 0xfb, 0x00, 0x14, 0xf1, 0x4d, 0xbd, 0x8d, 0x8d, 0x16, 0x66, + 0x74, 0x45, 0x4a, 0x57, 0x10, 0x85, 0x94, 0xe8, 0x0c, 0x78, 0x36, 0x4f, 0x15, 0xf6, 0xb8, 0xc4, + 0xf0, 0x44, 0x79, 0x95, 0x15, 0xcb, 0x33, 0x90, 0x5c, 0xd2, 0x5c, 0x8d, 0x38, 0x15, 0xee, 0x3e, + 0x5b, 0x64, 0x0a, 0x0a, 0xf9, 0x29, 0x7f, 0x39, 0x0e, 0xc9, 0xeb, 0xa6, 0x8b, 0xd1, 0x13, 0x01, + 0x87, 0xaf, 0x34, 0x4c, 0x9f, 0x9b, 0xfa, 0xae, 0x81, 0xdb, 0xab, 0xce, 0x6e, 0xe0, 0xbe, 0x09, + 0x5f, 0x9d, 0xe2, 0x21, 0x75, 0x9a, 0x86, 0x94, 0x6d, 0xf6, 0x8c, 0xb6, 0x38, 0xa7, 0x4c, 0x1f, + 0x50, 0x03, 0xb2, 0x9e, 0x96, 0x24, 0xa3, 0xb4, 0xa4, 0x4c, 0xb4, 0x84, 0xe8, 0x30, 0x2f, 0x50, + 0x32, 0xdb, 0x5c, 0x59, 0x6a, 0x90, 0xf3, 0x8c, 0x17, 0xd7, 0xb6, 0xf1, 0x14, 0xd6, 0x67, 0x23, + 0x0b, 0x89, 0x37, 0xf6, 0x9e, 0xf0, 0x98, 0xc6, 0x49, 0x5e, 0x05, 0x97, 0x5e, 0x48, 0xad, 0xf8, + 0xdd, 0x17, 0x19, 0xda, 0x2f, 0x5f, 0xad, 0xd8, 0xfd, 0x17, 0xf7, 0x42, 0xce, 0xd1, 0x77, 0x0d, + 0xcd, 0xed, 0xd9, 0x98, 0x6b, 0x9e, 0x5f, 0x20, 0x7f, 0x26, 0x06, 0x69, 0xa6, 0xc9, 0x01, 0xb9, + 0xc5, 0x86, 0xcb, 0x2d, 0x3e, 0x4a, 0x6e, 0x89, 0xbb, 0x97, 0x5b, 0x15, 0xc0, 0x6b, 0x8c, 0xc3, + 0xaf, 0x24, 0x18, 0xe2, 0x2d, 0xb0, 0x26, 0x36, 0xf5, 0x5d, 0x3e, 0x51, 0x03, 0x4c, 0xf2, 0x7f, + 0x8e, 0x11, 0xc7, 0x95, 0xd7, 0xa3, 0x2a, 0x14, 0x45, 0xbb, 0xd4, 0x9d, 0x8e, 0xb6, 0xcb, 0x75, + 0xe7, 0xbe, 0x91, 0x8d, 0xbb, 0xdc, 0xd1, 0x76, 0x95, 0x3c, 0x6f, 0x0f, 0x79, 0x18, 0x3e, 0x0e, + 0xf1, 0x11, 0xe3, 0x10, 0x1a, 0xf8, 0xc4, 0xdd, 0x0d, 0x7c, 0x68, 0x88, 0x92, 0xfd, 0x43, 0xf4, + 0x89, 0x38, 0x0d, 0x5e, 0x2c, 0xd3, 0xd1, 0x3a, 0xef, 0xc4, 0x8c, 0x38, 0x09, 0x39, 0xcb, 0xec, + 0xa8, 0xac, 0x86, 0x9d, 0xdf, 0xcf, 0x5a, 0x66, 0x47, 0x19, 0x18, 0xf6, 0xd4, 0x5b, 0x34, 0x5d, + 0xd2, 0x6f, 0x81, 0xd4, 0x32, 0xfd, 0x52, 0xb3, 0xa1, 0xc0, 0x44, 0xc1, 0xd7, 0xb2, 0xc7, 0x88, + 0x0c, 0xe8, 0xe2, 0x18, 0x1b, 0x5c, 0x7b, 0x59, 0xb3, 0x19, 0xa5, 0xc2, 0xe9, 0x08, 0x07, 0x33, + 0xfd, 0xc3, 0xa2, 0xde, 0xa0, 0x5a, 0x2a, 0x9c, 0x4e, 0xfe, 0xe1, 0x18, 0xc0, 0x0a, 0x91, 0x2c, + 0xed, 0x2f, 0x59, 0x85, 0x1c, 0xda, 0x04, 0x35, 0xf4, 0xe6, 0xd9, 0x51, 0x83, 0xc6, 0xdf, 0x5f, + 0x70, 0x82, 0xed, 0xae, 0x43, 0xd1, 0x57, 0x46, 0x07, 0x8b, 0xc6, 0xcc, 0x1e, 0xe2, 0x51, 0x37, + 0xb1, 0xab, 0x14, 0x6e, 0x06, 0x9e, 0xe4, 0x7f, 0x19, 0x83, 0x1c, 0x6d, 0xd3, 0x2a, 0x76, 0xb5, + 0xd0, 0x18, 0xc6, 0xee, 0x7e, 0x0c, 0xef, 0x03, 0x60, 0x30, 0x8e, 0xfe, 0x2a, 0xe6, 0x9a, 0x95, + 0xa3, 0x25, 0x4d, 0xfd, 0x55, 0x8c, 0x2e, 0x7a, 0x02, 0x4f, 0x1c, 0x2e, 0x70, 0xe1, 0x71, 0x73, + 0xb1, 0x1f, 0x87, 0x0c, 0xbd, 0xc2, 0x6b, 0xdf, 0xe1, 0x4e, 0x74, 0xda, 0xe8, 0x75, 0x37, 0xf7, + 0x1d, 0xf9, 0x15, 0xc8, 0x6c, 0xee, 0xb3, 0x5c, 0xc8, 0x49, 0xc8, 0xd9, 0xa6, 0xc9, 0xd7, 0x64, + 0xe6, 0x0b, 0x65, 0x49, 0x01, 0x5d, 0x82, 0x44, 0xfc, 0x1f, 0xf7, 0xe3, 0x7f, 0x3f, 0x81, 0x91, + 0x18, 0x2b, 0x81, 0x71, 0xf6, 0x3f, 0xc5, 0x20, 0x1f, 0xb0, 0x0f, 0xe8, 0x71, 0xb8, 0xa7, 0xb6, + 0xb2, 0x5e, 0x7f, 0x5e, 0x5d, 0x5e, 0x52, 0x2f, 0xaf, 0x54, 0xaf, 0xf8, 0x5f, 0xa8, 0x55, 0x8e, + 0xdd, 0xbe, 0x33, 0x8f, 0x02, 0xb4, 0x5b, 0x06, 0xdd, 0x8c, 0x41, 0xe7, 0x60, 0x3a, 0xcc, 0x52, + 0xad, 0x35, 0x1b, 0x6b, 0x9b, 0x52, 0xac, 0x72, 0xcf, 0xed, 0x3b, 0xf3, 0x93, 0x01, 0x8e, 0xea, + 0xb6, 0x83, 0x0d, 0x77, 0x90, 0xa1, 0xbe, 0xbe, 0xba, 0xba, 0xbc, 0x29, 0xc5, 0x07, 0x18, 0xb8, + 0xc1, 0x3e, 0x03, 0x93, 0x61, 0x86, 0xb5, 0xe5, 0x15, 0x29, 0x51, 0x41, 0xb7, 0xef, 0xcc, 0x97, + 0x02, 0xd4, 0x6b, 0x7a, 0xa7, 0x92, 0xfd, 0xe0, 0x4f, 0xcf, 0x4e, 0x7c, 0xec, 0x67, 0x66, 0x63, + 0xa4, 0x67, 0xc5, 0x90, 0x8d, 0x40, 0x8f, 0xc0, 0xf1, 0xe6, 0xf2, 0x95, 0xb5, 0xc6, 0x92, 0xba, + 0xda, 0xbc, 0x22, 0xb6, 0x33, 0x44, 0xef, 0xca, 0xb7, 0xef, 0xcc, 0xe7, 0x79, 0x97, 0x46, 0x51, + 0x6f, 0x28, 0x8d, 0xeb, 0xeb, 0x9b, 0x0d, 0x29, 0xc6, 0xa8, 0x37, 0x6c, 0x7c, 0xd3, 0x74, 0xd9, + 0x1d, 0x7f, 0x8f, 0xc1, 0x89, 0x21, 0xd4, 0x5e, 0xc7, 0x26, 0x6f, 0xdf, 0x99, 0x2f, 0x6e, 0xd8, + 0x98, 0xcd, 0x1f, 0xca, 0xb1, 0x00, 0x33, 0x83, 0x1c, 0xeb, 0x1b, 0xeb, 0xcd, 0xea, 0x8a, 0x34, + 0x5f, 0x91, 0x6e, 0xdf, 0x99, 0x2f, 0x08, 0x63, 0x48, 0xe8, 0xfd, 0x9e, 0xbd, 0x5d, 0xd1, 0xce, + 0xf7, 0x64, 0x42, 0xb9, 0x3c, 0x16, 0x47, 0x58, 0x9a, 0xad, 0x75, 0x8f, 0x1a, 0xee, 0x44, 0xec, + 0xc6, 0xca, 0xaf, 0xc5, 0xa1, 0xec, 0x39, 0xd3, 0x1b, 0xf4, 0x0d, 0xe8, 0x89, 0x60, 0x1e, 0x26, + 0x3f, 0x72, 0x19, 0x63, 0xd4, 0x22, 0x4d, 0xf3, 0x6e, 0xc8, 0x0a, 0xa7, 0x8c, 0x9b, 0x8b, 0xf9, + 0x41, 0xbe, 0x06, 0xa7, 0xe0, 0xac, 0x1e, 0x07, 0x7a, 0x0e, 0x72, 0x9e, 0xf1, 0xf0, 0x6e, 0xc8, + 0x19, 0x6d, 0x6d, 0x38, 0xbf, 0xcf, 0x83, 0x9e, 0xf1, 0xc3, 0x86, 0xe4, 0xa8, 0x40, 0xe4, 0x3a, + 0x23, 0xe0, 0xcc, 0x82, 0x5e, 0x5e, 0xe6, 0xd3, 0x8e, 0xf7, 0x9e, 0xde, 0x2e, 0xb0, 0xaf, 0xb2, + 0x48, 0x8a, 0x79, 0x25, 0xd9, 0xae, 0xb6, 0x5f, 0xa3, 0xc1, 0xd4, 0x71, 0xc8, 0x90, 0xca, 0x5d, + 0xfe, 0xf1, 0x74, 0x42, 0x49, 0x77, 0xb5, 0xfd, 0x2b, 0x9a, 0x73, 0x2d, 0x99, 0x4d, 0x48, 0x49, + 0xf9, 0x17, 0x62, 0x50, 0x0a, 0xf7, 0x11, 0x3d, 0x0c, 0x88, 0x70, 0x68, 0xbb, 0x58, 0x25, 0x26, + 0x86, 0x0a, 0x4b, 0xe0, 0x96, 0xbb, 0xda, 0x7e, 0x75, 0x17, 0xaf, 0xf5, 0xba, 0xb4, 0x01, 0x0e, + 0x5a, 0x05, 0x49, 0x10, 0x8b, 0x71, 0xe2, 0xc2, 0x3c, 0x31, 0x78, 0x5f, 0x1e, 0x27, 0x60, 0x0b, + 0xd5, 0x87, 0xc9, 0x42, 0x55, 0x62, 0x78, 0xde, 0x6e, 0x7a, 0xa8, 0x2b, 0x89, 0x70, 0x57, 0xe4, + 0xe7, 0xa0, 0xdc, 0x27, 0x4f, 0x24, 0x43, 0x91, 0x67, 0x05, 0xe8, 0x4e, 0x25, 0xf3, 0x8f, 0x73, + 0x4a, 0x9e, 0x45, 0xff, 0x74, 0xe7, 0x76, 0x31, 0xfb, 0xe9, 0x8f, 0xcc, 0xc5, 0x68, 0xc2, 0xfc, + 0x61, 0x28, 0x86, 0x24, 0x2a, 0x32, 0x75, 0x31, 0x3f, 0x53, 0xe7, 0x13, 0xbf, 0x0c, 0x05, 0x62, + 0x28, 0x71, 0x9b, 0xd3, 0x3e, 0x04, 0x65, 0x66, 0xc8, 0xfb, 0x65, 0xcd, 0x3c, 0xa9, 0x55, 0x21, + 0x70, 0x59, 0xb8, 0x56, 0x61, 0xb1, 0xe7, 0x05, 0xd5, 0x15, 0xcd, 0xa9, 0xbd, 0xf7, 0x63, 0x6f, + 0xcc, 0xc6, 0xde, 0x9e, 0x89, 0xf8, 0xf9, 0xf7, 0xc2, 0xc9, 0x40, 0xa5, 0xb6, 0xdd, 0xd2, 0x43, + 0x59, 0x87, 0x72, 0x40, 0xc9, 0x48, 0x65, 0x54, 0xf6, 0xe0, 0xd0, 0x1c, 0xc6, 0xe1, 0x09, 0xb3, + 0xca, 0xe1, 0x16, 0x21, 0x3a, 0xb1, 0x31, 0x3c, 0x47, 0xf9, 0x7f, 0xb3, 0x90, 0x51, 0xf0, 0xfb, + 0x7b, 0xd8, 0x71, 0xd1, 0x79, 0x48, 0xe2, 0xd6, 0x9e, 0x39, 0x2c, 0x25, 0x44, 0x3a, 0xb7, 0xc0, + 0xe9, 0x1a, 0xad, 0x3d, 0xf3, 0xea, 0x84, 0x42, 0x69, 0xd1, 0x05, 0x48, 0xed, 0x74, 0x7a, 0x3c, + 0x4f, 0xd1, 0x67, 0x2c, 0x82, 0x4c, 0x97, 0x09, 0xd1, 0xd5, 0x09, 0x85, 0x51, 0x93, 0x57, 0xd1, + 0x9b, 0x47, 0x13, 0x87, 0xbf, 0x6a, 0xd9, 0xd8, 0xa1, 0xaf, 0x22, 0xb4, 0xa8, 0x06, 0xa0, 0x1b, + 0xba, 0xab, 0xd2, 0x18, 0x9e, 0x7b, 0x82, 0xf7, 0x8f, 0xe6, 0xd4, 0x5d, 0x1a, 0xf5, 0x5f, 0x9d, + 0x50, 0x72, 0xba, 0x78, 0x20, 0xcd, 0x7d, 0x7f, 0x0f, 0xdb, 0x07, 0xdc, 0x01, 0x1c, 0xd9, 0xdc, + 0xf7, 0x12, 0x22, 0xd2, 0x5c, 0x4a, 0x8d, 0x1a, 0x90, 0xa7, 0x9f, 0x98, 0xb2, 0xf9, 0xcb, 0x6f, + 0xc1, 0x94, 0x47, 0x31, 0xd7, 0x08, 0x29, 0x9d, 0xd2, 0x57, 0x27, 0x14, 0xd8, 0xf6, 0x9e, 0x88, + 0x91, 0x64, 0xb7, 0x24, 0xb9, 0xfb, 0xfc, 0xee, 0xbf, 0xb9, 0x51, 0x18, 0xf4, 0xaa, 0xa4, 0xcd, + 0xfd, 0xab, 0x13, 0x4a, 0xa6, 0xc5, 0x7e, 0x92, 0xfe, 0xb7, 0x71, 0x47, 0xbf, 0x89, 0x6d, 0xc2, + 0x9f, 0x3b, 0xbc, 0xff, 0x4b, 0x8c, 0x92, 0x22, 0xe4, 0xda, 0xe2, 0x81, 0x18, 0x5a, 0x6c, 0xb4, + 0x79, 0x37, 0x60, 0xd0, 0x4e, 0x87, 0xc6, 0xd9, 0x68, 0x8b, 0x4e, 0x64, 0x31, 0xff, 0x8d, 0x9e, + 0xf6, 0x3c, 0xd4, 0xfc, 0xa0, 0x53, 0x18, 0xea, 0x00, 0xcb, 0x55, 0x4c, 0x08, 0x4f, 0x15, 0xad, + 0x41, 0xa9, 0xa3, 0x3b, 0xae, 0xea, 0x18, 0x9a, 0xe5, 0xec, 0x99, 0xae, 0x43, 0x83, 0xfe, 0xfc, + 0xf9, 0x07, 0x47, 0x21, 0xac, 0xe8, 0x8e, 0xdb, 0x14, 0xc4, 0x57, 0x27, 0x94, 0x62, 0x27, 0x58, + 0x40, 0xf0, 0xcc, 0x9d, 0x1d, 0x6c, 0x7b, 0x80, 0x34, 0x39, 0x70, 0x08, 0xde, 0x3a, 0xa1, 0x16, + 0xfc, 0x04, 0xcf, 0x0c, 0x16, 0xa0, 0x6f, 0x85, 0xa9, 0x8e, 0xa9, 0xb5, 0x3d, 0x38, 0xb5, 0xb5, + 0xd7, 0x33, 0x6e, 0xd0, 0x4c, 0x42, 0xfe, 0xfc, 0x99, 0x91, 0x8d, 0x34, 0xb5, 0xb6, 0x80, 0xa8, + 0x13, 0x86, 0xab, 0x13, 0xca, 0x64, 0xa7, 0xbf, 0x10, 0xbd, 0x0f, 0xa6, 0x35, 0xcb, 0xea, 0x1c, + 0xf4, 0xa3, 0x97, 0x29, 0xfa, 0xd9, 0x51, 0xe8, 0x55, 0xc2, 0xd3, 0x0f, 0x8f, 0xb4, 0x81, 0x52, + 0xb4, 0x09, 0x92, 0x65, 0x63, 0xfa, 0x4d, 0x8c, 0xc5, 0x5d, 0x15, 0x7a, 0xb1, 0x55, 0xfe, 0xfc, + 0xa9, 0x51, 0xd8, 0x1b, 0x8c, 0x5e, 0x78, 0x36, 0x57, 0x27, 0x94, 0xb2, 0x15, 0x2e, 0x62, 0xa8, + 0x66, 0x0b, 0xd3, 0xcb, 0x97, 0x38, 0xea, 0x64, 0x14, 0x2a, 0xa5, 0x0f, 0xa3, 0x86, 0x8a, 0x6a, + 0x19, 0x7e, 0xa6, 0x8d, 0xdf, 0x8c, 0x72, 0x0a, 0xf2, 0x01, 0xc3, 0x82, 0x66, 0x20, 0xc3, 0xf7, + 0xf8, 0xc5, 0x59, 0x38, 0xfe, 0x28, 0x97, 0xa0, 0x10, 0x34, 0x26, 0xf2, 0x87, 0x62, 0x1e, 0x27, + 0xfd, 0x54, 0x7d, 0x26, 0x9c, 0x3a, 0xcc, 0xf9, 0x59, 0xc1, 0x07, 0xc4, 0x2a, 0x22, 0xea, 0xd9, + 0x6e, 0x52, 0x81, 0x16, 0xf2, 0x45, 0x0c, 0xcd, 0x41, 0xde, 0x3a, 0x6f, 0x79, 0x24, 0x09, 0x4a, + 0x02, 0xd6, 0x79, 0x4b, 0x10, 0xdc, 0x0f, 0x05, 0xd2, 0x53, 0x35, 0xe8, 0x68, 0xe4, 0x94, 0x3c, + 0x29, 0xe3, 0x24, 0xf2, 0xbf, 0x8d, 0x83, 0xd4, 0x6f, 0x80, 0xbc, 0x9c, 0x62, 0xec, 0xc8, 0x39, + 0xc5, 0x13, 0xfd, 0xd9, 0x4c, 0x3f, 0x81, 0xb9, 0x02, 0x92, 0x9f, 0x87, 0x63, 0x0b, 0xc1, 0x68, + 0xc7, 0xa9, 0xcf, 0xc3, 0x53, 0xca, 0xad, 0x3e, 0x97, 0xef, 0x72, 0x68, 0xef, 0x45, 0x5c, 0xad, + 0xdd, 0x3f, 0xc4, 0x9e, 0xbf, 0xb0, 0x65, 0xb5, 0x35, 0x17, 0x8b, 0xbc, 0x48, 0x60, 0x1b, 0xe6, + 0x21, 0x28, 0x6b, 0x96, 0xa5, 0x3a, 0xae, 0xe6, 0x62, 0xbe, 0xac, 0xa7, 0x58, 0x7a, 0x50, 0xb3, + 0xac, 0x26, 0x29, 0x65, 0xcb, 0xfa, 0x83, 0x50, 0x22, 0x36, 0x59, 0xd7, 0x3a, 0x2a, 0xcf, 0x12, + 0xa4, 0xd9, 0xea, 0xcf, 0x4b, 0xaf, 0xd2, 0x42, 0xb9, 0xed, 0x8d, 0x38, 0xb5, 0xc7, 0x5e, 0x98, + 0x15, 0x0b, 0x84, 0x59, 0x88, 0xdf, 0x21, 0xc0, 0xe4, 0x23, 0xae, 0x5d, 0x18, 0x9e, 0xdd, 0x9d, + 0xa6, 0x21, 0xd9, 0x4d, 0x96, 0xf0, 0xc8, 0x2a, 0xec, 0x41, 0xfe, 0x40, 0x1c, 0x26, 0x07, 0x2c, + 0xf7, 0xd0, 0xb4, 0xb7, 0x1f, 0x5f, 0xc6, 0x8f, 0x14, 0x5f, 0x3e, 0x1f, 0x4e, 0xeb, 0x06, 0x56, + 0xbe, 0x93, 0x03, 0x42, 0x66, 0x76, 0x93, 0x28, 0x34, 0x07, 0x09, 0x64, 0x7e, 0xa9, 0x9a, 0x6f, + 0xc1, 0xf4, 0xf6, 0xc1, 0xab, 0x9a, 0xe1, 0xea, 0x06, 0x56, 0x07, 0x46, 0x6d, 0x70, 0x29, 0x5d, + 0xd5, 0x9d, 0x6d, 0xbc, 0xa7, 0xdd, 0xd4, 0x4d, 0xd1, 0xac, 0x29, 0x8f, 0xdf, 0x4f, 0xee, 0xca, + 0x0a, 0x94, 0xc2, 0x4b, 0x0f, 0x2a, 0x41, 0xdc, 0xdd, 0xe7, 0xfd, 0x8f, 0xbb, 0xfb, 0xe8, 0x31, + 0x9e, 0x07, 0x8a, 0xd3, 0x3c, 0xd0, 0xe0, 0x8b, 0x38, 0x9f, 0x9f, 0x04, 0x92, 0x65, 0x6f, 0x36, + 0x78, 0xcb, 0x51, 0x3f, 0xaa, 0x7c, 0x06, 0xca, 0x7d, 0xeb, 0xcd, 0xa8, 0xac, 0xa0, 0x5c, 0x86, + 0x62, 0x68, 0x71, 0x91, 0x8f, 0xc1, 0xf4, 0xb0, 0xb5, 0x42, 0xde, 0xf3, 0xca, 0x43, 0x36, 0x1f, + 0x5d, 0x80, 0xac, 0xb7, 0x58, 0x0c, 0xc9, 0x42, 0xd0, 0x5e, 0x08, 0x62, 0xc5, 0x23, 0x0d, 0x25, + 0xb3, 0xe3, 0xa1, 0x64, 0xb6, 0xfc, 0xed, 0x30, 0x33, 0x6a, 0x21, 0xe8, 0xeb, 0x46, 0xd2, 0xd3, + 0xc2, 0x63, 0x90, 0xe6, 0x37, 0xac, 0xc5, 0xe9, 0xf6, 0x0d, 0x7f, 0x22, 0xda, 0xc9, 0x16, 0x85, + 0x04, 0xdb, 0xd5, 0xa1, 0x0f, 0xb2, 0x0a, 0x27, 0x46, 0x2e, 0x06, 0xa3, 0x37, 0x82, 0x18, 0x10, + 0xdf, 0x08, 0x6a, 0x89, 0xe6, 0x38, 0xb4, 0xaf, 0xe2, 0xb0, 0x03, 0x7b, 0x92, 0x3f, 0x9c, 0x80, + 0x63, 0xc3, 0x97, 0x04, 0x34, 0x0f, 0x05, 0xe2, 0x77, 0xbb, 0x61, 0x17, 0x1d, 0xba, 0xda, 0xfe, + 0x26, 0xf7, 0xcf, 0x79, 0x22, 0x3d, 0xee, 0x25, 0xd2, 0xd1, 0x16, 0x4c, 0x76, 0xcc, 0x96, 0xd6, + 0x51, 0x03, 0x1a, 0xcf, 0x95, 0xfd, 0x81, 0x01, 0x61, 0x37, 0xd8, 0xbd, 0xcb, 0xed, 0x01, 0xa5, + 0x2f, 0x53, 0x8c, 0x15, 0x4f, 0xf3, 0xd1, 0x12, 0xe4, 0xbb, 0xbe, 0x22, 0x1f, 0x41, 0xd9, 0x83, + 0x6c, 0x81, 0x21, 0x49, 0x0d, 0xdd, 0xf6, 0x49, 0x1f, 0xd9, 0x44, 0x8f, 0xda, 0x41, 0xc9, 0x8c, + 0xdc, 0x41, 0x19, 0xb6, 0x5d, 0x91, 0x1d, 0xbe, 0x5d, 0xf1, 0xc1, 0xe0, 0xd0, 0x84, 0x16, 0xd1, + 0xc1, 0x1d, 0x0c, 0xd4, 0x84, 0x69, 0xce, 0xdf, 0x0e, 0xc9, 0x3e, 0x3e, 0xae, 0xa1, 0x41, 0x82, + 0x7d, 0xb4, 0xd8, 0x13, 0x77, 0x27, 0x76, 0x61, 0x4b, 0x93, 0x01, 0x5b, 0xfa, 0xff, 0xd9, 0x50, + 0xfc, 0x87, 0x1c, 0x64, 0x15, 0xec, 0x58, 0x64, 0xe1, 0x44, 0x35, 0xc8, 0xe1, 0xfd, 0x16, 0xb6, + 0x5c, 0x7f, 0x9b, 0x72, 0x58, 0x30, 0xc0, 0xa8, 0x1b, 0x82, 0x92, 0x78, 0xe2, 0x1e, 0x1b, 0x7a, + 0x82, 0x07, 0x5b, 0xa3, 0xe3, 0x26, 0xce, 0x1e, 0x8c, 0xb6, 0x2e, 0x8a, 0x68, 0x2b, 0x31, 0xd2, + 0xf9, 0x66, 0x5c, 0x7d, 0xe1, 0xd6, 0x13, 0x3c, 0xdc, 0x4a, 0x46, 0xbc, 0x2c, 0x14, 0x6f, 0xd5, + 0x43, 0xf1, 0x56, 0x3a, 0xa2, 0x9b, 0x23, 0x02, 0xae, 0x8b, 0x22, 0xe0, 0xca, 0x44, 0xb4, 0xb8, + 0x2f, 0xe2, 0xba, 0x1c, 0x8e, 0xb8, 0xb2, 0x23, 0x0c, 0x88, 0xe0, 0x1e, 0x19, 0x72, 0x3d, 0x1b, + 0x08, 0xb9, 0x72, 0x23, 0xe3, 0x1d, 0x06, 0x32, 0x24, 0xe6, 0xaa, 0x87, 0x62, 0x2e, 0x88, 0x90, + 0xc1, 0x88, 0xa0, 0xeb, 0x5b, 0x82, 0x41, 0x57, 0x7e, 0x64, 0xdc, 0xc6, 0xc7, 0x7b, 0x58, 0xd4, + 0xf5, 0x8c, 0x17, 0x75, 0x15, 0x46, 0x86, 0x8d, 0xbc, 0x0f, 0xfd, 0x61, 0xd7, 0xfa, 0x40, 0xd8, + 0x55, 0xe4, 0x7f, 0xd2, 0x60, 0x14, 0x44, 0x44, 0xdc, 0xb5, 0x3e, 0x10, 0x77, 0x95, 0x22, 0x00, + 0x23, 0x02, 0xaf, 0xbf, 0x31, 0x3c, 0xf0, 0x1a, 0x1d, 0x1a, 0xf1, 0x66, 0x8e, 0x17, 0x79, 0xa9, + 0x23, 0x22, 0x2f, 0x16, 0x1d, 0x3d, 0x3c, 0x12, 0x7e, 0xec, 0xd0, 0x6b, 0x6b, 0x48, 0xe8, 0xc5, + 0x82, 0xa4, 0xd3, 0x23, 0xc1, 0xc7, 0x88, 0xbd, 0xb6, 0x86, 0xc4, 0x5e, 0x28, 0x12, 0xf6, 0x28, + 0xc1, 0x57, 0x4a, 0x4a, 0xcb, 0x67, 0x88, 0xeb, 0xdb, 0x67, 0xa7, 0x88, 0xff, 0x80, 0x6d, 0xdb, + 0xb4, 0xc5, 0xc9, 0x5a, 0xfa, 0x20, 0x9f, 0x26, 0xce, 0xb8, 0x6f, 0x93, 0x0e, 0x09, 0xd4, 0xa8, + 0x9f, 0x16, 0xb0, 0x43, 0xf2, 0xa7, 0x63, 0x3e, 0x2f, 0xf5, 0x61, 0x83, 0x8e, 0x7c, 0x8e, 0x3b, + 0xf2, 0x81, 0xf0, 0x2d, 0x1e, 0x0e, 0xdf, 0xe6, 0x20, 0x4f, 0xfc, 0xaf, 0xbe, 0xc8, 0x4c, 0xb3, + 0xbc, 0xc8, 0x4c, 0x1c, 0x29, 0x60, 0x41, 0x1e, 0x5f, 0x56, 0xd8, 0x4e, 0x4e, 0xd9, 0x3b, 0x5e, + 0xc1, 0x62, 0x0a, 0xf4, 0x28, 0x4c, 0x05, 0x68, 0x3d, 0xbf, 0x8e, 0x85, 0x29, 0x92, 0x47, 0x5d, + 0xe5, 0x0e, 0xde, 0xbf, 0x8a, 0xf9, 0x12, 0xf2, 0x43, 0xba, 0x61, 0xd1, 0x57, 0xec, 0x2d, 0x8a, + 0xbe, 0xe2, 0x77, 0x1d, 0x7d, 0x05, 0xfd, 0xd4, 0x44, 0xd8, 0x4f, 0xfd, 0x9f, 0x31, 0x7f, 0x4c, + 0xbc, 0x58, 0xaa, 0x65, 0xb6, 0x31, 0xf7, 0x1c, 0xe9, 0x6f, 0xe2, 0x54, 0x74, 0xcc, 0x5d, 0xee, + 0x1f, 0x92, 0x9f, 0x84, 0xca, 0x5b, 0x38, 0x72, 0x7c, 0x5d, 0xf0, 0x9c, 0xce, 0x54, 0xf0, 0xfc, + 0x2f, 0x3f, 0x14, 0x9b, 0xf6, 0x0f, 0xc5, 0x7a, 0xdf, 0xae, 0x65, 0x02, 0xdf, 0xae, 0xa1, 0xa7, + 0x21, 0x47, 0x33, 0xa2, 0xaa, 0x69, 0x89, 0x3f, 0x80, 0x71, 0x72, 0xf4, 0x81, 0x58, 0x87, 0x1e, + 0xd5, 0x63, 0x87, 0x68, 0x7d, 0x8f, 0x21, 0x17, 0xf2, 0x18, 0xee, 0x85, 0x1c, 0x69, 0x3d, 0xbb, + 0xc8, 0x19, 0xf8, 0x87, 0x8f, 0xa2, 0x40, 0x7e, 0x1f, 0xa0, 0xc1, 0x45, 0x02, 0x5d, 0x85, 0x34, + 0xbe, 0x49, 0x6f, 0xc5, 0x63, 0x07, 0x0d, 0x8f, 0x0d, 0xba, 0xa6, 0xa4, 0xba, 0x36, 0x43, 0x84, + 0xfc, 0x95, 0xd7, 0xe7, 0x24, 0x46, 0xfd, 0x88, 0x77, 0xce, 0x5f, 0xe1, 0xfc, 0xf2, 0x1f, 0xc4, + 0x49, 0x00, 0x13, 0x5a, 0x40, 0x86, 0xca, 0x76, 0xd8, 0x16, 0xe1, 0x78, 0xf2, 0x9e, 0x05, 0xd8, + 0xd5, 0x1c, 0xf5, 0x96, 0x66, 0xb8, 0xb8, 0xcd, 0x85, 0x1e, 0x28, 0x41, 0x15, 0xc8, 0x92, 0xa7, + 0x9e, 0x83, 0xdb, 0x3c, 0x8c, 0xf6, 0x9e, 0x03, 0xfd, 0xcc, 0x7c, 0x63, 0xfd, 0x0c, 0x4b, 0x39, + 0xdb, 0x27, 0xe5, 0x40, 0x70, 0x91, 0x0b, 0x06, 0x17, 0xec, 0x60, 0x30, 0x3f, 0x9f, 0x08, 0xac, + 0x6d, 0xe2, 0x19, 0x3d, 0x00, 0xc5, 0x2e, 0xee, 0x5a, 0xa6, 0xd9, 0x51, 0x99, 0xb9, 0x61, 0x37, + 0xb6, 0x17, 0x78, 0x61, 0x83, 0x5a, 0x9d, 0xef, 0x8e, 0xfb, 0xf3, 0xcf, 0x0f, 0x22, 0xbf, 0xe9, + 0x04, 0x2c, 0x7f, 0x1f, 0xcd, 0x2c, 0x85, 0x5d, 0x04, 0xd4, 0x0c, 0x9e, 0x1a, 0xe9, 0x51, 0xb3, + 0x20, 0x14, 0x7a, 0x5c, 0xfb, 0xe1, 0x9f, 0x2e, 0x61, 0xc5, 0x0e, 0x7a, 0x09, 0x8e, 0xf7, 0xd9, + 0x36, 0x0f, 0x3a, 0x3e, 0xae, 0x89, 0xbb, 0x27, 0x6c, 0xe2, 0x04, 0xb4, 0x2f, 0xac, 0xc4, 0x37, + 0x38, 0xeb, 0x96, 0xa1, 0x14, 0xf6, 0x78, 0x86, 0x0e, 0x3f, 0xfd, 0x0b, 0x21, 0xae, 0xa6, 0x1b, + 0x6a, 0x28, 0x1d, 0x54, 0x60, 0x85, 0x3c, 0xc9, 0xb4, 0x01, 0xf7, 0x0c, 0xf5, 0x7c, 0xd0, 0x53, + 0x90, 0xf3, 0x9d, 0x26, 0x26, 0xd5, 0x43, 0xd2, 0x05, 0x3e, 0xad, 0xfc, 0x1b, 0x31, 0x1f, 0x32, + 0x9c, 0x80, 0x68, 0x40, 0x9a, 0x1d, 0x7b, 0xe3, 0x87, 0x69, 0x1e, 0x1d, 0xcf, 0x67, 0x5a, 0x60, + 0x67, 0xe2, 0x14, 0xce, 0x2c, 0xbf, 0x0f, 0xd2, 0xac, 0x04, 0xe5, 0x21, 0xe3, 0x5f, 0x5c, 0x0b, + 0x90, 0xae, 0xd6, 0xeb, 0x8d, 0x8d, 0x4d, 0x29, 0x86, 0x72, 0x90, 0xaa, 0xd6, 0xd6, 0x95, 0x4d, + 0x29, 0x4e, 0x8a, 0x95, 0xc6, 0xb5, 0x46, 0x7d, 0x53, 0x4a, 0xa0, 0x49, 0x28, 0xb2, 0xdf, 0xea, + 0xe5, 0x75, 0x65, 0xb5, 0xba, 0x29, 0x25, 0x03, 0x45, 0xcd, 0xc6, 0xda, 0x52, 0x43, 0x91, 0x52, + 0xf2, 0xe3, 0x70, 0x62, 0xa4, 0x97, 0xe5, 0x67, 0x17, 0x62, 0x81, 0xec, 0x82, 0xfc, 0xe1, 0x38, + 0x54, 0x46, 0xbb, 0x4e, 0xe8, 0x5a, 0x5f, 0xc7, 0xcf, 0x1f, 0xc1, 0xef, 0xea, 0xeb, 0x3d, 0x7a, + 0x10, 0x4a, 0x36, 0xde, 0xc1, 0x6e, 0x6b, 0x8f, 0xb9, 0x72, 0x6c, 0xc9, 0x2c, 0x2a, 0x45, 0x5e, + 0x4a, 0x99, 0x1c, 0x46, 0xf6, 0x0a, 0x6e, 0xb9, 0x2a, 0xb3, 0x45, 0x0e, 0xff, 0x53, 0x85, 0x45, + 0x56, 0xda, 0x64, 0x85, 0xf2, 0xb7, 0x1f, 0x49, 0x96, 0x39, 0x48, 0x29, 0x8d, 0x4d, 0xe5, 0x25, + 0x29, 0x81, 0x10, 0x94, 0xe8, 0x4f, 0xb5, 0xb9, 0x56, 0xdd, 0x68, 0x5e, 0x5d, 0x27, 0xb2, 0x9c, + 0x82, 0xb2, 0x90, 0xa5, 0x28, 0x4c, 0xc9, 0x0f, 0xc3, 0xf1, 0x11, 0x7e, 0xdf, 0x90, 0x73, 0x88, + 0x1f, 0x8d, 0x05, 0xa9, 0xc3, 0x31, 0xff, 0x3a, 0xa4, 0x1d, 0x57, 0x73, 0x7b, 0x0e, 0x17, 0xe2, + 0x53, 0xe3, 0x3a, 0x82, 0x0b, 0xe2, 0x47, 0x93, 0xb2, 0x2b, 0x1c, 0x46, 0xbe, 0x00, 0xa5, 0x70, + 0xcd, 0x68, 0x19, 0xf8, 0x4a, 0x14, 0x97, 0x5f, 0x02, 0x08, 0xe4, 0x23, 0xbd, 0x13, 0x5d, 0xb1, + 0xe0, 0x89, 0xae, 0x0b, 0x90, 0xba, 0x69, 0x32, 0x9b, 0x31, 0x7c, 0xe2, 0x5c, 0x37, 0x5d, 0x1c, + 0x48, 0x3e, 0x30, 0x6a, 0x59, 0x07, 0x34, 0x98, 0x13, 0x1a, 0xf1, 0x8a, 0x67, 0xc3, 0xaf, 0xb8, + 0x7f, 0x64, 0x76, 0x69, 0xf8, 0xab, 0x5e, 0x85, 0x14, 0xb5, 0x36, 0x43, 0x3f, 0xf1, 0xf9, 0x36, + 0x00, 0xcd, 0x75, 0x6d, 0x7d, 0xbb, 0xe7, 0xbf, 0x60, 0x6e, 0xb8, 0xb5, 0xaa, 0x0a, 0xba, 0xda, + 0xbd, 0xdc, 0x6c, 0x4d, 0xfb, 0xac, 0x01, 0xd3, 0x15, 0x00, 0x94, 0xd7, 0xa0, 0x14, 0xe6, 0x1d, + 0xfe, 0xc9, 0x92, 0xff, 0xe9, 0x7f, 0x4e, 0xb8, 0x4f, 0x9e, 0xf3, 0xc5, 0xaf, 0xe3, 0xa0, 0x0f, + 0xf2, 0xed, 0x18, 0x64, 0x37, 0xf7, 0xb9, 0x1e, 0x1f, 0x72, 0xa8, 0xd2, 0xff, 0x6e, 0xcb, 0x4b, + 0x16, 0xb2, 0x7c, 0x6c, 0xc2, 0xcb, 0xf2, 0x7e, 0x8b, 0x37, 0x53, 0x93, 0xe3, 0x46, 0xbb, 0x22, + 0xdb, 0xcd, 0xad, 0xd3, 0xa5, 0xf1, 0xbe, 0x91, 0x98, 0x86, 0x54, 0xf0, 0xfb, 0x06, 0xf6, 0x20, + 0xb7, 0x03, 0xc7, 0x12, 0xd8, 0xb2, 0x11, 0xfc, 0x98, 0x22, 0x76, 0xe4, 0x8f, 0x29, 0xbc, 0xb7, + 0xc4, 0x83, 0x6f, 0xb9, 0x09, 0x59, 0xa1, 0x14, 0xe8, 0x3d, 0xc1, 0xb3, 0x27, 0x62, 0x8f, 0x66, + 0xe4, 0xe2, 0xc9, 0xe1, 0x03, 0x47, 0x4f, 0xce, 0xc2, 0x24, 0x3f, 0x72, 0xe7, 0xc7, 0x15, 0xfc, + 0x6a, 0xfd, 0x32, 0xab, 0x58, 0x11, 0x41, 0x85, 0xfc, 0xb3, 0x31, 0x90, 0xfa, 0xb5, 0xf2, 0x9d, + 0x6c, 0x00, 0x31, 0x8a, 0x44, 0xfb, 0x03, 0x77, 0x66, 0xb3, 0x91, 0x2f, 0x92, 0x52, 0xff, 0xd6, + 0xec, 0x0f, 0xc4, 0x21, 0x1f, 0xc8, 0xe9, 0xa1, 0x27, 0x43, 0x47, 0x40, 0xe7, 0x0f, 0xcb, 0xff, + 0x05, 0xce, 0x80, 0x86, 0x3a, 0x16, 0x3f, 0x7a, 0xc7, 0xde, 0xfa, 0x43, 0xfa, 0xc3, 0xbf, 0xf6, + 0x49, 0x8d, 0xf8, 0xda, 0xe7, 0xbb, 0x62, 0x90, 0xf5, 0x96, 0xee, 0xa3, 0x66, 0xf3, 0x8f, 0x41, + 0x9a, 0xaf, 0x4e, 0x2c, 0x9d, 0xcf, 0x9f, 0x86, 0xe6, 0x42, 0x2b, 0x90, 0x15, 0x7f, 0x93, 0x86, + 0x07, 0xa2, 0xde, 0xf3, 0xd9, 0x67, 0x20, 0x1f, 0xd8, 0x58, 0x21, 0x76, 0x62, 0xad, 0xf1, 0x82, + 0x34, 0x51, 0xc9, 0xdc, 0xbe, 0x33, 0x9f, 0x58, 0xc3, 0xb7, 0xc8, 0x0c, 0x53, 0x1a, 0xf5, 0xab, + 0x8d, 0xfa, 0xf3, 0x52, 0xac, 0x92, 0xbf, 0x7d, 0x67, 0x3e, 0xa3, 0x60, 0x9a, 0xbe, 0x3a, 0xfb, + 0x3c, 0x94, 0xfb, 0x06, 0x26, 0x6c, 0xdf, 0x11, 0x94, 0x96, 0xb6, 0x36, 0x56, 0x96, 0xeb, 0xd5, + 0xcd, 0x86, 0xca, 0x8e, 0xd3, 0xa1, 0xe3, 0x30, 0xb5, 0xb2, 0x7c, 0xe5, 0xea, 0xa6, 0x5a, 0x5f, + 0x59, 0x6e, 0xac, 0x6d, 0xaa, 0xd5, 0xcd, 0xcd, 0x6a, 0xfd, 0x79, 0x29, 0x7e, 0xfe, 0xeb, 0x00, + 0xe5, 0x6a, 0xad, 0xbe, 0x4c, 0xd6, 0x67, 0x9d, 0x5f, 0x7b, 0x5e, 0x87, 0x24, 0x4d, 0x05, 0x1c, + 0x7a, 0x54, 0xa4, 0x72, 0x78, 0x6e, 0x13, 0x5d, 0x86, 0x14, 0xcd, 0x12, 0xa0, 0xc3, 0xcf, 0x8e, + 0x54, 0x22, 0x92, 0x9d, 0xa4, 0x31, 0x74, 0x3a, 0x1d, 0x7a, 0x98, 0xa4, 0x72, 0x78, 0xee, 0x13, + 0x29, 0x90, 0xf3, 0xa3, 0x8c, 0xe8, 0xc3, 0x15, 0x95, 0x31, 0xac, 0x23, 0x5a, 0x81, 0x8c, 0x08, + 0x0c, 0xa3, 0x8e, 0x7b, 0x54, 0x22, 0x93, 0x93, 0x44, 0x5c, 0x2c, 0x80, 0x3f, 0xfc, 0xec, 0x4a, + 0x25, 0x22, 0xd3, 0x8a, 0x96, 0xbd, 0x43, 0xf8, 0x11, 0x47, 0x38, 0x2a, 0x51, 0xc9, 0x46, 0x22, + 0x34, 0x3f, 0x35, 0x12, 0x7d, 0x22, 0xa7, 0x32, 0x46, 0x12, 0x19, 0x6d, 0x01, 0x04, 0xc2, 0xf5, + 0x31, 0x8e, 0xda, 0x54, 0xc6, 0x49, 0x0e, 0xa3, 0x75, 0xc8, 0x7a, 0xd1, 0x53, 0xe4, 0xc1, 0x97, + 0x4a, 0x74, 0x96, 0x16, 0xbd, 0x0f, 0x8a, 0xe1, 0xa8, 0x61, 0xbc, 0xe3, 0x2c, 0x95, 0x31, 0xd3, + 0xaf, 0x04, 0x3f, 0x1c, 0x42, 0x8c, 0x77, 0xbc, 0xa5, 0x32, 0x66, 0x36, 0x16, 0xbd, 0x02, 0x93, + 0x83, 0x2e, 0xfe, 0xf8, 0xa7, 0x5d, 0x2a, 0x47, 0xc8, 0xcf, 0xa2, 0x2e, 0xa0, 0x21, 0xa1, 0xc1, + 0x11, 0x0e, 0xbf, 0x54, 0x8e, 0x92, 0xae, 0x45, 0x6d, 0x28, 0xf7, 0xfb, 0xdb, 0xe3, 0x1e, 0x86, + 0xa9, 0x8c, 0x9d, 0xba, 0x65, 0x6f, 0x09, 0xfb, 0xe9, 0xe3, 0x1e, 0x8e, 0xa9, 0x8c, 0x9d, 0xc9, + 0xad, 0x55, 0x47, 0x9e, 0x6f, 0x3c, 0x75, 0xe8, 0xf9, 0x46, 0xff, 0xc4, 0xa2, 0x77, 0xa6, 0xf1, + 0x3b, 0x1f, 0x87, 0x77, 0xf1, 0xcb, 0x04, 0x1c, 0x57, 0xbb, 0xa1, 0x1b, 0xbb, 0xde, 0xed, 0x10, + 0xfc, 0x99, 0x1f, 0x6e, 0x3c, 0xc6, 0x2f, 0x2c, 0x10, 0xa5, 0x11, 0x77, 0x44, 0x8c, 0xbc, 0xf7, + 0x2a, 0xea, 0x10, 0x72, 0xf4, 0xd1, 0xc5, 0x43, 0xee, 0x9f, 0x88, 0xb8, 0xe5, 0x62, 0xc8, 0xfd, + 0x14, 0x11, 0x87, 0x30, 0x0f, 0x3b, 0xef, 0x29, 0xff, 0x50, 0x0c, 0x4a, 0x57, 0x75, 0xc7, 0x35, + 0x6d, 0xbd, 0xa5, 0x75, 0xe8, 0x8a, 0x71, 0x69, 0xdc, 0x8f, 0x3c, 0x6a, 0x39, 0xe2, 0x8c, 0xf0, + 0x4b, 0x2d, 0xf8, 0xc1, 0x90, 0x25, 0x48, 0xdf, 0xd4, 0x3a, 0xec, 0x13, 0x8b, 0xe0, 0xf5, 0x33, + 0xfd, 0x32, 0x0f, 0x78, 0x49, 0x41, 0x14, 0xc6, 0x2b, 0xff, 0x12, 0x3d, 0xc4, 0xdd, 0xed, 0xea, + 0x0e, 0xfb, 0xab, 0xd1, 0x2e, 0x76, 0xd0, 0x06, 0x24, 0x6d, 0xcd, 0xe5, 0x41, 0x4d, 0xed, 0xdd, + 0xfc, 0x2a, 0x8a, 0x87, 0xa2, 0x2f, 0x94, 0x58, 0x18, 0xbc, 0xad, 0x82, 0x22, 0xa1, 0x17, 0x20, + 0xdb, 0xd5, 0xf6, 0x55, 0x8a, 0x1a, 0x7f, 0x0b, 0x50, 0x33, 0x5d, 0x6d, 0x9f, 0xb4, 0x95, 0xcc, + 0x20, 0x02, 0xdc, 0xda, 0xd3, 0x8c, 0x5d, 0xcc, 0xf0, 0x13, 0x6f, 0x01, 0x7e, 0xb1, 0xab, 0xed, + 0xd7, 0x29, 0x26, 0x79, 0xcb, 0x62, 0xf6, 0xc3, 0x1f, 0x99, 0x9b, 0xa0, 0x67, 0x91, 0x7f, 0x2b, + 0xc6, 0xe3, 0x57, 0x2a, 0x2e, 0xa4, 0x81, 0xd4, 0xf2, 0x9e, 0xe8, 0xeb, 0x45, 0x2e, 0xff, 0xd4, + 0xa8, 0xd1, 0xe8, 0x13, 0x76, 0xad, 0x48, 0x1a, 0xfa, 0xb9, 0xd7, 0xe7, 0x62, 0x6c, 0x5c, 0xca, + 0xad, 0xbe, 0xc1, 0xb8, 0x06, 0x79, 0x96, 0x42, 0x53, 0xa9, 0xdf, 0x1a, 0x8f, 0xf4, 0x5b, 0x8b, + 0xc2, 0x6f, 0x65, 0x80, 0xc0, 0xb8, 0x49, 0x7d, 0xa0, 0x1f, 0xbf, 0x14, 0x83, 0xfc, 0x52, 0xe0, + 0x9a, 0xa9, 0x19, 0xc8, 0x74, 0x4d, 0x43, 0xbf, 0x81, 0x6d, 0x6f, 0x43, 0x86, 0x3d, 0x12, 0xff, + 0x92, 0xfd, 0xb9, 0x20, 0xf7, 0x40, 0x5c, 0xc1, 0x20, 0x9e, 0x09, 0xd7, 0x2d, 0xbc, 0xed, 0xe8, + 0x42, 0xea, 0x8a, 0x78, 0x44, 0x67, 0x40, 0x72, 0x70, 0xab, 0x67, 0xeb, 0xee, 0x81, 0xda, 0x32, + 0x0d, 0x57, 0x6b, 0xb9, 0x3c, 0x6d, 0x5a, 0x16, 0xe5, 0x75, 0x56, 0x4c, 0x40, 0xda, 0xd8, 0xd5, + 0xf4, 0x0e, 0x3b, 0xef, 0x95, 0x53, 0xc4, 0x63, 0xa0, 0xb9, 0xbf, 0x9e, 0x09, 0xc6, 0x85, 0x75, + 0x90, 0x4c, 0x0b, 0xdb, 0xa1, 0xef, 0xdd, 0x98, 0xae, 0xce, 0xfc, 0xee, 0x27, 0x1f, 0x9d, 0xe6, + 0x82, 0xe7, 0xbb, 0xef, 0xec, 0x66, 0x65, 0xa5, 0x2c, 0x38, 0xc4, 0x87, 0x70, 0x2f, 0x85, 0xb6, + 0x61, 0x7a, 0xdb, 0xfe, 0xf7, 0xf6, 0xd3, 0x03, 0xc2, 0xad, 0x1a, 0x07, 0xb5, 0x99, 0xdf, 0xf1, + 0xa1, 0xfd, 0xb8, 0xf1, 0x79, 0x7c, 0x10, 0xdc, 0x93, 0xa1, 0x30, 0xc4, 0x7d, 0x7f, 0x45, 0xd3, + 0x3b, 0xe2, 0xaf, 0xa0, 0x29, 0xfc, 0x09, 0x2d, 0x7a, 0x39, 0x18, 0xf6, 0xd7, 0xcd, 0xe5, 0x51, + 0x3a, 0x52, 0x33, 0x8d, 0x76, 0x38, 0xdd, 0x82, 0x36, 0x21, 0xed, 0x9a, 0x37, 0xb0, 0xc1, 0x85, + 0x74, 0x24, 0xfd, 0x1e, 0xbc, 0x7c, 0x86, 0x63, 0xa1, 0x5d, 0x90, 0xda, 0xb8, 0x83, 0x77, 0xd9, + 0xd7, 0x5a, 0x7b, 0x9a, 0x8d, 0xd9, 0x17, 0x9c, 0xdf, 0xe8, 0xfc, 0x29, 0x7b, 0xa8, 0x4d, 0x0a, + 0x8a, 0x36, 0xc2, 0x17, 0x9d, 0x65, 0xf8, 0x96, 0xfc, 0x88, 0xfe, 0x07, 0x34, 0x33, 0x68, 0xb3, + 0x42, 0x17, 0xa3, 0x9d, 0x01, 0xa9, 0x67, 0x6c, 0x9b, 0x06, 0xfd, 0x83, 0x45, 0x3c, 0xba, 0xca, + 0xb2, 0x6d, 0x3b, 0xaf, 0x9c, 0x6f, 0xdb, 0x6d, 0x40, 0xc9, 0x27, 0xa5, 0xb3, 0x28, 0x77, 0xd4, + 0x59, 0x54, 0xf4, 0x00, 0x08, 0x09, 0x5a, 0x05, 0xf0, 0xe7, 0xa9, 0xb7, 0xb5, 0x1f, 0x39, 0xe3, + 0x83, 0x9d, 0x09, 0x00, 0xa0, 0x0e, 0x4c, 0x75, 0x75, 0x43, 0x75, 0x70, 0x67, 0x47, 0xe5, 0x92, + 0x23, 0xb8, 0xf9, 0xb7, 0x60, 0xa4, 0x27, 0xbb, 0xba, 0xd1, 0xc4, 0x9d, 0x9d, 0x25, 0x0f, 0x16, + 0xbd, 0x1b, 0x4e, 0xfa, 0xe2, 0x30, 0x0d, 0x75, 0xcf, 0xec, 0xb4, 0x55, 0x1b, 0xef, 0xa8, 0x2d, + 0x7a, 0xf7, 0x51, 0x81, 0x0a, 0xf1, 0xb8, 0x47, 0xb2, 0x6e, 0x5c, 0x35, 0x3b, 0x6d, 0x05, 0xef, + 0xd4, 0x49, 0x35, 0x7a, 0x00, 0x7c, 0x59, 0xa8, 0x7a, 0xdb, 0x99, 0x29, 0xce, 0x27, 0x4e, 0x27, + 0x95, 0x82, 0x57, 0xb8, 0xdc, 0x76, 0x16, 0x0b, 0x1f, 0xfc, 0xc8, 0xdc, 0x04, 0x9f, 0xbd, 0x13, + 0xf2, 0x06, 0xbd, 0xad, 0x83, 0x4f, 0x3c, 0xec, 0xa0, 0x8b, 0x90, 0xd3, 0xc4, 0x03, 0xfb, 0x4e, + 0xe4, 0x90, 0x89, 0xeb, 0x93, 0x32, 0x7b, 0xf0, 0xda, 0x1f, 0xcc, 0xc7, 0xe4, 0x9f, 0x89, 0x41, + 0x7a, 0xe9, 0xfa, 0x86, 0xa6, 0xdb, 0xa8, 0x01, 0x93, 0xbe, 0x0a, 0x8f, 0x6b, 0x0d, 0x7c, 0xad, + 0x17, 0xe6, 0xa0, 0x31, 0xea, 0x23, 0xda, 0x43, 0x61, 0xfa, 0x3f, 0xaf, 0xed, 0xeb, 0xf8, 0x35, + 0xc8, 0xb0, 0x56, 0x3a, 0xe8, 0x39, 0x48, 0x59, 0xe4, 0x07, 0xdf, 0x0c, 0x98, 0x1d, 0xa9, 0xfa, + 0x94, 0x3e, 0xa8, 0x28, 0x8c, 0x4f, 0xfe, 0xcb, 0x18, 0xc0, 0xd2, 0xf5, 0xeb, 0x9b, 0xb6, 0x6e, + 0x75, 0xb0, 0xfb, 0x56, 0x75, 0x7b, 0x05, 0xee, 0x09, 0x7c, 0xae, 0x69, 0xb7, 0xc6, 0xee, 0xfa, + 0x94, 0xff, 0xc1, 0xa6, 0xdd, 0x1a, 0x8a, 0xd6, 0x76, 0x5c, 0x0f, 0x2d, 0x31, 0x36, 0xda, 0x92, + 0xe3, 0x0e, 0x97, 0xe5, 0x8b, 0x90, 0xf7, 0xbb, 0xef, 0xa0, 0x65, 0xc8, 0xba, 0xfc, 0x37, 0x17, + 0xa9, 0x3c, 0x5a, 0xa4, 0x82, 0x2d, 0x28, 0x56, 0x8f, 0x5d, 0xfe, 0x3f, 0x44, 0xb2, 0xfe, 0xf4, + 0xf8, 0x6b, 0xa5, 0x50, 0xc4, 0xee, 0x73, 0xbb, 0xfc, 0x56, 0xf8, 0x35, 0x1c, 0xab, 0x4f, 0xb4, + 0x1f, 0x8c, 0xc3, 0xd4, 0x96, 0x98, 0xbe, 0x7f, 0x6d, 0x25, 0xb1, 0x05, 0x19, 0x6c, 0xb8, 0xb6, + 0x8e, 0xc5, 0x0e, 0xe0, 0x63, 0xa3, 0x06, 0x7c, 0x48, 0x5f, 0xe8, 0x1f, 0xf8, 0x0d, 0x0e, 0xbf, + 0xc0, 0xea, 0x13, 0xc5, 0x6f, 0x26, 0x60, 0x66, 0x14, 0x3b, 0x3a, 0x05, 0xe5, 0x96, 0x8d, 0x69, + 0x81, 0x1a, 0xca, 0x92, 0x97, 0x44, 0x31, 0x5f, 0x70, 0x14, 0x20, 0x6e, 0x1c, 0xd1, 0x2e, 0x42, + 0x7a, 0x77, 0x7e, 0x5b, 0xc9, 0x47, 0xa0, 0x4b, 0x0e, 0x86, 0xb2, 0x38, 0xf6, 0xbe, 0xad, 0x75, + 0x34, 0xa3, 0x75, 0x37, 0x9e, 0xee, 0xe0, 0xfa, 0x20, 0xce, 0xd2, 0xd7, 0x18, 0x26, 0xba, 0x0e, + 0x19, 0x01, 0x9f, 0x7c, 0x0b, 0xe0, 0x05, 0x18, 0xba, 0x1f, 0x0a, 0xc1, 0x65, 0x83, 0x7a, 0x31, + 0x49, 0x25, 0x1f, 0x58, 0x35, 0xa2, 0xd6, 0xa5, 0xf4, 0xa1, 0xeb, 0x52, 0xc0, 0x59, 0xfc, 0x17, + 0x09, 0x98, 0x54, 0x70, 0xfb, 0x9b, 0x70, 0xf0, 0xbe, 0x15, 0x80, 0x4d, 0x70, 0x62, 0x7c, 0xef, + 0x62, 0xfc, 0x06, 0x0d, 0x46, 0x8e, 0xe1, 0x2d, 0x39, 0xee, 0x3b, 0x39, 0x82, 0xff, 0x3e, 0x0e, + 0x85, 0xe0, 0x08, 0x7e, 0x13, 0xac, 0x76, 0x68, 0xcd, 0x37, 0x6f, 0xec, 0x80, 0xfa, 0x99, 0x51, + 0xe6, 0x6d, 0x40, 0xb7, 0xc7, 0xb0, 0x6b, 0x3f, 0x92, 0x80, 0x34, 0x3f, 0x31, 0xb6, 0x3e, 0xe0, + 0x0d, 0xc7, 0xa2, 0x3e, 0x13, 0x2e, 0x8a, 0xcf, 0x84, 0x87, 0x3a, 0xc3, 0x0f, 0x42, 0x89, 0xc4, + 0xe0, 0xa1, 0x63, 0x68, 0xb1, 0xd3, 0x45, 0x1a, 0x44, 0xfb, 0x87, 0xa6, 0xd1, 0x1c, 0xe4, 0x09, + 0x99, 0x6f, 0xc3, 0x09, 0x0d, 0x74, 0xb5, 0xfd, 0x06, 0x2b, 0x41, 0x8f, 0x02, 0xda, 0xf3, 0xf2, + 0x23, 0xaa, 0x2f, 0x0c, 0x42, 0x37, 0xe9, 0xd7, 0x08, 0xf2, 0xfb, 0x00, 0x48, 0x2b, 0x54, 0x76, + 0x91, 0x27, 0xbf, 0x5d, 0x95, 0x94, 0x2c, 0xd1, 0xcb, 0x3c, 0xbf, 0x83, 0xf9, 0xd4, 0x7d, 0xe1, + 0x39, 0x8f, 0x6e, 0x56, 0x8e, 0x36, 0x29, 0xbe, 0xf6, 0xfa, 0x5c, 0xe5, 0x40, 0xeb, 0x76, 0x16, + 0xe5, 0x21, 0x90, 0x32, 0xf5, 0xb1, 0xc3, 0x61, 0xfd, 0xe2, 0x69, 0xa1, 0xcb, 0xb7, 0xbf, 0xf4, + 0xf1, 0xb3, 0x27, 0x03, 0x98, 0xfb, 0x5e, 0xe2, 0x8c, 0x0d, 0x87, 0xfc, 0xcb, 0x31, 0x40, 0xfe, + 0x42, 0xe3, 0x1d, 0x13, 0x5f, 0xa5, 0x87, 0x87, 0x45, 0x24, 0x10, 0x3b, 0x3c, 0xc2, 0xf0, 0xf9, + 0x43, 0x11, 0x46, 0x60, 0x02, 0xbd, 0xc7, 0x37, 0xeb, 0xe2, 0xa3, 0xf0, 0x21, 0x57, 0xb8, 0x2e, + 0xd4, 0x4d, 0x3d, 0x04, 0x21, 0x98, 0xbc, 0xb9, 0x39, 0x21, 0xbf, 0x1e, 0x83, 0x13, 0x03, 0x1a, + 0xe8, 0x35, 0xbb, 0x05, 0xc8, 0x0e, 0x54, 0xf2, 0x3f, 0xb4, 0x1f, 0xe3, 0xdf, 0x41, 0xde, 0x8d, + 0x42, 0x4f, 0xda, 0x03, 0xa6, 0xfc, 0x6d, 0x5a, 0xa3, 0xf8, 0x65, 0xae, 0xbf, 0x1d, 0x83, 0xe9, + 0x60, 0x8b, 0xbc, 0xbe, 0x35, 0xa1, 0x10, 0x6c, 0x0b, 0xef, 0xd5, 0xbb, 0xc6, 0xe9, 0x55, 0xb0, + 0x43, 0x21, 0x10, 0xd2, 0x17, 0xa1, 0xe9, 0x2c, 0x8d, 0xf7, 0xf8, 0xd8, 0x52, 0xf2, 0xb6, 0x28, + 0x86, 0x4d, 0xff, 0x24, 0x1d, 0xac, 0xef, 0x8f, 0x43, 0x72, 0xc3, 0x34, 0x3b, 0xe8, 0xbb, 0x62, + 0x30, 0x69, 0x98, 0xae, 0x4a, 0xe6, 0x07, 0x6e, 0xab, 0x3c, 0x95, 0xc0, 0x2c, 0xe8, 0xf5, 0xa3, + 0x49, 0xef, 0x2b, 0xaf, 0xcf, 0x0d, 0x42, 0x0d, 0xbb, 0x7d, 0xb7, 0x6c, 0x98, 0x6e, 0x8d, 0x12, + 0x6d, 0xb2, 0x6c, 0xc3, 0x2d, 0x28, 0x86, 0xdf, 0xcf, 0xcc, 0xae, 0x72, 0xe4, 0xf7, 0x17, 0x23, + 0xdf, 0x5d, 0xd8, 0x0e, 0xbc, 0x98, 0xdd, 0x81, 0xf9, 0xa7, 0x64, 0x70, 0x5f, 0x02, 0xe9, 0x7a, + 0xff, 0xa1, 0xb5, 0x06, 0x64, 0x8e, 0x7a, 0xfe, 0x2d, 0x28, 0x71, 0xce, 0x7b, 0xf6, 0x53, 0x31, + 0x00, 0x3f, 0x71, 0x83, 0x1e, 0x81, 0xe3, 0xb5, 0xf5, 0xb5, 0x25, 0xb5, 0xb9, 0x59, 0xdd, 0xdc, + 0x6a, 0x86, 0x6f, 0x5c, 0x17, 0xd7, 0x94, 0x38, 0x16, 0x6e, 0xe9, 0x3b, 0x3a, 0x6e, 0xa3, 0x87, + 0x60, 0x3a, 0x4c, 0x4d, 0x9e, 0x1a, 0x4b, 0x52, 0xac, 0x52, 0xb8, 0x7d, 0x67, 0x3e, 0xcb, 0x5c, + 0x52, 0xdc, 0x46, 0xa7, 0xe1, 0x9e, 0x41, 0xba, 0xe5, 0xb5, 0x2b, 0x52, 0xbc, 0x52, 0xbc, 0x7d, + 0x67, 0x3e, 0xe7, 0xf9, 0xae, 0x48, 0x06, 0x14, 0xa4, 0xe4, 0x78, 0x89, 0x0a, 0xdc, 0xbe, 0x33, + 0x9f, 0x66, 0xc3, 0x52, 0x49, 0x7e, 0xf0, 0xa7, 0x67, 0x27, 0xce, 0x7e, 0x1b, 0xc0, 0xb2, 0xb1, + 0x63, 0x6b, 0xf4, 0xcf, 0x0e, 0xa3, 0x0a, 0x1c, 0x5b, 0x5e, 0xbb, 0xac, 0x54, 0xeb, 0x9b, 0xcb, + 0xeb, 0x6b, 0x7d, 0x17, 0xc5, 0x87, 0xeb, 0x96, 0xd6, 0xb7, 0x6a, 0x2b, 0x0d, 0xb5, 0xb9, 0x7c, + 0x65, 0x8d, 0x6d, 0xfe, 0x86, 0xea, 0x5e, 0x58, 0xdb, 0x5c, 0x5e, 0x6d, 0x48, 0xf1, 0xda, 0xe5, + 0x91, 0xdb, 0x0f, 0x8f, 0x1c, 0x3a, 0xe0, 0xbe, 0xa5, 0x0c, 0xed, 0x41, 0xfc, 0xbf, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x4f, 0x0b, 0xba, 0x8e, 0x0e, 0x97, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) From cff36e4c70fb863d6105fcae7196c007b4402544 Mon Sep 17 00:00:00 2001 From: Rex Milce Date: Thu, 30 Nov 2023 00:19:13 +0100 Subject: [PATCH 08/13] update new proposal --- x/gov/abci_test.go | 94 ++++++++++++++++++----------- x/gov/keeper/proposal.go | 2 +- x/gov/keeper/proposal_test.go | 2 +- x/gov/migrations/v4/store_test.go | 4 +- x/gov/simulation/operations_test.go | 6 +- x/gov/types/v1/proposal.go | 3 +- x/gov/types/v1/proposals_test.go | 2 +- 7 files changed, 68 insertions(+), 45 deletions(-) diff --git a/x/gov/abci_test.go b/x/gov/abci_test.go index c480acd31d5b..4189806e0436 100644 --- a/x/gov/abci_test.go +++ b/x/gov/abci_test.go @@ -287,57 +287,79 @@ func TestTickPassedVotingPeriod(t *testing.T) { } func TestProposalPassedEndblocker(t *testing.T) { - suite := createTestSuite(t) - app := suite.App - ctx := app.BaseApp.NewContext(false, tmproto.Header{}) - addrs := simtestutil.AddTestAddrs(suite.BankKeeper, suite.StakingKeeper, ctx, 10, valTokens) + tc := []struct { + name string + isExpedited bool + }{ + { + name: "regular proposal", + isExpedited: false, + }, + { + name: "expedited proposal", + isExpedited: true, + }, + } - SortAddresses(addrs) + for _, tt := range tc { + t.Run(tt.name, func(t *testing.T) { + if tt.isExpedited { + // TODO: test this once we have expedited implemented + t.SkipNow() + } + suite := createTestSuite(t) + app := suite.App + ctx := app.BaseApp.NewContext(false, tmproto.Header{}) + addrs := simtestutil.AddTestAddrs(suite.BankKeeper, suite.StakingKeeper, ctx, 10, valTokens) - govMsgSvr := keeper.NewMsgServerImpl(suite.GovKeeper) - stakingMsgSvr := stakingkeeper.NewMsgServerImpl(suite.StakingKeeper) + SortAddresses(addrs) - header := tmproto.Header{Height: app.LastBlockHeight() + 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + govMsgSvr := keeper.NewMsgServerImpl(suite.GovKeeper) + stakingMsgSvr := stakingkeeper.NewMsgServerImpl(suite.StakingKeeper) - valAddr := sdk.ValAddress(addrs[0]) + header := tmproto.Header{Height: app.LastBlockHeight() + 1} + app.BeginBlock(abci.RequestBeginBlock{Header: header}) - createValidators(t, stakingMsgSvr, ctx, []sdk.ValAddress{valAddr}, []int64{10}) - staking.EndBlocker(ctx, suite.StakingKeeper) + valAddr := sdk.ValAddress(addrs[0]) - macc := suite.GovKeeper.GetGovernanceAccount(ctx) - require.NotNil(t, macc) - initialModuleAccCoins := suite.BankKeeper.GetAllBalances(ctx, macc.GetAddress()) + createValidators(t, stakingMsgSvr, ctx, []sdk.ValAddress{valAddr}, []int64{10}) + staking.EndBlocker(ctx, suite.StakingKeeper) - proposal, err := suite.GovKeeper.SubmitProposal(ctx, []sdk.Msg{mkTestLegacyContent(t)}, "", "title", "summary", addrs[0]) - require.NoError(t, err) + macc := suite.GovKeeper.GetGovernanceAccount(ctx) + require.NotNil(t, macc) + initialModuleAccCoins := suite.BankKeeper.GetAllBalances(ctx, macc.GetAddress()) - proposalCoins := sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, suite.StakingKeeper.TokensFromConsensusPower(ctx, 10))} - newDepositMsg := v1.NewMsgDeposit(addrs[0], proposal.Id, proposalCoins) + proposal, err := suite.GovKeeper.SubmitProposal(ctx, []sdk.Msg{mkTestLegacyContent(t)}, "", "title", "summary", addrs[0]) + require.NoError(t, err) - res, err := govMsgSvr.Deposit(sdk.WrapSDKContext(ctx), newDepositMsg) - require.NoError(t, err) - require.NotNil(t, res) + proposalCoins := sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, suite.StakingKeeper.TokensFromConsensusPower(ctx, 10))} + newDepositMsg := v1.NewMsgDeposit(addrs[0], proposal.Id, proposalCoins) - macc = suite.GovKeeper.GetGovernanceAccount(ctx) - require.NotNil(t, macc) - moduleAccCoins := suite.BankKeeper.GetAllBalances(ctx, macc.GetAddress()) + res, err := govMsgSvr.Deposit(sdk.WrapSDKContext(ctx), newDepositMsg) + require.NoError(t, err) + require.NotNil(t, res) - deposits := initialModuleAccCoins.Add(proposal.TotalDeposit...).Add(proposalCoins...) - require.True(t, moduleAccCoins.IsEqual(deposits)) + macc = suite.GovKeeper.GetGovernanceAccount(ctx) + require.NotNil(t, macc) + moduleAccCoins := suite.BankKeeper.GetAllBalances(ctx, macc.GetAddress()) - err = suite.GovKeeper.AddVote(ctx, proposal.Id, addrs[0], v1.NewNonSplitVoteOption(v1.OptionYes), "") - require.NoError(t, err) + deposits := initialModuleAccCoins.Add(proposal.TotalDeposit...).Add(proposalCoins...) + require.True(t, moduleAccCoins.IsEqual(deposits)) - newHeader := ctx.BlockHeader() - newHeader.Time = ctx.BlockHeader().Time.Add(*suite.GovKeeper.GetParams(ctx).MaxDepositPeriod).Add(*suite.GovKeeper.GetParams(ctx).VotingPeriod) - ctx = ctx.WithBlockHeader(newHeader) + err = suite.GovKeeper.AddVote(ctx, proposal.Id, addrs[0], v1.NewNonSplitVoteOption(v1.OptionYes), "") + require.NoError(t, err) - gov.EndBlocker(ctx, suite.GovKeeper) + newHeader := ctx.BlockHeader() + newHeader.Time = ctx.BlockHeader().Time.Add(*suite.GovKeeper.GetParams(ctx).MaxDepositPeriod).Add(*suite.GovKeeper.GetParams(ctx).VotingPeriod) + ctx = ctx.WithBlockHeader(newHeader) + + gov.EndBlocker(ctx, suite.GovKeeper) - macc = suite.GovKeeper.GetGovernanceAccount(ctx) - require.NotNil(t, macc) - require.True(t, suite.BankKeeper.GetAllBalances(ctx, macc.GetAddress()).IsEqual(initialModuleAccCoins)) + macc = suite.GovKeeper.GetGovernanceAccount(ctx) + require.NotNil(t, macc) + require.True(t, suite.BankKeeper.GetAllBalances(ctx, macc.GetAddress()).IsEqual(initialModuleAccCoins)) + }) + } } func TestEndBlockerProposalHandlerFailed(t *testing.T) { diff --git a/x/gov/keeper/proposal.go b/x/gov/keeper/proposal.go index b050b51fcf10..68033019f89a 100644 --- a/x/gov/keeper/proposal.go +++ b/x/gov/keeper/proposal.go @@ -84,7 +84,7 @@ func (keeper Keeper) SubmitProposal(ctx sdk.Context, messages []sdk.Msg, metadat submitTime := ctx.BlockHeader().Time depositPeriod := keeper.GetParams(ctx).MaxDepositPeriod - proposal, err := v1.NewProposal(messages, proposalID, submitTime, submitTime.Add(*depositPeriod), metadata, title, summary, proposer) + proposal, err := v1.NewProposal(messages, proposalID, submitTime, submitTime.Add(*depositPeriod), metadata, title, summary, proposer, false) if err != nil { return v1.Proposal{}, err } diff --git a/x/gov/keeper/proposal_test.go b/x/gov/keeper/proposal_test.go index 876edd6f809d..3cf2b13365a6 100644 --- a/x/gov/keeper/proposal_test.go +++ b/x/gov/keeper/proposal_test.go @@ -150,7 +150,7 @@ func (suite *KeeperTestSuite) TestGetProposalsFiltered() { for _, s := range status { for i := 0; i < 50; i++ { - p, err := v1.NewProposal(TestProposal, proposalID, time.Now(), time.Now(), "", "title", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + p, err := v1.NewProposal(TestProposal, proposalID, time.Now(), time.Now(), "", "title", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) suite.Require().NoError(err) p.Status = s diff --git a/x/gov/migrations/v4/store_test.go b/x/gov/migrations/v4/store_test.go index 8547204b86b2..13083b2f7613 100644 --- a/x/gov/migrations/v4/store_test.go +++ b/x/gov/migrations/v4/store_test.go @@ -75,13 +75,13 @@ func TestMigrateStore(t *testing.T) { // Create 2 proposals prop1Content, err := v1.NewLegacyContent(v1beta1.NewTextProposal("Test", "description"), authtypes.NewModuleAddress("gov").String()) require.NoError(t, err) - proposal1, err := v1.NewProposal([]sdk.Msg{prop1Content}, 1, propTime, propTime, "some metadata for the legacy content", "Test", "description", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + proposal1, err := v1.NewProposal([]sdk.Msg{prop1Content}, 1, propTime, propTime, "some metadata for the legacy content", "Test", "description", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) require.NoError(t, err) prop1Bz, err := cdc.Marshal(&proposal1) require.NoError(t, err) store.Set(v1gov.ProposalKey(proposal1.Id), prop1Bz) - proposal2, err := v1.NewProposal(getTestProposal(), 2, propTime, propTime, "some metadata for the legacy content", "Test", "description", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + proposal2, err := v1.NewProposal(getTestProposal(), 2, propTime, propTime, "some metadata for the legacy content", "Test", "description", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) proposal2.Status = v1.StatusVotingPeriod require.NoError(t, err) prop2Bz, err := cdc.Marshal(&proposal2) diff --git a/x/gov/simulation/operations_test.go b/x/gov/simulation/operations_test.go index 4e5ee7665754..3f1b719ede00 100644 --- a/x/gov/simulation/operations_test.go +++ b/x/gov/simulation/operations_test.go @@ -210,7 +210,7 @@ func TestSimulateMsgDeposit(t *testing.T) { submitTime := ctx.BlockHeader().Time depositPeriod := suite.GovKeeper.GetParams(ctx).MaxDepositPeriod - proposal, err := v1.NewProposal([]sdk.Msg{contentMsg}, 1, submitTime, submitTime.Add(*depositPeriod), "", "text proposal", "description", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + proposal, err := v1.NewProposal([]sdk.Msg{contentMsg}, 1, submitTime, submitTime.Add(*depositPeriod), "", "text proposal", "description", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) require.NoError(t, err) suite.GovKeeper.SetProposal(ctx, proposal) @@ -257,7 +257,7 @@ func TestSimulateMsgVote(t *testing.T) { submitTime := ctx.BlockHeader().Time depositPeriod := suite.GovKeeper.GetParams(ctx).MaxDepositPeriod - proposal, err := v1.NewProposal([]sdk.Msg{contentMsg}, 1, submitTime, submitTime.Add(*depositPeriod), "", "text proposal", "description", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + proposal, err := v1.NewProposal([]sdk.Msg{contentMsg}, 1, submitTime, submitTime.Add(*depositPeriod), "", "text proposal", "description", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) require.NoError(t, err) suite.GovKeeper.ActivateVotingPeriod(ctx, proposal) @@ -301,7 +301,7 @@ func TestSimulateMsgVoteWeighted(t *testing.T) { submitTime := ctx.BlockHeader().Time depositPeriod := suite.GovKeeper.GetParams(ctx).MaxDepositPeriod - proposal, err := v1.NewProposal([]sdk.Msg{contentMsg}, 1, submitTime, submitTime.Add(*depositPeriod), "", "text proposal", "test", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + proposal, err := v1.NewProposal([]sdk.Msg{contentMsg}, 1, submitTime, submitTime.Add(*depositPeriod), "", "text proposal", "test", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) require.NoError(t, err) suite.GovKeeper.ActivateVotingPeriod(ctx, proposal) diff --git a/x/gov/types/v1/proposal.go b/x/gov/types/v1/proposal.go index a9053a529ad9..9a91c9f90f12 100644 --- a/x/gov/types/v1/proposal.go +++ b/x/gov/types/v1/proposal.go @@ -23,7 +23,7 @@ const ( ) // NewProposal creates a new Proposal instance -func NewProposal(messages []sdk.Msg, id uint64, submitTime, depositEndTime time.Time, metadata, title, summary string, proposer sdk.AccAddress) (Proposal, error) { +func NewProposal(messages []sdk.Msg, id uint64, submitTime, depositEndTime time.Time, metadata, title, summary string, proposer sdk.AccAddress, expedited bool) (Proposal, error) { msgs, err := sdktx.SetMsgs(messages) if err != nil { return Proposal{}, err @@ -42,6 +42,7 @@ func NewProposal(messages []sdk.Msg, id uint64, submitTime, depositEndTime time. Title: title, Summary: summary, Proposer: proposer.String(), + Expedited: expedited, } return p, nil diff --git a/x/gov/types/v1/proposals_test.go b/x/gov/types/v1/proposals_test.go index f97d58ac7d31..e76c78f928cf 100644 --- a/x/gov/types/v1/proposals_test.go +++ b/x/gov/types/v1/proposals_test.go @@ -37,7 +37,7 @@ func TestNestedAnys(t *testing.T) { testProposal := v1beta1.NewTextProposal("Proposal", "testing proposal") msgContent, err := v1.NewLegacyContent(testProposal, "cosmos1govacct") require.NoError(t, err) - proposal, err := v1.NewProposal([]sdk.Msg{msgContent}, 1, time.Now(), time.Now(), "", "title", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + proposal, err := v1.NewProposal([]sdk.Msg{msgContent}, 1, time.Now(), time.Now(), "", "title", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) require.NoError(t, err) require.Equal(t, "TODO Fix panic here", proposal.String()) From d8beee4eb638795fb4495672c4fe7f9e1742e39d Mon Sep 17 00:00:00 2001 From: Rex Milce Date: Thu, 30 Nov 2023 00:47:58 +0100 Subject: [PATCH 09/13] add msg submit proposal --- api/cosmos/gov/v1/tx.pulsar.go | 316 +++++++++++++++++++------------- proto/cosmos/gov/v1/tx.proto | 4 + x/bank/app_test.go | 2 + x/gov/abci_test.go | 6 +- x/gov/client/cli/tx.go | 2 +- x/gov/keeper/msg_server.go | 1 + x/gov/keeper/msg_server_test.go | 22 ++- x/gov/simulation/operations.go | 1 + x/gov/types/v1/msgs.go | 3 +- x/gov/types/v1/msgs_test.go | 4 +- x/gov/types/v1/tx.pb.go | 160 ++++++++++------ 11 files changed, 332 insertions(+), 189 deletions(-) diff --git a/api/cosmos/gov/v1/tx.pulsar.go b/api/cosmos/gov/v1/tx.pulsar.go index e2062e7017eb..9723ea2259a2 100644 --- a/api/cosmos/gov/v1/tx.pulsar.go +++ b/api/cosmos/gov/v1/tx.pulsar.go @@ -128,6 +128,7 @@ var ( fd_MsgSubmitProposal_metadata protoreflect.FieldDescriptor fd_MsgSubmitProposal_title protoreflect.FieldDescriptor fd_MsgSubmitProposal_summary protoreflect.FieldDescriptor + fd_MsgSubmitProposal_expedited protoreflect.FieldDescriptor ) func init() { @@ -139,6 +140,7 @@ func init() { fd_MsgSubmitProposal_metadata = md_MsgSubmitProposal.Fields().ByName("metadata") fd_MsgSubmitProposal_title = md_MsgSubmitProposal.Fields().ByName("title") fd_MsgSubmitProposal_summary = md_MsgSubmitProposal.Fields().ByName("summary") + fd_MsgSubmitProposal_expedited = md_MsgSubmitProposal.Fields().ByName("expedited") } var _ protoreflect.Message = (*fastReflection_MsgSubmitProposal)(nil) @@ -242,6 +244,12 @@ func (x *fastReflection_MsgSubmitProposal) Range(f func(protoreflect.FieldDescri return } } + if x.Expedited != false { + value := protoreflect.ValueOfBool(x.Expedited) + if !f(fd_MsgSubmitProposal_expedited, value) { + return + } + } } // Has reports whether a field is populated. @@ -269,6 +277,8 @@ func (x *fastReflection_MsgSubmitProposal) Has(fd protoreflect.FieldDescriptor) return x.Title != "" case "cosmos.gov.v1.MsgSubmitProposal.summary": return x.Summary != "" + case "cosmos.gov.v1.MsgSubmitProposal.expedited": + return x.Expedited != false default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1.MsgSubmitProposal")) @@ -297,6 +307,8 @@ func (x *fastReflection_MsgSubmitProposal) Clear(fd protoreflect.FieldDescriptor x.Title = "" case "cosmos.gov.v1.MsgSubmitProposal.summary": x.Summary = "" + case "cosmos.gov.v1.MsgSubmitProposal.expedited": + x.Expedited = false default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1.MsgSubmitProposal")) @@ -337,6 +349,9 @@ func (x *fastReflection_MsgSubmitProposal) Get(descriptor protoreflect.FieldDesc case "cosmos.gov.v1.MsgSubmitProposal.summary": value := x.Summary return protoreflect.ValueOfString(value) + case "cosmos.gov.v1.MsgSubmitProposal.expedited": + value := x.Expedited + return protoreflect.ValueOfBool(value) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1.MsgSubmitProposal")) @@ -373,6 +388,8 @@ func (x *fastReflection_MsgSubmitProposal) Set(fd protoreflect.FieldDescriptor, x.Title = value.Interface().(string) case "cosmos.gov.v1.MsgSubmitProposal.summary": x.Summary = value.Interface().(string) + case "cosmos.gov.v1.MsgSubmitProposal.expedited": + x.Expedited = value.Bool() default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1.MsgSubmitProposal")) @@ -413,6 +430,8 @@ func (x *fastReflection_MsgSubmitProposal) Mutable(fd protoreflect.FieldDescript panic(fmt.Errorf("field title of message cosmos.gov.v1.MsgSubmitProposal is not mutable")) case "cosmos.gov.v1.MsgSubmitProposal.summary": panic(fmt.Errorf("field summary of message cosmos.gov.v1.MsgSubmitProposal is not mutable")) + case "cosmos.gov.v1.MsgSubmitProposal.expedited": + panic(fmt.Errorf("field expedited of message cosmos.gov.v1.MsgSubmitProposal is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1.MsgSubmitProposal")) @@ -440,6 +459,8 @@ func (x *fastReflection_MsgSubmitProposal) NewField(fd protoreflect.FieldDescrip return protoreflect.ValueOfString("") case "cosmos.gov.v1.MsgSubmitProposal.summary": return protoreflect.ValueOfString("") + case "cosmos.gov.v1.MsgSubmitProposal.expedited": + return protoreflect.ValueOfBool(false) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1.MsgSubmitProposal")) @@ -537,6 +558,9 @@ func (x *fastReflection_MsgSubmitProposal) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } + if x.Expedited { + n += 2 + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -566,6 +590,16 @@ func (x *fastReflection_MsgSubmitProposal) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if x.Expedited { + i-- + if x.Expedited { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x38 + } if len(x.Summary) > 0 { i -= len(x.Summary) copy(dAtA[i:], x.Summary) @@ -871,6 +905,26 @@ func (x *fastReflection_MsgSubmitProposal) ProtoMethods() *protoiface.Methods { } x.Summary = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 7: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Expedited", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.Expedited = bool(v != 0) default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -5982,6 +6036,9 @@ type MsgSubmitProposal struct { // // Since: cosmos-sdk 0.47 Summary string `protobuf:"bytes,6,opt,name=summary,proto3" json:"summary,omitempty"` + // Keep id 7 for Cosmos SDK v0.50 compatibility + // expedited defines if the proposal is expedited or not + Expedited bool `protobuf:"varint,7,opt,name=expedited,proto3" json:"expedited,omitempty"` } func (x *MsgSubmitProposal) Reset() { @@ -6046,6 +6103,13 @@ func (x *MsgSubmitProposal) GetSummary() string { return "" } +func (x *MsgSubmitProposal) GetExpedited() bool { + if x != nil { + return x.Expedited + } + return false +} + // MsgSubmitProposalResponse defines the Msg/SubmitProposal response type. type MsgSubmitProposalResponse struct { state protoimpl.MessageState @@ -6517,7 +6581,7 @@ var file_cosmos_gov_v1_tx_proto_rawDesc = []byte{ 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, - 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc9, 0x02, 0x0a, 0x11, 0x4d, 0x73, 0x67, + 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe7, 0x02, 0x0a, 0x11, 0x4d, 0x73, 0x67, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x30, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, @@ -6535,133 +6599,135 @@ var file_cosmos_gov_v1_tx_proto_rawDesc = []byte{ 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x3a, 0x31, 0x82, 0xe7, 0xb0, 0x2a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, - 0x8a, 0xe7, 0xb0, 0x2a, 0x1f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, - 0x76, 0x31, 0x2f, 0x4d, 0x73, 0x67, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x61, 0x6c, 0x22, 0x3c, 0x0a, 0x19, 0x4d, 0x73, 0x67, 0x53, 0x75, 0x62, 0x6d, 0x69, - 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x49, 0x64, 0x22, 0xbb, 0x01, 0x0a, 0x14, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x4c, 0x65, - 0x67, 0x61, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x4e, 0x0a, 0x07, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, - 0x6e, 0x79, 0x42, 0x1e, 0xca, 0xb4, 0x2d, 0x1a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, - 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x3a, 0x35, 0x82, 0xe7, 0xb0, 0x2a, 0x09, - 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x22, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x76, 0x31, 0x2f, 0x4d, 0x73, 0x67, 0x45, - 0x78, 0x65, 0x63, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x22, 0x1e, 0x0a, 0x1c, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x4c, 0x65, 0x67, 0x61, 0x63, - 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0xe5, 0x01, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x0b, - 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x14, 0xea, 0xde, 0x1f, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, - 0x69, 0x64, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, - 0x6c, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x76, 0x6f, - 0x74, 0x65, 0x72, 0x12, 0x31, 0x0a, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, - 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x3a, 0x24, 0x82, 0xe7, 0xb0, 0x2a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x8a, 0xe7, - 0xb0, 0x2a, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x76, 0x31, - 0x2f, 0x4d, 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x22, 0x11, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x56, - 0x6f, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xff, 0x01, 0x0a, 0x0f, - 0x4d, 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x12, - 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x14, 0xea, 0xde, 0x1f, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x5f, 0x69, 0x64, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, - 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, - 0x56, 0x6f, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, - 0x2c, 0x82, 0xe7, 0xb0, 0x2a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x1d, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x76, 0x31, 0x2f, 0x4d, 0x73, - 0x67, 0x56, 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x22, 0x19, 0x0a, - 0x17, 0x4d, 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe6, 0x01, 0x0a, 0x0a, 0x4d, 0x73, 0x67, - 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x14, 0xea, 0xde, - 0x1f, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0xa8, 0xe7, 0xb0, - 0x2a, 0x01, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x36, - 0x0a, 0x09, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x64, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x12, 0x3c, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, - 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x61, 0x6d, - 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x2b, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x64, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x18, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, - 0x73, 0x64, 0x6b, 0x2f, 0x76, 0x31, 0x2f, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x22, 0x14, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbb, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, - 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x12, 0x38, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, - 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x36, 0x82, - 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, - 0x2a, 0x23, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x78, 0x2f, 0x67, - 0x6f, 0x76, 0x2f, 0x76, 0x31, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x32, 0x8a, 0x04, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x5c, 0x0a, 0x0e, 0x53, 0x75, 0x62, 0x6d, - 0x69, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x20, 0x2e, 0x63, 0x6f, 0x73, + 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x3a, + 0x31, 0x82, 0xe7, 0xb0, 0x2a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x8a, 0xe7, + 0xb0, 0x2a, 0x1f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x76, 0x31, + 0x2f, 0x4d, 0x73, 0x67, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x22, 0x3c, 0x0a, 0x19, 0x4d, 0x73, 0x67, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x50, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, + 0x22, 0xbb, 0x01, 0x0a, 0x14, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x4c, 0x65, 0x67, 0x61, + 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x4e, 0x0a, 0x07, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, + 0x42, 0x1e, 0xca, 0xb4, 0x2d, 0x1a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x3a, 0x35, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x22, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x76, 0x31, 0x2f, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, + 0x63, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x1e, + 0x0a, 0x1c, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe5, + 0x01, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, + 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x14, 0xea, 0xde, 0x1f, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, + 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, + 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x76, 0x6f, 0x74, 0x65, + 0x72, 0x12, 0x31, 0x0a, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, + 0x31, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x3a, 0x24, 0x82, 0xe7, 0xb0, 0x2a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, + 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x76, 0x31, 0x2f, 0x4d, + 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x22, 0x11, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x56, 0x6f, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xff, 0x01, 0x0a, 0x0f, 0x4d, 0x73, + 0x67, 0x56, 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x12, 0x35, 0x0a, + 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x14, 0xea, 0xde, 0x1f, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x5f, 0x69, 0x64, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x76, + 0x6f, 0x74, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, + 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x56, 0x6f, + 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x2c, 0x82, + 0xe7, 0xb0, 0x2a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x1d, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x76, 0x31, 0x2f, 0x4d, 0x73, 0x67, 0x56, + 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x22, 0x19, 0x0a, 0x17, 0x4d, + 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe6, 0x01, 0x0a, 0x0a, 0x4d, 0x73, 0x67, 0x44, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, + 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x14, 0xea, 0xde, 0x1f, 0x0b, + 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, + 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x09, + 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x64, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x12, 0x3c, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, + 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, + 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x3a, 0x2b, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x18, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, + 0x6b, 0x2f, 0x76, 0x31, 0x2f, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x22, + 0x14, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbb, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, + 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x12, 0x38, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, + 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x36, 0x82, 0xe7, 0xb0, + 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x23, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x78, 0x2f, 0x67, 0x6f, 0x76, + 0x2f, 0x76, 0x31, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x8a, + 0x04, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x5c, 0x0a, 0x0e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, + 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x20, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x75, 0x62, 0x6d, + 0x69, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x1a, 0x28, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x1a, 0x28, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, - 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x11, 0x45, 0x78, 0x65, 0x63, 0x4c, 0x65, - 0x67, 0x61, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, - 0x78, 0x65, 0x63, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x1a, 0x2b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, - 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, - 0x04, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x16, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, - 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x1a, 0x1e, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, - 0x67, 0x56, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, - 0x0c, 0x56, 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, - 0x67, 0x56, 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x1a, 0x26, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, - 0x67, 0x56, 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x07, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x12, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, - 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x44, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, - 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1e, + 0x62, 0x6d, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x11, 0x45, 0x78, 0x65, 0x63, 0x4c, 0x65, 0x67, 0x61, + 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, + 0x63, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x1a, 0x2b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, - 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x26, + 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x56, + 0x6f, 0x74, 0x65, 0x12, 0x16, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x1a, 0x1e, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x56, + 0x6f, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x0c, 0x56, + 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x56, + 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x1a, 0x26, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x56, + 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x07, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, - 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0x98, 0x01, - 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, - 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x24, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x67, 0x6f, 0x76, 0x2f, 0x76, 0x31, 0x3b, 0x67, - 0x6f, 0x76, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x47, 0x58, 0xaa, 0x02, 0x0d, 0x43, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x47, 0x6f, 0x76, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0d, 0x43, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x19, 0x43, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, - 0x3a, 0x47, 0x6f, 0x76, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x0c, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1e, 0x2e, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x26, 0x2e, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0x98, 0x01, 0x0a, 0x11, + 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, + 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x24, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x67, 0x6f, 0x76, 0x2f, 0x76, 0x31, 0x3b, 0x67, 0x6f, 0x76, + 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x47, 0x58, 0xaa, 0x02, 0x0d, 0x43, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x47, 0x6f, 0x76, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0d, 0x43, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x19, 0x43, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x47, + 0x6f, 0x76, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/proto/cosmos/gov/v1/tx.proto b/proto/cosmos/gov/v1/tx.proto index 1708066c6598..685a189525c4 100644 --- a/proto/cosmos/gov/v1/tx.proto +++ b/proto/cosmos/gov/v1/tx.proto @@ -66,6 +66,10 @@ message MsgSubmitProposal { // // Since: cosmos-sdk 0.47 string summary = 6; + + // Keep id 7 for Cosmos SDK v0.50 compatibility + // expedited defines if the proposal is expedited or not + bool expedited = 7; } // MsgSubmitProposalResponse defines the Msg/SubmitProposal response type. diff --git a/x/bank/app_test.go b/x/bank/app_test.go index 86f9f9ff0a5f..d803a7d72188 100644 --- a/x/bank/app_test.go +++ b/x/bank/app_test.go @@ -361,6 +361,7 @@ func TestMsgSetSendEnabled(t *testing.T) { "set default send enabled to true", "Change send enabled", "Modify send enabled and set to true", + false, ) require.NoError(t, err, "making goodGovProp") badGovProp, err := govv1.NewMsgSubmitProposal( @@ -372,6 +373,7 @@ func TestMsgSetSendEnabled(t *testing.T) { "set default send enabled to true", "Change send enabled", "Modify send enabled and set to true", + false, ) require.NoError(t, err, "making badGovProp") diff --git a/x/gov/abci_test.go b/x/gov/abci_test.go index 4189806e0436..6033f7472b98 100644 --- a/x/gov/abci_test.go +++ b/x/gov/abci_test.go @@ -44,6 +44,7 @@ func TestTickExpiredDepositPeriod(t *testing.T) { "", "Proposal", "description of proposal", + false, ) require.NoError(t, err) @@ -100,6 +101,7 @@ func TestTickMultipleExpiredDepositPeriod(t *testing.T) { "", "Proposal", "description of proposal", + false, ) require.NoError(t, err) @@ -126,6 +128,7 @@ func TestTickMultipleExpiredDepositPeriod(t *testing.T) { "", "Proposal", "description of proposal", + false, ) require.NoError(t, err) @@ -187,6 +190,7 @@ func TestTickPassedDepositPeriod(t *testing.T) { "", "Proposal", "description of proposal", + false, ) require.NoError(t, err) @@ -240,7 +244,7 @@ func TestTickPassedVotingPeriod(t *testing.T) { activeQueue.Close() proposalCoins := sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, suite.StakingKeeper.TokensFromConsensusPower(ctx, 5))} - newProposalMsg, err := v1.NewMsgSubmitProposal([]sdk.Msg{mkTestLegacyContent(t)}, proposalCoins, addrs[0].String(), "", "Proposal", "description of proposal") + newProposalMsg, err := v1.NewMsgSubmitProposal([]sdk.Msg{mkTestLegacyContent(t)}, proposalCoins, addrs[0].String(), "", "Proposal", "description of proposal", false) require.NoError(t, err) wrapCtx := sdk.WrapSDKContext(ctx) diff --git a/x/gov/client/cli/tx.go b/x/gov/client/cli/tx.go index 16f1ca1d9e75..6dc7f0efd59c 100644 --- a/x/gov/client/cli/tx.go +++ b/x/gov/client/cli/tx.go @@ -136,7 +136,7 @@ metadata example: return err } - msg, err := v1.NewMsgSubmitProposal(msgs, deposit, clientCtx.GetFromAddress().String(), metadata, title, summary) + msg, err := v1.NewMsgSubmitProposal(msgs, deposit, clientCtx.GetFromAddress().String(), metadata, title, summary, false) if err != nil { return fmt.Errorf("invalid message: %w", err) } diff --git a/x/gov/keeper/msg_server.go b/x/gov/keeper/msg_server.go index c66d011552ca..e9f9943227e1 100644 --- a/x/gov/keeper/msg_server.go +++ b/x/gov/keeper/msg_server.go @@ -228,6 +228,7 @@ func (k legacyMsgServer) SubmitProposal(goCtx context.Context, msg *v1beta1.MsgS "", msg.GetContent().GetTitle(), msg.GetContent().GetDescription(), + false, ) if err != nil { return nil, err diff --git a/x/gov/keeper/msg_server_test.go b/x/gov/keeper/msg_server_test.go index 613896ab164f..b2a92bb41e6e 100644 --- a/x/gov/keeper/msg_server_test.go +++ b/x/gov/keeper/msg_server_test.go @@ -41,6 +41,7 @@ func (suite *KeeperTestSuite) TestSubmitProposalReq() { strings.Repeat("1", 300), "Proposal", "description of proposal", + false, ) }, expErr: true, @@ -55,6 +56,7 @@ func (suite *KeeperTestSuite) TestSubmitProposalReq() { "", "Proposal", "description of proposal", + false, ) }, expErr: true, @@ -69,6 +71,7 @@ func (suite *KeeperTestSuite) TestSubmitProposalReq() { "", "Proposal", "description of proposal", + false, ) }, expErr: true, @@ -83,6 +86,7 @@ func (suite *KeeperTestSuite) TestSubmitProposalReq() { "", "Proposal", "description of proposal", + false, ) }, expErr: true, @@ -97,6 +101,7 @@ func (suite *KeeperTestSuite) TestSubmitProposalReq() { "", "Proposal", "description of proposal", + false, ) }, expErr: false, @@ -110,6 +115,7 @@ func (suite *KeeperTestSuite) TestSubmitProposalReq() { "", "Proposal", "description of proposal", + false, ) }, expErr: false, @@ -153,6 +159,7 @@ func (suite *KeeperTestSuite) TestVoteReq() { "", "Proposal", "description of proposal", + false, ) suite.Require().NoError(err) @@ -178,6 +185,7 @@ func (suite *KeeperTestSuite) TestVoteReq() { "", "Proposal", "description of proposal", + false, ) suite.Require().NoError(err) @@ -221,6 +229,7 @@ func (suite *KeeperTestSuite) TestVoteReq() { "", "Proposal", "description of proposal", + false, ) suite.Require().NoError(err) @@ -272,6 +281,7 @@ func (suite *KeeperTestSuite) TestVoteWeightedReq() { "", "Proposal", "description of proposal", + false, ) suite.Require().NoError(err) @@ -298,6 +308,7 @@ func (suite *KeeperTestSuite) TestVoteWeightedReq() { "", "Proposal", "description of proposal", + false, ) suite.Require().NoError(err) @@ -341,6 +352,7 @@ func (suite *KeeperTestSuite) TestVoteWeightedReq() { "", "Proposal", "description of proposal", + false, ) suite.Require().NoError(err) @@ -391,6 +403,7 @@ func (suite *KeeperTestSuite) TestDepositReq() { "", "Proposal", "description of proposal", + false, ) suite.Require().NoError(err) @@ -511,6 +524,7 @@ func (suite *KeeperTestSuite) TestLegacyMsgVote() { "", "Proposal", "description of proposal", + false, ) suite.Require().NoError(err) @@ -536,6 +550,7 @@ func (suite *KeeperTestSuite) TestLegacyMsgVote() { "", "Proposal", "description of proposal", + false, ) suite.Require().NoError(err) @@ -569,6 +584,7 @@ func (suite *KeeperTestSuite) TestLegacyMsgVote() { "", "Proposal", "description of proposal", + false, ) suite.Require().NoError(err) @@ -620,6 +636,7 @@ func (suite *KeeperTestSuite) TestLegacyVoteWeighted() { "", "Proposal", "description of proposal", + false, ) suite.Require().NoError(err) @@ -646,6 +663,7 @@ func (suite *KeeperTestSuite) TestLegacyVoteWeighted() { "", "Proposal", "description of proposal", + false, ) suite.Require().NoError(err) @@ -679,6 +697,7 @@ func (suite *KeeperTestSuite) TestLegacyVoteWeighted() { "", "Proposal", "description of proposal", + false, ) suite.Require().NoError(err) @@ -729,6 +748,7 @@ func (suite *KeeperTestSuite) TestLegacyMsgDeposit() { "", "Proposal", "description of proposal", + false, ) suite.Require().NoError(err) @@ -1107,7 +1127,7 @@ func (suite *KeeperTestSuite) TestSubmitProposal_InitialDeposit() { params.MinInitialDepositRatio = tc.minInitialDepositRatio.String() govKeeper.SetParams(ctx, params) - msg, err := v1.NewMsgSubmitProposal(TestProposal, tc.initialDeposit, address.String(), "test", "Proposal", "description of proposal") + msg, err := v1.NewMsgSubmitProposal(TestProposal, tc.initialDeposit, address.String(), "test", "Proposal", "description of proposal", false) suite.Require().NoError(err) // System under test diff --git a/x/gov/simulation/operations.go b/x/gov/simulation/operations.go index 8cf1af8a5130..6e51534dcac8 100644 --- a/x/gov/simulation/operations.go +++ b/x/gov/simulation/operations.go @@ -204,6 +204,7 @@ func simulateMsgSubmitProposal(ak types.AccountKeeper, bk types.BankKeeper, k *k simtypes.RandStringOfLength(r, 100), simtypes.RandStringOfLength(r, 100), simtypes.RandStringOfLength(r, 100), + false, ) if err != nil { return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate a submit proposal msg"), nil, err diff --git a/x/gov/types/v1/msgs.go b/x/gov/types/v1/msgs.go index f1b1667d59d5..2afd444a1cb8 100644 --- a/x/gov/types/v1/msgs.go +++ b/x/gov/types/v1/msgs.go @@ -22,13 +22,14 @@ var ( // NewMsgSubmitProposal creates a new MsgSubmitProposal. // //nolint:interfacer -func NewMsgSubmitProposal(messages []sdk.Msg, initialDeposit sdk.Coins, proposer, metadata, title, summary string) (*MsgSubmitProposal, error) { +func NewMsgSubmitProposal(messages []sdk.Msg, initialDeposit sdk.Coins, proposer, metadata, title, summary string, expedited bool) (*MsgSubmitProposal, error) { m := &MsgSubmitProposal{ InitialDeposit: initialDeposit, Proposer: proposer, Metadata: metadata, Title: title, Summary: summary, + Expedited: expedited, } anys, err := sdktx.SetMsgs(messages) diff --git a/x/gov/types/v1/msgs_test.go b/x/gov/types/v1/msgs_test.go index 174bc2b6df10..6546a5cfbab6 100644 --- a/x/gov/types/v1/msgs_test.go +++ b/x/gov/types/v1/msgs_test.go @@ -163,7 +163,7 @@ func TestMsgSubmitProposal_ValidateBasic(t *testing.T) { } for _, tc := range tests { - msg, err := v1.NewMsgSubmitProposal(tc.messages, tc.initialDeposit, tc.proposer, tc.metadata, tc.title, tc.summary) + msg, err := v1.NewMsgSubmitProposal(tc.messages, tc.initialDeposit, tc.proposer, tc.metadata, tc.title, tc.summary, false) require.NoError(t, err) if tc.expErr { require.Error(t, msg.ValidateBasic(), "test: %s", tc.name) @@ -200,7 +200,7 @@ func TestMsgSubmitProposal_GetSignBytes(t *testing.T) { for _, tc := range testcases { t.Run(tc.name, func(t *testing.T) { - msg, err := v1.NewMsgSubmitProposal(tc.proposal, sdk.NewCoins(), sdk.AccAddress{}.String(), "", tc.title, tc.summary) + msg, err := v1.NewMsgSubmitProposal(tc.proposal, sdk.NewCoins(), sdk.AccAddress{}.String(), "", tc.title, tc.summary, false) require.NoError(t, err) var bz []byte require.NotPanics(t, func() { diff --git a/x/gov/types/v1/tx.pb.go b/x/gov/types/v1/tx.pb.go index 4a27b2077ef6..131ad19b6d0e 100644 --- a/x/gov/types/v1/tx.pb.go +++ b/x/gov/types/v1/tx.pb.go @@ -52,6 +52,9 @@ type MsgSubmitProposal struct { // // Since: cosmos-sdk 0.47 Summary string `protobuf:"bytes,6,opt,name=summary,proto3" json:"summary,omitempty"` + // Keep id 7 for Cosmos SDK v0.50 compatibility + // expedited defines if the proposal is expedited or not + Expedited bool `protobuf:"varint,7,opt,name=expedited,proto3" json:"expedited,omitempty"` } func (m *MsgSubmitProposal) Reset() { *m = MsgSubmitProposal{} } @@ -129,6 +132,13 @@ func (m *MsgSubmitProposal) GetSummary() string { return "" } +func (m *MsgSubmitProposal) GetExpedited() bool { + if m != nil { + return m.Expedited + } + return false +} + // MsgSubmitProposalResponse defines the Msg/SubmitProposal response type. type MsgSubmitProposalResponse struct { // proposal_id defines the unique id of the proposal. @@ -706,64 +716,65 @@ func init() { func init() { proto.RegisterFile("cosmos/gov/v1/tx.proto", fileDescriptor_9ff8f4a63b6fc9a9) } var fileDescriptor_9ff8f4a63b6fc9a9 = []byte{ - // 908 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0xcf, 0x6f, 0x1b, 0x45, - 0x14, 0xce, 0xe6, 0x87, 0xdd, 0xbc, 0x40, 0xaa, 0x8c, 0xdc, 0x76, 0xbd, 0x2a, 0x9b, 0x74, 0x8b, - 0x50, 0x94, 0x90, 0x5d, 0x1c, 0x68, 0x85, 0x4c, 0x85, 0x54, 0x97, 0x0a, 0x21, 0x61, 0xa8, 0x5c, - 0x51, 0x24, 0x84, 0x14, 0x8d, 0xbd, 0xc3, 0x64, 0x45, 0x76, 0x67, 0xb5, 0x33, 0xb6, 0xe2, 0x1b, - 0xe2, 0xd8, 0x13, 0x7f, 0x06, 0xc7, 0x1c, 0x7a, 0xeb, 0x3f, 0x50, 0x38, 0x55, 0x9c, 0x38, 0x55, - 0x28, 0x11, 0x44, 0xe2, 0x9f, 0x00, 0xcd, 0x8f, 0x5d, 0xff, 0x58, 0xc7, 0xa9, 0x38, 0x70, 0xb1, - 0x76, 0xbe, 0xf7, 0xbd, 0x37, 0xef, 0xfb, 0xf6, 0xcd, 0xac, 0xe1, 0x7a, 0x8f, 0xf1, 0x98, 0xf1, - 0x80, 0xb2, 0x41, 0x30, 0x68, 0x04, 0xe2, 0xd8, 0x4f, 0x33, 0x26, 0x18, 0x7a, 0x53, 0xe3, 0x3e, - 0x65, 0x03, 0x7f, 0xd0, 0x70, 0x5c, 0x43, 0xeb, 0x62, 0x4e, 0x82, 0x41, 0xa3, 0x4b, 0x04, 0x6e, - 0x04, 0x3d, 0x16, 0x25, 0x9a, 0xee, 0xdc, 0x98, 0x2c, 0x23, 0xb3, 0x74, 0xa0, 0x46, 0x19, 0x65, - 0xea, 0x31, 0x90, 0x4f, 0x06, 0xad, 0x6b, 0xfa, 0x81, 0x0e, 0x98, 0xad, 0x4c, 0x88, 0x32, 0x46, - 0x8f, 0x48, 0xa0, 0x56, 0xdd, 0xfe, 0x77, 0x01, 0x4e, 0x86, 0x53, 0x9b, 0xc4, 0x9c, 0xca, 0x4d, - 0x62, 0x4e, 0x4d, 0x60, 0x03, 0xc7, 0x51, 0xc2, 0x02, 0xf5, 0xab, 0x21, 0xef, 0x97, 0x45, 0xd8, - 0x68, 0x73, 0xfa, 0xb8, 0xdf, 0x8d, 0x23, 0xf1, 0x28, 0x63, 0x29, 0xe3, 0xf8, 0x08, 0xbd, 0x07, - 0x57, 0x62, 0xc2, 0x39, 0xa6, 0x84, 0xdb, 0xd6, 0xd6, 0xd2, 0xf6, 0xda, 0x7e, 0xcd, 0xd7, 0xfb, - 0xf9, 0xf9, 0x7e, 0xfe, 0xfd, 0x64, 0xd8, 0x29, 0x58, 0xa8, 0x0d, 0x57, 0xa3, 0x24, 0x12, 0x11, - 0x3e, 0x3a, 0x08, 0x49, 0xca, 0x78, 0x24, 0xec, 0x45, 0x95, 0x58, 0xf7, 0x4d, 0xdb, 0xd2, 0x12, - 0xdf, 0x58, 0xe2, 0x3f, 0x60, 0x51, 0xd2, 0x5a, 0x7d, 0xf1, 0x6a, 0x73, 0xe1, 0xe7, 0xf3, 0x93, - 0x1d, 0xab, 0xb3, 0x6e, 0x92, 0x3f, 0xd1, 0xb9, 0xe8, 0x03, 0xb8, 0x92, 0xaa, 0x66, 0x48, 0x66, - 0x2f, 0x6d, 0x59, 0xdb, 0xab, 0x2d, 0xfb, 0xb7, 0x67, 0x7b, 0x35, 0x53, 0xea, 0x7e, 0x18, 0x66, - 0x84, 0xf3, 0xc7, 0x22, 0x8b, 0x12, 0xda, 0x29, 0x98, 0xc8, 0x91, 0x6d, 0x0b, 0x1c, 0x62, 0x81, - 0xed, 0x65, 0x99, 0xd5, 0x29, 0xd6, 0xa8, 0x06, 0x2b, 0x22, 0x12, 0x47, 0xc4, 0x5e, 0x51, 0x01, - 0xbd, 0x40, 0x36, 0x54, 0x79, 0x3f, 0x8e, 0x71, 0x36, 0xb4, 0x2b, 0x0a, 0xcf, 0x97, 0xcd, 0xc6, - 0x8f, 0xe7, 0x27, 0x3b, 0x45, 0xe9, 0xa7, 0xe7, 0x27, 0x3b, 0x9b, 0x7a, 0xf7, 0x3d, 0x1e, 0x7e, - 0x2f, 0x6d, 0x2d, 0xb9, 0xe6, 0xdd, 0x83, 0x7a, 0x09, 0xec, 0x10, 0x9e, 0xb2, 0x84, 0x13, 0xb4, - 0x09, 0x6b, 0xa9, 0xc1, 0x0e, 0xa2, 0xd0, 0xb6, 0xb6, 0xac, 0xed, 0xe5, 0x0e, 0xe4, 0xd0, 0x67, - 0xa1, 0xf7, 0xdc, 0x82, 0x5a, 0x9b, 0xd3, 0x87, 0xc7, 0xa4, 0xf7, 0x39, 0xa1, 0xb8, 0x37, 0x7c, - 0xc0, 0x12, 0x41, 0x12, 0x81, 0xbe, 0x80, 0x6a, 0x4f, 0x3f, 0xaa, 0xac, 0x0b, 0xde, 0x45, 0xcb, - 0xfd, 0xf5, 0xd9, 0x9e, 0x33, 0x31, 0x8d, 0xb9, 0xd5, 0x2a, 0xb7, 0x93, 0x17, 0x41, 0x37, 0x61, - 0x15, 0xf7, 0xc5, 0x21, 0xcb, 0x22, 0x31, 0xb4, 0x17, 0x95, 0xea, 0x11, 0xd0, 0xbc, 0x23, 0x75, - 0x8f, 0xd6, 0x52, 0xb8, 0x57, 0x12, 0x5e, 0x6a, 0xd2, 0x73, 0xe1, 0xe6, 0x2c, 0x3c, 0x97, 0xef, - 0xfd, 0x69, 0x41, 0xb5, 0xcd, 0xe9, 0x13, 0x26, 0x08, 0xba, 0x33, 0xc3, 0x8a, 0x56, 0xed, 0xef, - 0x57, 0x9b, 0xe3, 0xb0, 0x9e, 0x8b, 0x31, 0x83, 0x90, 0x0f, 0x2b, 0x03, 0x26, 0x48, 0xa6, 0x7b, - 0x9e, 0x33, 0x10, 0x9a, 0x86, 0x1a, 0x50, 0x61, 0xa9, 0x88, 0x58, 0xa2, 0x26, 0x68, 0x7d, 0x34, - 0x89, 0xda, 0x1d, 0x5f, 0xf6, 0xf2, 0xa5, 0x22, 0x74, 0x0c, 0x71, 0xde, 0x00, 0x35, 0xdf, 0x96, - 0xc6, 0xe8, 0xd2, 0xd2, 0x94, 0x6b, 0x25, 0x53, 0x64, 0x3d, 0x6f, 0x03, 0xae, 0x9a, 0xc7, 0x42, - 0xfa, 0x3f, 0x56, 0x81, 0x7d, 0x4d, 0x22, 0x7a, 0x28, 0x48, 0xf8, 0x7f, 0x59, 0xf0, 0x11, 0x54, - 0xb5, 0x32, 0x6e, 0x2f, 0xa9, 0xd3, 0x78, 0x6b, 0xca, 0x83, 0xbc, 0xa1, 0x31, 0x2f, 0xf2, 0x8c, - 0xb9, 0x66, 0xbc, 0x3b, 0x69, 0xc6, 0x5b, 0x33, 0xcd, 0xc8, 0x8b, 0x7b, 0x75, 0xb8, 0x31, 0x05, - 0x15, 0xe6, 0xfc, 0x65, 0x01, 0xb4, 0x39, 0xcd, 0xcf, 0xfd, 0x7f, 0xf4, 0xe5, 0x2e, 0xac, 0x9a, - 0x5b, 0x87, 0x5d, 0xee, 0xcd, 0x88, 0x8a, 0xee, 0x41, 0x05, 0xc7, 0xac, 0x9f, 0x08, 0x63, 0xcf, - 0xeb, 0x5d, 0x56, 0x26, 0xa7, 0xb9, 0xab, 0x8e, 0x4a, 0x51, 0x4d, 0x1a, 0x61, 0x97, 0x8c, 0x30, - 0xca, 0xbc, 0x1a, 0xa0, 0xd1, 0xaa, 0x90, 0xff, 0x5c, 0xcf, 0xc6, 0x57, 0x69, 0x88, 0x05, 0x79, - 0x84, 0x33, 0x1c, 0x73, 0x29, 0x66, 0x74, 0x3e, 0xad, 0xcb, 0xc4, 0x14, 0x54, 0xf4, 0x21, 0x54, - 0x52, 0x55, 0x41, 0x39, 0xb0, 0xb6, 0x7f, 0x6d, 0xea, 0x5d, 0xeb, 0xf2, 0x13, 0x42, 0x34, 0xbf, - 0x79, 0xb7, 0x7c, 0xe6, 0x6f, 0x8f, 0x09, 0x39, 0xce, 0x3f, 0x57, 0x53, 0x9d, 0x9a, 0xf7, 0x3a, - 0x0e, 0xe5, 0xc2, 0xf6, 0x9f, 0x2e, 0xc3, 0x52, 0x9b, 0x53, 0xf4, 0x2d, 0xac, 0x4f, 0x7d, 0x5b, - 0xb6, 0xa6, 0xda, 0x2a, 0x5d, 0x99, 0xce, 0xf6, 0x65, 0x8c, 0xe2, 0x52, 0x25, 0xb0, 0x51, 0xbe, - 0x2f, 0x6f, 0x97, 0xd3, 0x4b, 0x24, 0x67, 0xf7, 0x35, 0x48, 0xc5, 0x36, 0x1f, 0xc3, 0xb2, 0xba, - 0xb8, 0xae, 0x97, 0x93, 0x24, 0xee, 0xb8, 0xb3, 0xf1, 0x22, 0xff, 0x09, 0xbc, 0x31, 0x71, 0xfa, - 0x2f, 0xe0, 0xe7, 0x71, 0xe7, 0x9d, 0xf9, 0xf1, 0xa2, 0xee, 0xa7, 0x50, 0xcd, 0x0f, 0x4e, 0xbd, - 0x9c, 0x62, 0x42, 0xce, 0xad, 0x0b, 0x43, 0xe3, 0x0d, 0x4e, 0x8c, 0xe0, 0x8c, 0x06, 0xc7, 0xe3, - 0xb3, 0x1a, 0x9c, 0x35, 0x05, 0xce, 0xca, 0x0f, 0x72, 0xce, 0x5a, 0x0f, 0x5f, 0x9c, 0xba, 0xd6, - 0xcb, 0x53, 0xd7, 0xfa, 0xe3, 0xd4, 0xb5, 0x7e, 0x3a, 0x73, 0x17, 0x5e, 0x9e, 0xb9, 0x0b, 0xbf, - 0x9f, 0xb9, 0x0b, 0xdf, 0xec, 0xd2, 0x48, 0x1c, 0xf6, 0xbb, 0x7e, 0x8f, 0xc5, 0xe6, 0xef, 0x4d, - 0x50, 0x1a, 0x3c, 0x31, 0x4c, 0x09, 0x97, 0x7f, 0xa6, 0x2a, 0xea, 0x7b, 0xf7, 0xfe, 0xbf, 0x01, - 0x00, 0x00, 0xff, 0xff, 0xc2, 0x00, 0x8f, 0x53, 0x8c, 0x09, 0x00, 0x00, + // 924 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0xcd, 0x6f, 0x1b, 0x45, + 0x14, 0xcf, 0xe6, 0xc3, 0x4e, 0x26, 0x90, 0x2a, 0x23, 0xb7, 0x5d, 0xaf, 0xca, 0xc6, 0xdd, 0x22, + 0x64, 0x25, 0x64, 0x17, 0x07, 0x5a, 0x21, 0x53, 0x21, 0xd5, 0xa5, 0x42, 0x48, 0x18, 0xaa, 0xad, + 0x28, 0x12, 0x42, 0x8a, 0xc6, 0xde, 0x61, 0x32, 0x22, 0xbb, 0xb3, 0xda, 0x19, 0x5b, 0xf1, 0x0d, + 0x71, 0xec, 0x89, 0x3f, 0x83, 0x63, 0x0e, 0xbd, 0xf5, 0x1f, 0xa8, 0x38, 0x55, 0x9c, 0x38, 0x55, + 0x28, 0x11, 0x44, 0xe2, 0x9f, 0x00, 0xcd, 0xc7, 0xae, 0x3f, 0xd6, 0xf9, 0x10, 0x87, 0x5e, 0xac, + 0x99, 0xdf, 0xfb, 0xbd, 0x37, 0xef, 0xfd, 0xe6, 0xcd, 0x5b, 0x83, 0x1b, 0x7d, 0xc6, 0x63, 0xc6, + 0x03, 0xc2, 0x86, 0xc1, 0xb0, 0x15, 0x88, 0x23, 0x3f, 0xcd, 0x98, 0x60, 0xf0, 0x6d, 0x8d, 0xfb, + 0x84, 0x0d, 0xfd, 0x61, 0xcb, 0x71, 0x0d, 0xad, 0x87, 0x38, 0x0e, 0x86, 0xad, 0x1e, 0x16, 0xa8, + 0x15, 0xf4, 0x19, 0x4d, 0x34, 0xdd, 0xb9, 0x39, 0x1d, 0x46, 0x7a, 0x69, 0x43, 0x8d, 0x30, 0xc2, + 0xd4, 0x32, 0x90, 0x2b, 0x83, 0xd6, 0x35, 0x7d, 0x5f, 0x1b, 0xcc, 0x51, 0xc6, 0x44, 0x18, 0x23, + 0x87, 0x38, 0x50, 0xbb, 0xde, 0xe0, 0x87, 0x00, 0x25, 0xa3, 0x99, 0x43, 0x62, 0x4e, 0xe4, 0x21, + 0x31, 0x27, 0xc6, 0xb0, 0x89, 0x62, 0x9a, 0xb0, 0x40, 0xfd, 0x6a, 0xc8, 0x3b, 0x5b, 0x04, 0x9b, + 0x5d, 0x4e, 0x9e, 0x0c, 0x7a, 0x31, 0x15, 0x8f, 0x33, 0x96, 0x32, 0x8e, 0x0e, 0xe1, 0x07, 0x60, + 0x35, 0xc6, 0x9c, 0x23, 0x82, 0xb9, 0x6d, 0x35, 0x96, 0x9a, 0xeb, 0x7b, 0x35, 0x5f, 0x9f, 0xe7, + 0xe7, 0xe7, 0xf9, 0x0f, 0x92, 0x51, 0x58, 0xb0, 0x60, 0x17, 0x5c, 0xa3, 0x09, 0x15, 0x14, 0x1d, + 0xee, 0x47, 0x38, 0x65, 0x9c, 0x0a, 0x7b, 0x51, 0x39, 0xd6, 0x7d, 0x93, 0xb6, 0x94, 0xc4, 0x37, + 0x92, 0xf8, 0x0f, 0x19, 0x4d, 0x3a, 0x6b, 0x2f, 0x5f, 0x6f, 0x2d, 0xfc, 0x7a, 0x76, 0xbc, 0x6d, + 0x85, 0x1b, 0xc6, 0xf9, 0x33, 0xed, 0x0b, 0x3f, 0x02, 0xab, 0xa9, 0x4a, 0x06, 0x67, 0xf6, 0x52, + 0xc3, 0x6a, 0xae, 0x75, 0xec, 0xdf, 0x9f, 0xef, 0xd6, 0x4c, 0xa8, 0x07, 0x51, 0x94, 0x61, 0xce, + 0x9f, 0x88, 0x8c, 0x26, 0x24, 0x2c, 0x98, 0xd0, 0x91, 0x69, 0x0b, 0x14, 0x21, 0x81, 0xec, 0x65, + 0xe9, 0x15, 0x16, 0x7b, 0x58, 0x03, 0x2b, 0x82, 0x8a, 0x43, 0x6c, 0xaf, 0x28, 0x83, 0xde, 0x40, + 0x1b, 0x54, 0xf9, 0x20, 0x8e, 0x51, 0x36, 0xb2, 0x2b, 0x0a, 0xcf, 0xb7, 0xf0, 0x16, 0x58, 0xc3, + 0x47, 0x29, 0x8e, 0xa8, 0xc0, 0x91, 0x5d, 0x6d, 0x58, 0xcd, 0xd5, 0x70, 0x0c, 0xb4, 0x5b, 0x3f, + 0x9f, 0x1d, 0x6f, 0x17, 0x07, 0x3f, 0x3b, 0x3b, 0xde, 0xde, 0xd2, 0xb9, 0xed, 0xf2, 0xe8, 0x47, + 0x29, 0x7a, 0x49, 0x53, 0xef, 0x3e, 0xa8, 0x97, 0xc0, 0x10, 0xf3, 0x94, 0x25, 0x1c, 0xc3, 0x2d, + 0xb0, 0x9e, 0x1a, 0x6c, 0x9f, 0x46, 0xb6, 0xd5, 0xb0, 0x9a, 0xcb, 0x21, 0xc8, 0xa1, 0x2f, 0x22, + 0xef, 0x85, 0x05, 0x6a, 0x5d, 0x4e, 0x1e, 0x1d, 0xe1, 0xfe, 0x97, 0x98, 0xa0, 0xfe, 0xe8, 0x21, + 0x4b, 0x04, 0x4e, 0x04, 0xfc, 0x0a, 0x54, 0xfb, 0x7a, 0xa9, 0xbc, 0xce, 0xb9, 0xa9, 0x8e, 0xfb, + 0xdb, 0xf3, 0x5d, 0x67, 0xaa, 0x57, 0xf3, 0x8b, 0x50, 0xbe, 0x61, 0x1e, 0x44, 0xd6, 0x8d, 0x06, + 0xe2, 0x80, 0x65, 0x54, 0x8c, 0xec, 0x45, 0xa5, 0xc9, 0x18, 0x68, 0xdf, 0x95, 0x75, 0x8f, 0xf7, + 0xb2, 0x70, 0xaf, 0x54, 0x78, 0x29, 0x49, 0xcf, 0x05, 0xb7, 0xe6, 0xe1, 0x79, 0xf9, 0xde, 0x5f, + 0x16, 0xa8, 0x76, 0x39, 0x79, 0xca, 0x04, 0x86, 0x77, 0xe7, 0x48, 0xd1, 0xa9, 0xfd, 0xf3, 0x7a, + 0x6b, 0x12, 0xd6, 0x5d, 0x33, 0x21, 0x10, 0xf4, 0xc1, 0xca, 0x90, 0x09, 0x9c, 0xe9, 0x9c, 0x2f, + 0x68, 0x17, 0x4d, 0x83, 0x2d, 0x50, 0x61, 0xa9, 0xa0, 0x2c, 0x51, 0xfd, 0xb5, 0x31, 0xee, 0x53, + 0xad, 0x8e, 0x2f, 0x73, 0xf9, 0x5a, 0x11, 0x42, 0x43, 0xbc, 0xa8, 0xbd, 0xda, 0xef, 0x4a, 0x61, + 0x74, 0x68, 0x29, 0xca, 0xf5, 0x92, 0x28, 0x32, 0x9e, 0xb7, 0x09, 0xae, 0x99, 0x65, 0x51, 0xfa, + 0xbf, 0x56, 0x81, 0x7d, 0x8b, 0x29, 0x39, 0x10, 0x38, 0x7a, 0x53, 0x12, 0x7c, 0x02, 0xaa, 0xba, + 0x32, 0x6e, 0x2f, 0xa9, 0xb7, 0x7a, 0x7b, 0x46, 0x83, 0x3c, 0xa1, 0x09, 0x2d, 0x72, 0x8f, 0x0b, + 0xc5, 0x78, 0x7f, 0x5a, 0x8c, 0x77, 0xe6, 0x8a, 0x91, 0x07, 0xf7, 0xea, 0xe0, 0xe6, 0x0c, 0x54, + 0x88, 0xf3, 0xb7, 0x05, 0x40, 0x97, 0x93, 0x7c, 0x2a, 0xfc, 0x4f, 0x5d, 0xee, 0x81, 0x35, 0x33, + 0x93, 0xd8, 0xe5, 0xda, 0x8c, 0xa9, 0xf0, 0x3e, 0xa8, 0xa0, 0x98, 0x0d, 0x12, 0x61, 0xe4, 0xb9, + 0xda, 0x28, 0x33, 0x3e, 0xed, 0x1d, 0xf5, 0x54, 0x8a, 0x68, 0x52, 0x08, 0xbb, 0x24, 0x84, 0xa9, + 0xcc, 0xab, 0x01, 0x38, 0xde, 0x15, 0xe5, 0xbf, 0xd0, 0xbd, 0xf1, 0x4d, 0x1a, 0x21, 0x81, 0x1f, + 0xa3, 0x0c, 0xc5, 0x5c, 0x16, 0x33, 0x7e, 0x9f, 0xd6, 0x65, 0xc5, 0x14, 0x54, 0xf8, 0x31, 0xa8, + 0xa4, 0x2a, 0x82, 0x52, 0x60, 0x7d, 0xef, 0xfa, 0xcc, 0x5d, 0xeb, 0xf0, 0x53, 0x85, 0x68, 0x7e, + 0xfb, 0x5e, 0xf9, 0xcd, 0xdf, 0x99, 0x28, 0xe4, 0x28, 0xff, 0x98, 0xcd, 0x64, 0x6a, 0xee, 0x75, + 0x12, 0xca, 0x0b, 0xdb, 0x7b, 0xb6, 0x0c, 0x96, 0xba, 0x9c, 0xc0, 0xef, 0xc1, 0xc6, 0xcc, 0x97, + 0xa7, 0x31, 0x93, 0x56, 0x69, 0x64, 0x3a, 0xcd, 0xcb, 0x18, 0xc5, 0x50, 0xc5, 0x60, 0xb3, 0x3c, + 0x2f, 0xef, 0x94, 0xdd, 0x4b, 0x24, 0x67, 0xe7, 0x0a, 0xa4, 0xe2, 0x98, 0x4f, 0xc1, 0xb2, 0x1a, + 0x5c, 0x37, 0xca, 0x4e, 0x12, 0x77, 0xdc, 0xf9, 0x78, 0xe1, 0xff, 0x14, 0xbc, 0x35, 0xf5, 0xfa, + 0xcf, 0xe1, 0xe7, 0x76, 0xe7, 0xbd, 0x8b, 0xed, 0x45, 0xdc, 0xcf, 0x41, 0x35, 0x7f, 0x38, 0xf5, + 0xb2, 0x8b, 0x31, 0x39, 0xb7, 0xcf, 0x35, 0x4d, 0x26, 0x38, 0xd5, 0x82, 0x73, 0x12, 0x9c, 0xb4, + 0xcf, 0x4b, 0x70, 0x5e, 0x17, 0x38, 0x2b, 0x3f, 0xc9, 0x3e, 0xeb, 0x3c, 0x7a, 0x79, 0xe2, 0x5a, + 0xaf, 0x4e, 0x5c, 0xeb, 0xcf, 0x13, 0xd7, 0xfa, 0xe5, 0xd4, 0x5d, 0x78, 0x75, 0xea, 0x2e, 0xfc, + 0x71, 0xea, 0x2e, 0x7c, 0xb7, 0x43, 0xa8, 0x38, 0x18, 0xf4, 0xfc, 0x3e, 0x8b, 0xcd, 0x9f, 0x9f, + 0xa0, 0xd4, 0x78, 0x62, 0x94, 0x62, 0x2e, 0xff, 0x6a, 0x55, 0xd4, 0xf7, 0xee, 0xc3, 0xff, 0x02, + 0x00, 0x00, 0xff, 0xff, 0x7c, 0x5b, 0x83, 0x61, 0xaa, 0x09, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1066,6 +1077,16 @@ func (m *MsgSubmitProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.Expedited { + i-- + if m.Expedited { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x38 + } if len(m.Summary) > 0 { i -= len(m.Summary) copy(dAtA[i:], m.Summary) @@ -1547,6 +1568,9 @@ func (m *MsgSubmitProposal) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } + if m.Expedited { + n += 2 + } return n } @@ -1941,6 +1965,26 @@ func (m *MsgSubmitProposal) Unmarshal(dAtA []byte) error { } m.Summary = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Expedited", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Expedited = bool(v != 0) default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) From 65c3be9b9c62b51a96786453aa532f94ddfc5d3c Mon Sep 17 00:00:00 2001 From: Rex Milce Date: Sat, 2 Dec 2023 22:27:09 +0100 Subject: [PATCH 10/13] add submit proposal msg --- x/gov/abci_test.go | 4 ++-- x/gov/keeper/deposit_test.go | 4 ++-- x/gov/keeper/grpc_query_test.go | 24 ++++++++++++------------ x/gov/keeper/hooks_test.go | 4 ++-- x/gov/keeper/keeper_test.go | 14 +++++++------- x/gov/keeper/msg_server.go | 2 +- x/gov/keeper/proposal.go | 4 ++-- x/gov/keeper/proposal_test.go | 10 +++++----- x/gov/keeper/vote_test.go | 2 +- 9 files changed, 34 insertions(+), 34 deletions(-) diff --git a/x/gov/abci_test.go b/x/gov/abci_test.go index 6033f7472b98..e98544a27689 100644 --- a/x/gov/abci_test.go +++ b/x/gov/abci_test.go @@ -333,7 +333,7 @@ func TestProposalPassedEndblocker(t *testing.T) { require.NotNil(t, macc) initialModuleAccCoins := suite.BankKeeper.GetAllBalances(ctx, macc.GetAddress()) - proposal, err := suite.GovKeeper.SubmitProposal(ctx, []sdk.Msg{mkTestLegacyContent(t)}, "", "title", "summary", addrs[0]) + proposal, err := suite.GovKeeper.SubmitProposal(ctx, []sdk.Msg{mkTestLegacyContent(t)}, "", "title", "summary", addrs[0], false) require.NoError(t, err) proposalCoins := sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, suite.StakingKeeper.TokensFromConsensusPower(ctx, 10))} @@ -384,7 +384,7 @@ func TestEndBlockerProposalHandlerFailed(t *testing.T) { staking.EndBlocker(ctx, suite.StakingKeeper) msg := banktypes.NewMsgSend(authtypes.NewModuleAddress(types.ModuleName), addrs[0], sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100000)))) - proposal, err := suite.GovKeeper.SubmitProposal(ctx, []sdk.Msg{msg}, "", "Bank Msg Send", "send message", addrs[0]) + proposal, err := suite.GovKeeper.SubmitProposal(ctx, []sdk.Msg{msg}, "", "Bank Msg Send", "send message", addrs[0], false) require.NoError(t, err) proposalCoins := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, suite.StakingKeeper.TokensFromConsensusPower(ctx, 10))) diff --git a/x/gov/keeper/deposit_test.go b/x/gov/keeper/deposit_test.go index 204dc66508ee..7a40f2861e2c 100644 --- a/x/gov/keeper/deposit_test.go +++ b/x/gov/keeper/deposit_test.go @@ -21,7 +21,7 @@ func TestDeposits(t *testing.T) { TestAddrs := simtestutil.AddTestAddrsIncremental(bankKeeper, stakingKeeper, ctx, 2, sdk.NewInt(10000000)) tp := TestProposal - proposal, err := govKeeper.SubmitProposal(ctx, tp, "", "title", "description", TestAddrs[0]) + proposal, err := govKeeper.SubmitProposal(ctx, tp, "", "title", "description", TestAddrs[0], false) require.NoError(t, err) proposalID := proposal.Id @@ -105,7 +105,7 @@ func TestDeposits(t *testing.T) { require.Equal(t, addr1Initial, bankKeeper.GetAllBalances(ctx, TestAddrs[1])) // Test delete and burn deposits - proposal, err = govKeeper.SubmitProposal(ctx, tp, "", "title", "description", TestAddrs[0]) + proposal, err = govKeeper.SubmitProposal(ctx, tp, "", "title", "description", TestAddrs[0], false) require.NoError(t, err) proposalID = proposal.Id _, err = govKeeper.AddDeposit(ctx, proposalID, TestAddrs[0], fourStake) diff --git a/x/gov/keeper/grpc_query_test.go b/x/gov/keeper/grpc_query_test.go index 9cdd3aac11ac..b5c6f12d06ac 100644 --- a/x/gov/keeper/grpc_query_test.go +++ b/x/gov/keeper/grpc_query_test.go @@ -57,7 +57,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryProposal() { testProposal := v1beta1.NewTextProposal("Proposal", "testing proposal") msgContent, err := v1.NewLegacyContent(testProposal, govAcct.String()) suite.Require().NoError(err) - submittedProposal, err := suite.govKeeper.SubmitProposal(ctx, []sdk.Msg{msgContent}, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + submittedProposal, err := suite.govKeeper.SubmitProposal(ctx, []sdk.Msg{msgContent}, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) suite.Require().NoError(err) suite.Require().NotEmpty(submittedProposal) @@ -132,7 +132,7 @@ func (suite *KeeperTestSuite) TestLegacyGRPCQueryProposal() { testProposal := v1beta1.NewTextProposal("Proposal", "testing proposal") msgContent, err := v1.NewLegacyContent(testProposal, govAcct.String()) suite.Require().NoError(err) - submittedProposal, err := suite.govKeeper.SubmitProposal(ctx, []sdk.Msg{msgContent}, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + submittedProposal, err := suite.govKeeper.SubmitProposal(ctx, []sdk.Msg{msgContent}, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) suite.Require().NoError(err) suite.Require().NotEmpty(submittedProposal) @@ -198,7 +198,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryProposals() { testProposal := []sdk.Msg{ v1.NewMsgVote(govAddress, uint64(i), v1.OptionYes, ""), } - proposal, err := suite.govKeeper.SubmitProposal(ctx, testProposal, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + proposal, err := suite.govKeeper.SubmitProposal(ctx, testProposal, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) suite.Require().NotEmpty(proposal) suite.Require().NoError(err) testProposals = append(testProposals, &proposal) @@ -336,7 +336,7 @@ func (suite *KeeperTestSuite) TestLegacyGRPCQueryProposals() { testProposal := v1beta1.NewTextProposal("Proposal", "testing proposal") msgContent, err := v1.NewLegacyContent(testProposal, govAcct.String()) suite.Require().NoError(err) - submittedProposal, err := suite.govKeeper.SubmitProposal(ctx, []sdk.Msg{msgContent}, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + submittedProposal, err := suite.govKeeper.SubmitProposal(ctx, []sdk.Msg{msgContent}, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) suite.Require().NoError(err) suite.Require().NotEmpty(submittedProposal) }, @@ -417,7 +417,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryVote() { "no votes present", func() { var err error - proposal, err = suite.govKeeper.SubmitProposal(ctx, TestProposal, "", "test", "summary", addrs[0]) + proposal, err = suite.govKeeper.SubmitProposal(ctx, TestProposal, "", "test", "summary", addrs[0], false) suite.Require().NoError(err) req = &v1.QueryVoteRequest{ @@ -531,7 +531,7 @@ func (suite *KeeperTestSuite) TestLegacyGRPCQueryVote() { "no votes present", func() { var err error - proposal, err = suite.govKeeper.SubmitProposal(ctx, TestProposal, "", "test", "summary", addrs[0]) + proposal, err = suite.govKeeper.SubmitProposal(ctx, TestProposal, "", "test", "summary", addrs[0], false) suite.Require().NoError(err) req = &v1beta1.QueryVoteRequest{ @@ -637,7 +637,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryVotes() { "create a proposal and get votes", func() { var err error - proposal, err = suite.govKeeper.SubmitProposal(ctx, TestProposal, "", "test", "summary", addrs[0]) + proposal, err = suite.govKeeper.SubmitProposal(ctx, TestProposal, "", "test", "summary", addrs[0], false) suite.Require().NoError(err) req = &v1.QueryVotesRequest{ @@ -739,7 +739,7 @@ func (suite *KeeperTestSuite) TestLegacyGRPCQueryVotes() { "create a proposal and get votes", func() { var err error - proposal, err = suite.govKeeper.SubmitProposal(ctx, TestProposal, "", "test", "summary", addrs[0]) + proposal, err = suite.govKeeper.SubmitProposal(ctx, TestProposal, "", "test", "summary", addrs[0], false) suite.Require().NoError(err) req = &v1beta1.QueryVotesRequest{ @@ -1024,7 +1024,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryDeposit() { "no deposits proposal", func() { var err error - proposal, err = suite.govKeeper.SubmitProposal(ctx, TestProposal, "", "test", "summary", addrs[0]) + proposal, err = suite.govKeeper.SubmitProposal(ctx, TestProposal, "", "test", "summary", addrs[0], false) suite.Require().NoError(err) suite.Require().NotNil(proposal) @@ -1125,7 +1125,7 @@ func (suite *KeeperTestSuite) TestLegacyGRPCQueryDeposit() { "no deposits proposal", func() { var err error - proposal, err = suite.govKeeper.SubmitProposal(ctx, TestProposal, "", "test", "summary", addrs[0]) + proposal, err = suite.govKeeper.SubmitProposal(ctx, TestProposal, "", "test", "summary", addrs[0], false) suite.Require().NoError(err) suite.Require().NotNil(proposal) @@ -1215,7 +1215,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryDeposits() { "create a proposal and get deposits", func() { var err error - proposal, err = suite.govKeeper.SubmitProposal(ctx, TestProposal, "", "test", "summary", addrs[0]) + proposal, err = suite.govKeeper.SubmitProposal(ctx, TestProposal, "", "test", "summary", addrs[0], false) suite.Require().NoError(err) req = &v1.QueryDepositsRequest{ @@ -1309,7 +1309,7 @@ func (suite *KeeperTestSuite) TestLegacyGRPCQueryDeposits() { "create a proposal and get deposits", func() { var err error - proposal, err = suite.govKeeper.SubmitProposal(ctx, TestProposal, "", "test", "summary", addrs[0]) + proposal, err = suite.govKeeper.SubmitProposal(ctx, TestProposal, "", "test", "summary", addrs[0], false) suite.Require().NoError(err) req = &v1beta1.QueryDepositsRequest{ diff --git a/x/gov/keeper/hooks_test.go b/x/gov/keeper/hooks_test.go index cf07cd121329..48068877e513 100644 --- a/x/gov/keeper/hooks_test.go +++ b/x/gov/keeper/hooks_test.go @@ -63,7 +63,7 @@ func TestHooks(t *testing.T) { require.False(t, govHooksReceiver.AfterProposalVotingPeriodEndedValid) tp := TestProposal - _, err := govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + _, err := govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) require.NoError(t, err) require.True(t, govHooksReceiver.AfterProposalSubmissionValid) @@ -74,7 +74,7 @@ func TestHooks(t *testing.T) { require.True(t, govHooksReceiver.AfterProposalFailedMinDepositValid) - p2, err := govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + p2, err := govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) require.NoError(t, err) activated, err := govKeeper.AddDeposit(ctx, p2.Id, addrs[0], minDeposit) diff --git a/x/gov/keeper/keeper_test.go b/x/gov/keeper/keeper_test.go index 9e8d2009bca0..7ae12f8895da 100644 --- a/x/gov/keeper/keeper_test.go +++ b/x/gov/keeper/keeper_test.go @@ -74,17 +74,17 @@ func TestIncrementProposalNumber(t *testing.T) { govKeeper, _, _, _, _, ctx := setupGovKeeper(t) tp := TestProposal - _, err := govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + _, err := govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) require.NoError(t, err) - _, err = govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + _, err = govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) require.NoError(t, err) - _, err = govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + _, err = govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) require.NoError(t, err) - _, err = govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + _, err = govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) require.NoError(t, err) - _, err = govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + _, err = govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) require.NoError(t, err) - proposal6, err := govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + proposal6, err := govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) require.NoError(t, err) require.Equal(t, uint64(6), proposal6.Id) @@ -95,7 +95,7 @@ func TestProposalQueues(t *testing.T) { // create test proposals tp := TestProposal - proposal, err := govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + proposal, err := govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) require.NoError(t, err) inactiveIterator := govKeeper.InactiveProposalQueueIterator(ctx, *proposal.DepositEndTime) diff --git a/x/gov/keeper/msg_server.go b/x/gov/keeper/msg_server.go index e9f9943227e1..14097a8baf20 100644 --- a/x/gov/keeper/msg_server.go +++ b/x/gov/keeper/msg_server.go @@ -47,7 +47,7 @@ func (k msgServer) SubmitProposal(goCtx context.Context, msg *v1.MsgSubmitPropos return nil, err } - proposal, err := k.Keeper.SubmitProposal(ctx, proposalMsgs, msg.Metadata, msg.Title, msg.Summary, proposer) + proposal, err := k.Keeper.SubmitProposal(ctx, proposalMsgs, msg.Metadata, msg.Title, msg.Summary, proposer, msg.Expedited) if err != nil { return nil, err } diff --git a/x/gov/keeper/proposal.go b/x/gov/keeper/proposal.go index 68033019f89a..3f3725383fb0 100644 --- a/x/gov/keeper/proposal.go +++ b/x/gov/keeper/proposal.go @@ -12,7 +12,7 @@ import ( ) // SubmitProposal creates a new proposal given an array of messages -func (keeper Keeper) SubmitProposal(ctx sdk.Context, messages []sdk.Msg, metadata, title, summary string, proposer sdk.AccAddress) (v1.Proposal, error) { +func (keeper Keeper) SubmitProposal(ctx sdk.Context, messages []sdk.Msg, metadata, title, summary string, proposer sdk.AccAddress, isExpedited bool) (v1.Proposal, error) { err := keeper.assertMetadataLength(metadata) if err != nil { return v1.Proposal{}, err @@ -84,7 +84,7 @@ func (keeper Keeper) SubmitProposal(ctx sdk.Context, messages []sdk.Msg, metadat submitTime := ctx.BlockHeader().Time depositPeriod := keeper.GetParams(ctx).MaxDepositPeriod - proposal, err := v1.NewProposal(messages, proposalID, submitTime, submitTime.Add(*depositPeriod), metadata, title, summary, proposer, false) + proposal, err := v1.NewProposal(messages, proposalID, submitTime, submitTime.Add(*depositPeriod), metadata, title, summary, proposer, isExpedited) if err != nil { return v1.Proposal{}, err } diff --git a/x/gov/keeper/proposal_test.go b/x/gov/keeper/proposal_test.go index 3cf2b13365a6..2a7aa9b3f7ee 100644 --- a/x/gov/keeper/proposal_test.go +++ b/x/gov/keeper/proposal_test.go @@ -18,7 +18,7 @@ import ( func (suite *KeeperTestSuite) TestGetSetProposal() { tp := TestProposal - proposal, err := suite.govKeeper.SubmitProposal(suite.ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + proposal, err := suite.govKeeper.SubmitProposal(suite.ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) suite.Require().NoError(err) proposalID := proposal.Id suite.govKeeper.SetProposal(suite.ctx, proposal) @@ -36,7 +36,7 @@ func (suite *KeeperTestSuite) TestDeleteProposal() { }, ) tp := TestProposal - proposal, err := suite.govKeeper.SubmitProposal(suite.ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + proposal, err := suite.govKeeper.SubmitProposal(suite.ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) suite.Require().NoError(err) proposalID := proposal.Id suite.govKeeper.SetProposal(suite.ctx, proposal) @@ -47,7 +47,7 @@ func (suite *KeeperTestSuite) TestDeleteProposal() { func (suite *KeeperTestSuite) TestActivateVotingPeriod() { tp := TestProposal - proposal, err := suite.govKeeper.SubmitProposal(suite.ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + proposal, err := suite.govKeeper.SubmitProposal(suite.ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) suite.Require().NoError(err) suite.Require().Nil(proposal.VotingStartTime) @@ -74,7 +74,7 @@ func (suite *KeeperTestSuite) TestActivateVotingPeriod() { func (suite *KeeperTestSuite) TestDeleteProposalInVotingPeriod() { suite.reset() tp := TestProposal - proposal, err := suite.govKeeper.SubmitProposal(suite.ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + proposal, err := suite.govKeeper.SubmitProposal(suite.ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) suite.Require().NoError(err) suite.Require().Nil(proposal.VotingStartTime) @@ -137,7 +137,7 @@ func (suite *KeeperTestSuite) TestSubmitProposal() { for i, tc := range testCases { prop, err := v1.NewLegacyContent(tc.content, tc.authority) suite.Require().NoError(err) - _, err = suite.govKeeper.SubmitProposal(suite.ctx, []sdk.Msg{prop}, tc.metadata, "title", "", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + _, err = suite.govKeeper.SubmitProposal(suite.ctx, []sdk.Msg{prop}, tc.metadata, "title", "", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) suite.Require().True(errors.Is(tc.expectedErr, err), "tc #%d; got: %v, expected: %v", i, err, tc.expectedErr) } } diff --git a/x/gov/keeper/vote_test.go b/x/gov/keeper/vote_test.go index 048b75c38d0c..913d3b9f4e38 100644 --- a/x/gov/keeper/vote_test.go +++ b/x/gov/keeper/vote_test.go @@ -15,7 +15,7 @@ func TestVotes(t *testing.T) { addrs := simtestutil.AddTestAddrsIncremental(bankKeeper, stakingKeeper, ctx, 2, sdk.NewInt(10000000)) tp := TestProposal - proposal, err := govKeeper.SubmitProposal(ctx, tp, "", "title", "description", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r")) + proposal, err := govKeeper.SubmitProposal(ctx, tp, "", "title", "description", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) require.NoError(t, err) proposalID := proposal.Id metadata := "metadata" From 17d1a16fccced8a553ee0b108b8d7259cc91f93c Mon Sep 17 00:00:00 2001 From: Rex Milce Date: Mon, 4 Dec 2023 02:17:34 +0100 Subject: [PATCH 11/13] fix some other tests --- api/cosmos/gov/v1/gov.pulsar.go | 282 ++++++++++++++++++++++------ proto/cosmos/gov/v1/gov.proto | 10 + x/gov/client/cli/tx.go | 15 +- x/gov/client/cli/util.go | 23 +-- x/gov/client/cli/util_test.go | 12 +- x/gov/keeper/deposit.go | 14 +- x/gov/keeper/deposit_test.go | 20 +- x/gov/keeper/export_test.go | 4 +- x/gov/keeper/msg_server.go | 2 +- x/gov/keeper/proposal.go | 8 +- x/gov/keeper/tally.go | 11 +- x/gov/migrations/v4/json_test.go | 2 + x/gov/types/v1/gov.pb.go | 303 +++++++++++++++++++++---------- x/gov/types/v1/params.go | 4 +- x/gov/types/v1/proposal.go | 10 + 15 files changed, 544 insertions(+), 176 deletions(-) diff --git a/api/cosmos/gov/v1/gov.pulsar.go b/api/cosmos/gov/v1/gov.pulsar.go index 3101778362b7..8045a6c44206 100644 --- a/api/cosmos/gov/v1/gov.pulsar.go +++ b/api/cosmos/gov/v1/gov.pulsar.go @@ -5475,6 +5475,8 @@ var ( fd_Params_threshold protoreflect.FieldDescriptor fd_Params_veto_threshold protoreflect.FieldDescriptor fd_Params_min_initial_deposit_ratio protoreflect.FieldDescriptor + fd_Params_expedited_voting_period protoreflect.FieldDescriptor + fd_Params_expedited_threshold protoreflect.FieldDescriptor fd_Params_expedited_min_deposit protoreflect.FieldDescriptor fd_Params_burn_vote_quorum protoreflect.FieldDescriptor fd_Params_burn_proposal_deposit_prevote protoreflect.FieldDescriptor @@ -5491,6 +5493,8 @@ func init() { fd_Params_threshold = md_Params.Fields().ByName("threshold") fd_Params_veto_threshold = md_Params.Fields().ByName("veto_threshold") fd_Params_min_initial_deposit_ratio = md_Params.Fields().ByName("min_initial_deposit_ratio") + fd_Params_expedited_voting_period = md_Params.Fields().ByName("expedited_voting_period") + fd_Params_expedited_threshold = md_Params.Fields().ByName("expedited_threshold") fd_Params_expedited_min_deposit = md_Params.Fields().ByName("expedited_min_deposit") fd_Params_burn_vote_quorum = md_Params.Fields().ByName("burn_vote_quorum") fd_Params_burn_proposal_deposit_prevote = md_Params.Fields().ByName("burn_proposal_deposit_prevote") @@ -5604,6 +5608,18 @@ func (x *fastReflection_Params) Range(f func(protoreflect.FieldDescriptor, proto return } } + if x.ExpeditedVotingPeriod != nil { + value := protoreflect.ValueOfMessage(x.ExpeditedVotingPeriod.ProtoReflect()) + if !f(fd_Params_expedited_voting_period, value) { + return + } + } + if x.ExpeditedThreshold != "" { + value := protoreflect.ValueOfString(x.ExpeditedThreshold) + if !f(fd_Params_expedited_threshold, value) { + return + } + } if len(x.ExpeditedMinDeposit) != 0 { value := protoreflect.ValueOfList(&_Params_12_list{list: &x.ExpeditedMinDeposit}) if !f(fd_Params_expedited_min_deposit, value) { @@ -5657,6 +5673,10 @@ func (x *fastReflection_Params) Has(fd protoreflect.FieldDescriptor) bool { return x.VetoThreshold != "" case "cosmos.gov.v1.Params.min_initial_deposit_ratio": return x.MinInitialDepositRatio != "" + case "cosmos.gov.v1.Params.expedited_voting_period": + return x.ExpeditedVotingPeriod != nil + case "cosmos.gov.v1.Params.expedited_threshold": + return x.ExpeditedThreshold != "" case "cosmos.gov.v1.Params.expedited_min_deposit": return len(x.ExpeditedMinDeposit) != 0 case "cosmos.gov.v1.Params.burn_vote_quorum": @@ -5695,6 +5715,10 @@ func (x *fastReflection_Params) Clear(fd protoreflect.FieldDescriptor) { x.VetoThreshold = "" case "cosmos.gov.v1.Params.min_initial_deposit_ratio": x.MinInitialDepositRatio = "" + case "cosmos.gov.v1.Params.expedited_voting_period": + x.ExpeditedVotingPeriod = nil + case "cosmos.gov.v1.Params.expedited_threshold": + x.ExpeditedThreshold = "" case "cosmos.gov.v1.Params.expedited_min_deposit": x.ExpeditedMinDeposit = nil case "cosmos.gov.v1.Params.burn_vote_quorum": @@ -5743,6 +5767,12 @@ func (x *fastReflection_Params) Get(descriptor protoreflect.FieldDescriptor) pro case "cosmos.gov.v1.Params.min_initial_deposit_ratio": value := x.MinInitialDepositRatio return protoreflect.ValueOfString(value) + case "cosmos.gov.v1.Params.expedited_voting_period": + value := x.ExpeditedVotingPeriod + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "cosmos.gov.v1.Params.expedited_threshold": + value := x.ExpeditedThreshold + return protoreflect.ValueOfString(value) case "cosmos.gov.v1.Params.expedited_min_deposit": if len(x.ExpeditedMinDeposit) == 0 { return protoreflect.ValueOfList(&_Params_12_list{}) @@ -5794,6 +5824,10 @@ func (x *fastReflection_Params) Set(fd protoreflect.FieldDescriptor, value proto x.VetoThreshold = value.Interface().(string) case "cosmos.gov.v1.Params.min_initial_deposit_ratio": x.MinInitialDepositRatio = value.Interface().(string) + case "cosmos.gov.v1.Params.expedited_voting_period": + x.ExpeditedVotingPeriod = value.Message().Interface().(*durationpb.Duration) + case "cosmos.gov.v1.Params.expedited_threshold": + x.ExpeditedThreshold = value.Interface().(string) case "cosmos.gov.v1.Params.expedited_min_deposit": lv := value.List() clv := lv.(*_Params_12_list) @@ -5840,6 +5874,11 @@ func (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protore x.VotingPeriod = new(durationpb.Duration) } return protoreflect.ValueOfMessage(x.VotingPeriod.ProtoReflect()) + case "cosmos.gov.v1.Params.expedited_voting_period": + if x.ExpeditedVotingPeriod == nil { + x.ExpeditedVotingPeriod = new(durationpb.Duration) + } + return protoreflect.ValueOfMessage(x.ExpeditedVotingPeriod.ProtoReflect()) case "cosmos.gov.v1.Params.expedited_min_deposit": if x.ExpeditedMinDeposit == nil { x.ExpeditedMinDeposit = []*v1beta1.Coin{} @@ -5854,6 +5893,8 @@ func (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protore panic(fmt.Errorf("field veto_threshold of message cosmos.gov.v1.Params is not mutable")) case "cosmos.gov.v1.Params.min_initial_deposit_ratio": panic(fmt.Errorf("field min_initial_deposit_ratio of message cosmos.gov.v1.Params is not mutable")) + case "cosmos.gov.v1.Params.expedited_threshold": + panic(fmt.Errorf("field expedited_threshold of message cosmos.gov.v1.Params is not mutable")) case "cosmos.gov.v1.Params.burn_vote_quorum": panic(fmt.Errorf("field burn_vote_quorum of message cosmos.gov.v1.Params is not mutable")) case "cosmos.gov.v1.Params.burn_proposal_deposit_prevote": @@ -5890,6 +5931,11 @@ func (x *fastReflection_Params) NewField(fd protoreflect.FieldDescriptor) protor return protoreflect.ValueOfString("") case "cosmos.gov.v1.Params.min_initial_deposit_ratio": return protoreflect.ValueOfString("") + case "cosmos.gov.v1.Params.expedited_voting_period": + m := new(durationpb.Duration) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "cosmos.gov.v1.Params.expedited_threshold": + return protoreflect.ValueOfString("") case "cosmos.gov.v1.Params.expedited_min_deposit": list := []*v1beta1.Coin{} return protoreflect.ValueOfList(&_Params_12_list{list: &list}) @@ -5998,6 +6044,14 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } + if x.ExpeditedVotingPeriod != nil { + l = options.Size(x.ExpeditedVotingPeriod) + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.ExpeditedThreshold) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } if len(x.ExpeditedMinDeposit) > 0 { for _, e := range x.ExpeditedMinDeposit { l = options.Size(e) @@ -6088,6 +6142,27 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { dAtA[i] = 0x62 } } + if len(x.ExpeditedThreshold) > 0 { + i -= len(x.ExpeditedThreshold) + copy(dAtA[i:], x.ExpeditedThreshold) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ExpeditedThreshold))) + i-- + dAtA[i] = 0x5a + } + if x.ExpeditedVotingPeriod != nil { + encoded, err := options.Marshal(x.ExpeditedVotingPeriod) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x52 + } if len(x.MinInitialDepositRatio) > 0 { i -= len(x.MinInitialDepositRatio) copy(dAtA[i:], x.MinInitialDepositRatio) @@ -6443,6 +6518,74 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { } x.MinInitialDepositRatio = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 10: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ExpeditedVotingPeriod", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.ExpeditedVotingPeriod == nil { + x.ExpeditedVotingPeriod = &durationpb.Duration{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.ExpeditedVotingPeriod); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ExpeditedThreshold", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.ExpeditedThreshold = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex case 12: if wireType != 2 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ExpeditedMinDeposit", wireType) @@ -7277,6 +7420,14 @@ type Params struct { VetoThreshold string `protobuf:"bytes,6,opt,name=veto_threshold,json=vetoThreshold,proto3" json:"veto_threshold,omitempty"` // The ratio representing the proportion of the deposit value that must be paid at proposal submission. MinInitialDepositRatio string `protobuf:"bytes,7,opt,name=min_initial_deposit_ratio,json=minInitialDepositRatio,proto3" json:"min_initial_deposit_ratio,omitempty"` + // Duration of the voting period of an expedited proposal. + // + // Since: cosmos-sdk 0.50 + ExpeditedVotingPeriod *durationpb.Duration `protobuf:"bytes,10,opt,name=expedited_voting_period,json=expeditedVotingPeriod,proto3" json:"expedited_voting_period,omitempty"` + // Minimum proportion of Yes votes for proposal to pass. Default value: 0.67. + // + // Since: cosmos-sdk 0.50 + ExpeditedThreshold string `protobuf:"bytes,11,opt,name=expedited_threshold,json=expeditedThreshold,proto3" json:"expedited_threshold,omitempty"` // Minimum expedited deposit for a proposal to enter voting period. ExpeditedMinDeposit []*v1beta1.Coin `protobuf:"bytes,12,rep,name=expedited_min_deposit,json=expeditedMinDeposit,proto3" json:"expedited_min_deposit,omitempty"` // burn deposits if a proposal does not meet quorum @@ -7356,6 +7507,20 @@ func (x *Params) GetMinInitialDepositRatio() string { return "" } +func (x *Params) GetExpeditedVotingPeriod() *durationpb.Duration { + if x != nil { + return x.ExpeditedVotingPeriod + } + return nil +} + +func (x *Params) GetExpeditedThreshold() string { + if x != nil { + return x.ExpeditedThreshold + } + return "" +} + func (x *Params) GetExpeditedMinDeposit() []*v1beta1.Coin { if x != nil { return x.ExpeditedMinDeposit @@ -7519,7 +7684,7 @@ var file_cosmos_gov_v1_gov_proto_rawDesc = []byte{ 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0d, 0x76, 0x65, 0x74, 0x6f, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, - 0x22, 0xa9, 0x05, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x45, 0x0a, 0x0b, 0x6d, + 0x22, 0xc3, 0x06, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x45, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, @@ -7547,53 +7712,63 @@ var file_cosmos_gov_v1_gov_proto_rawDesc = []byte{ 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x16, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, - 0x58, 0x0a, 0x15, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, - 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, - 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x13, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x4d, - 0x69, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x75, 0x72, - 0x6e, 0x5f, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, 0x75, 0x72, 0x6e, 0x56, 0x6f, 0x74, 0x65, 0x51, 0x75, 0x6f, - 0x72, 0x75, 0x6d, 0x12, 0x41, 0x0a, 0x1d, 0x62, 0x75, 0x72, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x70, 0x72, 0x65, - 0x76, 0x6f, 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x62, 0x75, 0x72, 0x6e, - 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50, - 0x72, 0x65, 0x76, 0x6f, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x62, 0x75, 0x72, 0x6e, 0x5f, 0x76, - 0x6f, 0x74, 0x65, 0x5f, 0x76, 0x65, 0x74, 0x6f, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, - 0x62, 0x75, 0x72, 0x6e, 0x56, 0x6f, 0x74, 0x65, 0x56, 0x65, 0x74, 0x6f, 0x2a, 0x89, 0x01, 0x0a, - 0x0a, 0x56, 0x6f, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x56, - 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x4f, 0x54, 0x45, - 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x59, 0x45, 0x53, 0x10, 0x01, 0x12, 0x17, 0x0a, - 0x13, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x42, 0x53, - 0x54, 0x41, 0x49, 0x4e, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, - 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x56, 0x4f, - 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x5f, 0x57, 0x49, 0x54, - 0x48, 0x5f, 0x56, 0x45, 0x54, 0x4f, 0x10, 0x04, 0x2a, 0xce, 0x01, 0x0a, 0x0e, 0x50, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x50, - 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, - 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, - 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x10, 0x01, - 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x55, 0x53, 0x5f, 0x56, 0x4f, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, - 0x44, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x45, 0x44, 0x10, 0x03, 0x12, - 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x55, 0x53, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x1a, 0x0a, + 0x57, 0x0a, 0x17, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x6f, 0x74, + 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0x98, 0xdf, 0x1f, + 0x01, 0x52, 0x15, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x56, 0x6f, 0x74, 0x69, + 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x3f, 0x0a, 0x13, 0x65, 0x78, 0x70, 0x65, + 0x64, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x12, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, + 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x58, 0x0a, 0x15, 0x65, 0x78, 0x70, + 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, + 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x13, + 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x4d, 0x69, 0x6e, 0x44, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x75, 0x72, 0x6e, 0x5f, 0x76, 0x6f, 0x74, 0x65, + 0x5f, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, + 0x75, 0x72, 0x6e, 0x56, 0x6f, 0x74, 0x65, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x12, 0x41, 0x0a, + 0x1d, 0x62, 0x75, 0x72, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x64, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x6f, 0x74, 0x65, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x62, 0x75, 0x72, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50, 0x72, 0x65, 0x76, 0x6f, 0x74, 0x65, + 0x12, 0x24, 0x0a, 0x0e, 0x62, 0x75, 0x72, 0x6e, 0x5f, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x76, 0x65, + 0x74, 0x6f, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x62, 0x75, 0x72, 0x6e, 0x56, 0x6f, + 0x74, 0x65, 0x56, 0x65, 0x74, 0x6f, 0x2a, 0x89, 0x01, 0x0a, 0x0a, 0x56, 0x6f, 0x74, 0x65, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x59, 0x45, 0x53, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x56, 0x4f, 0x54, 0x45, 0x5f, + 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x42, 0x53, 0x54, 0x41, 0x49, 0x4e, 0x10, 0x02, + 0x12, 0x12, 0x0a, 0x0e, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x4e, 0x4f, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x56, 0x45, 0x54, 0x4f, + 0x10, 0x04, 0x2a, 0xce, 0x01, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, + 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, + 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, + 0x54, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, + 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x56, 0x4f, + 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, - 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x42, 0x99, 0x01, 0x0a, 0x11, 0x63, 0x6f, - 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x42, - 0x08, 0x47, 0x6f, 0x76, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x24, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x67, 0x6f, 0x76, 0x2f, 0x76, 0x31, 0x3b, 0x67, 0x6f, 0x76, 0x76, - 0x31, 0xa2, 0x02, 0x03, 0x43, 0x47, 0x58, 0xaa, 0x02, 0x0d, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x47, 0x6f, 0x76, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0d, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x19, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x47, 0x6f, - 0x76, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x5f, 0x50, 0x41, 0x53, 0x53, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, + 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x45, 0x4a, + 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x4f, 0x50, 0x4f, + 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, + 0x44, 0x10, 0x05, 0x42, 0x99, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x42, 0x08, 0x47, 0x6f, 0x76, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x24, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, + 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x67, + 0x6f, 0x76, 0x2f, 0x76, 0x31, 0x3b, 0x67, 0x6f, 0x76, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x47, + 0x58, 0xaa, 0x02, 0x0d, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x47, 0x6f, 0x76, 0x2e, 0x56, + 0x31, 0xca, 0x02, 0x0d, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, + 0x31, 0xe2, 0x02, 0x19, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, + 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, + 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x47, 0x6f, 0x76, 0x3a, 0x3a, 0x56, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -7645,12 +7820,13 @@ var file_cosmos_gov_v1_gov_proto_depIdxs = []int32{ 11, // 14: cosmos.gov.v1.Params.min_deposit:type_name -> cosmos.base.v1beta1.Coin 14, // 15: cosmos.gov.v1.Params.max_deposit_period:type_name -> google.protobuf.Duration 14, // 16: cosmos.gov.v1.Params.voting_period:type_name -> google.protobuf.Duration - 11, // 17: cosmos.gov.v1.Params.expedited_min_deposit:type_name -> cosmos.base.v1beta1.Coin - 18, // [18:18] is the sub-list for method output_type - 18, // [18:18] is the sub-list for method input_type - 18, // [18:18] is the sub-list for extension type_name - 18, // [18:18] is the sub-list for extension extendee - 0, // [0:18] is the sub-list for field type_name + 14, // 17: cosmos.gov.v1.Params.expedited_voting_period:type_name -> google.protobuf.Duration + 11, // 18: cosmos.gov.v1.Params.expedited_min_deposit:type_name -> cosmos.base.v1beta1.Coin + 19, // [19:19] is the sub-list for method output_type + 19, // [19:19] is the sub-list for method input_type + 19, // [19:19] is the sub-list for extension type_name + 19, // [19:19] is the sub-list for extension extendee + 0, // [0:19] is the sub-list for field type_name } func init() { file_cosmos_gov_v1_gov_proto_init() } diff --git a/proto/cosmos/gov/v1/gov.proto b/proto/cosmos/gov/v1/gov.proto index db25328b356c..e668d7ff4537 100644 --- a/proto/cosmos/gov/v1/gov.proto +++ b/proto/cosmos/gov/v1/gov.proto @@ -212,6 +212,16 @@ message Params { // The ratio representing the proportion of the deposit value that must be paid at proposal submission. string min_initial_deposit_ratio = 7 [(cosmos_proto.scalar) = "cosmos.Dec"]; + // Duration of the voting period of an expedited proposal. + // + // Since: cosmos-sdk 0.50 + google.protobuf.Duration expedited_voting_period = 10 [(gogoproto.stdduration) = true]; + + // Minimum proportion of Yes votes for proposal to pass. Default value: 0.67. + // + // Since: cosmos-sdk 0.50 + string expedited_threshold = 11 [(cosmos_proto.scalar) = "cosmos.Dec"]; + // Minimum expedited deposit for a proposal to enter voting period. repeated cosmos.base.v1beta1.Coin expedited_min_deposit = 12 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; diff --git a/x/gov/client/cli/tx.go b/x/gov/client/cli/tx.go index 6dc7f0efd59c..14540f9dcf03 100644 --- a/x/gov/client/cli/tx.go +++ b/x/gov/client/cli/tx.go @@ -109,7 +109,8 @@ Where proposal.json contains: "metadata: "4pIMOgIGx1vZGU=", "deposit": "10stake" "title: "My proposal" - "summary": "A short summary of my proposal" + "summary": "A short summary of my proposal", + "expedited": false } metadata example: @@ -131,12 +132,20 @@ metadata example: return err } - msgs, metadata, title, summary, deposit, err := parseSubmitProposal(clientCtx.Codec, args[0]) + proposal, msgs, deposit, err := parseSubmitProposal(clientCtx.Codec, args[0]) if err != nil { return err } - msg, err := v1.NewMsgSubmitProposal(msgs, deposit, clientCtx.GetFromAddress().String(), metadata, title, summary, false) + msg, err := v1.NewMsgSubmitProposal( + msgs, + deposit, + clientCtx.GetFromAddress().String(), + proposal.Metadata, + proposal.Title, + proposal.Summary, + proposal.Expedited, + ) if err != nil { return fmt.Errorf("invalid message: %w", err) } diff --git a/x/gov/client/cli/util.go b/x/gov/client/cli/util.go index fe3e8d0a26e3..63be49dc354e 100644 --- a/x/gov/client/cli/util.go +++ b/x/gov/client/cli/util.go @@ -82,25 +82,26 @@ func parseSubmitLegacyProposal(fs *pflag.FlagSet) (*legacyProposal, error) { // proposal defines the new Msg-based proposal. type proposal struct { // Msgs defines an array of sdk.Msgs proto-JSON-encoded as Anys. - Messages []json.RawMessage `json:"messages,omitempty"` - Metadata string `json:"metadata"` - Deposit string `json:"deposit"` - Title string `json:"title"` - Summary string `json:"summary"` + Messages []json.RawMessage `json:"messages,omitempty"` + Metadata string `json:"metadata"` + Deposit string `json:"deposit"` + Title string `json:"title"` + Summary string `json:"summary"` + Expedited bool `json:"expedited"` } // parseSubmitProposal reads and parses the proposal. -func parseSubmitProposal(cdc codec.Codec, path string) ([]sdk.Msg, string, string, string, sdk.Coins, error) { +func parseSubmitProposal(cdc codec.Codec, path string) (proposal, []sdk.Msg, sdk.Coins, error) { var proposal proposal contents, err := os.ReadFile(path) if err != nil { - return nil, "", "", "", nil, err + return proposal, nil, nil, err } err = json.Unmarshal(contents, &proposal) if err != nil { - return nil, "", "", "", nil, err + return proposal, nil, nil, err } msgs := make([]sdk.Msg, len(proposal.Messages)) @@ -108,7 +109,7 @@ func parseSubmitProposal(cdc codec.Codec, path string) ([]sdk.Msg, string, strin var msg sdk.Msg err := cdc.UnmarshalInterfaceJSON(anyJSON, &msg) if err != nil { - return nil, "", "", "", nil, err + return proposal, nil, nil, err } msgs[i] = msg @@ -116,10 +117,10 @@ func parseSubmitProposal(cdc codec.Codec, path string) ([]sdk.Msg, string, strin deposit, err := sdk.ParseCoinsNormalized(proposal.Deposit) if err != nil { - return nil, "", "", "", nil, err + return proposal, nil, nil, err } - return msgs, proposal.Metadata, proposal.Title, proposal.Summary, deposit, nil + return proposal, msgs, deposit, nil } // AddGovPropFlagsToCmd adds flags for defining MsgSubmitProposal fields. diff --git a/x/gov/client/cli/util_test.go b/x/gov/client/cli/util_test.go index 7abfd86c0eb4..32cb68528a45 100644 --- a/x/gov/client/cli/util_test.go +++ b/x/gov/client/cli/util_test.go @@ -170,18 +170,18 @@ func TestParseSubmitProposal(t *testing.T) { badJSON := testutil.WriteToNewTempFile(t, "bad json") // nonexistent json - _, _, _, _, _, err := parseSubmitProposal(cdc, "fileDoesNotExist") //nolint: dogsled + _, _, _, err := parseSubmitProposal(cdc, "fileDoesNotExist") //nolint: dogsled require.Error(t, err) // invalid json - _, _, _, _, _, err = parseSubmitProposal(cdc, badJSON.Name()) //nolint: dogsled + _, _, _, err = parseSubmitProposal(cdc, badJSON.Name()) //nolint: dogsled require.Error(t, err) // ok json - msgs, metadata, title, summary, deposit, err := parseSubmitProposal(cdc, okJSON.Name()) + proposal, msgs, deposit, err := parseSubmitProposal(cdc, okJSON.Name()) require.NoError(t, err, "unexpected error") require.Equal(t, sdk.NewCoins(sdk.NewCoin("test", sdk.NewInt(1000))), deposit) - require.Equal(t, base64.StdEncoding.EncodeToString(expectedMetadata), metadata) + require.Equal(t, base64.StdEncoding.EncodeToString(expectedMetadata), proposal.Metadata) require.Len(t, msgs, 3) msg1, ok := msgs[0].(*banktypes.MsgSend) require.True(t, ok) @@ -200,8 +200,8 @@ func TestParseSubmitProposal(t *testing.T) { require.True(t, ok) require.Equal(t, "My awesome title", textProp.Title) require.Equal(t, "My awesome description", textProp.Description) - require.Equal(t, "My awesome title", title) - require.Equal(t, "My awesome summary", summary) + require.Equal(t, "My awesome title", proposal.Title) + require.Equal(t, "My awesome summary", proposal.Summary) err = okJSON.Close() require.Nil(t, err, "unexpected error") diff --git a/x/gov/keeper/deposit.go b/x/gov/keeper/deposit.go index 62b90bd46d5f..e7f015e1c215 100644 --- a/x/gov/keeper/deposit.go +++ b/x/gov/keeper/deposit.go @@ -130,8 +130,9 @@ func (keeper Keeper) AddDeposit(ctx sdk.Context, proposalID uint64, depositorAdd // Check if deposit has provided sufficient total funds to transition the proposal into the voting period activatedVotingPeriod := false + minDepositAmount := proposal.GetMinDepositFromParams(keeper.GetParams(ctx)) - if proposal.Status == v1.StatusDepositPeriod && sdk.NewCoins(proposal.TotalDeposit...).IsAllGTE(keeper.GetParams(ctx).MinDeposit) { + if proposal.Status == v1.StatusDepositPeriod && sdk.NewCoins(proposal.TotalDeposit...).IsAllGTE(minDepositAmount) { keeper.ActivateVotingPeriod(ctx, proposal) activatedVotingPeriod = true @@ -182,7 +183,7 @@ func (keeper Keeper) RefundAndDeleteDeposits(ctx sdk.Context, proposalID uint64) // 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 (keeper Keeper) validateInitialDeposit(ctx sdk.Context, initialDeposit sdk.Coins) error { +func (keeper Keeper) validateInitialDeposit(ctx sdk.Context, initialDeposit sdk.Coins, expedited bool) error { params := keeper.GetParams(ctx) minInitialDepositRatio, err := sdk.NewDecFromStr(params.MinInitialDepositRatio) if err != nil { @@ -191,7 +192,14 @@ func (keeper Keeper) validateInitialDeposit(ctx sdk.Context, initialDeposit sdk. if minInitialDepositRatio.IsZero() { return nil } - minDepositCoins := params.MinDeposit + + var minDepositCoins sdk.Coins + if expedited { + minDepositCoins = params.ExpeditedMinDeposit + } else { + minDepositCoins = params.MinDeposit + } + for i := range minDepositCoins { minDepositCoins[i].Amount = sdk.NewDecFromInt(minDepositCoins[i].Amount).Mul(minInitialDepositRatio).RoundInt() } diff --git a/x/gov/keeper/deposit_test.go b/x/gov/keeper/deposit_test.go index 7a40f2861e2c..91911b067c30 100644 --- a/x/gov/keeper/deposit_test.go +++ b/x/gov/keeper/deposit_test.go @@ -121,6 +121,7 @@ func TestValidateInitialDeposit(t *testing.T) { minDeposit sdk.Coins minInitialDepositPercent int64 initialDeposit sdk.Coins + expedited bool expectError bool }{ @@ -189,6 +190,18 @@ func TestValidateInitialDeposit(t *testing.T) { minInitialDepositPercent: 0, initialDeposit: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(baseDepositTestAmount*baseDepositTestPercent/100))), }, + "expedited min deposit * initial percent == initial deposit: success": { + minDeposit: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(baseDepositTestAmount))), + minInitialDepositPercent: baseDepositTestPercent, + initialDeposit: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(baseDepositTestAmount*baseDepositTestPercent/100))), + expedited: true, + }, + "expedited - 0 initial percent: success": { + minDeposit: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(baseDepositTestAmount))), + minInitialDepositPercent: 0, + initialDeposit: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(baseDepositTestAmount*baseDepositTestPercent/100))), + expedited: true, + }, } for name, tc := range testcases { @@ -197,11 +210,16 @@ func TestValidateInitialDeposit(t *testing.T) { params := v1.DefaultParams() params.MinDeposit = tc.minDeposit + if tc.expedited { + params.ExpeditedMinDeposit = tc.minDeposit + } else { + params.MinDeposit = tc.minDeposit + } params.MinInitialDepositRatio = sdk.NewDec(tc.minInitialDepositPercent).Quo(sdk.NewDec(100)).String() govKeeper.SetParams(ctx, params) - err := govKeeper.ValidateInitialDeposit(ctx, tc.initialDeposit) + err := govKeeper.ValidateInitialDeposit(ctx, tc.initialDeposit, tc.expedited) if tc.expectError { require.Error(t, err) diff --git a/x/gov/keeper/export_test.go b/x/gov/keeper/export_test.go index 83ec9e273d37..f56e25c34c0e 100644 --- a/x/gov/keeper/export_test.go +++ b/x/gov/keeper/export_test.go @@ -4,6 +4,6 @@ import sdk "github.com/cosmos/cosmos-sdk/types" // ValidateInitialDeposit is a helper function used only in deposit tests which returns the same // functionality of validateInitialDeposit private function. -func (k Keeper) ValidateInitialDeposit(ctx sdk.Context, initialDeposit sdk.Coins) error { - return k.validateInitialDeposit(ctx, initialDeposit) +func (k Keeper) ValidateInitialDeposit(ctx sdk.Context, initialDeposit sdk.Coins, expedited bool) error { + return k.validateInitialDeposit(ctx, initialDeposit, expedited) } diff --git a/x/gov/keeper/msg_server.go b/x/gov/keeper/msg_server.go index 14097a8baf20..70852fa38f25 100644 --- a/x/gov/keeper/msg_server.go +++ b/x/gov/keeper/msg_server.go @@ -33,7 +33,7 @@ func (k msgServer) SubmitProposal(goCtx context.Context, msg *v1.MsgSubmitPropos initialDeposit := msg.GetInitialDeposit() - if err := k.validateInitialDeposit(ctx, initialDeposit); err != nil { + if err := k.validateInitialDeposit(ctx, initialDeposit, msg.Expedited); err != nil { return nil, err } diff --git a/x/gov/keeper/proposal.go b/x/gov/keeper/proposal.go index 3f3725383fb0..6a43e318e7af 100644 --- a/x/gov/keeper/proposal.go +++ b/x/gov/keeper/proposal.go @@ -3,6 +3,7 @@ package keeper import ( "errors" "fmt" + "time" "github.com/cosmos/cosmos-sdk/client" sdk "github.com/cosmos/cosmos-sdk/types" @@ -262,7 +263,12 @@ func (keeper Keeper) SetProposalID(ctx sdk.Context, proposalID uint64) { func (keeper Keeper) ActivateVotingPeriod(ctx sdk.Context, proposal v1.Proposal) { startTime := ctx.BlockHeader().Time proposal.VotingStartTime = &startTime - votingPeriod := keeper.GetParams(ctx).VotingPeriod + var votingPeriod *time.Duration + if proposal.Expedited { + votingPeriod = keeper.GetParams(ctx).ExpeditedVotingPeriod + } else { + votingPeriod = keeper.GetParams(ctx).VotingPeriod + } endTime := proposal.VotingStartTime.Add(*votingPeriod) proposal.VotingEndTime = &endTime proposal.Status = v1.StatusVotingPeriod diff --git a/x/gov/keeper/tally.go b/x/gov/keeper/tally.go index 863c64f51443..c7ae84f38d44 100644 --- a/x/gov/keeper/tally.go +++ b/x/gov/keeper/tally.go @@ -117,7 +117,16 @@ func (keeper Keeper) Tally(ctx sdk.Context, proposal v1.Proposal) (passes bool, } // If more than 1/2 of non-abstaining voters vote Yes, proposal passes - threshold, _ := sdk.NewDecFromStr(params.Threshold) + // For expedited 2/3 + var thresholdStr string + if proposal.Expedited { + thresholdStr = params.GetExpeditedThreshold() + } else { + thresholdStr = params.GetThreshold() + } + + // If more than 1/2 of non-abstaining voters vote Yes, proposal passes + threshold, _ := math.LegacyNewDecFromStr(thresholdStr) if results[v1.OptionYes].Quo(totalVotingPower.Sub(results[v1.OptionAbstain])).GT(threshold) { return true, false, tallyResults } diff --git a/x/gov/migrations/v4/json_test.go b/x/gov/migrations/v4/json_test.go index 42a36e331eb9..8784ba3448cd 100644 --- a/x/gov/migrations/v4/json_test.go +++ b/x/gov/migrations/v4/json_test.go @@ -63,6 +63,8 @@ func TestMigrateJSON(t *testing.T) { "burn_vote_quorum": false, "burn_vote_veto": true, "expedited_min_deposit": [], + "expedited_threshold": "", + "expedited_voting_period": null, "max_deposit_period": "172800s", "min_deposit": [ { diff --git a/x/gov/types/v1/gov.pb.go b/x/gov/types/v1/gov.pb.go index d2f2c4183d84..56e8a59d02a7 100644 --- a/x/gov/types/v1/gov.pb.go +++ b/x/gov/types/v1/gov.pb.go @@ -748,6 +748,14 @@ type Params struct { VetoThreshold string `protobuf:"bytes,6,opt,name=veto_threshold,json=vetoThreshold,proto3" json:"veto_threshold,omitempty"` // The ratio representing the proportion of the deposit value that must be paid at proposal submission. MinInitialDepositRatio string `protobuf:"bytes,7,opt,name=min_initial_deposit_ratio,json=minInitialDepositRatio,proto3" json:"min_initial_deposit_ratio,omitempty"` + // Duration of the voting period of an expedited proposal. + // + // Since: cosmos-sdk 0.50 + ExpeditedVotingPeriod *time.Duration `protobuf:"bytes,10,opt,name=expedited_voting_period,json=expeditedVotingPeriod,proto3,stdduration" json:"expedited_voting_period,omitempty"` + // Minimum proportion of Yes votes for proposal to pass. Default value: 0.67. + // + // Since: cosmos-sdk 0.50 + ExpeditedThreshold string `protobuf:"bytes,11,opt,name=expedited_threshold,json=expeditedThreshold,proto3" json:"expedited_threshold,omitempty"` // Minimum expedited deposit for a proposal to enter voting period. ExpeditedMinDeposit []types.Coin `protobuf:"bytes,12,rep,name=expedited_min_deposit,json=expeditedMinDeposit,proto3" json:"expedited_min_deposit"` // burn deposits if a proposal does not meet quorum @@ -840,6 +848,20 @@ func (m *Params) GetMinInitialDepositRatio() string { return "" } +func (m *Params) GetExpeditedVotingPeriod() *time.Duration { + if m != nil { + return m.ExpeditedVotingPeriod + } + return nil +} + +func (m *Params) GetExpeditedThreshold() string { + if m != nil { + return m.ExpeditedThreshold + } + return "" +} + func (m *Params) GetExpeditedMinDeposit() []types.Coin { if m != nil { return m.ExpeditedMinDeposit @@ -885,89 +907,91 @@ func init() { func init() { proto.RegisterFile("cosmos/gov/v1/gov.proto", fileDescriptor_e05cb1c0d030febb) } var fileDescriptor_e05cb1c0d030febb = []byte{ - // 1310 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0x4b, 0x73, 0xd3, 0xd6, - 0x17, 0x8f, 0xfc, 0x8a, 0x7d, 0xfc, 0x88, 0xb9, 0x04, 0x50, 0x02, 0xb1, 0x83, 0x87, 0x61, 0xf2, - 0xe7, 0x61, 0xff, 0x03, 0xa5, 0x1b, 0xba, 0x71, 0x62, 0x51, 0xc4, 0x40, 0xec, 0xca, 0x22, 0x94, - 0x6e, 0x34, 0x72, 0x74, 0x71, 0xee, 0xd4, 0xd2, 0x75, 0xa5, 0x6b, 0x13, 0x7f, 0x84, 0xee, 0x58, - 0x76, 0xba, 0xea, 0xb2, 0xdd, 0x75, 0xc1, 0xf4, 0x33, 0xb0, 0xea, 0x30, 0x6c, 0xda, 0x6e, 0xa0, - 0x03, 0x8b, 0xce, 0xf0, 0x29, 0x3a, 0xf7, 0xea, 0xca, 0x76, 0x1c, 0x77, 0x92, 0xb0, 0xb1, 0xa5, - 0x73, 0x7e, 0xbf, 0x73, 0xce, 0x3d, 0x2f, 0x49, 0x70, 0x61, 0x8f, 0x06, 0x2e, 0x0d, 0x6a, 0x5d, - 0x3a, 0xac, 0x0d, 0x37, 0xf9, 0x5f, 0xb5, 0xef, 0x53, 0x46, 0x51, 0x3e, 0x54, 0x54, 0xb9, 0x64, - 0xb8, 0xb9, 0x5a, 0x92, 0xb8, 0x8e, 0x1d, 0xe0, 0xda, 0x70, 0xb3, 0x83, 0x99, 0xbd, 0x59, 0xdb, - 0xa3, 0xc4, 0x0b, 0xe1, 0xab, 0xcb, 0x5d, 0xda, 0xa5, 0xe2, 0xb2, 0xc6, 0xaf, 0xa4, 0xb4, 0xdc, - 0xa5, 0xb4, 0xdb, 0xc3, 0x35, 0x71, 0xd7, 0x19, 0x3c, 0xab, 0x31, 0xe2, 0xe2, 0x80, 0xd9, 0x6e, - 0x5f, 0x02, 0x56, 0x66, 0x01, 0xb6, 0x37, 0x92, 0xaa, 0xd2, 0xac, 0xca, 0x19, 0xf8, 0x36, 0x23, - 0x34, 0xf2, 0xb8, 0x12, 0x46, 0x64, 0x85, 0x4e, 0x65, 0xb4, 0xa1, 0xea, 0x8c, 0xed, 0x12, 0x8f, - 0xd6, 0xc4, 0x6f, 0x28, 0xaa, 0x50, 0x40, 0x4f, 0x30, 0xe9, 0xee, 0x33, 0xec, 0xec, 0x52, 0x86, - 0x9b, 0x7d, 0x6e, 0x09, 0x6d, 0x42, 0x8a, 0x8a, 0x2b, 0x55, 0x59, 0x57, 0x36, 0x0a, 0xb7, 0x56, - 0xaa, 0x87, 0x4e, 0x5d, 0x9d, 0x40, 0x0d, 0x09, 0x44, 0x57, 0x21, 0xf5, 0x5c, 0x18, 0x52, 0x63, - 0xeb, 0xca, 0x46, 0x66, 0xab, 0xf0, 0xe6, 0xe5, 0x4d, 0x90, 0xac, 0x06, 0xde, 0x33, 0xa4, 0xb6, - 0xf2, 0x93, 0x02, 0x8b, 0x0d, 0xdc, 0xa7, 0x01, 0x61, 0xa8, 0x0c, 0xd9, 0xbe, 0x4f, 0xfb, 0x34, - 0xb0, 0x7b, 0x16, 0x71, 0x84, 0xaf, 0x84, 0x01, 0x91, 0x48, 0x77, 0xd0, 0xe7, 0x90, 0x71, 0x42, - 0x2c, 0xf5, 0xa5, 0x5d, 0xf5, 0xcd, 0xcb, 0x9b, 0xcb, 0xd2, 0x6e, 0xdd, 0x71, 0x7c, 0x1c, 0x04, - 0x6d, 0xe6, 0x13, 0xaf, 0x6b, 0x4c, 0xa0, 0xe8, 0x0b, 0x48, 0xd9, 0x2e, 0x1d, 0x78, 0x4c, 0x8d, - 0xaf, 0xc7, 0x37, 0xb2, 0x93, 0xf8, 0x79, 0x99, 0xaa, 0xb2, 0x4c, 0xd5, 0x6d, 0x4a, 0xbc, 0xad, - 0xcc, 0xab, 0xb7, 0xe5, 0x85, 0x9f, 0xff, 0xf9, 0xf5, 0x9a, 0x62, 0x48, 0x4e, 0xe5, 0x5d, 0x12, - 0xd2, 0x2d, 0x19, 0x04, 0x2a, 0x40, 0x6c, 0x1c, 0x5a, 0x8c, 0x38, 0xe8, 0xff, 0x90, 0x76, 0x71, - 0x10, 0xd8, 0x5d, 0x1c, 0xa8, 0x31, 0x61, 0x7c, 0xb9, 0x1a, 0x56, 0xa4, 0x1a, 0x55, 0xa4, 0x5a, - 0xf7, 0x46, 0xc6, 0x18, 0x85, 0xee, 0x40, 0x2a, 0x60, 0x36, 0x1b, 0x04, 0x6a, 0x5c, 0x24, 0x73, - 0x6d, 0x26, 0x99, 0x91, 0xab, 0xb6, 0x00, 0x19, 0x12, 0x8c, 0xee, 0x03, 0x7a, 0x46, 0x3c, 0xbb, - 0x67, 0x31, 0xbb, 0xd7, 0x1b, 0x59, 0x3e, 0x0e, 0x06, 0x3d, 0xa6, 0x26, 0xd6, 0x95, 0x8d, 0xec, - 0xad, 0xd5, 0x19, 0x13, 0x26, 0x87, 0x18, 0x02, 0x61, 0x14, 0x05, 0x6b, 0x4a, 0x82, 0xea, 0x90, - 0x0d, 0x06, 0x1d, 0x97, 0x30, 0x8b, 0xb7, 0x99, 0x9a, 0x94, 0x26, 0x66, 0xa3, 0x36, 0xa3, 0x1e, - 0xdc, 0x4a, 0xbc, 0x78, 0x57, 0x56, 0x0c, 0x08, 0x49, 0x5c, 0x8c, 0x1e, 0x40, 0x51, 0x66, 0xd7, - 0xc2, 0x9e, 0x13, 0xda, 0x49, 0x9d, 0xd0, 0x4e, 0x41, 0x32, 0x35, 0xcf, 0x11, 0xb6, 0x74, 0xc8, - 0x33, 0xca, 0xec, 0x9e, 0x25, 0xe5, 0xea, 0xe2, 0x29, 0x6a, 0x94, 0x13, 0xd4, 0xa8, 0x81, 0x1e, - 0xc2, 0x99, 0x21, 0x65, 0xc4, 0xeb, 0x5a, 0x01, 0xb3, 0x7d, 0x79, 0xbe, 0xf4, 0x09, 0xe3, 0x5a, - 0x0a, 0xa9, 0x6d, 0xce, 0x14, 0x81, 0xdd, 0x07, 0x29, 0x9a, 0x9c, 0x31, 0x73, 0x42, 0x5b, 0xf9, - 0x90, 0x18, 0x1d, 0x71, 0x95, 0x37, 0x09, 0xb3, 0x1d, 0x9b, 0xd9, 0x2a, 0xf0, 0xb6, 0x35, 0xc6, - 0xf7, 0x68, 0x19, 0x92, 0x8c, 0xb0, 0x1e, 0x56, 0xb3, 0x42, 0x11, 0xde, 0x20, 0x15, 0x16, 0x83, - 0x81, 0xeb, 0xda, 0xfe, 0x48, 0xcd, 0x09, 0x79, 0x74, 0x8b, 0x3e, 0x83, 0x74, 0x38, 0x11, 0xd8, - 0x57, 0xf3, 0xc7, 0x8c, 0xc0, 0x18, 0x89, 0x2e, 0x41, 0x06, 0x1f, 0xf4, 0xb1, 0x43, 0x18, 0x76, - 0xd4, 0xc2, 0xba, 0xb2, 0x91, 0x36, 0x26, 0x82, 0xca, 0x1f, 0x0a, 0x64, 0xa7, 0x3b, 0xe4, 0x3a, - 0x64, 0x46, 0x38, 0xb0, 0xf6, 0xc4, 0xc8, 0x28, 0x47, 0xe6, 0x57, 0xf7, 0x98, 0x91, 0x1e, 0xe1, - 0x60, 0x9b, 0xeb, 0xd1, 0x6d, 0xc8, 0xdb, 0x9d, 0x80, 0xd9, 0xc4, 0x93, 0x84, 0xd8, 0x5c, 0x42, - 0x4e, 0x82, 0x42, 0xd2, 0xff, 0x20, 0xed, 0x51, 0x89, 0x8f, 0xcf, 0xc5, 0x2f, 0x7a, 0x34, 0x84, - 0xde, 0x05, 0xe4, 0x51, 0xeb, 0x39, 0x61, 0xfb, 0xd6, 0x10, 0xb3, 0x88, 0x94, 0x98, 0x4b, 0x5a, - 0xf2, 0xe8, 0x13, 0xc2, 0xf6, 0x77, 0x31, 0x0b, 0xc9, 0x95, 0xdf, 0x14, 0x48, 0xf0, 0xed, 0x74, - 0xfc, 0x6e, 0xa9, 0x42, 0x72, 0x48, 0x19, 0x3e, 0x7e, 0xaf, 0x84, 0x30, 0x74, 0x17, 0x16, 0xc3, - 0x55, 0x17, 0xa8, 0x09, 0xd1, 0xb0, 0x97, 0x67, 0x86, 0xf0, 0xe8, 0x1e, 0x35, 0x22, 0xc6, 0xa1, - 0x86, 0x48, 0x1e, 0x6e, 0x88, 0x07, 0x89, 0x74, 0xbc, 0x98, 0xa8, 0xfc, 0xa5, 0x40, 0x5e, 0xb6, - 0x75, 0xcb, 0xf6, 0x6d, 0x37, 0x40, 0x4f, 0x21, 0xeb, 0x12, 0x6f, 0x3c, 0x25, 0xca, 0x71, 0x53, - 0xb2, 0xc6, 0xa7, 0xe4, 0xe3, 0xdb, 0xf2, 0xb9, 0x29, 0xd6, 0x0d, 0xea, 0x12, 0x86, 0xdd, 0x3e, - 0x1b, 0x19, 0xe0, 0x12, 0x2f, 0x9a, 0x1b, 0x17, 0x90, 0x6b, 0x1f, 0x44, 0x20, 0xab, 0x8f, 0x7d, - 0x42, 0x1d, 0x91, 0x08, 0xee, 0x61, 0xb6, 0xd9, 0x1b, 0xf2, 0x01, 0xb3, 0x75, 0xe5, 0xe3, 0xdb, - 0xf2, 0xa5, 0xa3, 0xc4, 0x89, 0x93, 0x1f, 0xf8, 0x2c, 0x14, 0x5d, 0xfb, 0x20, 0x3a, 0x89, 0xd0, - 0x57, 0x4c, 0xc8, 0xed, 0x8a, 0xf9, 0x90, 0x27, 0x6b, 0x80, 0x9c, 0x97, 0xc8, 0xb3, 0x72, 0x9c, - 0xe7, 0x84, 0xb0, 0x9c, 0x0b, 0x59, 0xd2, 0xea, 0x8f, 0x51, 0x13, 0x4b, 0xab, 0x57, 0x21, 0xf5, - 0xdd, 0x80, 0xfa, 0x03, 0x77, 0x4e, 0x07, 0x8b, 0x27, 0x50, 0xa8, 0x45, 0x37, 0x20, 0xc3, 0xf6, - 0x7d, 0x1c, 0xec, 0xd3, 0x9e, 0xf3, 0x1f, 0x0f, 0xab, 0x09, 0x00, 0xdd, 0x81, 0x82, 0xe8, 0xc2, - 0x09, 0x25, 0x3e, 0x97, 0x92, 0xe7, 0x28, 0x33, 0x02, 0x55, 0x7e, 0x49, 0x42, 0x4a, 0xc6, 0xa5, - 0x9d, 0xb2, 0x8e, 0x53, 0xdb, 0x6e, 0xba, 0x66, 0x8f, 0x3e, 0xad, 0x66, 0x89, 0xf9, 0x35, 0x39, - 0x5a, 0x83, 0xf8, 0x27, 0xd4, 0x60, 0x2a, 0xe7, 0x89, 0x93, 0xe7, 0x3c, 0x79, 0xfa, 0x9c, 0xa7, - 0x4e, 0x90, 0x73, 0xa4, 0xc3, 0x0a, 0x4f, 0x34, 0xf1, 0x08, 0x23, 0x93, 0xc7, 0x8b, 0x25, 0xc2, - 0x57, 0x17, 0xe7, 0x5a, 0x38, 0xef, 0x12, 0x4f, 0x0f, 0xf1, 0x32, 0x3d, 0x06, 0x47, 0xa3, 0xaf, - 0xe1, 0xdc, 0x78, 0x5b, 0x5a, 0xd3, 0xd5, 0xcb, 0x9d, 0xa2, 0x7a, 0x67, 0xc7, 0x26, 0x1e, 0x4d, - 0xca, 0xb8, 0x01, 0xc5, 0xce, 0xc0, 0xf7, 0x2c, 0xbe, 0x54, 0x2c, 0x99, 0xbb, 0xbc, 0xd8, 0xcf, - 0x05, 0x2e, 0xe7, 0xcb, 0xe3, 0xab, 0x30, 0x67, 0x75, 0x58, 0x13, 0xc8, 0xf1, 0x1a, 0x1b, 0x97, - 0xde, 0xc7, 0x9c, 0x2d, 0xd7, 0xfa, 0x2a, 0x07, 0x45, 0xef, 0x10, 0x51, 0x8d, 0x43, 0x04, 0xba, - 0x02, 0x85, 0x89, 0x33, 0x9e, 0x2c, 0x75, 0x49, 0x70, 0x72, 0x91, 0x2b, 0xbe, 0x38, 0xaf, 0x7d, - 0xaf, 0x00, 0x4c, 0xbd, 0xfc, 0x5d, 0x84, 0x0b, 0xbb, 0x4d, 0x53, 0xb3, 0x9a, 0x2d, 0x53, 0x6f, - 0xee, 0x58, 0x8f, 0x77, 0xda, 0x2d, 0x6d, 0x5b, 0xbf, 0xa7, 0x6b, 0x8d, 0xe2, 0x02, 0x3a, 0x0b, - 0x4b, 0xd3, 0xca, 0xa7, 0x5a, 0xbb, 0xa8, 0xa0, 0x0b, 0x70, 0x76, 0x5a, 0x58, 0xdf, 0x6a, 0x9b, - 0x75, 0x7d, 0xa7, 0x18, 0x43, 0x08, 0x0a, 0xd3, 0x8a, 0x9d, 0x66, 0x31, 0x8e, 0x2e, 0x81, 0x7a, - 0x58, 0x66, 0x3d, 0xd1, 0xcd, 0xfb, 0xd6, 0xae, 0x66, 0x36, 0x8b, 0x89, 0x6b, 0xbf, 0x2b, 0x50, - 0x38, 0xfc, 0x42, 0x84, 0xca, 0x70, 0xb1, 0x65, 0x34, 0x5b, 0xcd, 0x76, 0xfd, 0xa1, 0xd5, 0x36, - 0xeb, 0xe6, 0xe3, 0xf6, 0x4c, 0x4c, 0x15, 0x28, 0xcd, 0x02, 0x1a, 0x5a, 0xab, 0xd9, 0xd6, 0x4d, - 0xab, 0xa5, 0x19, 0x7a, 0xb3, 0x51, 0x54, 0xd0, 0x65, 0x58, 0x9b, 0xc5, 0xec, 0x36, 0x4d, 0x7d, - 0xe7, 0xcb, 0x08, 0x12, 0x43, 0xab, 0x70, 0x7e, 0x16, 0xd2, 0xaa, 0xb7, 0xdb, 0x5a, 0x23, 0x0c, - 0x7a, 0x56, 0x67, 0x68, 0x0f, 0xb4, 0x6d, 0x53, 0x6b, 0x14, 0x13, 0xf3, 0x98, 0xf7, 0xea, 0xfa, - 0x43, 0xad, 0x51, 0x4c, 0x6e, 0x69, 0xaf, 0xde, 0x97, 0x94, 0xd7, 0xef, 0x4b, 0xca, 0xdf, 0xef, - 0x4b, 0xca, 0x8b, 0x0f, 0xa5, 0x85, 0xd7, 0x1f, 0x4a, 0x0b, 0x7f, 0x7e, 0x28, 0x2d, 0x7c, 0x73, - 0xbd, 0x4b, 0xd8, 0xfe, 0xa0, 0x53, 0xdd, 0xa3, 0xae, 0x7c, 0x4d, 0x97, 0x7f, 0x37, 0x03, 0xe7, - 0xdb, 0xda, 0x81, 0xf8, 0xf4, 0x60, 0xa3, 0x3e, 0x0e, 0xf8, 0x77, 0x45, 0x4a, 0xcc, 0xe3, 0xed, - 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x0f, 0x6d, 0xb4, 0xf1, 0x98, 0x0c, 0x00, 0x00, + // 1344 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0x4b, 0x6f, 0xdb, 0xc6, + 0x16, 0x36, 0xf5, 0xb2, 0x74, 0xf4, 0xb0, 0x32, 0x71, 0x62, 0xda, 0x89, 0x25, 0x47, 0x08, 0x02, + 0xdf, 0x3c, 0xa4, 0xeb, 0xe4, 0xe6, 0x6e, 0x52, 0xa0, 0x90, 0x2d, 0xa6, 0x61, 0x90, 0x58, 0x2a, + 0xc5, 0xc8, 0x4d, 0x37, 0x04, 0x65, 0x4e, 0x64, 0xa2, 0x22, 0x47, 0x25, 0x47, 0x8a, 0xf5, 0x13, + 0xba, 0xcb, 0xb2, 0xe8, 0xaa, 0xcb, 0x2e, 0xbb, 0x08, 0xfa, 0x07, 0xba, 0xc9, 0xaa, 0x08, 0xb2, + 0x69, 0xbb, 0x49, 0x8a, 0x64, 0x51, 0x20, 0xbf, 0xa2, 0x98, 0xe1, 0x50, 0x94, 0x65, 0x15, 0xb6, + 0xb3, 0xb1, 0xc5, 0x73, 0xbe, 0xef, 0x9c, 0x33, 0xe7, 0x35, 0x24, 0xac, 0xec, 0x13, 0xdf, 0x21, + 0x7e, 0xad, 0x47, 0x46, 0xb5, 0xd1, 0x16, 0xfb, 0x57, 0x1d, 0x78, 0x84, 0x12, 0x94, 0x0f, 0x14, + 0x55, 0x26, 0x19, 0x6d, 0xad, 0x95, 0x04, 0xae, 0x6b, 0xfa, 0xb8, 0x36, 0xda, 0xea, 0x62, 0x6a, + 0x6e, 0xd5, 0xf6, 0x89, 0xed, 0x06, 0xf0, 0xb5, 0xe5, 0x1e, 0xe9, 0x11, 0xfe, 0xb3, 0xc6, 0x7e, + 0x09, 0x69, 0xb9, 0x47, 0x48, 0xaf, 0x8f, 0x6b, 0xfc, 0xa9, 0x3b, 0x7c, 0x56, 0xa3, 0xb6, 0x83, + 0x7d, 0x6a, 0x3a, 0x03, 0x01, 0x58, 0x9d, 0x05, 0x98, 0xee, 0x58, 0xa8, 0x4a, 0xb3, 0x2a, 0x6b, + 0xe8, 0x99, 0xd4, 0x26, 0xa1, 0xc7, 0xd5, 0x20, 0x22, 0x23, 0x70, 0x2a, 0xa2, 0x0d, 0x54, 0xe7, + 0x4c, 0xc7, 0x76, 0x49, 0x8d, 0xff, 0x0d, 0x44, 0x15, 0x02, 0x68, 0x0f, 0xdb, 0xbd, 0x03, 0x8a, + 0xad, 0x0e, 0xa1, 0xb8, 0x39, 0x60, 0x96, 0xd0, 0x16, 0xa4, 0x08, 0xff, 0x25, 0x4b, 0x1b, 0xd2, + 0x66, 0xe1, 0xf6, 0x6a, 0xf5, 0xc8, 0xa9, 0xab, 0x11, 0x54, 0x13, 0x40, 0x74, 0x0d, 0x52, 0xcf, + 0xb9, 0x21, 0x39, 0xb6, 0x21, 0x6d, 0x66, 0xb6, 0x0b, 0x6f, 0x5e, 0xde, 0x02, 0xc1, 0x6a, 0xe0, + 0x7d, 0x4d, 0x68, 0x2b, 0x3f, 0x4a, 0xb0, 0xd8, 0xc0, 0x03, 0xe2, 0xdb, 0x14, 0x95, 0x21, 0x3b, + 0xf0, 0xc8, 0x80, 0xf8, 0x66, 0xdf, 0xb0, 0x2d, 0xee, 0x2b, 0xa1, 0x41, 0x28, 0x52, 0x2d, 0xf4, + 0x7f, 0xc8, 0x58, 0x01, 0x96, 0x78, 0xc2, 0xae, 0xfc, 0xe6, 0xe5, 0xad, 0x65, 0x61, 0xb7, 0x6e, + 0x59, 0x1e, 0xf6, 0xfd, 0x36, 0xf5, 0x6c, 0xb7, 0xa7, 0x45, 0x50, 0xf4, 0x19, 0xa4, 0x4c, 0x87, + 0x0c, 0x5d, 0x2a, 0xc7, 0x37, 0xe2, 0x9b, 0xd9, 0x28, 0x7e, 0x56, 0xa6, 0xaa, 0x28, 0x53, 0x75, + 0x87, 0xd8, 0xee, 0x76, 0xe6, 0xd5, 0xdb, 0xf2, 0xc2, 0x4f, 0x7f, 0xff, 0x7c, 0x5d, 0xd2, 0x04, + 0xa7, 0xf2, 0x2e, 0x09, 0xe9, 0x96, 0x08, 0x02, 0x15, 0x20, 0x36, 0x09, 0x2d, 0x66, 0x5b, 0xe8, + 0xbf, 0x90, 0x76, 0xb0, 0xef, 0x9b, 0x3d, 0xec, 0xcb, 0x31, 0x6e, 0x7c, 0xb9, 0x1a, 0x54, 0xa4, + 0x1a, 0x56, 0xa4, 0x5a, 0x77, 0xc7, 0xda, 0x04, 0x85, 0xee, 0x42, 0xca, 0xa7, 0x26, 0x1d, 0xfa, + 0x72, 0x9c, 0x27, 0x73, 0x7d, 0x26, 0x99, 0xa1, 0xab, 0x36, 0x07, 0x69, 0x02, 0x8c, 0x1e, 0x00, + 0x7a, 0x66, 0xbb, 0x66, 0xdf, 0xa0, 0x66, 0xbf, 0x3f, 0x36, 0x3c, 0xec, 0x0f, 0xfb, 0x54, 0x4e, + 0x6c, 0x48, 0x9b, 0xd9, 0xdb, 0x6b, 0x33, 0x26, 0x74, 0x06, 0xd1, 0x38, 0x42, 0x2b, 0x72, 0xd6, + 0x94, 0x04, 0xd5, 0x21, 0xeb, 0x0f, 0xbb, 0x8e, 0x4d, 0x0d, 0xd6, 0x66, 0x72, 0x52, 0x98, 0x98, + 0x8d, 0x5a, 0x0f, 0x7b, 0x70, 0x3b, 0xf1, 0xe2, 0x5d, 0x59, 0xd2, 0x20, 0x20, 0x31, 0x31, 0x7a, + 0x08, 0x45, 0x91, 0x5d, 0x03, 0xbb, 0x56, 0x60, 0x27, 0x75, 0x4a, 0x3b, 0x05, 0xc1, 0x54, 0x5c, + 0x8b, 0xdb, 0x52, 0x21, 0x4f, 0x09, 0x35, 0xfb, 0x86, 0x90, 0xcb, 0x8b, 0x67, 0xa8, 0x51, 0x8e, + 0x53, 0xc3, 0x06, 0x7a, 0x04, 0xe7, 0x46, 0x84, 0xda, 0x6e, 0xcf, 0xf0, 0xa9, 0xe9, 0x89, 0xf3, + 0xa5, 0x4f, 0x19, 0xd7, 0x52, 0x40, 0x6d, 0x33, 0x26, 0x0f, 0xec, 0x01, 0x08, 0x51, 0x74, 0xc6, + 0xcc, 0x29, 0x6d, 0xe5, 0x03, 0x62, 0x78, 0xc4, 0x35, 0xd6, 0x24, 0xd4, 0xb4, 0x4c, 0x6a, 0xca, + 0xc0, 0xda, 0x56, 0x9b, 0x3c, 0xa3, 0x65, 0x48, 0x52, 0x9b, 0xf6, 0xb1, 0x9c, 0xe5, 0x8a, 0xe0, + 0x01, 0xc9, 0xb0, 0xe8, 0x0f, 0x1d, 0xc7, 0xf4, 0xc6, 0x72, 0x8e, 0xcb, 0xc3, 0x47, 0xf4, 0x3f, + 0x48, 0x07, 0x13, 0x81, 0x3d, 0x39, 0x7f, 0xc2, 0x08, 0x4c, 0x90, 0xe8, 0x32, 0x64, 0xf0, 0xe1, + 0x00, 0x5b, 0x36, 0xc5, 0x96, 0x5c, 0xd8, 0x90, 0x36, 0xd3, 0x5a, 0x24, 0xa8, 0xfc, 0x2e, 0x41, + 0x76, 0xba, 0x43, 0x6e, 0x40, 0x66, 0x8c, 0x7d, 0x63, 0x9f, 0x8f, 0x8c, 0x74, 0x6c, 0x7e, 0x55, + 0x97, 0x6a, 0xe9, 0x31, 0xf6, 0x77, 0x98, 0x1e, 0xdd, 0x81, 0xbc, 0xd9, 0xf5, 0xa9, 0x69, 0xbb, + 0x82, 0x10, 0x9b, 0x4b, 0xc8, 0x09, 0x50, 0x40, 0xfa, 0x0f, 0xa4, 0x5d, 0x22, 0xf0, 0xf1, 0xb9, + 0xf8, 0x45, 0x97, 0x04, 0xd0, 0x7b, 0x80, 0x5c, 0x62, 0x3c, 0xb7, 0xe9, 0x81, 0x31, 0xc2, 0x34, + 0x24, 0x25, 0xe6, 0x92, 0x96, 0x5c, 0xb2, 0x67, 0xd3, 0x83, 0x0e, 0xa6, 0x01, 0xb9, 0xf2, 0x8b, + 0x04, 0x09, 0xb6, 0x9d, 0x4e, 0xde, 0x2d, 0x55, 0x48, 0x8e, 0x08, 0xc5, 0x27, 0xef, 0x95, 0x00, + 0x86, 0xee, 0xc1, 0x62, 0xb0, 0xea, 0x7c, 0x39, 0xc1, 0x1b, 0xf6, 0xca, 0xcc, 0x10, 0x1e, 0xdf, + 0xa3, 0x5a, 0xc8, 0x38, 0xd2, 0x10, 0xc9, 0xa3, 0x0d, 0xf1, 0x30, 0x91, 0x8e, 0x17, 0x13, 0x95, + 0x3f, 0x25, 0xc8, 0x8b, 0xb6, 0x6e, 0x99, 0x9e, 0xe9, 0xf8, 0xe8, 0x29, 0x64, 0x1d, 0xdb, 0x9d, + 0x4c, 0x89, 0x74, 0xd2, 0x94, 0xac, 0xb3, 0x29, 0xf9, 0xf8, 0xb6, 0x7c, 0x61, 0x8a, 0x75, 0x93, + 0x38, 0x36, 0xc5, 0xce, 0x80, 0x8e, 0x35, 0x70, 0x6c, 0x37, 0x9c, 0x1b, 0x07, 0x90, 0x63, 0x1e, + 0x86, 0x20, 0x63, 0x80, 0x3d, 0x9b, 0x58, 0x3c, 0x11, 0xcc, 0xc3, 0x6c, 0xb3, 0x37, 0xc4, 0x05, + 0xb3, 0x7d, 0xf5, 0xe3, 0xdb, 0xf2, 0xe5, 0xe3, 0xc4, 0xc8, 0xc9, 0xf7, 0x6c, 0x16, 0x8a, 0x8e, + 0x79, 0x18, 0x9e, 0x84, 0xeb, 0x2b, 0x3a, 0xe4, 0x3a, 0x7c, 0x3e, 0xc4, 0xc9, 0x1a, 0x20, 0xe6, + 0x25, 0xf4, 0x2c, 0x9d, 0xe4, 0x39, 0xc1, 0x2d, 0xe7, 0x02, 0x96, 0xb0, 0xfa, 0x43, 0xd8, 0xc4, + 0xc2, 0xea, 0x35, 0x48, 0x7d, 0x3b, 0x24, 0xde, 0xd0, 0x99, 0xd3, 0xc1, 0xfc, 0x06, 0x0a, 0xb4, + 0xe8, 0x26, 0x64, 0xe8, 0x81, 0x87, 0xfd, 0x03, 0xd2, 0xb7, 0xfe, 0xe5, 0xb2, 0x8a, 0x00, 0xe8, + 0x2e, 0x14, 0x78, 0x17, 0x46, 0x94, 0xf8, 0x5c, 0x4a, 0x9e, 0xa1, 0xf4, 0x10, 0x54, 0xf9, 0x35, + 0x05, 0x29, 0x11, 0x97, 0x72, 0xc6, 0x3a, 0x4e, 0x6d, 0xbb, 0xe9, 0x9a, 0x3d, 0xfe, 0xb4, 0x9a, + 0x25, 0xe6, 0xd7, 0xe4, 0x78, 0x0d, 0xe2, 0x9f, 0x50, 0x83, 0xa9, 0x9c, 0x27, 0x4e, 0x9f, 0xf3, + 0xe4, 0xd9, 0x73, 0x9e, 0x3a, 0x45, 0xce, 0x91, 0x0a, 0xab, 0x2c, 0xd1, 0xb6, 0x6b, 0x53, 0x3b, + 0xba, 0x5e, 0x0c, 0x1e, 0xbe, 0xbc, 0x38, 0xd7, 0xc2, 0x45, 0xc7, 0x76, 0xd5, 0x00, 0x2f, 0xd2, + 0xa3, 0x31, 0x34, 0xda, 0x83, 0x95, 0xc9, 0xb6, 0x34, 0x8e, 0xe6, 0x09, 0x4e, 0x97, 0xa7, 0x0b, + 0x13, 0x7e, 0x67, 0x3a, 0x61, 0x9f, 0xc3, 0xf9, 0xc8, 0x70, 0x74, 0xbe, 0xec, 0xdc, 0xe8, 0xd0, + 0x04, 0x1a, 0x1d, 0xf2, 0x2b, 0x88, 0x2c, 0x1b, 0xd3, 0x7d, 0x95, 0x3b, 0x43, 0x5f, 0x45, 0x31, + 0x3c, 0x8e, 0x1a, 0x6c, 0x13, 0x8a, 0xdd, 0xa1, 0xe7, 0xb2, 0xe3, 0x62, 0x43, 0x54, 0x35, 0xcf, + 0x6f, 0x8e, 0x02, 0x93, 0xb3, 0xb5, 0xf6, 0x65, 0x50, 0xcd, 0x3a, 0xac, 0x73, 0xe4, 0x64, 0xc1, + 0x4e, 0x9a, 0xd2, 0xc3, 0x8c, 0x2d, 0x2e, 0x9c, 0x35, 0x06, 0x0a, 0xdf, 0x6e, 0xc2, 0xee, 0x0b, + 0x10, 0xe8, 0x2a, 0x14, 0x22, 0x67, 0xac, 0x8c, 0xf2, 0x12, 0xe7, 0xe4, 0x42, 0x57, 0x6c, 0xa5, + 0x5f, 0xff, 0x4e, 0x02, 0x98, 0x7a, 0x2d, 0xbd, 0x04, 0x2b, 0x9d, 0xa6, 0xae, 0x18, 0xcd, 0x96, + 0xae, 0x36, 0x77, 0x8d, 0x27, 0xbb, 0xed, 0x96, 0xb2, 0xa3, 0xde, 0x57, 0x95, 0x46, 0x71, 0x01, + 0x9d, 0x87, 0xa5, 0x69, 0xe5, 0x53, 0xa5, 0x5d, 0x94, 0xd0, 0x0a, 0x9c, 0x9f, 0x16, 0xd6, 0xb7, + 0xdb, 0x7a, 0x5d, 0xdd, 0x2d, 0xc6, 0x10, 0x82, 0xc2, 0xb4, 0x62, 0xb7, 0x59, 0x8c, 0xa3, 0xcb, + 0x20, 0x1f, 0x95, 0x19, 0x7b, 0xaa, 0xfe, 0xc0, 0xe8, 0x28, 0x7a, 0xb3, 0x98, 0xb8, 0xfe, 0x9b, + 0x04, 0x85, 0xa3, 0xaf, 0x6a, 0xa8, 0x0c, 0x97, 0x5a, 0x5a, 0xb3, 0xd5, 0x6c, 0xd7, 0x1f, 0x19, + 0x6d, 0xbd, 0xae, 0x3f, 0x69, 0xcf, 0xc4, 0x54, 0x81, 0xd2, 0x2c, 0xa0, 0xa1, 0xb4, 0x9a, 0x6d, + 0x55, 0x37, 0x5a, 0x8a, 0xa6, 0x36, 0x1b, 0x45, 0x09, 0x5d, 0x81, 0xf5, 0x59, 0x4c, 0xa7, 0xa9, + 0xab, 0xbb, 0x5f, 0x84, 0x90, 0x18, 0x5a, 0x83, 0x8b, 0xb3, 0x90, 0x56, 0xbd, 0xdd, 0x56, 0x1a, + 0x41, 0xd0, 0xb3, 0x3a, 0x4d, 0x79, 0xa8, 0xec, 0xe8, 0x4a, 0xa3, 0x98, 0x98, 0xc7, 0xbc, 0x5f, + 0x57, 0x1f, 0x29, 0x8d, 0x62, 0x72, 0x5b, 0x79, 0xf5, 0xbe, 0x24, 0xbd, 0x7e, 0x5f, 0x92, 0xfe, + 0x7a, 0x5f, 0x92, 0x5e, 0x7c, 0x28, 0x2d, 0xbc, 0xfe, 0x50, 0x5a, 0xf8, 0xe3, 0x43, 0x69, 0xe1, + 0xeb, 0x1b, 0x3d, 0x9b, 0x1e, 0x0c, 0xbb, 0xd5, 0x7d, 0xe2, 0x88, 0x0f, 0x08, 0xf1, 0xef, 0x96, + 0x6f, 0x7d, 0x53, 0x3b, 0xe4, 0x1f, 0x45, 0x74, 0x3c, 0xc0, 0x3e, 0xfb, 0xe2, 0x49, 0xf1, 0x09, + 0xb8, 0xf3, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x6a, 0x22, 0x05, 0x93, 0x32, 0x0d, 0x00, 0x00, } func (m *WeightedVoteOption) Marshal() (dAtA []byte, err error) { @@ -1500,6 +1524,23 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x62 } } + if len(m.ExpeditedThreshold) > 0 { + i -= len(m.ExpeditedThreshold) + copy(dAtA[i:], m.ExpeditedThreshold) + i = encodeVarintGov(dAtA, i, uint64(len(m.ExpeditedThreshold))) + i-- + dAtA[i] = 0x5a + } + if m.ExpeditedVotingPeriod != nil { + n8, err8 := github_com_cosmos_gogoproto_types.StdDurationMarshalTo(*m.ExpeditedVotingPeriod, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdDuration(*m.ExpeditedVotingPeriod):]) + if err8 != nil { + return 0, err8 + } + i -= n8 + i = encodeVarintGov(dAtA, i, uint64(n8)) + i-- + dAtA[i] = 0x52 + } if len(m.MinInitialDepositRatio) > 0 { i -= len(m.MinInitialDepositRatio) copy(dAtA[i:], m.MinInitialDepositRatio) @@ -1529,22 +1570,22 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x22 } if m.VotingPeriod != nil { - n8, err8 := github_com_cosmos_gogoproto_types.StdDurationMarshalTo(*m.VotingPeriod, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdDuration(*m.VotingPeriod):]) - if err8 != nil { - return 0, err8 + n9, err9 := github_com_cosmos_gogoproto_types.StdDurationMarshalTo(*m.VotingPeriod, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdDuration(*m.VotingPeriod):]) + if err9 != nil { + return 0, err9 } - i -= n8 - i = encodeVarintGov(dAtA, i, uint64(n8)) + i -= n9 + i = encodeVarintGov(dAtA, i, uint64(n9)) i-- dAtA[i] = 0x1a } if m.MaxDepositPeriod != nil { - n9, err9 := github_com_cosmos_gogoproto_types.StdDurationMarshalTo(*m.MaxDepositPeriod, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdDuration(*m.MaxDepositPeriod):]) - if err9 != nil { - return 0, err9 + n10, err10 := github_com_cosmos_gogoproto_types.StdDurationMarshalTo(*m.MaxDepositPeriod, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdDuration(*m.MaxDepositPeriod):]) + if err10 != nil { + return 0, err10 } - i -= n9 - i = encodeVarintGov(dAtA, i, uint64(n9)) + i -= n10 + i = encodeVarintGov(dAtA, i, uint64(n10)) i-- dAtA[i] = 0x12 } @@ -1820,6 +1861,14 @@ func (m *Params) Size() (n int) { if l > 0 { n += 1 + l + sovGov(uint64(l)) } + if m.ExpeditedVotingPeriod != nil { + l = github_com_cosmos_gogoproto_types.SizeOfStdDuration(*m.ExpeditedVotingPeriod) + n += 1 + l + sovGov(uint64(l)) + } + l = len(m.ExpeditedThreshold) + if l > 0 { + n += 1 + l + sovGov(uint64(l)) + } if len(m.ExpeditedMinDeposit) > 0 { for _, e := range m.ExpeditedMinDeposit { l = e.Size() @@ -3524,6 +3573,74 @@ func (m *Params) Unmarshal(dAtA []byte) error { } m.MinInitialDepositRatio = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExpeditedVotingPeriod", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGov + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGov + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGov + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ExpeditedVotingPeriod == nil { + m.ExpeditedVotingPeriod = new(time.Duration) + } + if err := github_com_cosmos_gogoproto_types.StdDurationUnmarshal(m.ExpeditedVotingPeriod, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExpeditedThreshold", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGov + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGov + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGov + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ExpeditedThreshold = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex case 12: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field ExpeditedMinDeposit", wireType) diff --git a/x/gov/types/v1/params.go b/x/gov/types/v1/params.go index c54957b540c9..4ba1d34bff6d 100644 --- a/x/gov/types/v1/params.go +++ b/x/gov/types/v1/params.go @@ -11,7 +11,9 @@ import ( // Default period for deposits & voting const ( - DefaultPeriod time.Duration = time.Hour * 24 * 2 // 2 days + DefaultPeriod time.Duration = time.Hour * 24 * 2 // 2 days + DefaultExpeditedPeriod time.Duration = time.Hour * 24 * 1 // 1 day + DefaultMinExpeditedDepositTokensRatio = 5 ) // Default governance params diff --git a/x/gov/types/v1/proposal.go b/x/gov/types/v1/proposal.go index 9a91c9f90f12..4b95da68e930 100644 --- a/x/gov/types/v1/proposal.go +++ b/x/gov/types/v1/proposal.go @@ -48,6 +48,16 @@ func NewProposal(messages []sdk.Msg, id uint64, submitTime, depositEndTime time. return p, nil } +// GetMinDepositFromParams returns min expedited deposit from the gov params if +// the proposal is expedited. Otherwise, returns the regular min deposit from +// gov params. +func (p Proposal) GetMinDepositFromParams(params Params) sdk.Coins { + if p.Expedited { + return params.ExpeditedMinDeposit + } + return params.MinDeposit +} + // GetMessages returns the proposal messages func (p Proposal) GetMsgs() ([]sdk.Msg, error) { return sdktx.GetMsgs(p.Messages, "sdk.MsgProposal") From 15a606162b9d638d38ac5426cef979da2d4db1c9 Mon Sep 17 00:00:00 2001 From: Rex Milce Date: Mon, 4 Dec 2023 12:46:09 +0100 Subject: [PATCH 12/13] pass sims --- x/gov/migrations/v4/json.go | 3 + x/gov/migrations/v4/json_test.go | 11 ++- x/gov/migrations/v4/store.go | 3 + x/gov/simulation/decoder.go | 32 ++++--- x/gov/simulation/genesis.go | 128 ++++++++++++++++++++-------- x/gov/simulation/genesis_test.go | 34 +++++--- x/gov/simulation/operations.go | 8 +- x/gov/simulation/operations_test.go | 2 +- x/gov/types/v1/params.go | 61 ++++++++++--- 9 files changed, 205 insertions(+), 77 deletions(-) diff --git a/x/gov/migrations/v4/json.go b/x/gov/migrations/v4/json.go index 8006aae5e0f8..125116c307af 100644 --- a/x/gov/migrations/v4/json.go +++ b/x/gov/migrations/v4/json.go @@ -15,10 +15,13 @@ func MigrateJSON(oldState *v1.GenesisState) (*v1.GenesisState, error) { params := v1.NewParams( oldState.DepositParams.MinDeposit, + defaultParams.ExpeditedMinDeposit, *oldState.DepositParams.MaxDepositPeriod, *oldState.VotingParams.VotingPeriod, + *defaultParams.ExpeditedVotingPeriod, oldState.TallyParams.Quorum, oldState.TallyParams.Threshold, + defaultParams.ExpeditedThreshold, oldState.TallyParams.VetoThreshold, defaultParams.MinInitialDepositRatio, defaultParams.BurnProposalDepositPrevote, diff --git a/x/gov/migrations/v4/json_test.go b/x/gov/migrations/v4/json_test.go index 8784ba3448cd..11c16e3d92b0 100644 --- a/x/gov/migrations/v4/json_test.go +++ b/x/gov/migrations/v4/json_test.go @@ -62,9 +62,14 @@ func TestMigrateJSON(t *testing.T) { "burn_proposal_deposit_prevote": false, "burn_vote_quorum": false, "burn_vote_veto": true, - "expedited_min_deposit": [], - "expedited_threshold": "", - "expedited_voting_period": null, + "expedited_min_deposit": [ + { + "amount": "50000000", + "denom": "stake" + } + ], + "expedited_threshold": "0.667000000000000000", + "expedited_voting_period": "86400s", "max_deposit_period": "172800s", "min_deposit": [ { diff --git a/x/gov/migrations/v4/store.go b/x/gov/migrations/v4/store.go index e81dde5f1427..09b92132959b 100644 --- a/x/gov/migrations/v4/store.go +++ b/x/gov/migrations/v4/store.go @@ -27,10 +27,13 @@ func migrateParams(ctx sdk.Context, storeKey storetypes.StoreKey, legacySubspace defaultParams := govv1.DefaultParams() params := govv1.NewParams( dp.MinDeposit, + defaultParams.ExpeditedMinDeposit, *dp.MaxDepositPeriod, *vp.VotingPeriod, + *defaultParams.ExpeditedVotingPeriod, tp.Quorum, tp.Threshold, + defaultParams.ExpeditedThreshold, tp.VetoThreshold, defaultParams.MinInitialDepositRatio, defaultParams.BurnProposalDepositPrevote, diff --git a/x/gov/simulation/decoder.go b/x/gov/simulation/decoder.go index 25af6b254ae4..3461f8d8ae70 100644 --- a/x/gov/simulation/decoder.go +++ b/x/gov/simulation/decoder.go @@ -4,10 +4,10 @@ import ( "bytes" "encoding/binary" "fmt" - "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/types/kv" "github.com/cosmos/cosmos-sdk/x/gov/types" + v1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" ) @@ -17,18 +17,27 @@ func NewDecodeStore(cdc codec.Codec) func(kvA, kvB kv.Pair) string { return func(kvA, kvB kv.Pair) string { switch { case bytes.Equal(kvA.Key[:1], types.ProposalsKeyPrefix): - var proposalA v1beta1.Proposal - err := cdc.Unmarshal(kvA.Value, &proposalA) - if err != nil { - panic(err) + var ( + proposalA v1beta1.Proposal + proposalB v1beta1.Proposal + + proposalD v1.Proposal + proposalC v1.Proposal + ) + if err := cdc.Unmarshal(kvA.Value, &proposalC); err != nil { + cdc.MustUnmarshal(kvA.Value, &proposalA) } - var proposalB v1beta1.Proposal - err = cdc.Unmarshal(kvB.Value, &proposalB) - if err != nil { - panic(err) + + if err := cdc.Unmarshal(kvB.Value, &proposalD); err != nil { + cdc.MustUnmarshal(kvB.Value, &proposalB) } - return fmt.Sprintf("%v\n%v", proposalA, proposalB) + // this is to check if the proposal has been unmarshalled as v1 correctly (and not v1beta1) + if proposalC.Title != "" || proposalD.Title != "" { + return fmt.Sprintf("%v\n%v", proposalC, proposalD) + } + + return fmt.Sprintf("%v\n%v", proposalA, proposalB) case bytes.Equal(kvA.Key[:1], types.ActiveProposalQueuePrefix), bytes.Equal(kvA.Key[:1], types.InactiveProposalQueuePrefix), bytes.Equal(kvA.Key[:1], types.ProposalIDKey): @@ -48,9 +57,6 @@ func NewDecodeStore(cdc codec.Codec) func(kvA, kvB kv.Pair) string { cdc.MustUnmarshal(kvB.Value, &voteB) return fmt.Sprintf("%v\n%v", voteA, voteB) - case bytes.Equal(kvA.Key[:1], types.VotingPeriodProposalKeyPrefix): - return fmt.Sprintf("%v\n%v", kvA.Value, kvB.Value) - default: panic(fmt.Sprintf("invalid governance key prefix %X", kvA.Key[:1])) } diff --git a/x/gov/simulation/genesis.go b/x/gov/simulation/genesis.go index b6c4e1e0d84c..9e1c446f4285 100644 --- a/x/gov/simulation/genesis.go +++ b/x/gov/simulation/genesis.go @@ -19,23 +19,41 @@ import ( // Simulation parameter constants const ( - DepositParamsMinDeposit = "deposit_params_min_deposit" - DepositParamsDepositPeriod = "deposit_params_deposit_period" - DepositMinInitialRatio = "deposit_params_min_initial_ratio" - VotingParamsVotingPeriod = "voting_params_voting_period" - TallyParamsQuorum = "tally_params_quorum" - TallyParamsThreshold = "tally_params_threshold" - TallyParamsVeto = "tally_params_veto" + MinDeposit = "min_deposit" + ExpeditedMinDeposit = "expedited_min_deposit" + DepositPeriod = "deposit_period" + MinInitialRatio = "min_initial_ratio" + VotingPeriod = "voting_period" + ExpeditedVotingPeriod = "expedited_voting_period" + Quorum = "quorum" + Threshold = "threshold" + ExpeditedThreshold = "expedited_threshold" + Veto = "veto" + ProposalCancelRate = "proposal_cancel_rate" + + // ExpeditedThreshold must be at least as large as the regular Threshold + // Therefore, we use this break out point in randomization. + tallyNonExpeditedMax = 500 + + // Similarly, expedited voting period must be strictly less than the regular + // voting period to be valid. Therefore, we use this break out point in randomization. + expeditedMaxVotingPeriod = 60 * 60 * 24 * 2 ) -// GenDepositParamsDepositPeriod returns randomized DepositParamsDepositPeriod -func GenDepositParamsDepositPeriod(r *rand.Rand) time.Duration { +// GenDepositPeriod returns randomized DepositParamsDepositPeriod +func GenDepositPeriod(r *rand.Rand) time.Duration { return time.Duration(simulation.RandIntBetween(r, 1, 2*60*60*24*2)) * time.Second } -// GenDepositParamsMinDeposit returns randomized DepositParamsMinDeposit -func GenDepositParamsMinDeposit(r *rand.Rand) sdk.Coins { - return sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, int64(simulation.RandIntBetween(r, 1, 1e3)))) +// GenMinDeposit returns randomized MinDeposit +func GenMinDeposit(r *rand.Rand, bondDenom string) sdk.Coins { + return sdk.NewCoins(sdk.NewInt64Coin(bondDenom, int64(simulation.RandIntBetween(r, 1, 1e3/2)))) +} + +// GenExpeditedMinDeposit returns randomized ExpeditedMinDeposit +// It is always greater than GenMinDeposit +func GenExpeditedMinDeposit(r *rand.Rand, bondDenom string) sdk.Coins { + return sdk.NewCoins(sdk.NewInt64Coin(bondDenom, int64(simulation.RandIntBetween(r, 1e3/2, 1e3)))) } // GenDepositMinInitialRatio returns randomized DepositMinInitialRatio @@ -43,23 +61,33 @@ func GenDepositMinInitialDepositRatio(r *rand.Rand) sdk.Dec { return sdk.NewDec(int64(simulation.RandIntBetween(r, 0, 99))).Quo(sdk.NewDec(100)) } -// GenVotingParamsVotingPeriod returns randomized VotingParamsVotingPeriod -func GenVotingParamsVotingPeriod(r *rand.Rand) time.Duration { +// GenVotingPeriod returns randomized VotingParamsVotingPeriod +func GenVotingPeriod(r *rand.Rand) time.Duration { return time.Duration(simulation.RandIntBetween(r, 1, 2*60*60*24*2)) * time.Second } -// GenTallyParamsQuorum returns randomized TallyParamsQuorum -func GenTallyParamsQuorum(r *rand.Rand) math.LegacyDec { +// GenExpeditedVotingPeriod randomized ExpeditedVotingPeriod +func GenExpeditedVotingPeriod(r *rand.Rand) time.Duration { + return time.Duration(simulation.RandIntBetween(r, 1, expeditedMaxVotingPeriod)) * time.Second +} + +// GenQuorum returns randomized TallyParamsQuorum +func GenQuorum(r *rand.Rand) math.LegacyDec { return sdk.NewDecWithPrec(int64(simulation.RandIntBetween(r, 334, 500)), 3) } -// GenTallyParamsThreshold returns randomized TallyParamsThreshold -func GenTallyParamsThreshold(r *rand.Rand) math.LegacyDec { +// GenThreshold returns randomized TallyParamsThreshold +func GenThreshold(r *rand.Rand) math.LegacyDec { return sdk.NewDecWithPrec(int64(simulation.RandIntBetween(r, 450, 550)), 3) } -// GenTallyParamsVeto returns randomized TallyParamsVeto -func GenTallyParamsVeto(r *rand.Rand) math.LegacyDec { +// GenExpeditedThreshold randomized ExpeditedThreshold +func GenExpeditedThreshold(r *rand.Rand) sdk.Dec { + return sdk.NewDecWithPrec(int64(simulation.RandIntBetween(r, tallyNonExpeditedMax, 550)), 3) +} + +// GenVeto returns randomized TallyParamsVeto +func GenVeto(r *rand.Rand) math.LegacyDec { return sdk.NewDecWithPrec(int64(simulation.RandIntBetween(r, 250, 334)), 3) } @@ -69,49 +97,81 @@ func RandomizedGenState(simState *module.SimulationState) { var minDeposit sdk.Coins simState.AppParams.GetOrGenerate( - simState.Cdc, DepositParamsMinDeposit, &minDeposit, simState.Rand, - func(r *rand.Rand) { minDeposit = GenDepositParamsMinDeposit(r) }, + simState.Cdc, MinDeposit, &minDeposit, simState.Rand, + func(r *rand.Rand) { minDeposit = GenMinDeposit(r, simState.BondDenom) }, + ) + + var expeditedMinDeposit sdk.Coins + simState.AppParams.GetOrGenerate( + simState.Cdc, ExpeditedMinDeposit, &expeditedMinDeposit, simState.Rand, + func(r *rand.Rand) { expeditedMinDeposit = GenExpeditedMinDeposit(r, simState.BondDenom) }, ) var depositPeriod time.Duration simState.AppParams.GetOrGenerate( - simState.Cdc, DepositParamsDepositPeriod, &depositPeriod, simState.Rand, - func(r *rand.Rand) { depositPeriod = GenDepositParamsDepositPeriod(r) }, + simState.Cdc, DepositPeriod, &depositPeriod, simState.Rand, + func(r *rand.Rand) { depositPeriod = GenDepositPeriod(r) }, ) var minInitialDepositRatio sdk.Dec simState.AppParams.GetOrGenerate( - simState.Cdc, DepositMinInitialRatio, &minInitialDepositRatio, simState.Rand, + simState.Cdc, MinInitialRatio, &minInitialDepositRatio, simState.Rand, func(r *rand.Rand) { minInitialDepositRatio = GenDepositMinInitialDepositRatio(r) }, ) var votingPeriod time.Duration simState.AppParams.GetOrGenerate( - simState.Cdc, VotingParamsVotingPeriod, &votingPeriod, simState.Rand, - func(r *rand.Rand) { votingPeriod = GenVotingParamsVotingPeriod(r) }, + simState.Cdc, VotingPeriod, &votingPeriod, simState.Rand, + func(r *rand.Rand) { votingPeriod = GenVotingPeriod(r) }, + ) + + var expeditedVotingPeriod time.Duration + simState.AppParams.GetOrGenerate( + simState.Cdc, ExpeditedVotingPeriod, &expeditedVotingPeriod, simState.Rand, + func(r *rand.Rand) { expeditedVotingPeriod = GenExpeditedVotingPeriod(r) }, ) var quorum sdk.Dec simState.AppParams.GetOrGenerate( - simState.Cdc, TallyParamsQuorum, &quorum, simState.Rand, - func(r *rand.Rand) { quorum = GenTallyParamsQuorum(r) }, + simState.Cdc, Quorum, &quorum, simState.Rand, + func(r *rand.Rand) { quorum = GenQuorum(r) }, ) var threshold sdk.Dec simState.AppParams.GetOrGenerate( - simState.Cdc, TallyParamsThreshold, &threshold, simState.Rand, - func(r *rand.Rand) { threshold = GenTallyParamsThreshold(r) }, + simState.Cdc, Threshold, &threshold, simState.Rand, + func(r *rand.Rand) { threshold = GenThreshold(r) }, + ) + + var expeditedVotingThreshold sdk.Dec + simState.AppParams.GetOrGenerate( + simState.Cdc, ExpeditedThreshold, &expeditedVotingThreshold, simState.Rand, + func(r *rand.Rand) { expeditedVotingThreshold = GenExpeditedThreshold(r) }, ) var veto sdk.Dec simState.AppParams.GetOrGenerate( - simState.Cdc, TallyParamsVeto, &veto, simState.Rand, - func(r *rand.Rand) { veto = GenTallyParamsVeto(r) }, + simState.Cdc, Veto, &veto, simState.Rand, + func(r *rand.Rand) { veto = GenVeto(r) }, ) govGenesis := v1.NewGenesisState( startingProposalID, - v1.NewParams(minDeposit, depositPeriod, votingPeriod, quorum.String(), threshold.String(), veto.String(), minInitialDepositRatio.String(), simState.Rand.Intn(2) == 0, simState.Rand.Intn(2) == 0, simState.Rand.Intn(2) == 0), + v1.NewParams( + minDeposit, + expeditedMinDeposit, + depositPeriod, + votingPeriod, + expeditedVotingPeriod, + quorum.String(), + threshold.String(), + expeditedVotingThreshold.String(), + veto.String(), + minInitialDepositRatio.String(), + simState.Rand.Intn(2) == 0, + simState.Rand.Intn(2) == 0, + simState.Rand.Intn(2) == 0, + ), ) bz, err := json.MarshalIndent(&govGenesis, "", " ") diff --git a/x/gov/simulation/genesis_test.go b/x/gov/simulation/genesis_test.go index f7bd89cbb690..0c66f33997af 100644 --- a/x/gov/simulation/genesis_test.go +++ b/x/gov/simulation/genesis_test.go @@ -2,6 +2,7 @@ package simulation_test import ( "encoding/json" + "gotest.tools/v3/assert" "math/rand" "testing" @@ -29,6 +30,7 @@ func TestRandomizedGenState(t *testing.T) { simState := module.SimulationState{ AppParams: make(simtypes.AppParams), Cdc: cdc, + BondDenom: "stake", Rand: r, NumBonded: 3, Accounts: simtypes.RandomAccounts(r, 3), @@ -42,22 +44,26 @@ func TestRandomizedGenState(t *testing.T) { simState.Cdc.MustUnmarshalJSON(simState.GenState[types.ModuleName], &govGenesis) const ( - tallyQuorum = "0.400000000000000000" - tallyThreshold = "0.539000000000000000" - tallyVetoThreshold = "0.314000000000000000" - minInitialDepositDec = "0.590000000000000000" + tallyQuorum = "0.466000000000000000" + tallyThreshold = "0.524000000000000000" + tallyExpeditedThreshold = "0.511000000000000000" + tallyVetoThreshold = "0.291000000000000000" + minInitialDepositDec = "0.880000000000000000" ) - require.Equal(t, "905stake", govGenesis.Params.MinDeposit[0].String()) - require.Equal(t, "77h26m10s", govGenesis.Params.MaxDepositPeriod.String()) - require.Equal(t, float64(275567), govGenesis.Params.VotingPeriod.Seconds()) - require.Equal(t, tallyQuorum, govGenesis.Params.Quorum) - require.Equal(t, tallyThreshold, govGenesis.Params.Threshold) - require.Equal(t, tallyVetoThreshold, govGenesis.Params.VetoThreshold) - require.Equal(t, uint64(0x28), govGenesis.StartingProposalId) - require.Equal(t, []*v1.Deposit{}, govGenesis.Deposits) - require.Equal(t, []*v1.Vote{}, govGenesis.Votes) - require.Equal(t, []*v1.Proposal{}, govGenesis.Proposals) + assert.Equal(t, "272stake", govGenesis.Params.MinDeposit[0].String()) + assert.Equal(t, "800stake", govGenesis.Params.ExpeditedMinDeposit[0].String()) + assert.Equal(t, "41h11m36s", govGenesis.Params.MaxDepositPeriod.String()) + assert.Equal(t, float64(135894), govGenesis.Params.VotingPeriod.Seconds()) + assert.Equal(t, float64(115820), govGenesis.Params.ExpeditedVotingPeriod.Seconds()) + assert.Equal(t, tallyQuorum, govGenesis.Params.Quorum) + assert.Equal(t, tallyThreshold, govGenesis.Params.Threshold) + assert.Equal(t, tallyExpeditedThreshold, govGenesis.Params.ExpeditedThreshold) + assert.Equal(t, tallyVetoThreshold, govGenesis.Params.VetoThreshold) + assert.Equal(t, uint64(0x28), govGenesis.StartingProposalId) + assert.DeepEqual(t, []*v1.Deposit{}, govGenesis.Deposits) + assert.DeepEqual(t, []*v1.Vote{}, govGenesis.Votes) + assert.DeepEqual(t, []*v1.Proposal{}, govGenesis.Proposals) } // TestRandomizedGenState tests abnormal scenarios of applying RandomizedGenState. diff --git a/x/gov/simulation/operations.go b/x/gov/simulation/operations.go index 6e51534dcac8..8e7b4c0f52b0 100644 --- a/x/gov/simulation/operations.go +++ b/x/gov/simulation/operations.go @@ -1,6 +1,7 @@ package simulation import ( + sdkmath "cosmossdk.io/math" "math" "math/rand" "time" @@ -197,6 +198,11 @@ func simulateMsgSubmitProposal(ak types.AccountKeeper, bk types.BankKeeper, k *k return simtypes.NoOpMsg(types.ModuleName, TypeMsgSubmitProposal, "unable to generate deposit"), nil, err } + expedited := r.Intn(2) == 0 + if expedited { + deposit = deposit.MulInt(sdkmath.NewInt(v1.DefaultMinExpeditedDepositTokensRatio)) + } + msg, err := v1.NewMsgSubmitProposal( proposalMsgs, deposit, @@ -204,7 +210,7 @@ func simulateMsgSubmitProposal(ak types.AccountKeeper, bk types.BankKeeper, k *k simtypes.RandStringOfLength(r, 100), simtypes.RandStringOfLength(r, 100), simtypes.RandStringOfLength(r, 100), - false, + expedited, ) if err != nil { return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate a submit proposal msg"), nil, err diff --git a/x/gov/simulation/operations_test.go b/x/gov/simulation/operations_test.go index 3f1b719ede00..20d20f539cfa 100644 --- a/x/gov/simulation/operations_test.go +++ b/x/gov/simulation/operations_test.go @@ -182,7 +182,7 @@ func TestSimulateMsgSubmitLegacyProposal(t *testing.T) { require.True(t, operationMsg.OK) require.Equal(t, "cosmos1p8wcgrjr4pjju90xg6u9cgq55dxwq8j7u4x9a0", msg.Proposer) require.NotEqual(t, len(msg.InitialDeposit), 0) - require.Equal(t, "2686011stake", msg.InitialDeposit[0].String()) + require.Equal(t, "13430055stake", msg.InitialDeposit[0].String()) require.Equal(t, "title-3: ZBSpYuLyYggwexjxusrBqDOTtGTOWeLrQKjLxzIivHSlcxgdXhhuTSkuxKGLwQvuyNhYFmBZHeAerqyNEUzXPFGkqEGqiQWIXnku", msg.Messages[0].GetCachedValue().(*v1.MsgExecLegacyContent).Content.GetCachedValue().(v1beta1.Content).GetTitle()) require.Equal(t, "description-3: NJWzHdBNpAXKJPHWQdrGYcAHSctgVlqwqHoLfHsXUdStwfefwzqLuKEhmMyYLdbZrcPgYqjNHxPexsruwEGStAneKbWkQDDIlCWBLSiAASNhZqNFlPtfqPJoxKsgMdzjWqLWdqKQuJqWPMvwPQWZUtVMOTMYKJbfdlZsjdsomuScvDmbDkgRualsxDvRJuCAmPOXitIbcyWsKGSdrEunFAOdmXnsuyFVgJqEjbklvmwrUlsxjRSfKZxGcpayDdgoFcnVSutxjRgOSFzPwidAjubMncNweqpbxhXGchpZUxuFDOtpnhNUycJICRYqsPhPSCjPTWZFLkstHWJxvdPEAyEIxXgLwbNOjrgzmaujiBABBIXvcXpLrbcEWNNQsbjvgJFgJkflpRohHUutvnaUqoopuKjTDaemDeSdqbnOzcfJpcTuAQtZoiLZOoAIlboFDAeGmSNwkvObPRvRWQgWkGkxwtPauYgdkmypLjbqhlHJIQTntgWjXwZdOyYEdQRRLfMSdnxqppqUofqLbLQDUjwKVKfZJUJQPsWIPwIVaSTrmKskoAhvmZyJgeRpkaTfGgrJzAigcxtfshmiDCFkuiluqtMOkidknnTBtumyJYlIsWLnCQclqdVmikUoMOPdPWwYbJxXyqUVicNxFxyqJTenNblyyKSdlCbiXxUiYUiMwXZASYfvMDPFgxniSjWaZTjHkqlJvtBsXqwPpyVxnJVGFWhfSxgOcduoxkiopJvFjMmFabrGYeVtTXLhxVUEiGwYUvndjFGzDVntUvibiyZhfMQdMhgsiuysLMiePBNXifRLMsSmXPkwlPloUbJveCvUlaalhZHuvdkCnkSHbMbmOnrfEGPwQiACiPlnihiaOdbjPqPiTXaHDoJXjSlZmltGqNHHNrcKdlFSCdmVOuvDcBLdSklyGJmcLTbSFtALdGlPkqqecJrpLCXNPWefoTJNgEJlyMEPneVaxxduAAEqQpHWZodWyRkDAxzyMnFMcjSVqeRXLqsNyNtQBbuRvunZflWSbbvXXdkyLikYqutQhLPONXbvhcQZJPSWnOulqQaXmbfFxAkqfYeseSHOQidHwbcsOaMnSrrmGjjRmEMQNuknupMxJiIeVjmgZvbmjPIQTEhQFULQLBMPrxcFPvBinaOPYWGvYGRKxLZdwamfRQQFngcdSlvwjfaPbURasIsGJVHtcEAxnIIrhSriiXLOlbEBLXFElXJFGxHJczRBIxAuPKtBisjKBwfzZFagdNmjdwIRvwzLkFKWRTDPxJCmpzHUcrPiiXXHnOIlqNVoGSXZewdnCRhuxeYGPVTfrNTQNOxZmxInOazUYNTNDgzsxlgiVEHPKMfbesvPHUqpNkUqbzeuzfdrsuLDpKHMUbBMKczKKWOdYoIXoPYtEjfOnlQLoGnbQUCuERdEFaptwnsHzTJDsuZkKtzMpFaZobynZdzNydEeJJHDYaQcwUxcqvwfWwNUsCiLvkZQiSfzAHftYgAmVsXgtmcYgTqJIawstRYJrZdSxlfRiqTufgEQVambeZZmaAyRQbcmdjVUZZCgqDrSeltJGXPMgZnGDZqISrGDOClxXCxMjmKqEPwKHoOfOeyGmqWqihqjINXLqnyTesZePQRqaWDQNqpLgNrAUKulklmckTijUltQKuWQDwpLmDyxLppPVMwsmBIpOwQttYFMjgJQZLYFPmxWFLIeZihkRNnkzoypBICIxgEuYsVWGIGRbbxqVasYnstWomJnHwmtOhAFSpttRYYzBmyEtZXiCthvKvWszTXDbiJbGXMcrYpKAgvUVFtdKUfvdMfhAryctklUCEdjetjuGNfJjajZtvzdYaqInKtFPPLYmRaXPdQzxdSQfmZDEVHlHGEGNSPRFJuIfKLLfUmnHxHnRjmzQPNlqrXgifUdzAGKVabYqvcDeYoTYgPsBUqehrBhmQUgTvDnsdpuhUoxskDdppTsYMcnDIPSwKIqhXDCIxOuXrywahvVavvHkPuaenjLmEbMgrkrQLHEAwrhHkPRNvonNQKqprqOFVZKAtpRSpvQUxMoXCMZLSSbnLEFsjVfANdQNQVwTmGxqVjVqRuxREAhuaDrFgEZpYKhwWPEKBevBfsOIcaZKyykQafzmGPLRAKDtTcJxJVgiiuUkmyMYuDUNEUhBEdoBLJnamtLmMJQgmLiUELIhLpiEvpOXOvXCPUeldLFqkKOwfacqIaRcnnZvERKRMCKUkMABbDHytQqQblrvoxOZkwzosQfDKGtIdfcXRJNqlBNwOCWoQBcEWyqrMlYZIAXYJmLfnjoJepgSFvrgajaBAIksoyeHqgqbGvpAstMIGmIhRYGGNPRIfOQKsGoKgxtsidhTaAePRCBFqZgPDWCIkqOJezGVkjfYUCZTlInbxBXwUAVRsxHTQtJFnnpmMvXDYCVlEmnZBKhmmxQOIQzxFWpJQkQoSAYzTEiDWEOsVLNrbfzeHFRyeYATakQQWmFDLPbVMCJcWjFGJjfqCoVzlbNNEsqxdSmNPjTjHYOkuEMFLkXYGaoJlraLqayMeCsTjWNRDPBywBJLAPVkGQqTwApVVwYAetlwSbzsdHWsTwSIcctkyKDuRWYDQikRqsKTMJchrliONJeaZIzwPQrNbTwxsGdwuduvibtYndRwpdsvyCktRHFalvUuEKMqXbItfGcNGWsGzubdPMYayOUOINjpcFBeESdwpdlTYmrPsLsVDhpTzoMegKrytNVZkfJRPuDCUXxSlSthOohmsuxmIZUedzxKmowKOdXTMcEtdpHaPWgIsIjrViKrQOCONlSuazmLuCUjLltOGXeNgJKedTVrrVCpWYWHyVrdXpKgNaMJVjbXxnVMSChdWKuZdqpisvrkBJPoURDYxWOtpjzZoOpWzyUuYNhCzRoHsMjmmWDcXzQiHIyjwdhPNwiPqFxeUfMVFQGImhykFgMIlQEoZCaRoqSBXTSWAeDumdbsOGtATwEdZlLfoBKiTvodQBGOEcuATWXfiinSjPmJKcWgQrTVYVrwlyMWhxqNbCMpIQNoSMGTiWfPTCezUjYcdWppnsYJihLQCqbNLRGgqrwHuIvsazapTpoPZIyZyeeSueJuTIhpHMEJfJpScshJubJGfkusuVBgfTWQoywSSliQQSfbvaHKiLnyjdSbpMkdBgXepoSsHnCQaYuHQqZsoEOmJCiuQUpJkmfyfbIShzlZpHFmLCsbknEAkKXKfRTRnuwdBeuOGgFbJLbDksHVapaRayWzwoYBEpmrlAxrUxYMUekKbpjPNfjUCjhbdMAnJmYQVZBQZkFVweHDAlaqJjRqoQPoOMLhyvYCzqEuQsAFoxWrzRnTVjStPadhsESlERnKhpEPsfDxNvxqcOyIulaCkmPdambLHvGhTZzysvqFauEgkFRItPfvisehFmoBhQqmkfbHVsgfHXDPJVyhwPllQpuYLRYvGodxKjkarnSNgsXoKEMlaSKxKdcVgvOkuLcfLFfdtXGTclqfPOfeoVLbqcjcXCUEBgAGplrkgsmIEhWRZLlGPGCwKWRaCKMkBHTAcypUrYjWwCLtOPVygMwMANGoQwFnCqFrUGMCRZUGJKTZIGPyldsifauoMnJPLTcDHmilcmahlqOELaAUYDBuzsVywnDQfwRLGIWozYaOAilMBcObErwgTDNGWnwQMUgFFSKtPDMEoEQCTKVREqrXZSGLqwTMcxHfWotDllNkIJPMbXzjDVjPOOjCFuIvTyhXKLyhUScOXvYthRXpPfKwMhptXaxIxgqBoUqzrWbaoLTVpQoottZyPFfNOoMioXHRuFwMRYUiKvcWPkrayyTLOCFJlAyslDameIuqVAuxErqFPEWIScKpBORIuZqoXlZuTvAjEdlEWDODFRregDTqGNoFBIHxvimmIZwLfFyKUfEWAnNBdtdzDmTPXtpHRGdIbuucfTjOygZsTxPjfweXhSUkMhPjMaxKlMIJMOXcnQfyzeOcbWwNbeH", msg.Messages[0].GetCachedValue().(*v1.MsgExecLegacyContent).Content.GetCachedValue().(v1beta1.Content).GetDescription()) require.Equal(t, "gov", msg.Route()) diff --git a/x/gov/types/v1/params.go b/x/gov/types/v1/params.go index 4ba1d34bff6d..05b45a15a459 100644 --- a/x/gov/types/v1/params.go +++ b/x/gov/types/v1/params.go @@ -18,14 +18,16 @@ const ( // Default governance params var ( - DefaultMinDepositTokens = sdk.NewInt(10000000) - DefaultQuorum = sdk.NewDecWithPrec(334, 3) - DefaultThreshold = sdk.NewDecWithPrec(5, 1) - DefaultVetoThreshold = sdk.NewDecWithPrec(334, 3) - DefaultMinInitialDepositRatio = sdk.ZeroDec() - DefaultBurnProposalPrevote = false // set to false to replicate behavior of when this change was made (0.47) - DefaultBurnVoteQuorom = false // set to false to replicate behavior of when this change was made (0.47) - DefaultBurnVoteVeto = true // set to true to replicate behavior of when this change was made (0.47) + DefaultMinDepositTokens = sdk.NewInt(10000000) + DefaultMinExpeditedDepositTokens = DefaultMinDepositTokens.Mul(math.NewInt(DefaultMinExpeditedDepositTokensRatio)) + DefaultQuorum = sdk.NewDecWithPrec(334, 3) + DefaultThreshold = sdk.NewDecWithPrec(5, 1) + DefaultExpeditedThreshold = sdk.NewDecWithPrec(667, 3) + DefaultVetoThreshold = sdk.NewDecWithPrec(334, 3) + DefaultMinInitialDepositRatio = sdk.ZeroDec() + DefaultBurnProposalPrevote = false // set to false to replicate behavior of when this change was made (0.47) + DefaultBurnVoteQuorom = false // set to false to replicate behavior of when this change was made (0.47) + DefaultBurnVoteVeto = true // set to true to replicate behavior of when this change was made (0.47) ) // Deprecated: NewDepositParams creates a new DepositParams object @@ -54,15 +56,18 @@ func NewVotingParams(votingPeriod *time.Duration) VotingParams { // NewParams creates a new Params instance with given values. func NewParams( - minDeposit sdk.Coins, maxDepositPeriod, votingPeriod time.Duration, - quorum, threshold, vetoThreshold, minInitialDepositRatio string, burnProposalDeposit, burnVoteQuorum, burnVoteVeto bool, + minDeposit, expeditedMinDeposit sdk.Coins, maxDepositPeriod, votingPeriod, expeditedVotingPeriod time.Duration, + quorum, threshold, expeditedThreshold, vetoThreshold, minInitialDepositRatio string, burnProposalDeposit, burnVoteQuorum, burnVoteVeto bool, ) Params { return Params{ MinDeposit: minDeposit, + ExpeditedMinDeposit: expeditedMinDeposit, MaxDepositPeriod: &maxDepositPeriod, VotingPeriod: &votingPeriod, + ExpeditedVotingPeriod: &expeditedVotingPeriod, Quorum: quorum, Threshold: threshold, + ExpeditedThreshold: expeditedThreshold, VetoThreshold: vetoThreshold, MinInitialDepositRatio: minInitialDepositRatio, BurnProposalDepositPrevote: burnProposalDeposit, @@ -75,10 +80,13 @@ func NewParams( func DefaultParams() Params { return NewParams( sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, DefaultMinDepositTokens)), + sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, DefaultMinExpeditedDepositTokens)), DefaultPeriod, DefaultPeriod, + DefaultExpeditedPeriod, DefaultQuorum.String(), DefaultThreshold.String(), + DefaultExpeditedThreshold.String(), DefaultVetoThreshold.String(), DefaultMinInitialDepositRatio.String(), DefaultBurnProposalPrevote, @@ -89,10 +97,17 @@ func DefaultParams() Params { // ValidateBasic performs basic validation on governance parameters. func (p Params) ValidateBasic() error { - if minDeposit := sdk.Coins(p.MinDeposit); minDeposit.Empty() || !minDeposit.IsValid() { + minDeposit := sdk.Coins(p.MinDeposit) + if minDeposit.Empty() || !minDeposit.IsValid() { return fmt.Errorf("invalid minimum deposit: %s", minDeposit) } + if minExpeditedDeposit := sdk.Coins(p.ExpeditedMinDeposit); minExpeditedDeposit.Empty() || !minExpeditedDeposit.IsValid() { + return fmt.Errorf("invalid expedited minimum deposit: %s", minExpeditedDeposit) + } else if minExpeditedDeposit.IsAllLTE(minDeposit) { + return fmt.Errorf("expedited minimum deposit must be greater than minimum deposit: %s", minExpeditedDeposit) + } + if p.MaxDepositPeriod == nil { return fmt.Errorf("maximum deposit period must not be nil: %d", p.MaxDepositPeriod) } @@ -123,6 +138,20 @@ func (p Params) ValidateBasic() error { return fmt.Errorf("vote threshold too large: %s", threshold) } + expeditedThreshold, err := sdk.NewDecFromStr(p.ExpeditedThreshold) + if err != nil { + return fmt.Errorf("invalid expedited threshold string: %w", err) + } + if !threshold.IsPositive() { + return fmt.Errorf("expedited vote threshold must be positive: %s", threshold) + } + if threshold.GT(math.LegacyOneDec()) { + return fmt.Errorf("expedited vote threshold too large: %s", threshold) + } + if expeditedThreshold.LTE(threshold) { + return fmt.Errorf("expedited vote threshold %s, must be greater than the regular threshold %s", expeditedThreshold, threshold) + } + vetoThreshold, err := sdk.NewDecFromStr(p.VetoThreshold) if err != nil { return fmt.Errorf("invalid vetoThreshold string: %w", err) @@ -142,5 +171,15 @@ func (p Params) ValidateBasic() error { return fmt.Errorf("voting period must be positive: %s", p.VotingPeriod) } + if p.ExpeditedVotingPeriod == nil { + return fmt.Errorf("expedited voting period must not be nil: %d", p.ExpeditedVotingPeriod) + } + if p.ExpeditedVotingPeriod.Seconds() <= 0 { + return fmt.Errorf("expedited voting period must be positive: %s", p.ExpeditedVotingPeriod) + } + if p.ExpeditedVotingPeriod.Seconds() >= p.VotingPeriod.Seconds() { + return fmt.Errorf("expedited voting period %s must be strictly less that the regular voting period %s", p.ExpeditedVotingPeriod, p.VotingPeriod) + } + return nil } From 2d840a1d27f911e755a182bc16cecc2b76311a95 Mon Sep 17 00:00:00 2001 From: unknown unknown Date: Wed, 6 Dec 2023 11:33:45 +0100 Subject: [PATCH 13/13] sync and finalise --- x/gov/abci_test.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/x/gov/abci_test.go b/x/gov/abci_test.go index e98544a27689..3006bb5521b8 100644 --- a/x/gov/abci_test.go +++ b/x/gov/abci_test.go @@ -307,10 +307,6 @@ func TestProposalPassedEndblocker(t *testing.T) { for _, tt := range tc { t.Run(tt.name, func(t *testing.T) { - if tt.isExpedited { - // TODO: test this once we have expedited implemented - t.SkipNow() - } suite := createTestSuite(t) app := suite.App ctx := app.BaseApp.NewContext(false, tmproto.Header{})