diff --git a/.mergify.yml b/.mergify.yml index a7e38c0426..28ec751ea1 100644 --- a/.mergify.yml +++ b/.mergify.yml @@ -8,6 +8,7 @@ pull_request_rules: merge: method: squash strict: true + commit_message: title+body - name: backport patches to v0.42.x branch conditions: - base=master diff --git a/CHANGELOG.md b/CHANGELOG.md index 43c0beed6f..47325522b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -57,6 +57,7 @@ if input key is empty, or input data contains empty key. * (x/staking) [\#9214](https://github.com/cosmos/cosmos-sdk/pull/9214) Added `new_shares` attribute inside `EventTypeDelegate` event. * [\#9382](https://github.com/cosmos/cosmos-sdk/pull/9382) feat: add Dec.Float64() function. * [\#9457](https://github.com/cosmos/cosmos-sdk/pull/9457) Add amino support for x/authz and x/feegrant Msgs. +* [\#9498](https://github.com/cosmos/cosmos-sdk/pull/9498) Added `Codec: codec.Codec` attribute to `client/Context` structure. ### Client Breaking Changes @@ -85,6 +86,7 @@ if input key is empty, or input data contains empty key. * (x/gov) [\#8473](https://github.com/cosmos/cosmos-sdk/pull/8473) On genesis init, if the gov module account balance, coming from bank module state, does not match the one in gov module state, the initialization will panic. * (x/distribution) [\#8473](https://github.com/cosmos/cosmos-sdk/pull/8473) On genesis init, if the distribution module account balance, coming from bank module state, does not match the one in distribution module state, the initialization will panic. * (client/keys) [\#8500](https://github.com/cosmos/cosmos-sdk/pull/8500) `InfoImporter` interface is removed from legacy keybase. +* (x/staking) [\#8505](https://github.com/cosmos/cosmos-sdk/pull/8505) `sdk.PowerReduction` has been renamed to `sdk.DefaultPowerReduction`, and most staking functions relying on power reduction take a new function argument, instead of relying on that global variable. * [\#8629](https://github.com/cosmos/cosmos-sdk/pull/8629) Deprecated `SetFullFundraiserPath` from `Config` in favor of `SetPurpose` and `SetCoinType`. * (x/upgrade) [\#8673](https://github.com/cosmos/cosmos-sdk/pull/8673) Remove IBC logic from x/upgrade. Deprecates IBC fields in an Upgrade Plan. IBC upgrade logic moved to 02-client and an IBC UpgradeProposal is added. * (x/bank) [\#8517](https://github.com/cosmos/cosmos-sdk/pull/8517) `SupplyI` interface and `Supply` are removed and uses `sdk.Coins` for supply tracking @@ -125,7 +127,6 @@ if input key is empty, or input data contains empty key. * (x/bank) [\#8656](https://github.com/cosmos/cosmos-sdk/pull/8656) balance and supply are now correctly tracked via `coin_spent`, `coin_received`, `coinbase` and `burn` events. * (x/bank) [\#8517](https://github.com/cosmos/cosmos-sdk/pull/8517) Supply is now stored and tracked as `sdk.Coins` * (store) [\#8790](https://github.com/cosmos/cosmos-sdk/pull/8790) Reduce gas costs by 10x for transient store operations. -* (x/staking) [\#8505](https://github.com/cosmos/cosmos-sdk/pull/8505) Convert staking power reduction into an on-chain parameter rather than a hardcoded in-code variable. * (x/bank) [\#9051](https://github.com/cosmos/cosmos-sdk/pull/9051) Supply value is stored as `sdk.Int` rather than `string`. ### Improvements @@ -155,6 +156,8 @@ if input key is empty, or input data contains empty key. ### Deprecated * (grpc) [\#8926](https://github.com/cosmos/cosmos-sdk/pull/8926) The `tx` field in `SimulateRequest` has been deprecated, prefer to pass `tx_bytes` instead. +* (sdk types) [\#9498](https://github.com/cosmos/cosmos-sdk/pull/9498) `clientContext.JSONCodec` will be removed in the next version. use `clientContext.Codec` instead. + ## [v0.42.4](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.42.4) - 2021-04-08 diff --git a/client/context.go b/client/context.go index ee6fe8b860..246ea5b40d 100644 --- a/client/context.go +++ b/client/context.go @@ -22,10 +22,12 @@ import ( // Context implements a typical context created in SDK modules for transaction // handling and queries. type Context struct { - FromAddress sdk.AccAddress - Client rpcclient.Client - ChainID string + FromAddress sdk.AccAddress + Client rpcclient.Client + ChainID string + // Deprecated: Codec codec will be changed to Codec: codec.Codec JSONCodec codec.JSONCodec + Codec codec.Codec InterfaceRegistry codectypes.InterfaceRegistry Input io.Reader Keyring keyring.Keyring @@ -72,9 +74,21 @@ func (ctx Context) WithInput(r io.Reader) Context { return ctx } -// WithJSONCodec returns a copy of the Context with an updated JSONCodec. +// Deprecated: WithJSONCodec returns a copy of the Context with an updated JSONCodec. func (ctx Context) WithJSONCodec(m codec.JSONCodec) Context { ctx.JSONCodec = m + // since we are using ctx.Codec everywhere in the SDK, for backward compatibility + // we need to try to set it here as well. + if c, ok := m.(codec.Codec); ok { + ctx.Codec = c + } + return ctx +} + +// WithCodec returns a copy of the Context with an updated Codec. +func (ctx Context) WithCodec(m codec.Codec) Context { + ctx.JSONCodec = m + ctx.Codec = m return ctx } @@ -254,10 +268,10 @@ func (ctx Context) PrintBytes(o []byte) error { // PrintProto outputs toPrint to the ctx.Output based on ctx.OutputFormat which is // either text or json. If text, toPrint will be YAML encoded. Otherwise, toPrint -// will be JSON encoded using ctx.JSONCodec. An error is returned upon failure. +// will be JSON encoded using ctx.Codec. An error is returned upon failure. func (ctx Context) PrintProto(toPrint proto.Message) error { // always serialize JSON initially because proto json can't be directly YAML encoded - out, err := ctx.JSONCodec.MarshalJSON(toPrint) + out, err := ctx.Codec.MarshalJSON(toPrint) if err != nil { return err } diff --git a/client/context_test.go b/client/context_test.go index 53214b7c23..9c2e8d4ab1 100644 --- a/client/context_test.go +++ b/client/context_test.go @@ -41,7 +41,7 @@ func TestContext_PrintObject(t *testing.T) { // proto // registry := testdata.NewTestInterfaceRegistry() - ctx = ctx.WithJSONCodec(codec.NewProtoCodec(registry)) + ctx = ctx.WithCodec(codec.NewProtoCodec(registry)) // json buf := &bytes.Buffer{} diff --git a/client/debug/main.go b/client/debug/main.go index 377fa5f549..03358fd7c2 100644 --- a/client/debug/main.go +++ b/client/debug/main.go @@ -32,7 +32,7 @@ func Cmd() *cobra.Command { // getPubKeyFromString decodes SDK PubKey using JSON marshaler. func getPubKeyFromString(ctx client.Context, pkstr string) (cryptotypes.PubKey, error) { var pk cryptotypes.PubKey - err := ctx.JSONCodec.UnmarshalInterfaceJSON([]byte(pkstr), &pk) + err := ctx.Codec.UnmarshalInterfaceJSON([]byte(pkstr), &pk) return pk, err } diff --git a/client/grpc/tmservice/service_test.go b/client/grpc/tmservice/service_test.go index 0256ec8197..3de92411c9 100644 --- a/client/grpc/tmservice/service_test.go +++ b/client/grpc/tmservice/service_test.go @@ -57,7 +57,7 @@ func (s IntegrationTestSuite) TestQueryNodeInfo() { restRes, err := rest.GetRequest(fmt.Sprintf("%s/cosmos/base/tendermint/v1beta1/node_info", val.APIAddress)) s.Require().NoError(err) var getInfoRes tmservice.GetNodeInfoResponse - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(restRes, &getInfoRes)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(restRes, &getInfoRes)) s.Require().Equal(getInfoRes.ApplicationVersion.AppName, version.NewInfo().AppName) } @@ -70,7 +70,7 @@ func (s IntegrationTestSuite) TestQuerySyncing() { restRes, err := rest.GetRequest(fmt.Sprintf("%s/cosmos/base/tendermint/v1beta1/syncing", val.APIAddress)) s.Require().NoError(err) var syncingRes tmservice.GetSyncingResponse - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(restRes, &syncingRes)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(restRes, &syncingRes)) } func (s IntegrationTestSuite) TestQueryLatestBlock() { @@ -82,7 +82,7 @@ func (s IntegrationTestSuite) TestQueryLatestBlock() { restRes, err := rest.GetRequest(fmt.Sprintf("%s/cosmos/base/tendermint/v1beta1/blocks/latest", val.APIAddress)) s.Require().NoError(err) var blockInfoRes tmservice.GetLatestBlockResponse - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(restRes, &blockInfoRes)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(restRes, &blockInfoRes)) } func (s IntegrationTestSuite) TestQueryBlockByHeight() { @@ -93,7 +93,7 @@ func (s IntegrationTestSuite) TestQueryBlockByHeight() { restRes, err := rest.GetRequest(fmt.Sprintf("%s/cosmos/base/tendermint/v1beta1/blocks/%d", val.APIAddress, 1)) s.Require().NoError(err) var blockInfoRes tmservice.GetBlockByHeightResponse - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(restRes, &blockInfoRes)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(restRes, &blockInfoRes)) } func (s IntegrationTestSuite) TestQueryLatestValidatorSet() { @@ -124,7 +124,7 @@ func (s IntegrationTestSuite) TestQueryLatestValidatorSet() { restRes, err := rest.GetRequest(fmt.Sprintf("%s/cosmos/base/tendermint/v1beta1/validatorsets/latest?pagination.offset=%d&pagination.limit=%d", val.APIAddress, 0, 1)) s.Require().NoError(err) var validatorSetRes tmservice.GetLatestValidatorSetResponse - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(restRes, &validatorSetRes)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(restRes, &validatorSetRes)) s.Require().Equal(1, len(validatorSetRes.Validators)) anyPub, err := codectypes.NewAnyWithValue(val.PubKey) s.Require().NoError(err) @@ -183,7 +183,7 @@ func (s IntegrationTestSuite) TestLatestValidatorSet_GRPCGateway() { s.Require().Contains(string(res), tc.expErrMsg) } else { var result tmservice.GetLatestValidatorSetResponse - err = vals[0].ClientCtx.JSONCodec.UnmarshalJSON(res, &result) + err = vals[0].ClientCtx.Codec.UnmarshalJSON(res, &result) s.Require().NoError(err) s.Require().Equal(uint64(len(vals)), result.Pagination.Total) anyPub, err := codectypes.NewAnyWithValue(vals[0].PubKey) @@ -245,7 +245,7 @@ func (s IntegrationTestSuite) TestValidatorSetByHeight_GRPCGateway() { s.Require().Contains(string(res), tc.expErrMsg) } else { var result tmservice.GetValidatorSetByHeightResponse - err = vals[0].ClientCtx.JSONCodec.UnmarshalJSON(res, &result) + err = vals[0].ClientCtx.Codec.UnmarshalJSON(res, &result) s.Require().NoError(err) s.Require().Equal(uint64(len(vals)), result.Pagination.Total) } diff --git a/client/keys/add.go b/client/keys/add.go index 19a927f739..d043632051 100644 --- a/client/keys/add.go +++ b/client/keys/add.go @@ -172,7 +172,7 @@ func RunAddCmd(ctx client.Context, cmd *cobra.Command, args []string, inBuf *buf pubKey, _ := cmd.Flags().GetString(FlagPublicKey) if pubKey != "" { var pk cryptotypes.PubKey - err = ctx.JSONCodec.UnmarshalInterfaceJSON([]byte(pubKey), &pk) + err = ctx.Codec.UnmarshalInterfaceJSON([]byte(pubKey), &pk) if err != nil { return err } diff --git a/docs/architecture/adr-020-protobuf-transaction-encoding.md b/docs/architecture/adr-020-protobuf-transaction-encoding.md index d2e288db38..2efe583cf5 100644 --- a/docs/architecture/adr-020-protobuf-transaction-encoding.md +++ b/docs/architecture/adr-020-protobuf-transaction-encoding.md @@ -13,7 +13,8 @@ - 2020 September 25: Remove `PublicKey` type in favor of `secp256k1.PubKey`, `ed25519.PubKey` and `multisig.LegacyAminoPubKey`. - 2020 October 15: Add `GetAccount` and `GetAccountWithHeight` methods to the `AccountRetriever` interface. - 2021 Feb 24: The SDK does not use Tendermint's `PubKey` interface anymore, but its own `cryptotypes.PubKey`. Updates to reflect this. -- 2021 May 3: Rename `clientCtx.JSONMarshaler` to `clientCtx.JSONCodec` +- 2021 May 3: Rename `clientCtx.JSONMarshaler` to `clientCtx.JSONCodec`. +- 2021 June 10: Add `clientCtx.Codec: codec.Codec`. ## Status @@ -344,7 +345,7 @@ type TxBuilder interface { } ``` -We then update `Context` to have new fields: `JSONCodec`, `TxGenerator`, +We then update `Context` to have new fields: `Codec`, `TxGenerator`, and `AccountRetriever`, and we update `AppModuleBasic.GetTxCmd` to take a `Context` which should have all of these fields pre-populated. diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md index 4b67f25205..fe31a7f910 100644 --- a/docs/core/proto-docs.md +++ b/docs/core/proto-docs.md @@ -6394,7 +6394,6 @@ Params defines the parameters for the staking module. | `max_entries` | [uint32](#uint32) | | max_entries is the max entries for either unbonding delegation or redelegation (per pair/trio). | | `historical_entries` | [uint32](#uint32) | | historical_entries is the number of historical entries to persist. | | `bond_denom` | [string](#string) | | bond_denom defines the bondable coin denomination. | -| `power_reduction` | [string](#string) | | power_reduction is the amount of staking tokens required for 1 unit of consensus-engine power | diff --git a/docs/migrations/app_and_modules.md b/docs/migrations/app_and_modules.md index 64f004c907..7c93a1f6d5 100644 --- a/docs/migrations/app_and_modules.md +++ b/docs/migrations/app_and_modules.md @@ -146,7 +146,7 @@ clientCtx, err := client.GetClientTxContext(cmd) Some other flags helper functions are transformed: `flags.PostCommands(cmds ...*cobra.Command) []*cobra.Command` and `flags.GetCommands(...)` usage is now replaced by `flags.AddTxFlagsToCmd(cmd *cobra.Command)` and `flags.AddQueryFlagsToCmd(cmd *cobra.Command)` respectively. -Moreover, new CLI commands don't take any codec as input anymore. Instead, the `clientCtx` can be retrieved from the `cmd` itself using the `GetClient{Query,Tx}Context` function above, and the codec as `clientCtx.JSONCodec`. +Moreover, new CLI commands don't take any codec as input anymore. Instead, the `clientCtx` can be retrieved from the `cmd` itself using the `GetClient{Query,Tx}Context` function above, and the codec as `clientCtx.Codec`. ```diff // v0.39 @@ -154,10 +154,10 @@ Moreover, new CLI commands don't take any codec as input anymore. Instead, the ` - cdc.MarshalJSON(...) - } -// v0.40 +// v0.43 + func NewSendTxCmd() *cobra.Command { + clientCtx, err := client.GetClientTxContext(cmd) -+ clientCtx.JSONCodec.MarshalJSON(...) ++ clientCtx.Codec.MarshalJSON(...) +} ``` diff --git a/proto/cosmos/staking/v1beta1/staking.proto b/proto/cosmos/staking/v1beta1/staking.proto index 651cd91778..76e9599e2d 100644 --- a/proto/cosmos/staking/v1beta1/staking.proto +++ b/proto/cosmos/staking/v1beta1/staking.proto @@ -282,12 +282,6 @@ message Params { uint32 historical_entries = 4 [(gogoproto.moretags) = "yaml:\"historical_entries\""]; // bond_denom defines the bondable coin denomination. string bond_denom = 5 [(gogoproto.moretags) = "yaml:\"bond_denom\""]; - // power_reduction is the amount of staking tokens required for 1 unit of consensus-engine power - string power_reduction = 6 [ - (gogoproto.moretags) = "yaml:\"power_reduction\"", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", - (gogoproto.nullable) = false - ]; } // DelegationResponse is equivalent to Delegation except that it contains a diff --git a/server/export_test.go b/server/export_test.go index e7d62ebfcf..364a8475dd 100644 --- a/server/export_test.go +++ b/server/export_test.go @@ -135,7 +135,7 @@ func setupApp(t *testing.T, tempDir string) (*simapp.SimApp, context.Context, *t serverCtx := server.NewDefaultContext() serverCtx.Config.RootDir = tempDir - clientCtx := client.Context{}.WithJSONCodec(app.AppCodec()) + clientCtx := client.Context{}.WithCodec(app.AppCodec()) genDoc := newDefaultGenesisDoc(encCfg.Marshaler) require.NoError(t, saveGenesisFile(genDoc, serverCtx.Config.GenesisFile())) diff --git a/server/start.go b/server/start.go index 1ce8811ba7..0c084c858e 100644 --- a/server/start.go +++ b/server/start.go @@ -347,7 +347,7 @@ func startInProcess(ctx *Context, clientCtx client.Context, appCreator types.App Retries: config.Rosetta.Retries, Offline: offlineMode, } - conf.WithCodec(clientCtx.InterfaceRegistry, clientCtx.JSONCodec.(*codec.ProtoCodec)) + conf.WithCodec(clientCtx.InterfaceRegistry, clientCtx.Codec.(*codec.ProtoCodec)) rosettaSrv, err = rosetta.ServerFromConfig(conf) if err != nil { diff --git a/server/tm_cmds.go b/server/tm_cmds.go index 4d94422f79..35e202abc2 100644 --- a/server/tm_cmds.go +++ b/server/tm_cmds.go @@ -55,7 +55,7 @@ func ShowValidatorCmd() *cobra.Command { return err } clientCtx := client.GetClientContextFromCmd(cmd) - bz, err := clientCtx.JSONCodec.MarshalInterfaceJSON(sdkPK) + bz, err := clientCtx.Codec.MarshalInterfaceJSON(sdkPK) if err != nil { return err } diff --git a/simapp/params/encoding.go b/simapp/params/encoding.go index 3d634abf16..2cd16263a8 100644 --- a/simapp/params/encoding.go +++ b/simapp/params/encoding.go @@ -10,7 +10,8 @@ import ( // This is provided for compatibility between protobuf and amino implementations. type EncodingConfig struct { InterfaceRegistry types.InterfaceRegistry - Marshaler codec.Codec - TxConfig client.TxConfig - Amino *codec.LegacyAmino + // NOTE: this field will be renamed to Codec + Marshaler codec.Codec + TxConfig client.TxConfig + Amino *codec.LegacyAmino } diff --git a/simapp/simd/cmd/genaccounts.go b/simapp/simd/cmd/genaccounts.go index 5c04059b7d..408a7dad0c 100644 --- a/simapp/simd/cmd/genaccounts.go +++ b/simapp/simd/cmd/genaccounts.go @@ -40,7 +40,7 @@ contain valid denominations. Accounts may optionally be supplied with vesting pa Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { clientCtx := client.GetClientContextFromCmd(cmd) - depCdc := clientCtx.JSONCodec + depCdc := clientCtx.Codec cdc := depCdc.(codec.Codec) serverCtx := server.GetServerContextFromCmd(cmd) diff --git a/simapp/simd/cmd/genaccounts_test.go b/simapp/simd/cmd/genaccounts_test.go index a1b0137a12..2802cd4af8 100644 --- a/simapp/simd/cmd/genaccounts_test.go +++ b/simapp/simd/cmd/genaccounts_test.go @@ -63,7 +63,7 @@ func TestAddGenesisAccountCmd(t *testing.T) { require.NoError(t, err) serverCtx := server.NewContext(viper.New(), cfg, logger) - clientCtx := client.Context{}.WithJSONCodec(appCodec).WithHomeDir(home) + clientCtx := client.Context{}.WithCodec(appCodec).WithHomeDir(home) ctx := context.Background() ctx = context.WithValue(ctx, client.ClientContextKey, &clientCtx) diff --git a/simapp/simd/cmd/root.go b/simapp/simd/cmd/root.go index e40412d076..e37944f09d 100644 --- a/simapp/simd/cmd/root.go +++ b/simapp/simd/cmd/root.go @@ -39,7 +39,7 @@ import ( func NewRootCmd() (*cobra.Command, params.EncodingConfig) { encodingConfig := simapp.MakeTestEncodingConfig() initClientCtx := client.Context{}. - WithJSONCodec(encodingConfig.Marshaler). + WithCodec(encodingConfig.Marshaler). WithInterfaceRegistry(encodingConfig.InterfaceRegistry). WithTxConfig(encodingConfig.TxConfig). WithLegacyAmino(encodingConfig.Amino). diff --git a/simapp/simd/cmd/testnet.go b/simapp/simd/cmd/testnet.go index d789c3471f..071d9364d0 100644 --- a/simapp/simd/cmd/testnet.go +++ b/simapp/simd/cmd/testnet.go @@ -271,11 +271,11 @@ func initGenFiles( genFiles []string, numValidators int, ) error { - appGenState := mbm.DefaultGenesis(clientCtx.JSONCodec) + appGenState := mbm.DefaultGenesis(clientCtx.Codec) // set the accounts in the genesis state var authGenState authtypes.GenesisState - clientCtx.JSONCodec.MustUnmarshalJSON(appGenState[authtypes.ModuleName], &authGenState) + clientCtx.Codec.MustUnmarshalJSON(appGenState[authtypes.ModuleName], &authGenState) accounts, err := authtypes.PackAccounts(genAccounts) if err != nil { @@ -283,14 +283,17 @@ func initGenFiles( } authGenState.Accounts = accounts - appGenState[authtypes.ModuleName] = clientCtx.JSONCodec.MustMarshalJSON(&authGenState) + appGenState[authtypes.ModuleName] = clientCtx.Codec.MustMarshalJSON(&authGenState) // set the balances in the genesis state var bankGenState banktypes.GenesisState - clientCtx.JSONCodec.MustUnmarshalJSON(appGenState[banktypes.ModuleName], &bankGenState) + clientCtx.Codec.MustUnmarshalJSON(appGenState[banktypes.ModuleName], &bankGenState) - bankGenState.Balances = genBalances - appGenState[banktypes.ModuleName] = clientCtx.JSONCodec.MustMarshalJSON(&bankGenState) + bankGenState.Balances = banktypes.SanitizeGenesisBalances(genBalances) + for _, bal := range bankGenState.Balances { + bankGenState.Supply = bankGenState.Supply.Add(bal.Coins...) + } + appGenState[banktypes.ModuleName] = clientCtx.Codec.MustMarshalJSON(&bankGenState) appGenStateJSON, err := json.MarshalIndent(appGenState, "", " ") if err != nil { @@ -337,7 +340,7 @@ func collectGenFiles( return err } - nodeAppState, err := genutil.GenAppStateFromConfig(clientCtx.JSONCodec, clientCtx.TxConfig, nodeConfig, initCfg, *genDoc, genBalIterator) + nodeAppState, err := genutil.GenAppStateFromConfig(clientCtx.Codec, clientCtx.TxConfig, nodeConfig, initCfg, *genDoc, genBalIterator) if err != nil { return err } diff --git a/simapp/simd/cmd/testnet_test.go b/simapp/simd/cmd/testnet_test.go new file mode 100644 index 0000000000..da58fd454d --- /dev/null +++ b/simapp/simd/cmd/testnet_test.go @@ -0,0 +1,50 @@ +package cmd + +import ( + "context" + "fmt" + "testing" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/server" + "github.com/cosmos/cosmos-sdk/simapp" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + genutiltest "github.com/cosmos/cosmos-sdk/x/genutil/client/testutil" + genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" + "github.com/spf13/viper" + "github.com/stretchr/testify/require" + "github.com/tendermint/tendermint/libs/log" +) + +func Test_TestnetCmd(t *testing.T) { + home := t.TempDir() + encodingConfig := simapp.MakeTestEncodingConfig() + logger := log.NewNopLogger() + cfg, err := genutiltest.CreateDefaultTendermintConfig(home) + require.NoError(t, err) + + err = genutiltest.ExecInitCmd(simapp.ModuleBasics, home, encodingConfig.Marshaler) + require.NoError(t, err) + + serverCtx := server.NewContext(viper.New(), cfg, logger) + clientCtx := client.Context{}. + WithCodec(encodingConfig.Marshaler). + WithHomeDir(home). + WithTxConfig(encodingConfig.TxConfig) + + ctx := context.Background() + ctx = context.WithValue(ctx, server.ServerContextKey, serverCtx) + ctx = context.WithValue(ctx, client.ClientContextKey, &clientCtx) + cmd := testnetCmd(simapp.ModuleBasics, banktypes.GenesisBalancesIterator{}) + cmd.SetArgs([]string{fmt.Sprintf("--%s=test", flags.FlagKeyringBackend), fmt.Sprintf("--output-dir=%s", home)}) + err = cmd.ExecuteContext(ctx) + require.NoError(t, err) + + genFile := cfg.GenesisFile() + appState, _, err := genutiltypes.GenesisStateFromGenFile(genFile) + require.NoError(t, err) + + bankGenState := banktypes.GetGenesisStateFromAppState(encodingConfig.Marshaler, appState) + require.NotEmpty(t, bankGenState.Supply.String()) +} diff --git a/testutil/network/network.go b/testutil/network/network.go index 58f08316a4..2f17bca132 100644 --- a/testutil/network/network.go +++ b/testutil/network/network.go @@ -346,7 +346,7 @@ func New(t *testing.T, cfg Config) *Network { WithHomeDir(tmCfg.RootDir). WithChainID(cfg.ChainID). WithInterfaceRegistry(cfg.InterfaceRegistry). - WithJSONCodec(cfg.Codec). + WithCodec(cfg.Codec). WithLegacyAmino(cfg.LegacyAmino). WithTxConfig(cfg.TxConfig). WithAccountRetriever(cfg.AccountRetriever) diff --git a/x/auth/client/cli/encode_test.go b/x/auth/client/cli/encode_test.go index 2b0a7ab2e5..ed3566aaf2 100644 --- a/x/auth/client/cli/encode_test.go +++ b/x/auth/client/cli/encode_test.go @@ -39,7 +39,7 @@ func TestGetCommandEncode(t *testing.T) { ctx := context.Background() clientCtx := client.Context{}. WithTxConfig(encodingConfig.TxConfig). - WithJSONCodec(encodingConfig.Marshaler) + WithCodec(encodingConfig.Marshaler) ctx = context.WithValue(ctx, client.ClientContextKey, &clientCtx) cmd.SetArgs([]string{txFileName}) @@ -52,7 +52,7 @@ func TestGetCommandDecode(t *testing.T) { clientCtx := client.Context{}. WithTxConfig(encodingConfig.TxConfig). - WithJSONCodec(encodingConfig.Marshaler) + WithCodec(encodingConfig.Marshaler) cmd := GetDecodeCommand() _ = testutil.ApplyMockIODiscardOutErr(cmd) diff --git a/x/auth/client/rest/rest_test.go b/x/auth/client/rest/rest_test.go index 038321f242..4d7ebf9268 100644 --- a/x/auth/client/rest/rest_test.go +++ b/x/auth/client/rest/rest_test.go @@ -258,7 +258,7 @@ func (s *IntegrationTestSuite) TestQueryTx() { s.Require().NoError(err) var txRes sdk.TxResponse - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &txRes)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &txRes)) s.Require().Equal(uint32(0), txRes.Code) s.Require().NoError(s.network.WaitForNextBlock()) @@ -411,7 +411,7 @@ func (s *IntegrationTestSuite) testQueryIBCTx(txRes sdk.TxResponse, cmd *cobra.C s.Require().NoError(err) var getTxRes txtypes.GetTxResponse - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(grpcJSON, &getTxRes)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(grpcJSON, &getTxRes)) s.Require().Equal(getTxRes.Tx.Body.Memo, "foobar") // generate broadcast only txn. @@ -522,7 +522,7 @@ func (s *IntegrationTestSuite) TestLegacyMultisig() { s.Require().NoError(s.network.WaitForNextBlock()) var txRes sdk.TxResponse - err = val1.ClientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &txRes) + err = val1.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &txRes) s.Require().NoError(err) s.Require().Equal(uint32(0), txRes.Code) diff --git a/x/auth/client/testutil/suite.go b/x/auth/client/testutil/suite.go index f176716cfb..9456260c89 100644 --- a/x/auth/client/testutil/suite.go +++ b/x/auth/client/testutil/suite.go @@ -169,7 +169,7 @@ func (s *IntegrationTestSuite) TestCLISignAminoJSON() { queryResJSON, err := QueryAccountExec(val1.ClientCtx, val1.Address) require.NoError(err) var account authtypes.AccountI - require.NoError(val1.ClientCtx.JSONCodec.UnmarshalInterfaceJSON(queryResJSON.Bytes(), &account)) + require.NoError(val1.ClientCtx.Codec.UnmarshalInterfaceJSON(queryResJSON.Bytes(), &account)) /**** test signature-only ****/ res, err := TxSignExec(val1.ClientCtx, val1.Address, fileUnsigned.Name(), chainFlag, @@ -258,7 +258,7 @@ func (s *IntegrationTestSuite) TestCLIQueryTxCmd() { ) s.Require().NoError(err) var txRes sdk.TxResponse - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &txRes)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &txRes)) s.Require().NoError(s.network.WaitForNextBlock()) testCases := []struct { @@ -300,7 +300,7 @@ func (s *IntegrationTestSuite) TestCLIQueryTxCmd() { s.Require().NotEqual("internal", err.Error()) } else { var result sdk.TxResponse - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &result)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &result)) s.Require().NotNil(result.Height) s.Require().Contains(result.RawLog, tc.rawLogContains) } @@ -353,7 +353,7 @@ func (s *IntegrationTestSuite) TestCLISendGenerateSignAndBroadcast() { s.Require().NoError(err) var balRes banktypes.QueryAllBalancesResponse - err = val1.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &balRes) + err = val1.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), &balRes) s.Require().NoError(err) startTokens := balRes.Balances.AmountOf(s.cfg.BondDenom) @@ -414,7 +414,7 @@ func (s *IntegrationTestSuite) TestCLISendGenerateSignAndBroadcast() { resp, err = bankcli.QueryBalancesExec(val1.ClientCtx, val1.Address) s.Require().NoError(err) - err = val1.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &balRes) + err = val1.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), &balRes) s.Require().NoError(err) s.Require().Equal(startTokens, balRes.Balances.AmountOf(s.cfg.BondDenom)) @@ -437,7 +437,7 @@ func (s *IntegrationTestSuite) TestCLISendGenerateSignAndBroadcast() { resp, err = bankcli.QueryBalancesExec(val1.ClientCtx, account.GetAddress()) s.Require().NoError(err) - err = val1.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &balRes) + err = val1.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), &balRes) s.Require().NoError(err) s.Require().Equal(sendTokens.Amount, balRes.Balances.AmountOf(s.cfg.BondDenom)) @@ -445,7 +445,7 @@ func (s *IntegrationTestSuite) TestCLISendGenerateSignAndBroadcast() { resp, err = bankcli.QueryBalancesExec(val1.ClientCtx, val1.Address) s.Require().NoError(err) - err = val1.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &balRes) + err = val1.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), &balRes) s.Require().NoError(err) } @@ -554,7 +554,7 @@ func (s *IntegrationTestSuite) TestCLIMultisignSortSignatures() { s.Require().NoError(err) var balRes banktypes.QueryAllBalancesResponse - err = val1.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &balRes) + err = val1.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), &balRes) s.Require().NoError(err) intialCoins := balRes.Balances @@ -572,7 +572,7 @@ func (s *IntegrationTestSuite) TestCLIMultisignSortSignatures() { resp, err = bankcli.QueryBalancesExec(val1.ClientCtx, multisigInfo.GetAddress()) s.Require().NoError(err) - err = val1.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &balRes) + err = val1.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), &balRes) s.Require().NoError(err) diff, _ := balRes.Balances.SafeSub(intialCoins) s.Require().Equal(sendTokens.Amount, diff.AmountOf(s.cfg.BondDenom)) @@ -650,7 +650,7 @@ func (s *IntegrationTestSuite) TestCLIMultisign() { s.Require().NoError(err) var balRes banktypes.QueryAllBalancesResponse - err = val1.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &balRes) + err = val1.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), &balRes) s.Require().NoError(err) s.Require().Equal(sendTokens.Amount, balRes.Balances.AmountOf(s.cfg.BondDenom)) @@ -805,7 +805,7 @@ func (s *IntegrationTestSuite) TestMultisignBatch() { queryResJSON, err := QueryAccountExec(val.ClientCtx, multisigInfo.GetAddress()) s.Require().NoError(err) var account authtypes.AccountI - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalInterfaceJSON(queryResJSON.Bytes(), &account)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalInterfaceJSON(queryResJSON.Bytes(), &account)) // sign-batch file res, err := TxSignBatchExec(val.ClientCtx, account1.GetAddress(), filename.Name(), fmt.Sprintf("--%s=%s", flags.FlagChainID, val.ClientCtx.ChainID), "--multisig", multisigInfo.GetAddress().String(), fmt.Sprintf("--%s", flags.FlagOffline), fmt.Sprintf("--%s=%s", flags.FlagAccountNumber, fmt.Sprint(account.GetAccountNumber())), fmt.Sprintf("--%s=%s", flags.FlagSequence, fmt.Sprint(account.GetSequence()))) @@ -867,7 +867,7 @@ func (s *IntegrationTestSuite) TestGetAccountCmd() { s.Require().NotEqual("internal", err.Error()) } else { var acc authtypes.AccountI - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalInterfaceJSON(out.Bytes(), &acc)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalInterfaceJSON(out.Bytes(), &acc)) s.Require().Equal(val.Address, acc.GetAddress()) } }) @@ -884,7 +884,7 @@ func (s *IntegrationTestSuite) TestGetAccountsCmd() { s.Require().NoError(err) var res authtypes.QueryAccountsResponse - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &res)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &res)) s.Require().NotEmpty(res.Accounts) } @@ -962,7 +962,7 @@ func (s *IntegrationTestSuite) TestQueryParamsCmd() { s.Require().NotEqual("internal", err.Error()) } else { var authParams authtypes.Params - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &authParams)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &authParams)) s.Require().NotNil(authParams.MaxMemoCharacters) } }) @@ -1009,11 +1009,11 @@ func (s *IntegrationTestSuite) TestTxWithoutPublicKey() { // Note: this method is only used for test purposes! In general, one should // use txBuilder and TxEncoder/TxDecoder to manipulate txs. var tx tx.Tx - err = val1.ClientCtx.JSONCodec.UnmarshalJSON(signedTx.Bytes(), &tx) + err = val1.ClientCtx.Codec.UnmarshalJSON(signedTx.Bytes(), &tx) s.Require().NoError(err) tx.AuthInfo.SignerInfos[0].PublicKey = nil // Re-encode the tx again, to another file. - txJSON, err = val1.ClientCtx.JSONCodec.MarshalJSON(&tx) + txJSON, err = val1.ClientCtx.Codec.MarshalJSON(&tx) s.Require().NoError(err) signedTxFile := testutil.WriteToNewTempFile(s.T(), string(txJSON)) s.Require().True(strings.Contains(string(txJSON), "\"public_key\":null")) @@ -1023,7 +1023,7 @@ func (s *IntegrationTestSuite) TestTxWithoutPublicKey() { out, err := TxBroadcastExec(val1.ClientCtx, signedTxFile.Name()) s.Require().NoError(err) var res sdk.TxResponse - s.Require().NoError(val1.ClientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &res)) + s.Require().NoError(val1.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &res)) s.Require().NotEqual(0, res.Code) } @@ -1081,14 +1081,14 @@ func (s *IntegrationTestSuite) TestSignWithMultiSignersAminoJSON() { require.NoError(err) var txRes sdk.TxResponse - require.NoError(val0.ClientCtx.JSONCodec.UnmarshalJSON(res.Bytes(), &txRes)) + require.NoError(val0.ClientCtx.Codec.UnmarshalJSON(res.Bytes(), &txRes)) require.Equal(uint32(0), txRes.Code) // Make sure the addr1's balance got funded. queryResJSON, err := bankcli.QueryBalancesExec(val0.ClientCtx, addr1) require.NoError(err) var queryRes banktypes.QueryAllBalancesResponse - err = val0.ClientCtx.JSONCodec.UnmarshalJSON(queryResJSON.Bytes(), &queryRes) + err = val0.ClientCtx.Codec.UnmarshalJSON(queryResJSON.Bytes(), &queryRes) require.NoError(err) require.Equal(sdk.NewCoins(val0Coin, val1Coin), queryRes.Balances) } diff --git a/x/auth/legacy/v040/migrate_test.go b/x/auth/legacy/v040/migrate_test.go index b6892702db..9b09d6e18a 100644 --- a/x/auth/legacy/v040/migrate_test.go +++ b/x/auth/legacy/v040/migrate_test.go @@ -241,7 +241,7 @@ func TestMigrate(t *testing.T) { } }` - bz, err := clientCtx.JSONCodec.MarshalJSON(migrated) + bz, err := clientCtx.Codec.MarshalJSON(migrated) require.NoError(t, err) // Indent the JSON bz correctly. diff --git a/x/auth/tx/service_test.go b/x/auth/tx/service_test.go index 547186603a..9a4bc1d40d 100644 --- a/x/auth/tx/service_test.go +++ b/x/auth/tx/service_test.go @@ -76,7 +76,7 @@ func (s *IntegrationTestSuite) SetupSuite() { fmt.Sprintf("--%s=foobar", flags.FlagNote), ) s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &s.txRes)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &s.txRes)) s.Require().Equal(uint32(0), s.txRes.Code) s.Require().NoError(s.network.WaitForNextBlock()) @@ -151,7 +151,7 @@ func (s IntegrationTestSuite) TestSimulateTx_GRPCGateway() { for _, tc := range testCases { s.Run(tc.name, func() { - req, err := val.ClientCtx.JSONCodec.MarshalJSON(tc.req) + req, err := val.ClientCtx.Codec.MarshalJSON(tc.req) s.Require().NoError(err) res, err := rest.PostRequest(fmt.Sprintf("%s/cosmos/tx/v1beta1/simulate", val.APIAddress), "application/json", req) s.Require().NoError(err) @@ -159,7 +159,7 @@ func (s IntegrationTestSuite) TestSimulateTx_GRPCGateway() { s.Require().Contains(string(res), tc.expErrMsg) } else { var result tx.SimulateResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(res, &result) + err = val.ClientCtx.Codec.UnmarshalJSON(res, &result) s.Require().NoError(err) // Check the result and gas used are correct. s.Require().Equal(len(result.GetResult().GetEvents()), 6) // 1 coin recv, 1 coin spent,1 transfer, 3 messages. @@ -313,7 +313,7 @@ func (s IntegrationTestSuite) TestGetTxEvents_GRPCGateway() { s.Require().Contains(string(res), tc.expErrMsg) } else { var result tx.GetTxsEventResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(res, &result) + err = val.ClientCtx.Codec.UnmarshalJSON(res, &result) s.Require().NoError(err) s.Require().GreaterOrEqual(len(result.Txs), 1) s.Require().Equal("foobar", result.Txs[0].Body.Memo) @@ -382,7 +382,7 @@ func (s IntegrationTestSuite) TestGetTx_GRPCGateway() { s.Require().Contains(string(res), tc.expErrMsg) } else { var result tx.GetTxResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(res, &result) + err = val.ClientCtx.Codec.UnmarshalJSON(res, &result) s.Require().NoError(err) s.Require().Equal("foobar", result.Tx.Body.Memo) s.Require().NotZero(result.TxResponse.Height) @@ -459,7 +459,7 @@ func (s IntegrationTestSuite) TestBroadcastTx_GRPCGateway() { for _, tc := range testCases { s.Run(tc.name, func() { - req, err := val.ClientCtx.JSONCodec.MarshalJSON(tc.req) + req, err := val.ClientCtx.Codec.MarshalJSON(tc.req) s.Require().NoError(err) res, err := rest.PostRequest(fmt.Sprintf("%s/cosmos/tx/v1beta1/txs", val.APIAddress), "application/json", req) s.Require().NoError(err) @@ -467,7 +467,7 @@ func (s IntegrationTestSuite) TestBroadcastTx_GRPCGateway() { s.Require().Contains(string(res), tc.expErrMsg) } else { var result tx.BroadcastTxResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(res, &result) + err = val.ClientCtx.Codec.UnmarshalJSON(res, &result) s.Require().NoError(err) s.Require().Equal(uint32(0), result.TxResponse.Code, "rawlog", result.TxResponse.RawLog) } diff --git a/x/auth/vesting/client/testutil/suite.go b/x/auth/vesting/client/testutil/suite.go index 1d41e136d0..f619f31165 100644 --- a/x/auth/vesting/client/testutil/suite.go +++ b/x/auth/vesting/client/testutil/suite.go @@ -122,7 +122,7 @@ func (s *IntegrationTestSuite) TestNewMsgCreateVestingAccountCmd() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(bw.Bytes(), tc.respType), bw.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bw.Bytes(), tc.respType), bw.String()) txResp := tc.respType.(*sdk.TxResponse) s.Require().Equal(tc.expectedCode, txResp.Code) diff --git a/x/authz/client/rest/grpc_query_test.go b/x/authz/client/rest/grpc_query_test.go index 00106b4302..3f29323815 100644 --- a/x/authz/client/rest/grpc_query_test.go +++ b/x/authz/client/rest/grpc_query_test.go @@ -139,7 +139,7 @@ func (s *IntegrationTestSuite) TestQueryGrantGRPC() { require.Contains(string(resp), tc.errorMsg) } else { var g authz.QueryGrantsResponse - err := val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &g) + err := val.ClientCtx.Codec.UnmarshalJSON(resp, &g) require.NoError(err) require.Len(g.Grants, 1) g.Grants[0].UnpackInterfaces(val.ClientCtx.InterfaceRegistry) @@ -223,7 +223,7 @@ func (s *IntegrationTestSuite) TestQueryGrantsGRPC() { s.Require().Contains(string(resp), tc.errMsg) } else { var authorizations authz.QueryGrantsResponse - err := val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &authorizations) + err := val.ClientCtx.Codec.UnmarshalJSON(resp, &authorizations) s.Require().NoError(err) tc.postRun(&authorizations) } diff --git a/x/authz/client/testutil/query.go b/x/authz/client/testutil/query.go index acdd7b7abf..529939a701 100644 --- a/x/authz/client/testutil/query.go +++ b/x/authz/client/testutil/query.go @@ -85,7 +85,7 @@ func (s *IntegrationTestSuite) TestQueryAuthorizations() { } else { s.Require().NoError(err) var grants authz.QueryGrantsResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &grants) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), &grants) s.Require().NoError(err) } }) diff --git a/x/authz/client/testutil/tx.go b/x/authz/client/testutil/tx.go index 66c077ad68..10932d9bda 100644 --- a/x/authz/client/testutil/tx.go +++ b/x/authz/client/testutil/tx.go @@ -290,7 +290,7 @@ func (s *IntegrationTestSuite) TestCLITxGrantAuthorization() { } else { var txResp sdk.TxResponse s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &txResp), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &txResp), out.String()) s.Require().Equal(tc.expectedCode, txResp.Code, out.String()) } }) @@ -441,7 +441,7 @@ func (s *IntegrationTestSuite) TestCmdRevokeAuthorizations() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) txResp := tc.respType.(*sdk.TxResponse) s.Require().Equal(tc.expectedCode, txResp.Code, out.String()) @@ -584,7 +584,7 @@ func (s *IntegrationTestSuite) TestNewExecGenericAuthorized() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) txResp := tc.respType.(*sdk.TxResponse) s.Require().Equal(tc.expectedCode, txResp.Code, out.String()) } @@ -670,7 +670,7 @@ func (s *IntegrationTestSuite) TestNewExecGrantAuthorized() { } else { var response sdk.TxResponse s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &response), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &response), out.String()) s.Require().Equal(tc.expectedCode, response.Code, out.String()) } }) @@ -767,7 +767,7 @@ func (s *IntegrationTestSuite) TestExecDelegateAuthorization() { } else { var response sdk.TxResponse s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &response), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &response), out.String()) s.Require().Equal(tc.expectedCode, response.Code, out.String()) } }) @@ -844,7 +844,7 @@ func (s *IntegrationTestSuite) TestExecDelegateAuthorization() { } else { var response sdk.TxResponse s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &response), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &response), out.String()) s.Require().Equal(tc.expectedCode, response.Code, out.String()) } }) @@ -985,7 +985,7 @@ func (s *IntegrationTestSuite) TestExecUndelegateAuthorization() { } else { var response sdk.TxResponse s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &response), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &response), out.String()) s.Require().Equal(tc.expectedCode, response.Code, out.String()) } }) @@ -1062,7 +1062,7 @@ func (s *IntegrationTestSuite) TestExecUndelegateAuthorization() { } else { var response sdk.TxResponse s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &response), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &response), out.String()) s.Require().Equal(tc.expectedCode, response.Code, out.String()) } }) diff --git a/x/bank/client/rest/grpc_query_test.go b/x/bank/client/rest/grpc_query_test.go index a770919b17..5277fd22d0 100644 --- a/x/bank/client/rest/grpc_query_test.go +++ b/x/bank/client/rest/grpc_query_test.go @@ -95,7 +95,7 @@ func (s *IntegrationTestSuite) TestTotalSupplyGRPCHandler() { resp, err := testutil.GetRequestWithHeaders(tc.url, tc.headers) s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType)) s.Require().Equal(tc.expected.String(), tc.respType.String()) }) } @@ -199,9 +199,9 @@ func (s *IntegrationTestSuite) TestDenomMetadataGRPCHandler() { s.Require().NoError(err) if tc.expErr { - s.Require().Error(val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType)) + s.Require().Error(val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType)) } else { - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType)) s.Require().Equal(tc.expected.String(), tc.respType.String()) } }) @@ -262,7 +262,7 @@ func (s *IntegrationTestSuite) TestBalancesGRPCHandler() { resp, err := rest.GetRequest(tc.url) s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType)) s.Require().Equal(tc.expected.String(), tc.respType.String()) }) } diff --git a/x/bank/client/testutil/suite.go b/x/bank/client/testutil/suite.go index 69892674fe..19be5401c6 100644 --- a/x/bank/client/testutil/suite.go +++ b/x/bank/client/testutil/suite.go @@ -155,7 +155,7 @@ func (s *IntegrationTestSuite) TestGetBalancesCmd() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.respType)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType)) s.Require().Equal(tc.expected.String(), tc.respType.String()) } }) @@ -227,7 +227,7 @@ func (s *IntegrationTestSuite) TestGetCmdQueryTotalSupply() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.respType)) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType)) s.Require().Equal(tc.expected, tc.respType) } }) @@ -354,7 +354,7 @@ func (s *IntegrationTestSuite) TestGetCmdQueryDenomsMetadata() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.respType)) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType)) s.Require().Equal(tc.expected, tc.respType) } }) @@ -462,7 +462,7 @@ func (s *IntegrationTestSuite) TestNewSendTxCmd() { } else { s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(bz.Bytes(), tc.respType), bz.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz.Bytes(), tc.respType), bz.String()) txResp := tc.respType.(*sdk.TxResponse) s.Require().Equal(tc.expectedCode, txResp.Code) } diff --git a/x/bank/legacy/v040/migrate_test.go b/x/bank/legacy/v040/migrate_test.go index 9f1874f8c9..e30299ff92 100644 --- a/x/bank/legacy/v040/migrate_test.go +++ b/x/bank/legacy/v040/migrate_test.go @@ -50,7 +50,7 @@ func TestMigrate(t *testing.T) { migrated := v040bank.Migrate(bankGenState, authGenState, supplyGenState) expected := `{"params":{"send_enabled":[],"default_send_enabled":true},"balances":[{"address":"cosmos1xxkueklal9vejv9unqu80w9vptyepfa95pd53u","coins":[{"denom":"stake","amount":"50"}]},{"address":"cosmos15v50ymp6n5dn73erkqtmq0u8adpl8d3ujv2e74","coins":[{"denom":"stake","amount":"50"}]}],"supply":[{"denom":"stake","amount":"1000"}],"denom_metadata":[]}` - bz, err := clientCtx.JSONCodec.MarshalJSON(migrated) + bz, err := clientCtx.Codec.MarshalJSON(migrated) require.NoError(t, err) require.Equal(t, expected, string(bz)) } diff --git a/x/crisis/client/testsuite/suite.go b/x/crisis/client/testsuite/suite.go index c38ff8fe17..d0d82f6212 100644 --- a/x/crisis/client/testsuite/suite.go +++ b/x/crisis/client/testsuite/suite.go @@ -94,7 +94,7 @@ func (s *IntegrationTestSuite) TestNewMsgVerifyInvariantTxCmd() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) txResp := tc.respType.(*sdk.TxResponse) s.Require().Equal(tc.expectedCode, txResp.Code) diff --git a/x/distribution/client/cli/tx.go b/x/distribution/client/cli/tx.go index ab81fc44e4..f65e6fd8a7 100644 --- a/x/distribution/client/cli/tx.go +++ b/x/distribution/client/cli/tx.go @@ -293,7 +293,7 @@ Where proposal.json contains: if err != nil { return err } - proposal, err := ParseCommunityPoolSpendProposalWithDeposit(clientCtx.JSONCodec, args[0]) + proposal, err := ParseCommunityPoolSpendProposalWithDeposit(clientCtx.Codec, args[0]) if err != nil { return err } diff --git a/x/distribution/client/rest/grpc_query_test.go b/x/distribution/client/rest/grpc_query_test.go index 393b5da76e..ec8e2a7666 100644 --- a/x/distribution/client/rest/grpc_query_test.go +++ b/x/distribution/client/rest/grpc_query_test.go @@ -61,7 +61,7 @@ func (s *IntegrationTestSuite) TestQueryParamsGRPC() { resp, err := rest.GetRequest(tc.url) s.Run(tc.name, func() { s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType)) s.Require().Equal(tc.expected, tc.respType) }) } @@ -111,10 +111,10 @@ func (s *IntegrationTestSuite) TestQueryOutstandingRewardsGRPC() { resp, err := testutil.GetRequestWithHeaders(tc.url, tc.headers) s.Run(tc.name, func() { if tc.expErr { - s.Require().Error(val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType)) + s.Require().Error(val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType)) } else { s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType)) s.Require().Equal(tc.expected.String(), tc.respType.String()) } }) @@ -165,10 +165,10 @@ func (s *IntegrationTestSuite) TestQueryValidatorCommissionGRPC() { resp, err := testutil.GetRequestWithHeaders(tc.url, tc.headers) s.Run(tc.name, func() { if tc.expErr { - s.Require().Error(val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType)) + s.Require().Error(val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType)) } else { s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType)) s.Require().Equal(tc.expected.String(), tc.respType.String()) } }) @@ -224,10 +224,10 @@ func (s *IntegrationTestSuite) TestQuerySlashesGRPC() { s.Run(tc.name, func() { if tc.expErr { - s.Require().Error(val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType)) + s.Require().Error(val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType)) } else { s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType)) s.Require().Equal(tc.expected.String(), tc.respType.String()) } }) @@ -300,10 +300,10 @@ func (s *IntegrationTestSuite) TestQueryDelegatorRewardsGRPC() { s.Run(tc.name, func() { if tc.expErr { - s.Require().Error(val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType)) + s.Require().Error(val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType)) } else { s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType)) s.Require().Equal(tc.expected.String(), tc.respType.String()) } }) @@ -352,10 +352,10 @@ func (s *IntegrationTestSuite) TestQueryDelegatorValidatorsGRPC() { s.Run(tc.name, func() { if tc.expErr { - s.Require().Error(val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType)) + s.Require().Error(val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType)) } else { s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType)) s.Require().Equal(tc.expected.String(), tc.respType.String()) } }) @@ -404,10 +404,10 @@ func (s *IntegrationTestSuite) TestQueryWithdrawAddressGRPC() { s.Run(tc.name, func() { if tc.expErr { - s.Require().Error(val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType)) + s.Require().Error(val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType)) } else { s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType)) s.Require().Equal(tc.expected.String(), tc.respType.String()) } }) @@ -452,7 +452,7 @@ func (s *IntegrationTestSuite) TestQueryValidatorCommunityPoolGRPC() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType)) s.Require().Equal(tc.expected.String(), tc.respType.String()) } }) diff --git a/x/distribution/client/testutil/suite.go b/x/distribution/client/testutil/suite.go index 91c24a4302..3dcfca70aa 100644 --- a/x/distribution/client/testutil/suite.go +++ b/x/distribution/client/testutil/suite.go @@ -502,7 +502,7 @@ func (s *IntegrationTestSuite) TestNewWithdrawRewardsCmd() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(bz, tc.respType), string(bz)) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz, tc.respType), string(bz)) txResp := tc.respType.(*sdk.TxResponse) s.Require().Equal(tc.expectedCode, txResp.Code) @@ -555,7 +555,7 @@ func (s *IntegrationTestSuite) TestNewWithdrawAllRewardsCmd() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) txResp := tc.respType.(*sdk.TxResponse) s.Require().Equal(tc.expectedCode, txResp.Code) @@ -610,7 +610,7 @@ func (s *IntegrationTestSuite) TestNewSetWithdrawAddrCmd() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) txResp := tc.respType.(*sdk.TxResponse) s.Require().Equal(tc.expectedCode, txResp.Code) @@ -665,7 +665,7 @@ func (s *IntegrationTestSuite) TestNewFundCommunityPoolCmd() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) txResp := tc.respType.(*sdk.TxResponse) s.Require().Equal(tc.expectedCode, txResp.Code) @@ -739,7 +739,7 @@ func (s *IntegrationTestSuite) TestGetCmdSubmitProposal() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) txResp := tc.respType.(*sdk.TxResponse) s.Require().Equal(tc.expectedCode, txResp.Code, out.String()) diff --git a/x/evidence/client/rest/query.go b/x/evidence/client/rest/query.go index 4ce8e22e08..b8bdcf4813 100644 --- a/x/evidence/client/rest/query.go +++ b/x/evidence/client/rest/query.go @@ -47,7 +47,7 @@ func queryEvidenceHandler(clientCtx client.Context) http.HandlerFunc { } params := types.NewQueryEvidenceRequest(decodedHash) - bz, err := clientCtx.JSONCodec.MarshalJSON(params) + bz, err := clientCtx.Codec.MarshalJSON(params) if err != nil { rest.WriteErrorResponse(w, http.StatusBadRequest, fmt.Sprintf("failed to marshal query params: %s", err)) return diff --git a/x/evidence/legacy/v040/migrate_test.go b/x/evidence/legacy/v040/migrate_test.go index 0ad7fe3e56..43d3d9db7e 100644 --- a/x/evidence/legacy/v040/migrate_test.go +++ b/x/evidence/legacy/v040/migrate_test.go @@ -34,7 +34,7 @@ func TestMigrate(t *testing.T) { migrated := v040evidence.Migrate(evidenceGenState) expected := `{"evidence":[{"@type":"/cosmos.evidence.v1beta1.Equivocation","height":"20","time":"0001-01-01T00:00:00Z","power":"100","consensus_address":"cosmosvalcons1xxkueklal9vejv9unqu80w9vptyepfa99x2a3w"}]}` - bz, err := clientCtx.JSONCodec.MarshalJSON(migrated) + bz, err := clientCtx.Codec.MarshalJSON(migrated) require.NoError(t, err) require.Equal(t, expected, string(bz)) } diff --git a/x/feegrant/client/testutil/suite.go b/x/feegrant/client/testutil/suite.go index 90dc13307f..c539cf8476 100644 --- a/x/feegrant/client/testutil/suite.go +++ b/x/feegrant/client/testutil/suite.go @@ -178,7 +178,7 @@ func (s *IntegrationTestSuite) TestCmdGetFeeGrant() { s.Require().Contains(err.Error(), tc.expectErrMsg) } else { s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) s.Require().Equal(tc.respType.Grantee, tc.respType.Grantee) s.Require().Equal(tc.respType.Granter, tc.respType.Granter) grant, err := tc.respType.GetGrant() @@ -243,7 +243,7 @@ func (s *IntegrationTestSuite) TestCmdGetFeeGrants() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.resp), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.resp), out.String()) s.Require().Len(tc.resp.Allowances, tc.expectLength) } }) @@ -506,7 +506,7 @@ func (s *IntegrationTestSuite) TestNewCmdFeeGrant() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) txResp := tc.respType.(*sdk.TxResponse) s.Require().Equal(tc.expectedCode, txResp.Code, out.String()) @@ -613,7 +613,7 @@ func (s *IntegrationTestSuite) TestNewCmdRevokeFeegrant() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) txResp := tc.respType.(*sdk.TxResponse) s.Require().Equal(tc.expectedCode, txResp.Code, out.String()) @@ -667,7 +667,7 @@ func (s *IntegrationTestSuite) TestTxWithFeeGrant() { s.Require().NoError(err) var resp sdk.TxResponse - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &resp), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &resp), out.String()) s.Require().Equal(uint32(0), resp.Code) } @@ -752,7 +752,7 @@ func (s *IntegrationTestSuite) TestFilteredFeeAllowance() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) txResp := tc.respType.(*sdk.TxResponse) s.Require().Equal(tc.expectedCode, txResp.Code, out.String()) @@ -773,7 +773,7 @@ func (s *IntegrationTestSuite) TestFilteredFeeAllowance() { resp := &feegrant.Grant{} - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), resp), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), resp), out.String()) s.Require().Equal(resp.Grantee, resp.Grantee) s.Require().Equal(resp.Granter, resp.Granter) @@ -842,7 +842,7 @@ func (s *IntegrationTestSuite) TestFilteredFeeAllowance() { s.Run(tc.name, func() { out, err := tc.malleate() s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) txResp := tc.respType.(*sdk.TxResponse) s.Require().Equal(tc.expectedCode, txResp.Code, out.String()) }) diff --git a/x/genutil/client/cli/collect.go b/x/genutil/client/cli/collect.go index 4e3cc1e6a9..2a727ca8fb 100644 --- a/x/genutil/client/cli/collect.go +++ b/x/genutil/client/cli/collect.go @@ -27,7 +27,7 @@ func CollectGenTxsCmd(genBalIterator types.GenesisBalancesIterator, defaultNodeH config := serverCtx.Config clientCtx := client.GetClientContextFromCmd(cmd) - cdc := clientCtx.JSONCodec + cdc := clientCtx.Codec config.SetRoot(clientCtx.HomeDir) diff --git a/x/genutil/client/cli/gentx.go b/x/genutil/client/cli/gentx.go index 107990ed11..e6433b2f46 100644 --- a/x/genutil/client/cli/gentx.go +++ b/x/genutil/client/cli/gentx.go @@ -61,7 +61,7 @@ $ %s gentx my-key-name 1000000stake --home=/path/to/home/dir --keyring-backend=o if err != nil { return err } - cdc := clientCtx.JSONCodec + cdc := clientCtx.Codec config := serverCtx.Config config.SetRoot(clientCtx.HomeDir) @@ -78,7 +78,7 @@ $ %s gentx my-key-name 1000000stake --home=/path/to/home/dir --keyring-backend=o // read --pubkey, if empty take it from priv_validator.json if val, _ := cmd.Flags().GetString(cli.FlagPubKey); val != "" { - err = clientCtx.JSONCodec.UnmarshalJSON([]byte(val), valPubKey) + err = clientCtx.Codec.UnmarshalJSON([]byte(val), valPubKey) if err != nil { return errors.Wrap(err, "failed to unmarshal consensus node public key") } diff --git a/x/genutil/client/cli/init.go b/x/genutil/client/cli/init.go index 84a03c877d..a51d4b9075 100644 --- a/x/genutil/client/cli/init.go +++ b/x/genutil/client/cli/init.go @@ -72,7 +72,7 @@ func InitCmd(mbm module.BasicManager, defaultNodeHome string) *cobra.Command { Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { clientCtx := client.GetClientContextFromCmd(cmd) - cdc := clientCtx.JSONCodec + cdc := clientCtx.Codec serverCtx := server.GetServerContextFromCmd(cmd) config := serverCtx.Config diff --git a/x/genutil/client/cli/init_test.go b/x/genutil/client/cli/init_test.go index 37bbd7597a..64ec01c4ad 100644 --- a/x/genutil/client/cli/init_test.go +++ b/x/genutil/client/cli/init_test.go @@ -63,7 +63,7 @@ func TestInitCmd(t *testing.T) { interfaceRegistry := types.NewInterfaceRegistry() marshaler := codec.NewProtoCodec(interfaceRegistry) clientCtx := client.Context{}. - WithJSONCodec(marshaler). + WithCodec(marshaler). WithLegacyAmino(makeCodec()). WithHomeDir(home) @@ -97,7 +97,7 @@ func TestInitRecover(t *testing.T) { interfaceRegistry := types.NewInterfaceRegistry() marshaler := codec.NewProtoCodec(interfaceRegistry) clientCtx := client.Context{}. - WithJSONCodec(marshaler). + WithCodec(marshaler). WithLegacyAmino(makeCodec()). WithHomeDir(home) @@ -128,7 +128,7 @@ func TestEmptyState(t *testing.T) { interfaceRegistry := types.NewInterfaceRegistry() marshaler := codec.NewProtoCodec(interfaceRegistry) clientCtx := client.Context{}. - WithJSONCodec(marshaler). + WithCodec(marshaler). WithLegacyAmino(makeCodec()). WithHomeDir(home) diff --git a/x/genutil/client/cli/validate_genesis.go b/x/genutil/client/cli/validate_genesis.go index 30102277d6..6c8e27dda8 100644 --- a/x/genutil/client/cli/validate_genesis.go +++ b/x/genutil/client/cli/validate_genesis.go @@ -24,7 +24,7 @@ func ValidateGenesisCmd(mbm module.BasicManager) *cobra.Command { serverCtx := server.GetServerContextFromCmd(cmd) clientCtx := client.GetClientContextFromCmd(cmd) - cdc := clientCtx.JSONCodec + cdc := clientCtx.Codec // Load default if passed no args, otherwise load passed file var genesis string diff --git a/x/genutil/client/rest/query.go b/x/genutil/client/rest/query.go index 025f3a21d8..5d3812ca31 100644 --- a/x/genutil/client/rest/query.go +++ b/x/genutil/client/rest/query.go @@ -32,7 +32,7 @@ func QueryGenesisTxs(clientCtx client.Context, w http.ResponseWriter) { return } - genState := types.GetGenesisStateFromAppState(clientCtx.JSONCodec, appState) + genState := types.GetGenesisStateFromAppState(clientCtx.Codec, appState) genTxs := make([]sdk.Tx, len(genState.GenTxs)) for i, tx := range genState.GenTxs { err := clientCtx.LegacyAmino.UnmarshalJSON(tx, &genTxs[i]) diff --git a/x/genutil/client/testutil/helpers.go b/x/genutil/client/testutil/helpers.go index 1a5229f373..1d71ba1141 100644 --- a/x/genutil/client/testutil/helpers.go +++ b/x/genutil/client/testutil/helpers.go @@ -17,7 +17,7 @@ import ( genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli" ) -func ExecInitCmd(testMbm module.BasicManager, home string, cdc codec.JSONCodec) error { +func ExecInitCmd(testMbm module.BasicManager, home string, cdc codec.Codec) error { logger := log.NewNopLogger() cfg, err := CreateDefaultTendermintConfig(home) if err != nil { @@ -26,7 +26,7 @@ func ExecInitCmd(testMbm module.BasicManager, home string, cdc codec.JSONCodec) cmd := genutilcli.InitCmd(testMbm, home) serverCtx := server.NewContext(viper.New(), cfg, logger) - clientCtx := client.Context{}.WithJSONCodec(cdc).WithHomeDir(home) + clientCtx := client.Context{}.WithCodec(cdc).WithHomeDir(home) _, out := testutil.ApplyMockIO(cmd) clientCtx = clientCtx.WithOutput(out) diff --git a/x/genutil/legacy/v040/migrate.go b/x/genutil/legacy/v040/migrate.go index 3f1896cd1d..a022d9fcf9 100644 --- a/x/genutil/legacy/v040/migrate.go +++ b/x/genutil/legacy/v040/migrate.go @@ -44,7 +44,7 @@ func Migrate(appState types.AppMap, clientCtx client.Context) types.AppMap { v036params.RegisterLegacyAminoCodec(v039Codec) v038upgrade.RegisterLegacyAminoCodec(v039Codec) - v040Codec := clientCtx.JSONCodec + v040Codec := clientCtx.Codec if appState[v038bank.ModuleName] != nil { // unmarshal relative source genesis application state diff --git a/x/genutil/legacy/v043/migrate.go b/x/genutil/legacy/v043/migrate.go index c5fd884863..e932159393 100644 --- a/x/genutil/legacy/v043/migrate.go +++ b/x/genutil/legacy/v043/migrate.go @@ -13,14 +13,14 @@ func Migrate(appState types.AppMap, clientCtx client.Context) types.AppMap { if appState[v040gov.ModuleName] != nil { // unmarshal relative source genesis application state var oldGovState v040gov.GenesisState - clientCtx.JSONCodec.MustUnmarshalJSON(appState[v040gov.ModuleName], &oldGovState) + clientCtx.Codec.MustUnmarshalJSON(appState[v040gov.ModuleName], &oldGovState) // delete deprecated x/gov genesis state delete(appState, v040gov.ModuleName) // Migrate relative source genesis application state and marshal it into // the respective key. - appState[v043gov.ModuleName] = clientCtx.JSONCodec.MustMarshalJSON(v043gov.MigrateJSON(&oldGovState)) + appState[v043gov.ModuleName] = clientCtx.Codec.MustMarshalJSON(v043gov.MigrateJSON(&oldGovState)) } return appState diff --git a/x/gov/client/cli/query.go b/x/gov/client/cli/query.go index 34d4665a99..4fa3a9bbf0 100644 --- a/x/gov/client/cli/query.go +++ b/x/gov/client/cli/query.go @@ -238,7 +238,7 @@ $ %s query gov vote 1 cosmos1skjwj5whet0lpe65qaq4rpq03hjxlwd9nf39lk return err } - if err := clientCtx.JSONCodec.UnmarshalJSON(resByTxQuery, &vote); err != nil { + if err := clientCtx.Codec.UnmarshalJSON(resByTxQuery, &vote); err != nil { return err } } @@ -387,7 +387,7 @@ $ %s query gov deposit 1 cosmos1skjwj5whet0lpe65qaq4rpq03hjxlwd9nf39lk if err != nil { return err } - clientCtx.JSONCodec.MustUnmarshalJSON(resByTxQuery, &deposit) + clientCtx.Codec.MustUnmarshalJSON(resByTxQuery, &deposit) return clientCtx.PrintProto(&deposit) } diff --git a/x/gov/client/rest/grpc_query_test.go b/x/gov/client/rest/grpc_query_test.go index ecbf0c5915..12247aeb9a 100644 --- a/x/gov/client/rest/grpc_query_test.go +++ b/x/gov/client/rest/grpc_query_test.go @@ -103,7 +103,7 @@ func (s *IntegrationTestSuite) TestGetProposalGRPC() { s.Require().NoError(err) var proposal types.QueryProposalResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &proposal) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &proposal) if tc.expErr { s.Require().Error(err) @@ -157,7 +157,7 @@ func (s *IntegrationTestSuite) TestGetProposalsGRPC() { s.Require().NoError(err) var proposals types.QueryProposalsResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &proposals) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &proposals) if tc.expErr { s.Require().Empty(proposals.Proposals) @@ -224,7 +224,7 @@ func (s *IntegrationTestSuite) TestGetProposalVoteGRPC() { s.Require().NoError(err) var vote types.QueryVoteResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &vote) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &vote) if tc.expErr { s.Require().Error(err) @@ -268,7 +268,7 @@ func (s *IntegrationTestSuite) TestGetProposalVotesGRPC() { s.Require().NoError(err) var votes types.QueryVotesResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &votes) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &votes) if tc.expErr { s.Require().Error(err) @@ -317,7 +317,7 @@ func (s *IntegrationTestSuite) TestGetProposalDepositGRPC() { s.Require().NoError(err) var deposit types.QueryDepositResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &deposit) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &deposit) if tc.expErr { s.Require().Error(err) @@ -356,7 +356,7 @@ func (s *IntegrationTestSuite) TestGetProposalDepositsGRPC() { s.Require().NoError(err) var deposits types.QueryDepositsResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &deposits) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &deposits) if tc.expErr { s.Require().Error(err) @@ -401,7 +401,7 @@ func (s *IntegrationTestSuite) TestGetTallyGRPC() { s.Require().NoError(err) var tally types.QueryTallyResultResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &tally) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &tally) if tc.expErr { s.Require().Error(err) @@ -463,7 +463,7 @@ func (s *IntegrationTestSuite) TestGetParamsGRPC() { resp, err := rest.GetRequest(tc.url) s.Require().NoError(err) - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType) if tc.expErr { s.Require().Error(err) diff --git a/x/gov/client/testutil/suite.go b/x/gov/client/testutil/suite.go index bcb0f823a2..ee2634e3d1 100644 --- a/x/gov/client/testutil/suite.go +++ b/x/gov/client/testutil/suite.go @@ -266,7 +266,7 @@ func (s *IntegrationTestSuite) TestCmdTally() { s.Require().Error(err) } else { var tally types.TallyResult - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &tally), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &tally), out.String()) s.Require().Equal(tally, tc.expectedOutput) } }) @@ -357,7 +357,7 @@ func (s *IntegrationTestSuite) TestNewCmdSubmitProposal() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) txResp := tc.respType.(*sdk.TxResponse) s.Require().Equal(tc.expectedCode, txResp.Code, out.String()) } @@ -406,7 +406,7 @@ func (s *IntegrationTestSuite) TestCmdGetProposal() { } else { s.Require().NoError(err) var proposal types.Proposal - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &proposal), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &proposal), out.String()) s.Require().Equal(title, proposal.GetTitle()) } }) @@ -452,7 +452,7 @@ func (s *IntegrationTestSuite) TestCmdGetProposals() { s.Require().NoError(err) var proposals types.QueryProposalsResponse - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &proposals), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &proposals), out.String()) s.Require().Len(proposals.Proposals, 3) } }) @@ -498,7 +498,7 @@ func (s *IntegrationTestSuite) TestCmdQueryDeposits() { s.Require().NoError(err) var deposits types.QueryDepositsResponse - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &deposits), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &deposits), out.String()) s.Require().Len(deposits.Deposits, 1) } }) @@ -554,7 +554,7 @@ func (s *IntegrationTestSuite) TestCmdQueryDeposit() { s.Require().NoError(err) var deposit types.Deposit - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &deposit), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &deposit), out.String()) s.Require().Equal(depositAmount.String(), deposit.Amount.String()) } }) @@ -632,7 +632,7 @@ func (s *IntegrationTestSuite) TestNewCmdDeposit() { } else { s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &resp), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &resp), out.String()) s.Require().Equal(tc.expectedCode, resp.Code, out.String()) } }) @@ -683,7 +683,7 @@ func (s *IntegrationTestSuite) TestCmdQueryVotes() { s.Require().NoError(err) var votes types.QueryVotesResponse - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &votes), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &votes), out.String()) s.Require().Len(votes.Votes, 1) } }) @@ -758,7 +758,7 @@ func (s *IntegrationTestSuite) TestCmdQueryVote() { s.Require().NoError(err) var vote types.Vote - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &vote), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &vote), out.String()) s.Require().Equal(len(vote.Options), len(tc.expVoteOptions)) for i, option := range tc.expVoteOptions { s.Require().Equal(option.Option, vote.Options[i].Option) @@ -822,7 +822,7 @@ func (s *IntegrationTestSuite) TestNewCmdVote() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &txResp), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &txResp), out.String()) s.Require().Equal(tc.expectedCode, txResp.Code, out.String()) } }) @@ -906,7 +906,7 @@ func (s *IntegrationTestSuite) TestNewCmdWeightedVote() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &txResp), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &txResp), out.String()) s.Require().Equal(tc.expectedCode, txResp.Code, out.String()) } }) diff --git a/x/gov/client/utils/query.go b/x/gov/client/utils/query.go index 977b5adc69..f4799a89d3 100644 --- a/x/gov/client/utils/query.go +++ b/x/gov/client/utils/query.go @@ -221,7 +221,7 @@ func QueryVoteByTxQuery(clientCtx client.Context, params types.QueryVoteParams) } if vote != nil { - bz, err := clientCtx.JSONCodec.MarshalJSON(vote) + bz, err := clientCtx.Codec.MarshalJSON(vote) if err != nil { return nil, err } @@ -245,7 +245,7 @@ func QueryDepositByTxQuery(clientCtx client.Context, params types.QueryDepositPa } if !initialDeposit.Amount.IsZero() { - bz, err := clientCtx.JSONCodec.MarshalJSON(&initialDeposit) + bz, err := clientCtx.Codec.MarshalJSON(&initialDeposit) if err != nil { return nil, err } @@ -282,7 +282,7 @@ func QueryDepositByTxQuery(clientCtx client.Context, params types.QueryDepositPa Amount: depMsg.Amount, } - bz, err := clientCtx.JSONCodec.MarshalJSON(&deposit) + bz, err := clientCtx.Codec.MarshalJSON(&deposit) if err != nil { return nil, err } diff --git a/x/gov/legacy/v040/migrate_test.go b/x/gov/legacy/v040/migrate_test.go index ab66a1b142..3c9d512df5 100644 --- a/x/gov/legacy/v040/migrate_test.go +++ b/x/gov/legacy/v040/migrate_test.go @@ -78,7 +78,7 @@ func TestMigrate(t *testing.T) { migrated := v040gov.Migrate(govGenState) - bz, err := clientCtx.JSONCodec.MarshalJSON(migrated) + bz, err := clientCtx.Codec.MarshalJSON(migrated) require.NoError(t, err) // Indent the JSON bz correctly. diff --git a/x/gov/legacy/v043/json_test.go b/x/gov/legacy/v043/json_test.go index 47910d0132..1f8bb2a69f 100644 --- a/x/gov/legacy/v043/json_test.go +++ b/x/gov/legacy/v043/json_test.go @@ -20,7 +20,7 @@ func TestMigrateJSON(t *testing.T) { clientCtx := client.Context{}. WithInterfaceRegistry(encodingConfig.InterfaceRegistry). WithTxConfig(encodingConfig.TxConfig). - WithJSONCodec(encodingConfig.Marshaler) + WithCodec(encodingConfig.Marshaler) voter, err := sdk.AccAddressFromBech32("cosmos1fl48vsnmsdzcv85q5d2q4z5ajdha8yu34mf0eh") require.NoError(t, err) @@ -36,7 +36,7 @@ func TestMigrateJSON(t *testing.T) { migrated := v043gov.MigrateJSON(govGenState) - bz, err := clientCtx.JSONCodec.MarshalJSON(migrated) + bz, err := clientCtx.Codec.MarshalJSON(migrated) require.NoError(t, err) // Indent the JSON bz correctly. diff --git a/x/mint/client/rest/grpc_query_test.go b/x/mint/client/rest/grpc_query_test.go index 6d8fa90a2f..fdbb4ff759 100644 --- a/x/mint/client/rest/grpc_query_test.go +++ b/x/mint/client/rest/grpc_query_test.go @@ -101,7 +101,7 @@ func (s *IntegrationTestSuite) TestQueryGRPC() { resp, err := testutil.GetRequestWithHeaders(tc.url, tc.headers) s.Run(tc.name, func() { s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType)) s.Require().Equal(tc.expected.String(), tc.respType.String()) }) } diff --git a/x/params/client/rest/grpc_query_test.go b/x/params/client/rest/grpc_query_test.go index eb3c0ac13d..f2c4440e29 100644 --- a/x/params/client/rest/grpc_query_test.go +++ b/x/params/client/rest/grpc_query_test.go @@ -113,7 +113,7 @@ func (s *IntegrationTestSuite) TestQueryParamsGRPC() { resp, err := testutil.GetRequestWithHeaders(tc.url, tc.headers) s.Require().NoError(err) - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType) if tc.expErr { s.Require().Error(err) diff --git a/x/slashing/client/cli/query.go b/x/slashing/client/cli/query.go index 50c3fe6838..08ae03301f 100644 --- a/x/slashing/client/cli/query.go +++ b/x/slashing/client/cli/query.go @@ -50,7 +50,7 @@ $ query slashing signing-info '{"@type":"/cosmos.crypto.ed25519.PubKey"," } var pk cryptotypes.PubKey - if err := clientCtx.JSONCodec.UnmarshalInterfaceJSON([]byte(args[0]), &pk); err != nil { + if err := clientCtx.Codec.UnmarshalInterfaceJSON([]byte(args[0]), &pk); err != nil { return err } diff --git a/x/slashing/client/rest/grpc_query_test.go b/x/slashing/client/rest/grpc_query_test.go index bfc6f20a58..39daf06f69 100644 --- a/x/slashing/client/rest/grpc_query_test.go +++ b/x/slashing/client/rest/grpc_query_test.go @@ -117,7 +117,7 @@ func (s *IntegrationTestSuite) TestGRPCQueries() { resp, err := testutil.GetRequestWithHeaders(tc.url, tc.headers) s.Require().NoError(err) - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType) if tc.expErr { s.Require().Error(err) diff --git a/x/slashing/client/testutil/suite.go b/x/slashing/client/testutil/suite.go index 815c021604..cf5cf997b6 100644 --- a/x/slashing/client/testutil/suite.go +++ b/x/slashing/client/testutil/suite.go @@ -173,7 +173,7 @@ func (s *IntegrationTestSuite) TestNewUnjailTxCmd() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) txResp := tc.respType.(*sdk.TxResponse) s.Require().Equal(tc.expectedCode, txResp.Code, out.String()) diff --git a/x/slashing/legacy/v040/migrate_test.go b/x/slashing/legacy/v040/migrate_test.go index b5c2fa3bc8..f11d2e9d26 100644 --- a/x/slashing/legacy/v040/migrate_test.go +++ b/x/slashing/legacy/v040/migrate_test.go @@ -126,7 +126,7 @@ func TestMigrate(t *testing.T) { ] }` - bz, err := clientCtx.JSONCodec.MarshalJSON(migrated) + bz, err := clientCtx.Codec.MarshalJSON(migrated) require.NoError(t, err) // Indent the JSON bz correctly. diff --git a/x/staking/client/cli/tx.go b/x/staking/client/cli/tx.go index 80513b63db..cafee004c1 100644 --- a/x/staking/client/cli/tx.go +++ b/x/staking/client/cli/tx.go @@ -291,7 +291,7 @@ func newBuildCreateValidatorMsg(clientCtx client.Context, txf tx.Factory, fs *fl } var pk cryptotypes.PubKey - if err := clientCtx.JSONCodec.UnmarshalInterfaceJSON([]byte(pkStr), &pk); err != nil { + if err := clientCtx.Codec.UnmarshalInterfaceJSON([]byte(pkStr), &pk); err != nil { return txf, nil, err } diff --git a/x/staking/client/rest/grpc_query_test.go b/x/staking/client/rest/grpc_query_test.go index 7ead75b8df..55a10194f6 100644 --- a/x/staking/client/rest/grpc_query_test.go +++ b/x/staking/client/rest/grpc_query_test.go @@ -107,7 +107,7 @@ func (s *IntegrationTestSuite) TestQueryValidatorsGRPCHandler() { s.Require().NoError(err) var valRes types.QueryValidatorsResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &valRes) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &valRes) if tc.error { s.Require().Error(err) @@ -155,7 +155,7 @@ func (s *IntegrationTestSuite) TestQueryValidatorGRPC() { s.Require().NoError(err) var validator types.QueryValidatorResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &validator) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &validator) if tc.error { s.Require().Error(err) @@ -219,7 +219,7 @@ func (s *IntegrationTestSuite) TestQueryValidatorDelegationsGRPC() { resp, err := testutil.GetRequestWithHeaders(tc.url, tc.headers) s.Require().NoError(err) - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType) if tc.error { s.Require().Error(err) @@ -265,7 +265,7 @@ func (s *IntegrationTestSuite) TestQueryValidatorUnbondingDelegationsGRPC() { var ubds types.QueryValidatorUnbondingDelegationsResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &ubds) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &ubds) if tc.error { s.Require().Error(err) @@ -342,7 +342,7 @@ func (s *IntegrationTestSuite) TestQueryDelegationGRPC() { resp, err := rest.GetRequest(tc.url) s.Require().NoError(err) s.T().Logf("%s", resp) - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType) if tc.error { s.Require().Error(err) @@ -398,7 +398,7 @@ func (s *IntegrationTestSuite) TestQueryUnbondingDelegationGRPC() { var ubd types.QueryUnbondingDelegationResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &ubd) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &ubd) if tc.error { s.Require().Error(err) @@ -481,7 +481,7 @@ func (s *IntegrationTestSuite) TestQueryDelegatorDelegationsGRPC() { resp, err := testutil.GetRequestWithHeaders(tc.url, tc.headers) s.Require().NoError(err) - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType) if tc.error { s.Require().Error(err) @@ -531,7 +531,7 @@ func (s *IntegrationTestSuite) TestQueryDelegatorUnbondingDelegationsGRPC() { var ubds types.QueryDelegatorUnbondingDelegationsResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &ubds) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &ubds) if tc.error { s.Require().Error(err) @@ -592,7 +592,7 @@ func (s *IntegrationTestSuite) TestQueryRedelegationsGRPC() { s.Require().NoError(err) var redelegations types.QueryRedelegationsResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &redelegations) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &redelegations) if tc.error { s.Require().Error(err) @@ -642,7 +642,7 @@ func (s *IntegrationTestSuite) TestQueryDelegatorValidatorsGRPC() { var validators types.QueryDelegatorValidatorsResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &validators) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &validators) if tc.error { s.Require().Error(err) @@ -698,7 +698,7 @@ func (s *IntegrationTestSuite) TestQueryDelegatorValidatorGRPC() { s.Require().NoError(err) var validator types.QueryDelegatorValidatorResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &validator) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &validator) if tc.error { s.Require().Error(err) @@ -745,7 +745,7 @@ func (s *IntegrationTestSuite) TestQueryHistoricalInfoGRPC() { var historicalInfo types.QueryHistoricalInfoResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &historicalInfo) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &historicalInfo) if tc.error { s.Require().Error(err) @@ -782,7 +782,7 @@ func (s *IntegrationTestSuite) TestQueryParamsGRPC() { resp, err := rest.GetRequest(tc.url) s.Run(tc.name, func() { s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType)) s.Require().Equal(tc.expected, tc.respType) }) } @@ -816,7 +816,7 @@ func (s *IntegrationTestSuite) TestQueryPoolGRPC() { resp, err := rest.GetRequest(tc.url) s.Run(tc.name, func() { s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(resp, tc.respType)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType)) s.Require().Equal(tc.expected, tc.respType) }) } diff --git a/x/staking/client/testutil/suite.go b/x/staking/client/testutil/suite.go index baa00c4ac2..f24a1ad5a2 100644 --- a/x/staking/client/testutil/suite.go +++ b/x/staking/client/testutil/suite.go @@ -200,7 +200,7 @@ func (s *IntegrationTestSuite) TestNewCreateValidatorCmd() { require.Error(err) } else { require.NoError(err, "test: %s\noutput: %s", tc.name, out.String()) - err = clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.respType) + err = clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType) require.NoError(err, out.String(), "test: %s, output\n:", tc.name, out.String()) txResp := tc.respType.(*sdk.TxResponse) @@ -245,7 +245,7 @@ func (s *IntegrationTestSuite) TestGetCmdQueryValidator() { s.Require().NotEqual("internal", err.Error()) } else { var result types.Validator - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &result)) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &result)) s.Require().Equal(val.ValAddress.String(), result.OperatorAddress) } }) @@ -286,7 +286,7 @@ func (s *IntegrationTestSuite) TestGetCmdQueryValidators() { s.Require().NoError(err) var result types.QueryValidatorsResponse - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &result)) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &result)) s.Require().Equal(tc.minValidatorCount, len(result.Validators)) }) } @@ -352,7 +352,7 @@ func (s *IntegrationTestSuite) TestGetCmdQueryDelegation() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) s.Require().Equal(tc.expected.String(), tc.respType.String()) } }) @@ -408,7 +408,7 @@ func (s *IntegrationTestSuite) TestGetCmdQueryDelegations() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) s.Require().Equal(tc.expected.String(), tc.respType.String()) } }) @@ -464,7 +464,7 @@ func (s *IntegrationTestSuite) TestGetCmdQueryValidatorDelegations() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) s.Require().Equal(tc.expected.String(), tc.respType.String()) } }) @@ -509,7 +509,7 @@ func (s *IntegrationTestSuite) TestGetCmdQueryUnbondingDelegations() { s.Require().Error(err) } else { var ubds types.QueryDelegatorUnbondingDelegationsResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &ubds) + err = val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &ubds) s.Require().NoError(err) s.Require().Len(ubds.UnbondingResponses, 1) @@ -569,7 +569,7 @@ func (s *IntegrationTestSuite) TestGetCmdQueryUnbondingDelegation() { } else { var ubd types.UnbondingDelegation - err = val.ClientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &ubd) + err = val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &ubd) s.Require().NoError(err) s.Require().Equal(ubd.DelegatorAddress, val.Address.String()) s.Require().Equal(ubd.ValidatorAddress, val.ValAddress.String()) @@ -617,7 +617,7 @@ func (s *IntegrationTestSuite) TestGetCmdQueryValidatorUnbondingDelegations() { s.Require().Error(err) } else { var ubds types.QueryValidatorUnbondingDelegationsResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &ubds) + err = val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &ubds) s.Require().NoError(err) s.Require().Len(ubds.UnbondingResponses, 1) @@ -666,7 +666,7 @@ func (s *IntegrationTestSuite) TestGetCmdQueryRedelegations() { s.Require().Error(err) } else { var redelegations types.QueryRedelegationsResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &redelegations) + err = val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &redelegations) s.Require().NoError(err) @@ -743,7 +743,7 @@ func (s *IntegrationTestSuite) TestGetCmdQueryRedelegation() { } else { var redelegations types.QueryRedelegationsResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &redelegations) + err = val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &redelegations) s.Require().NoError(err) s.Require().Len(redelegations.RedelegationResponses, 1) @@ -794,7 +794,7 @@ func (s *IntegrationTestSuite) TestGetCmdQueryValidatorRedelegations() { s.Require().Error(err) } else { var redelegations types.QueryRedelegationsResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &redelegations) + err = val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &redelegations) s.Require().NoError(err) @@ -845,7 +845,7 @@ func (s *IntegrationTestSuite) TestGetCmdQueryHistoricalInfo() { } else { var historicalInfo types.HistoricalInfo - err = val.ClientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &historicalInfo) + err = val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &historicalInfo) s.Require().NoError(err) s.Require().NotNil(historicalInfo) } @@ -867,13 +867,12 @@ func (s *IntegrationTestSuite) TestGetCmdQueryParams() { historical_entries: 10000 max_entries: 7 max_validators: 100 -power_reduction: "1000000" unbonding_time: 1814400s`, }, { "with json output", []string{fmt.Sprintf("--%s=json", tmcli.OutputFlag)}, - `{"unbonding_time":"1814400s","max_validators":100,"max_entries":7,"historical_entries":10000,"bond_denom":"stake","power_reduction":"1000000"}`, + `{"unbonding_time":"1814400s","max_validators":100,"max_entries":7,"historical_entries":10000,"bond_denom":"stake"}`, }, } for _, tc := range testCases { @@ -1032,7 +1031,7 @@ func (s *IntegrationTestSuite) TestNewEditValidatorCmd() { s.Require().Error(err) } else { s.Require().NoError(err, out.String()) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) txResp := tc.respType.(*sdk.TxResponse) s.Require().Equal(tc.expectedCode, txResp.Code, out.String()) @@ -1114,7 +1113,7 @@ func (s *IntegrationTestSuite) TestNewDelegateCmd() { s.Require().Error(err) } else { s.Require().NoError(err, out.String()) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) txResp := tc.respType.(*sdk.TxResponse) s.Require().Equal(tc.expectedCode, txResp.Code, out.String()) @@ -1200,7 +1199,7 @@ func (s *IntegrationTestSuite) TestNewRedelegateCmd() { s.Require().Error(err) } else { s.Require().NoError(err, out.String()) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) txResp := tc.respType.(*sdk.TxResponse) s.Require().Equal(tc.expectedCode, txResp.Code, out.String()) @@ -1267,7 +1266,7 @@ func (s *IntegrationTestSuite) TestNewUnbondCmd() { s.Require().Error(err) } else { s.Require().NoError(err, out.String()) - s.Require().NoError(clientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) txResp := tc.respType.(*sdk.TxResponse) s.Require().Equal(tc.expectedCode, txResp.Code, out.String()) diff --git a/x/staking/handler_test.go b/x/staking/handler_test.go index 995c080391..12dea7d726 100644 --- a/x/staking/handler_test.go +++ b/x/staking/handler_test.go @@ -42,51 +42,6 @@ func bootstrapHandlerGenesisTest(t *testing.T, power int64, numAddrs int, accAmo return app, ctx, addrDels, addrVals } -func TestPowerReductionChangeValidatorSetUpdates(t *testing.T) { - initPower := int64(1000000) - app, ctx, _, valAddrs := bootstrapHandlerGenesisTest(t, initPower, 10, sdk.TokensFromConsensusPower(initPower, sdk.DefaultPowerReduction)) - validatorAddr, validatorAddr3 := valAddrs[0], valAddrs[1] - tstaking := teststaking.NewHelper(t, ctx, app.StakingKeeper) - - // create validator - tstaking.CreateValidatorWithValPower(validatorAddr, PKs[0], initPower, true) - - // must end-block - updates, err := app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) - require.NoError(t, err) - require.Equal(t, 1, len(updates)) - - // create a second validator keep it bonded - tstaking.CreateValidatorWithValPower(validatorAddr3, PKs[2], initPower, true) - - // must end-block - updates, err = app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) - require.NoError(t, err) - require.Equal(t, 1, len(updates)) - - // modify power reduction to 10 times bigger one - params := app.StakingKeeper.GetParams(ctx) - params.PowerReduction = sdk.DefaultPowerReduction.Mul(sdk.NewInt(10)) - app.StakingKeeper.SetParams(ctx, params) - - // validator updates for tendermint power - updates, err = app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) - require.NoError(t, err) - require.Equal(t, 2, len(updates)) - require.Equal(t, updates[0].Power, initPower/10) - require.Equal(t, updates[1].Power, initPower/10) - - // power reduction back to default - params = app.StakingKeeper.GetParams(ctx) - params.PowerReduction = sdk.DefaultPowerReduction - app.StakingKeeper.SetParams(ctx, params) - - // validator updates for tendermint power - updates, err = app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) - require.NoError(t, err) - require.Equal(t, 2, len(updates)) -} - func TestValidatorByPowerIndex(t *testing.T) { initPower := int64(1000000) app, ctx, _, valAddrs := bootstrapHandlerGenesisTest(t, initPower, 10, sdk.TokensFromConsensusPower(initPower, sdk.DefaultPowerReduction)) diff --git a/x/staking/keeper/migrations.go b/x/staking/keeper/migrations.go index 8593449181..101ca195b3 100644 --- a/x/staking/keeper/migrations.go +++ b/x/staking/keeper/migrations.go @@ -17,5 +17,5 @@ func NewMigrator(keeper Keeper) Migrator { // Migrate1to2 migrates from version 1 to 2. func (m Migrator) Migrate1to2(ctx sdk.Context) error { - return v043.MigrateStore(ctx, m.keeper.storeKey, m.keeper.paramstore) + return v043.MigrateStore(ctx, m.keeper.storeKey) } diff --git a/x/staking/keeper/params.go b/x/staking/keeper/params.go index 37c433415b..10a8b7e8f0 100644 --- a/x/staking/keeper/params.go +++ b/x/staking/keeper/params.go @@ -39,11 +39,12 @@ func (k Keeper) BondDenom(ctx sdk.Context) (res string) { return } -// PowerReduction - is the amount of staking tokens required for 1 unit of consensus-engine power -// governance can update it on a running chain -func (k Keeper) PowerReduction(ctx sdk.Context) (res sdk.Int) { - k.paramstore.Get(ctx, types.KeyPowerReduction, &res) - return +// PowerReduction - is the amount of staking tokens required for 1 unit of consensus-engine power. +// Currently, this returns a global variable that the app developer can tweak. +// TODO: we might turn this into an on-chain param: +// https://github.com/cosmos/cosmos-sdk/issues/8365 +func (k Keeper) PowerReduction(ctx sdk.Context) sdk.Int { + return sdk.DefaultPowerReduction } // Get all parameteras as types.Params @@ -54,7 +55,6 @@ func (k Keeper) GetParams(ctx sdk.Context) types.Params { k.MaxEntries(ctx), k.HistoricalEntries(ctx), k.BondDenom(ctx), - k.PowerReduction(ctx), ) } diff --git a/x/staking/keeper/power_reduction_test.go b/x/staking/keeper/power_reduction_test.go index b1e3c79429..e18230d854 100644 --- a/x/staking/keeper/power_reduction_test.go +++ b/x/staking/keeper/power_reduction_test.go @@ -1,22 +1,9 @@ package keeper_test import ( - "math/big" - sdk "github.com/cosmos/cosmos-sdk/types" ) -func (suite *KeeperTestSuite) TestPowerReductionChange() { - // modify power reduction - newPowerReduction := sdk.NewIntFromBigInt(new(big.Int).Exp(big.NewInt(10), big.NewInt(12), nil)) - params := suite.app.StakingKeeper.GetParams(suite.ctx) - params.PowerReduction = newPowerReduction - suite.app.StakingKeeper.SetParams(suite.ctx, params) - - // check power reduction change - suite.Require().Equal(newPowerReduction, suite.app.StakingKeeper.PowerReduction(suite.ctx)) -} - func (suite *KeeperTestSuite) TestTokensToConsensusPower() { suite.Require().Equal(int64(0), suite.app.StakingKeeper.TokensToConsensusPower(suite.ctx, sdk.DefaultPowerReduction.Sub(sdk.NewInt(1)))) suite.Require().Equal(int64(1), suite.app.StakingKeeper.TokensToConsensusPower(suite.ctx, sdk.DefaultPowerReduction)) diff --git a/x/staking/keeper/val_state_change.go b/x/staking/keeper/val_state_change.go index 166688af58..7392936f54 100644 --- a/x/staking/keeper/val_state_change.go +++ b/x/staking/keeper/val_state_change.go @@ -112,7 +112,7 @@ func (k Keeper) BlockValidatorUpdates(ctx sdk.Context) []abci.ValidatorUpdate { func (k Keeper) ApplyAndReturnValidatorSetUpdates(ctx sdk.Context) (updates []abci.ValidatorUpdate, err error) { params := k.GetParams(ctx) maxValidators := params.MaxValidators - powerReduction := params.PowerReduction + powerReduction := k.PowerReduction(ctx) totalPower := sdk.ZeroInt() amtFromBondedToNotBonded, amtFromNotBondedToBonded := sdk.ZeroInt(), sdk.ZeroInt() diff --git a/x/staking/legacy/v040/migrate_test.go b/x/staking/legacy/v040/migrate_test.go index 97321a47b9..af409dde26 100644 --- a/x/staking/legacy/v040/migrate_test.go +++ b/x/staking/legacy/v040/migrate_test.go @@ -32,7 +32,7 @@ func TestMigrate(t *testing.T) { migrated := v040staking.Migrate(stakingGenState) - bz, err := clientCtx.JSONCodec.MarshalJSON(migrated) + bz, err := clientCtx.Codec.MarshalJSON(migrated) require.NoError(t, err) // Indent the JSON bz correctly. diff --git a/x/staking/legacy/v043/json.go b/x/staking/legacy/v043/json.go deleted file mode 100644 index a6334ee8b1..0000000000 --- a/x/staking/legacy/v043/json.go +++ /dev/null @@ -1,138 +0,0 @@ -package v043 - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - v040staking "github.com/cosmos/cosmos-sdk/x/staking/legacy/v040" - v043staking "github.com/cosmos/cosmos-sdk/x/staking/types" -) - -// MigrateJSON accepts exported v0.40 x/gov genesis state and migrates it to -// v0.43 x/gov genesis state. The migration includes: -// -// - Gov weighted votes. -func MigrateJSON(oldState *v040staking.GenesisState) *v043staking.GenesisState { - return &v043staking.GenesisState{ - Params: migrateParams(oldState.Params), - LastTotalPower: oldState.LastTotalPower, - LastValidatorPowers: migrateLastValidatorPowers(oldState.LastValidatorPowers), - Validators: migrateValidators(oldState.Validators), - Delegations: migrateDelegations(oldState.Delegations), - UnbondingDelegations: migrateUnbondingDelegations(oldState.UnbondingDelegations), - Redelegations: migrateRedelegations(oldState.Redelegations), - Exported: oldState.Exported, - } -} - -func migrateParams(oldParams v040staking.Params) v043staking.Params { - return v043staking.NewParams( - oldParams.UnbondingTime, - oldParams.MaxValidators, - oldParams.MaxEntries, - oldParams.HistoricalEntries, - oldParams.BondDenom, - sdk.DefaultPowerReduction, - ) -} - -func migrateLastValidatorPowers(oldLastValidatorPowers []v040staking.LastValidatorPower) []v043staking.LastValidatorPower { - newLastValidatorPowers := make([]v043staking.LastValidatorPower, len(oldLastValidatorPowers)) - for i, oldLastValidatorPower := range oldLastValidatorPowers { - newLastValidatorPowers[i] = v043staking.LastValidatorPower{ - Address: oldLastValidatorPower.Address, - Power: oldLastValidatorPower.Power, - } - } - return newLastValidatorPowers -} - -func migrateValidators(oldValidators []v040staking.Validator) []v043staking.Validator { - newValidators := make([]v043staking.Validator, len(oldValidators)) - - for i, oldValidator := range oldValidators { - newValidators[i] = v043staking.Validator{ - OperatorAddress: oldValidator.OperatorAddress, - ConsensusPubkey: oldValidator.ConsensusPubkey, - Jailed: oldValidator.Jailed, - Status: v043staking.BondStatus(oldValidator.Status), - Tokens: oldValidator.Tokens, - DelegatorShares: oldValidator.DelegatorShares, - Description: v043staking.Description{ - Moniker: oldValidator.Description.Moniker, - Identity: oldValidator.Description.Identity, - Website: oldValidator.Description.Website, - SecurityContact: oldValidator.Description.SecurityContact, - Details: oldValidator.Description.Details, - }, - UnbondingHeight: oldValidator.UnbondingHeight, - UnbondingTime: oldValidator.UnbondingTime, - Commission: v043staking.Commission{ - CommissionRates: v043staking.CommissionRates{ - Rate: oldValidator.Commission.CommissionRates.Rate, - MaxRate: oldValidator.Commission.CommissionRates.MaxRate, - MaxChangeRate: oldValidator.Commission.CommissionRates.MaxChangeRate, - }, - UpdateTime: oldValidator.Commission.UpdateTime, - }, - MinSelfDelegation: oldValidator.MinSelfDelegation, - } - } - - return newValidators -} - -func migrateDelegations(oldDelegations []v040staking.Delegation) []v043staking.Delegation { - newDelegations := make([]v043staking.Delegation, len(oldDelegations)) - for i, oldDelegation := range oldDelegations { - newDelegations[i] = v043staking.Delegation{ - DelegatorAddress: oldDelegation.DelegatorAddress, - ValidatorAddress: oldDelegation.ValidatorAddress, - Shares: oldDelegation.Shares, - } - } - return newDelegations -} - -func migrateUnbondingDelegations(oldUnbondingDelegations []v040staking.UnbondingDelegation) []v043staking.UnbondingDelegation { - newUnbondingDelegations := make([]v043staking.UnbondingDelegation, len(oldUnbondingDelegations)) - for i, oldUnbondingDelegation := range oldUnbondingDelegations { - newEntries := make([]v043staking.UnbondingDelegationEntry, len(oldUnbondingDelegation.Entries)) - for j, oldEntry := range oldUnbondingDelegation.Entries { - newEntries[j] = v043staking.UnbondingDelegationEntry{ - CreationHeight: oldEntry.CreationHeight, - CompletionTime: oldEntry.CompletionTime, - InitialBalance: oldEntry.InitialBalance, - Balance: oldEntry.Balance, - } - } - - newUnbondingDelegations[i] = v043staking.UnbondingDelegation{ - DelegatorAddress: oldUnbondingDelegation.DelegatorAddress, - ValidatorAddress: oldUnbondingDelegation.ValidatorAddress, - Entries: newEntries, - } - } - return newUnbondingDelegations -} - -func migrateRedelegations(oldRedelegations []v040staking.Redelegation) []v043staking.Redelegation { - newRedelegations := make([]v043staking.Redelegation, len(oldRedelegations)) - for i, oldRedelegation := range oldRedelegations { - newEntries := make([]v043staking.RedelegationEntry, len(oldRedelegation.Entries)) - for j, oldEntry := range oldRedelegation.Entries { - newEntries[j] = v043staking.RedelegationEntry{ - CreationHeight: oldEntry.CreationHeight, - CompletionTime: oldEntry.CompletionTime, - InitialBalance: oldEntry.InitialBalance, - SharesDst: oldEntry.SharesDst, - } - } - - newRedelegations[i] = v043staking.Redelegation{ - DelegatorAddress: oldRedelegation.DelegatorAddress, - ValidatorSrcAddress: oldRedelegation.ValidatorSrcAddress, - ValidatorDstAddress: oldRedelegation.ValidatorDstAddress, - Entries: newEntries, - } - } - return newRedelegations -} diff --git a/x/staking/legacy/v043/json_test.go b/x/staking/legacy/v043/json_test.go deleted file mode 100644 index 8dc2bf82a4..0000000000 --- a/x/staking/legacy/v043/json_test.go +++ /dev/null @@ -1,67 +0,0 @@ -package v043_test - -import ( - "encoding/json" - "fmt" - "testing" - - "github.com/stretchr/testify/require" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/simapp" - sdk "github.com/cosmos/cosmos-sdk/types" - v040staking "github.com/cosmos/cosmos-sdk/x/staking/legacy/v040" - v043staking "github.com/cosmos/cosmos-sdk/x/staking/legacy/v043" -) - -func TestMigrateJSON(t *testing.T) { - encodingConfig := simapp.MakeTestEncodingConfig() - clientCtx := client.Context{}. - WithInterfaceRegistry(encodingConfig.InterfaceRegistry). - WithTxConfig(encodingConfig.TxConfig). - WithJSONCodec(encodingConfig.Marshaler) - - // voter, err := sdk.AccAddressFromBech32("cosmos1fl48vsnmsdzcv85q5d2q4z5ajdha8yu34mf0eh") - // require.NoError(t, err) - stakingGenState := &v040staking.GenesisState{ - Params: v040staking.DefaultParams(), - } - - migrated := v043staking.MigrateJSON(stakingGenState) - - require.True(t, migrated.Params.PowerReduction.Equal(sdk.DefaultPowerReduction)) - - bz, err := clientCtx.JSONCodec.MarshalJSON(migrated) - require.NoError(t, err) - - // Indent the JSON bz correctly. - var jsonObj map[string]interface{} - err = json.Unmarshal(bz, &jsonObj) - require.NoError(t, err) - indentedBz, err := json.MarshalIndent(jsonObj, "", "\t") - require.NoError(t, err) - - // Make sure about: - // - Votes are all ADR-037 weighted votes with weight 1. - expected := `{ - "delegations": [], - "exported": false, - "last_total_power": "0", - "last_validator_powers": [], - "params": { - "bond_denom": "stake", - "historical_entries": 10000, - "max_entries": 7, - "max_validators": 100, - "power_reduction": "1000000", - "unbonding_time": "1814400s" - }, - "redelegations": [], - "unbonding_delegations": [], - "validators": [] -}` - - fmt.Println(string(indentedBz)) - - require.Equal(t, expected, string(indentedBz)) -} diff --git a/x/staking/legacy/v043/store.go b/x/staking/legacy/v043/store.go index f076a0675a..2e06d7d674 100644 --- a/x/staking/legacy/v043/store.go +++ b/x/staking/legacy/v043/store.go @@ -6,7 +6,6 @@ import ( "github.com/cosmos/cosmos-sdk/types/address" v040auth "github.com/cosmos/cosmos-sdk/x/auth/legacy/v040" v043distribution "github.com/cosmos/cosmos-sdk/x/distribution/legacy/v043" - paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" v040staking "github.com/cosmos/cosmos-sdk/x/staking/legacy/v040" "github.com/cosmos/cosmos-sdk/x/staking/types" ) @@ -55,16 +54,11 @@ func migrateValidatorsByPowerIndexKey(store sdk.KVStore) { } } -func migrateParamsStore(ctx sdk.Context, paramstore paramtypes.Subspace) { - paramstore.WithKeyTable(types.ParamKeyTable()) - paramstore.Set(ctx, types.KeyPowerReduction, sdk.DefaultPowerReduction) -} - // MigrateStore performs in-place store migrations from v0.40 to v0.43. The // migration includes: // // - Setting the Power Reduction param in the paramstore -func MigrateStore(ctx sdk.Context, storeKey sdk.StoreKey, paramstore paramtypes.Subspace) error { +func MigrateStore(ctx sdk.Context, storeKey sdk.StoreKey) error { store := ctx.KVStore(storeKey) v043distribution.MigratePrefixAddress(store, v040staking.LastValidatorPowerKey) @@ -80,7 +74,5 @@ func MigrateStore(ctx sdk.Context, storeKey sdk.StoreKey, paramstore paramtypes. migratePrefixAddressAddressAddress(store, v040staking.RedelegationByValSrcIndexKey) migratePrefixAddressAddressAddress(store, v040staking.RedelegationByValDstIndexKey) - migrateParamsStore(ctx, paramstore) - return nil } diff --git a/x/staking/legacy/v043/store_test.go b/x/staking/legacy/v043/store_test.go index 7d1422ebc0..0996911154 100644 --- a/x/staking/legacy/v043/store_test.go +++ b/x/staking/legacy/v043/store_test.go @@ -7,11 +7,9 @@ import ( "github.com/stretchr/testify/require" - "github.com/cosmos/cosmos-sdk/simapp" "github.com/cosmos/cosmos-sdk/testutil" "github.com/cosmos/cosmos-sdk/testutil/testdata" sdk "github.com/cosmos/cosmos-sdk/types" - paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" v040staking "github.com/cosmos/cosmos-sdk/x/staking/legacy/v040" v043staking "github.com/cosmos/cosmos-sdk/x/staking/legacy/v043" "github.com/cosmos/cosmos-sdk/x/staking/teststaking" @@ -19,14 +17,11 @@ import ( ) func TestStoreMigration(t *testing.T) { - encCfg := simapp.MakeTestEncodingConfig() stakingKey := sdk.NewKVStoreKey("staking") tStakingKey := sdk.NewTransientStoreKey("transient_test") ctx := testutil.DefaultContext(stakingKey, tStakingKey) store := ctx.KVStore(stakingKey) - paramSubspace := paramtypes.NewSubspace(encCfg.Marshaler, encCfg.Amino, stakingKey, tStakingKey, types.ModuleName) - _, pk1, addr1 := testdata.KeyTestPubAddr() valAddr1 := sdk.ValAddress(addr1) val := teststaking.NewValidator(t, valAddr1, pk1) @@ -127,7 +122,7 @@ func TestStoreMigration(t *testing.T) { } // Run migrations. - err := v043staking.MigrateStore(ctx, stakingKey, paramSubspace) + err := v043staking.MigrateStore(ctx, stakingKey) require.NoError(t, err) // Make sure the new keys are set and old keys are deleted. @@ -140,8 +135,4 @@ func TestStoreMigration(t *testing.T) { require.Equal(t, value, store.Get(tc.newKey)) }) } - - powerReduction := sdk.NewInt(0) - paramSubspace.Get(ctx, types.KeyPowerReduction, &powerReduction) - require.True(t, powerReduction.Equal(sdk.DefaultPowerReduction)) } diff --git a/x/staking/simulation/genesis.go b/x/staking/simulation/genesis.go index 2f1caf2692..cf4e8e50c4 100644 --- a/x/staking/simulation/genesis.go +++ b/x/staking/simulation/genesis.go @@ -63,7 +63,7 @@ func RandomizedGenState(simState *module.SimulationState) { // NOTE: the slashing module need to be defined after the staking module on the // NewSimulationManager constructor for this to work simState.UnbondTime = unbondTime - params := types.NewParams(simState.UnbondTime, maxVals, 7, histEntries, sdk.DefaultBondDenom, sdk.DefaultPowerReduction) + params := types.NewParams(simState.UnbondTime, maxVals, 7, histEntries, sdk.DefaultBondDenom) // validators & delegations var ( diff --git a/x/staking/simulation/genesis_test.go b/x/staking/simulation/genesis_test.go index f7b31b29e1..b7dae7dfb9 100644 --- a/x/staking/simulation/genesis_test.go +++ b/x/staking/simulation/genesis_test.go @@ -10,7 +10,6 @@ import ( "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" - sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/staking/simulation" @@ -47,7 +46,6 @@ func TestRandomizedGenState(t *testing.T) { require.Equal(t, uint32(8687), stakingGenesis.Params.HistoricalEntries) require.Equal(t, "stake", stakingGenesis.Params.BondDenom) require.Equal(t, float64(238280), stakingGenesis.Params.UnbondingTime.Seconds()) - require.Equal(t, sdk.DefaultPowerReduction, stakingGenesis.Params.PowerReduction) // check numbers of Delegations and Validators require.Len(t, stakingGenesis.Delegations, 3) require.Len(t, stakingGenesis.Validators, 3) diff --git a/x/staking/types/params.go b/x/staking/types/params.go index 1b5a4f1949..8ccae6b565 100644 --- a/x/staking/types/params.go +++ b/x/staking/types/params.go @@ -49,14 +49,13 @@ func ParamKeyTable() paramtypes.KeyTable { } // NewParams creates a new Params instance -func NewParams(unbondingTime time.Duration, maxValidators, maxEntries, historicalEntries uint32, bondDenom string, powerReduction sdk.Int) Params { +func NewParams(unbondingTime time.Duration, maxValidators, maxEntries, historicalEntries uint32, bondDenom string) Params { return Params{ UnbondingTime: unbondingTime, MaxValidators: maxValidators, MaxEntries: maxEntries, HistoricalEntries: historicalEntries, BondDenom: bondDenom, - PowerReduction: powerReduction, } } @@ -68,7 +67,6 @@ func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { paramtypes.NewParamSetPair(KeyMaxEntries, &p.MaxEntries, validateMaxEntries), paramtypes.NewParamSetPair(KeyHistoricalEntries, &p.HistoricalEntries, validateHistoricalEntries), paramtypes.NewParamSetPair(KeyBondDenom, &p.BondDenom, validateBondDenom), - paramtypes.NewParamSetPair(KeyPowerReduction, &p.PowerReduction, ValidatePowerReduction), } } @@ -80,7 +78,6 @@ func DefaultParams() Params { DefaultMaxEntries, DefaultHistoricalEntries, sdk.DefaultBondDenom, - sdk.DefaultPowerReduction, ) } diff --git a/x/staking/types/staking.pb.go b/x/staking/types/staking.pb.go index 2dfc8c11b7..618599edba 100644 --- a/x/staking/types/staking.pb.go +++ b/x/staking/types/staking.pb.go @@ -844,8 +844,6 @@ type Params struct { HistoricalEntries uint32 `protobuf:"varint,4,opt,name=historical_entries,json=historicalEntries,proto3" json:"historical_entries,omitempty" yaml:"historical_entries"` // bond_denom defines the bondable coin denomination. BondDenom string `protobuf:"bytes,5,opt,name=bond_denom,json=bondDenom,proto3" json:"bond_denom,omitempty" yaml:"bond_denom"` - // power_reduction is the amount of staking tokens required for 1 unit of consensus-engine power - PowerReduction github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,6,opt,name=power_reduction,json=powerReduction,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"power_reduction" yaml:"power_reduction"` } func (m *Params) Reset() { *m = Params{} } @@ -1140,121 +1138,120 @@ func init() { } var fileDescriptor_64c30c6cf92913c9 = []byte{ - // 1822 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x58, 0x4f, 0x6c, 0x23, 0x57, - 0x19, 0xf7, 0xc4, 0xae, 0x63, 0x7f, 0x4e, 0xe2, 0xe4, 0x6d, 0x76, 0xeb, 0x98, 0xc5, 0xe3, 0x0e, - 0x55, 0x09, 0xa8, 0x75, 0xd8, 0x14, 0x15, 0x91, 0x0b, 0xac, 0xe3, 0x2c, 0xb1, 0x5a, 0x96, 0x30, - 0xc9, 0x06, 0x09, 0x2a, 0xac, 0xe7, 0x99, 0x17, 0x67, 0x88, 0x67, 0xc6, 0xcc, 0x7b, 0xde, 0xc6, - 0x52, 0x0f, 0x1c, 0xcb, 0x22, 0x44, 0xb9, 0xf5, 0xb2, 0xd2, 0x4a, 0xbd, 0x56, 0xe2, 0x82, 0xb8, - 0x72, 0x2d, 0x70, 0x59, 0x6e, 0x08, 0x21, 0x83, 0x76, 0x2f, 0xc0, 0x09, 0xf9, 0xc4, 0x0d, 0xf4, - 0xfe, 0xcc, 0x9f, 0x8c, 0xe3, 0xdd, 0xf5, 0xd2, 0x43, 0x25, 0x7a, 0x49, 0xfc, 0xbe, 0xf7, 0x7d, - 0xbf, 0xef, 0x7d, 0x7f, 0xdf, 0xf7, 0x06, 0x5e, 0xb6, 0x7c, 0xea, 0xfa, 0x74, 0x8b, 0x32, 0x7c, - 0xe6, 0x78, 0xbd, 0xad, 0xbb, 0x37, 0xba, 0x84, 0xe1, 0x1b, 0xe1, 0xba, 0x31, 0x08, 0x7c, 0xe6, - 0xa3, 0x6b, 0x92, 0xab, 0x11, 0x52, 0x15, 0x57, 0x75, 0xbd, 0xe7, 0xf7, 0x7c, 0xc1, 0xb2, 0xc5, - 0x7f, 0x49, 0xee, 0xea, 0x46, 0xcf, 0xf7, 0x7b, 0x7d, 0xb2, 0x25, 0x56, 0xdd, 0xe1, 0xc9, 0x16, - 0xf6, 0x46, 0x6a, 0xab, 0x96, 0xde, 0xb2, 0x87, 0x01, 0x66, 0x8e, 0xef, 0xa9, 0x7d, 0x3d, 0xbd, - 0xcf, 0x1c, 0x97, 0x50, 0x86, 0xdd, 0x41, 0x88, 0x2d, 0x4f, 0xd2, 0x91, 0x4a, 0xd5, 0xb1, 0x14, - 0xb6, 0x32, 0xa5, 0x8b, 0x29, 0x89, 0xec, 0xb0, 0x7c, 0x27, 0xc4, 0xbe, 0xce, 0x88, 0x67, 0x93, - 0xc0, 0x75, 0x3c, 0xb6, 0xc5, 0x46, 0x03, 0x42, 0xe5, 0x5f, 0xb9, 0x6b, 0xfc, 0x54, 0x83, 0x95, - 0x7d, 0x87, 0x32, 0x3f, 0x70, 0x2c, 0xdc, 0x6f, 0x7b, 0x27, 0x3e, 0x7a, 0x03, 0xf2, 0xa7, 0x04, - 0xdb, 0x24, 0xa8, 0x68, 0x75, 0x6d, 0xb3, 0xb4, 0x5d, 0x69, 0xc4, 0x08, 0x0d, 0x29, 0xbb, 0x2f, - 0xf6, 0x9b, 0xb9, 0x8f, 0xc7, 0x7a, 0xc6, 0x54, 0xdc, 0xe8, 0x1b, 0x90, 0xbf, 0x8b, 0xfb, 0x94, - 0xb0, 0xca, 0x42, 0x3d, 0xbb, 0x59, 0xda, 0x7e, 0xa9, 0x71, 0xb9, 0xfb, 0x1a, 0xc7, 0xb8, 0xef, - 0xd8, 0x98, 0xf9, 0x11, 0x80, 0x14, 0x33, 0x7e, 0xb5, 0x00, 0xe5, 0x5d, 0xdf, 0x75, 0x1d, 0x4a, - 0x1d, 0xdf, 0x33, 0x31, 0x23, 0x14, 0x35, 0x21, 0x17, 0x60, 0x46, 0xc4, 0x51, 0x8a, 0xcd, 0x06, - 0xe7, 0xff, 0xf3, 0x58, 0x7f, 0xa5, 0xe7, 0xb0, 0xd3, 0x61, 0xb7, 0x61, 0xf9, 0xae, 0x72, 0x86, - 0xfa, 0xf7, 0x1a, 0xb5, 0xcf, 0x94, 0x7d, 0x2d, 0x62, 0x99, 0x42, 0x16, 0xbd, 0x0d, 0x05, 0x17, - 0x9f, 0x77, 0x04, 0xce, 0x82, 0xc0, 0xb9, 0x39, 0x1f, 0xce, 0x64, 0xac, 0x97, 0x47, 0xd8, 0xed, - 0xef, 0x18, 0x21, 0x8e, 0x61, 0x2e, 0xba, 0xf8, 0x9c, 0x1f, 0x11, 0x0d, 0xa0, 0xcc, 0xa9, 0xd6, - 0x29, 0xf6, 0x7a, 0x44, 0x2a, 0xc9, 0x0a, 0x25, 0xfb, 0x73, 0x2b, 0xb9, 0x16, 0x2b, 0x49, 0xc0, - 0x19, 0xe6, 0xb2, 0x8b, 0xcf, 0x77, 0x05, 0x81, 0x6b, 0xdc, 0x29, 0x7c, 0xf0, 0x40, 0xcf, 0xfc, - 0xfd, 0x81, 0xae, 0x19, 0x7f, 0xd4, 0x00, 0x62, 0x8f, 0xa1, 0xb7, 0x61, 0xd5, 0x8a, 0x56, 0x42, - 0x96, 0xaa, 0x18, 0x7e, 0x71, 0x56, 0x2c, 0x52, 0xfe, 0x6e, 0x16, 0xf8, 0xa1, 0x1f, 0x8e, 0x75, - 0xcd, 0x2c, 0x5b, 0xa9, 0x50, 0xfc, 0x00, 0x4a, 0xc3, 0x81, 0x8d, 0x19, 0xe9, 0xf0, 0xec, 0x14, - 0x9e, 0x2c, 0x6d, 0x57, 0x1b, 0x32, 0x75, 0x1b, 0x61, 0xea, 0x36, 0x8e, 0xc2, 0xd4, 0x6d, 0xd6, - 0x38, 0xd6, 0x64, 0xac, 0x23, 0x69, 0x56, 0x42, 0xd8, 0x78, 0xff, 0xaf, 0xba, 0x66, 0x82, 0xa4, - 0x70, 0x81, 0x84, 0x4d, 0xbf, 0xd3, 0xa0, 0xd4, 0x22, 0xd4, 0x0a, 0x9c, 0x01, 0xaf, 0x10, 0x54, - 0x81, 0x45, 0xd7, 0xf7, 0x9c, 0x33, 0x95, 0x8f, 0x45, 0x33, 0x5c, 0xa2, 0x2a, 0x14, 0x1c, 0x9b, - 0x78, 0xcc, 0x61, 0x23, 0x19, 0x57, 0x33, 0x5a, 0x73, 0xa9, 0x77, 0x48, 0x97, 0x3a, 0x61, 0x34, - 0xcc, 0x70, 0x89, 0x6e, 0xc1, 0x2a, 0x25, 0xd6, 0x30, 0x70, 0xd8, 0xa8, 0x63, 0xf9, 0x1e, 0xc3, - 0x16, 0xab, 0xe4, 0x44, 0xc0, 0x3e, 0x37, 0x19, 0xeb, 0x2f, 0xca, 0xb3, 0xa6, 0x39, 0x0c, 0xb3, - 0x1c, 0x92, 0x76, 0x25, 0x85, 0x6b, 0xb0, 0x09, 0xc3, 0x4e, 0x9f, 0x56, 0x5e, 0x90, 0x1a, 0xd4, - 0x32, 0x61, 0xcb, 0x47, 0x8b, 0x50, 0x8c, 0xb2, 0x9d, 0x6b, 0xf6, 0x07, 0x24, 0xe0, 0xbf, 0x3b, - 0xd8, 0xb6, 0x03, 0x42, 0xa9, 0xca, 0xeb, 0x84, 0xe6, 0x34, 0x87, 0x61, 0x96, 0x43, 0xd2, 0x4d, - 0x49, 0x41, 0x8c, 0x87, 0xd9, 0xa3, 0xc4, 0xa3, 0x43, 0xda, 0x19, 0x0c, 0xbb, 0x67, 0x64, 0xa4, - 0xa2, 0xb1, 0x3e, 0x15, 0x8d, 0x9b, 0xde, 0xa8, 0xf9, 0x7a, 0x8c, 0x9e, 0x96, 0x33, 0x7e, 0xff, - 0xeb, 0xd7, 0xd6, 0x55, 0x6a, 0x58, 0xc1, 0x68, 0xc0, 0xfc, 0xc6, 0xc1, 0xb0, 0xfb, 0x26, 0x19, - 0xf1, 0xf0, 0x2b, 0xd6, 0x03, 0xc1, 0x89, 0xae, 0x41, 0xfe, 0x47, 0xd8, 0xe9, 0x13, 0x5b, 0x38, - 0xb4, 0x60, 0xaa, 0x15, 0xda, 0x81, 0x3c, 0x65, 0x98, 0x0d, 0xa9, 0xf0, 0xe2, 0xca, 0xb6, 0x31, - 0x2b, 0xd5, 0x9a, 0xbe, 0x67, 0x1f, 0x0a, 0x4e, 0x53, 0x49, 0xa0, 0x5b, 0x90, 0x67, 0xfe, 0x19, - 0xf1, 0x94, 0x0b, 0xe7, 0xaa, 0xef, 0xb6, 0xc7, 0x4c, 0x25, 0xcd, 0x3d, 0x62, 0x93, 0x3e, 0xe9, - 0x09, 0xc7, 0xd1, 0x53, 0x1c, 0x10, 0x5a, 0xc9, 0x0b, 0xc4, 0xf6, 0xdc, 0x45, 0xa8, 0x3c, 0x95, - 0xc6, 0x33, 0xcc, 0x72, 0x44, 0x3a, 0x14, 0x14, 0xf4, 0x26, 0x94, 0xec, 0x38, 0x51, 0x2b, 0x8b, - 0x22, 0x04, 0x5f, 0x98, 0x65, 0x7e, 0x22, 0xa7, 0x55, 0xdf, 0x4b, 0x4a, 0xf3, 0xe4, 0x18, 0x7a, - 0x5d, 0xdf, 0xb3, 0x1d, 0xaf, 0xd7, 0x39, 0x25, 0x4e, 0xef, 0x94, 0x55, 0x0a, 0x75, 0x6d, 0x33, - 0x9b, 0x4c, 0x8e, 0x34, 0x87, 0x61, 0x96, 0x23, 0xd2, 0xbe, 0xa0, 0x20, 0x1b, 0x56, 0x62, 0x2e, - 0x51, 0xa8, 0xc5, 0xa7, 0x16, 0xea, 0x4b, 0xaa, 0x50, 0xaf, 0xa6, 0xb5, 0xc4, 0xb5, 0xba, 0x1c, - 0x11, 0xb9, 0x18, 0xda, 0x07, 0x88, 0xdb, 0x43, 0x05, 0x84, 0x06, 0xe3, 0xe9, 0x3d, 0x46, 0x19, - 0x9e, 0x90, 0x45, 0xef, 0xc2, 0x15, 0xd7, 0xf1, 0x3a, 0x94, 0xf4, 0x4f, 0x3a, 0xca, 0xc1, 0x1c, - 0xb2, 0x24, 0xa2, 0xf7, 0xd6, 0x7c, 0xf9, 0x30, 0x19, 0xeb, 0x55, 0xd5, 0x42, 0xa7, 0x21, 0x0d, - 0x73, 0xcd, 0x75, 0xbc, 0x43, 0xd2, 0x3f, 0x69, 0x45, 0xb4, 0x9d, 0xa5, 0xf7, 0x1e, 0xe8, 0x19, - 0x55, 0xae, 0x19, 0xe3, 0x0d, 0x58, 0x3a, 0xc6, 0x7d, 0x55, 0x66, 0x84, 0xa2, 0xeb, 0x50, 0xc4, - 0xe1, 0xa2, 0xa2, 0xd5, 0xb3, 0x9b, 0x45, 0x33, 0x26, 0xc8, 0x32, 0xff, 0xc9, 0x5f, 0xea, 0x9a, - 0xf1, 0x91, 0x06, 0xf9, 0xd6, 0xf1, 0x01, 0x76, 0x02, 0xd4, 0x86, 0xb5, 0x38, 0x73, 0x2e, 0x16, - 0xf9, 0xf5, 0xc9, 0x58, 0xaf, 0xa4, 0x93, 0x2b, 0xaa, 0xf2, 0x38, 0x81, 0xc3, 0x32, 0x6f, 0xc3, - 0xda, 0xdd, 0xb0, 0x77, 0x44, 0x50, 0x0b, 0x69, 0xa8, 0x29, 0x16, 0xc3, 0x5c, 0x8d, 0x68, 0x0a, - 0x2a, 0x65, 0xe6, 0x1e, 0x2c, 0xca, 0xd3, 0x52, 0xb4, 0x03, 0x2f, 0x0c, 0xf8, 0x0f, 0x61, 0x5d, - 0x69, 0xbb, 0x36, 0x33, 0x79, 0x05, 0xbf, 0x0a, 0x9f, 0x14, 0x31, 0x7e, 0xb9, 0x00, 0xd0, 0x3a, - 0x3e, 0x3e, 0x0a, 0x9c, 0x41, 0x9f, 0xb0, 0x4f, 0xd2, 0xf2, 0x23, 0xb8, 0x1a, 0x9b, 0x45, 0x03, - 0x2b, 0x65, 0x7d, 0x7d, 0x32, 0xd6, 0xaf, 0xa7, 0xad, 0x4f, 0xb0, 0x19, 0xe6, 0x95, 0x88, 0x7e, - 0x18, 0x58, 0x97, 0xa2, 0xda, 0x94, 0x45, 0xa8, 0xd9, 0xd9, 0xa8, 0x09, 0xb6, 0x24, 0x6a, 0x8b, - 0xb2, 0xcb, 0x5d, 0x7b, 0x08, 0xa5, 0xd8, 0x25, 0x14, 0xb5, 0xa0, 0xc0, 0xd4, 0x6f, 0xe5, 0x61, - 0x63, 0xb6, 0x87, 0x43, 0x31, 0xe5, 0xe5, 0x48, 0xd2, 0xf8, 0xb7, 0x06, 0x10, 0xe7, 0xec, 0xa7, - 0x33, 0xc5, 0x78, 0x2b, 0x57, 0x8d, 0x37, 0xfb, 0x5c, 0xa3, 0x9a, 0x92, 0x4e, 0xf9, 0xf3, 0x67, - 0x0b, 0x70, 0xe5, 0x4e, 0xd8, 0x79, 0x3e, 0xf5, 0x3e, 0x38, 0x80, 0x45, 0xe2, 0xb1, 0xc0, 0x11, - 0x4e, 0xe0, 0xd1, 0xfe, 0xca, 0xac, 0x68, 0x5f, 0x62, 0xd3, 0x9e, 0xc7, 0x82, 0x91, 0x8a, 0x7d, - 0x08, 0x93, 0xf2, 0xc6, 0x2f, 0xb2, 0x50, 0x99, 0x25, 0x89, 0x76, 0xa1, 0x6c, 0x05, 0x44, 0x10, - 0xc2, 0xfb, 0x43, 0x13, 0xf7, 0x47, 0x35, 0x9e, 0x2c, 0x53, 0x0c, 0x86, 0xb9, 0x12, 0x52, 0xd4, - 0xed, 0xd1, 0x03, 0x3e, 0xf6, 0xf1, 0xb4, 0xe3, 0x5c, 0xcf, 0x38, 0xe7, 0x19, 0xea, 0xfa, 0x08, - 0x95, 0x5c, 0x04, 0x90, 0xf7, 0xc7, 0x4a, 0x4c, 0x15, 0x17, 0xc8, 0x8f, 0xa1, 0xec, 0x78, 0x0e, - 0x73, 0x70, 0xbf, 0xd3, 0xc5, 0x7d, 0xec, 0x59, 0xcf, 0x33, 0x35, 0xcb, 0x96, 0xaf, 0xd4, 0xa6, - 0xe0, 0x0c, 0x73, 0x45, 0x51, 0x9a, 0x92, 0x80, 0xf6, 0x61, 0x31, 0x54, 0x95, 0x7b, 0xae, 0x69, - 0x23, 0x14, 0x4f, 0x0c, 0x78, 0x3f, 0xcf, 0xc2, 0x9a, 0x49, 0xec, 0xcf, 0x42, 0x31, 0x5f, 0x28, - 0xbe, 0x0d, 0x20, 0xcb, 0x9d, 0x37, 0xd8, 0xe7, 0x88, 0x06, 0x6f, 0x18, 0x45, 0x89, 0xd0, 0xa2, - 0x2c, 0x11, 0x8f, 0xf1, 0x02, 0x2c, 0x25, 0xe3, 0xf1, 0x7f, 0x7a, 0x2b, 0xa1, 0x76, 0xdc, 0x89, - 0x72, 0xa2, 0x13, 0x7d, 0x69, 0x56, 0x27, 0x9a, 0xca, 0xde, 0x27, 0xb7, 0xa0, 0x7f, 0x64, 0x21, - 0x7f, 0x80, 0x03, 0xec, 0x52, 0x64, 0x4d, 0x4d, 0x9a, 0xf2, 0xad, 0xb9, 0x31, 0x95, 0x9f, 0x2d, - 0xf5, 0xb5, 0xe3, 0x29, 0x83, 0xe6, 0x07, 0x97, 0x0c, 0x9a, 0xdf, 0x84, 0x15, 0xfe, 0x1c, 0x8e, - 0x6c, 0x94, 0xde, 0x5e, 0x6e, 0x6e, 0xc4, 0x28, 0x17, 0xf7, 0xe5, 0x6b, 0x39, 0x7a, 0x74, 0x51, - 0xf4, 0x35, 0x28, 0x71, 0x8e, 0xb8, 0x31, 0x73, 0xf1, 0x6b, 0xf1, 0xb3, 0x34, 0xb1, 0x69, 0x98, - 0xe0, 0xe2, 0xf3, 0x3d, 0xb9, 0x40, 0x6f, 0x01, 0x3a, 0x8d, 0xbe, 0x8c, 0x74, 0x62, 0x77, 0x72, - 0xf9, 0xcf, 0x4f, 0xc6, 0xfa, 0x86, 0x94, 0x9f, 0xe6, 0x31, 0xcc, 0xb5, 0x98, 0x18, 0xa2, 0x7d, - 0x15, 0x80, 0xdb, 0xd5, 0xb1, 0x89, 0xe7, 0xbb, 0xea, 0xb9, 0x73, 0x75, 0x32, 0xd6, 0xd7, 0x24, - 0x4a, 0xbc, 0x67, 0x98, 0x45, 0xbe, 0x68, 0xf1, 0xdf, 0xbc, 0x36, 0x07, 0xfe, 0x3b, 0x24, 0xe8, - 0x04, 0xc4, 0x1e, 0x5a, 0x62, 0x32, 0xce, 0xff, 0x6f, 0xb5, 0x99, 0x82, 0x33, 0xcc, 0x15, 0x41, - 0x31, 0x43, 0x42, 0xa2, 0x98, 0x3e, 0xd4, 0x00, 0xc5, 0xb7, 0x8c, 0x49, 0xe8, 0x80, 0x3f, 0x09, - 0xf9, 0xec, 0x9f, 0x18, 0xd4, 0xb5, 0x27, 0xcf, 0xfe, 0xb1, 0x7c, 0x38, 0xfb, 0x27, 0x8a, 0xf3, - 0xeb, 0x71, 0x47, 0x5e, 0x50, 0xa9, 0xa3, 0x60, 0xba, 0x98, 0x92, 0xc4, 0xfb, 0xc1, 0x09, 0xa5, - 0xa7, 0x5a, 0x70, 0xc6, 0xf8, 0x83, 0x06, 0x1b, 0x53, 0x49, 0x1c, 0x1d, 0xf6, 0x87, 0x80, 0x82, - 0xc4, 0xa6, 0x08, 0xd1, 0x48, 0x1d, 0x7a, 0xee, 0x9a, 0x58, 0x0b, 0xa6, 0x5a, 0xfd, 0x27, 0x77, - 0xa9, 0xe4, 0x84, 0xcf, 0x7f, 0xab, 0xc1, 0x7a, 0x52, 0x7d, 0x64, 0xc8, 0x6d, 0x58, 0x4a, 0x6a, - 0x57, 0x26, 0xbc, 0xfc, 0x2c, 0x26, 0xa8, 0xd3, 0x5f, 0x90, 0x47, 0xdf, 0x8d, 0x3b, 0x84, 0xfc, - 0x5c, 0x77, 0xe3, 0x99, 0xbd, 0x11, 0x9e, 0x29, 0xdd, 0x29, 0x72, 0x22, 0x1e, 0xff, 0xd1, 0x20, - 0x77, 0xe0, 0xfb, 0x7d, 0xe4, 0xc3, 0x9a, 0xe7, 0xb3, 0x0e, 0x4f, 0x66, 0x62, 0x77, 0xd4, 0x3b, - 0x5f, 0xb6, 0xde, 0xdd, 0xf9, 0x9c, 0xf4, 0xcf, 0xb1, 0x3e, 0x0d, 0x65, 0x96, 0x3d, 0x9f, 0x35, - 0x05, 0xe5, 0x48, 0x7e, 0x05, 0x78, 0x17, 0x96, 0x2f, 0x2a, 0x93, 0x8d, 0xf9, 0x7b, 0x73, 0x2b, - 0xbb, 0x08, 0x33, 0x19, 0xeb, 0xeb, 0x71, 0x91, 0x46, 0x64, 0xc3, 0x5c, 0xea, 0x26, 0xb4, 0xef, - 0x14, 0x78, 0xfc, 0xfe, 0xf5, 0x40, 0xd7, 0xbe, 0xfc, 0x1b, 0x0d, 0x20, 0xfe, 0xd8, 0x81, 0x5e, - 0x85, 0x17, 0x9b, 0xdf, 0xb9, 0xdd, 0xea, 0x1c, 0x1e, 0xdd, 0x3c, 0xba, 0x73, 0xd8, 0xb9, 0x73, - 0xfb, 0xf0, 0x60, 0x6f, 0xb7, 0x7d, 0xab, 0xbd, 0xd7, 0x5a, 0xcd, 0x54, 0xcb, 0xf7, 0xee, 0xd7, - 0x4b, 0x77, 0x3c, 0x3a, 0x20, 0x96, 0x73, 0xe2, 0x10, 0x1b, 0xbd, 0x02, 0xeb, 0x17, 0xb9, 0xf9, - 0x6a, 0xaf, 0xb5, 0xaa, 0x55, 0x97, 0xee, 0xdd, 0xaf, 0x17, 0xe4, 0xf8, 0x47, 0x6c, 0xb4, 0x09, - 0x57, 0xa7, 0xf9, 0xda, 0xb7, 0xbf, 0xb5, 0xba, 0x50, 0x5d, 0xbe, 0x77, 0xbf, 0x5e, 0x8c, 0xe6, - 0x44, 0x64, 0x00, 0x4a, 0x72, 0x2a, 0xbc, 0x6c, 0x15, 0xee, 0xdd, 0xaf, 0xe7, 0xa5, 0x03, 0xab, - 0xb9, 0xf7, 0x3e, 0xac, 0x65, 0x9a, 0xb7, 0x3e, 0x7e, 0x54, 0xd3, 0x1e, 0x3e, 0xaa, 0x69, 0x7f, - 0x7b, 0x54, 0xd3, 0xde, 0x7f, 0x5c, 0xcb, 0x3c, 0x7c, 0x5c, 0xcb, 0xfc, 0xe9, 0x71, 0x2d, 0xf3, - 0xfd, 0x57, 0x9f, 0xe8, 0xbb, 0xf3, 0xe8, 0x3b, 0xba, 0xf0, 0x62, 0x37, 0x2f, 0x3a, 0xff, 0xeb, - 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xc2, 0x90, 0x8f, 0x24, 0x66, 0x17, 0x00, 0x00, + // 1796 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x58, 0x4d, 0x6c, 0x23, 0x49, + 0x15, 0x76, 0x3b, 0x5e, 0xc7, 0x7e, 0x4e, 0xe2, 0xa4, 0x26, 0x33, 0xeb, 0x98, 0xc1, 0xed, 0x6d, + 0x56, 0x4b, 0x40, 0xbb, 0x0e, 0x93, 0x45, 0x8b, 0xc8, 0x05, 0xc6, 0x71, 0x86, 0x58, 0xbb, 0x0c, + 0xa1, 0x93, 0x09, 0x12, 0xac, 0xb0, 0xca, 0xdd, 0x15, 0xa7, 0x89, 0xbb, 0xdb, 0x74, 0x95, 0x87, + 0x58, 0xda, 0x03, 0xc7, 0x65, 0x10, 0x62, 0xb9, 0xed, 0x65, 0xa4, 0x91, 0xf6, 0xba, 0x12, 0x17, + 0xc4, 0x95, 0xeb, 0x02, 0x97, 0xe1, 0x86, 0x10, 0x32, 0x68, 0xe6, 0x82, 0x38, 0x21, 0x1f, 0x10, + 0x37, 0x50, 0xfd, 0xf4, 0x4f, 0xda, 0xf1, 0xcc, 0x78, 0xb4, 0x87, 0x91, 0xd8, 0x4b, 0xe2, 0x7a, + 0xf5, 0xde, 0xf7, 0xea, 0xfd, 0xd6, 0xab, 0x86, 0x57, 0x2d, 0x9f, 0xba, 0x3e, 0xdd, 0xa2, 0x0c, + 0x9f, 0x39, 0x5e, 0x6f, 0xeb, 0xee, 0x8d, 0x2e, 0x61, 0xf8, 0x46, 0xb8, 0x6e, 0x0c, 0x02, 0x9f, + 0xf9, 0xe8, 0x9a, 0xe4, 0x6a, 0x84, 0x54, 0xc5, 0x55, 0x5d, 0xef, 0xf9, 0x3d, 0x5f, 0xb0, 0x6c, + 0xf1, 0x5f, 0x92, 0xbb, 0xba, 0xd1, 0xf3, 0xfd, 0x5e, 0x9f, 0x6c, 0x89, 0x55, 0x77, 0x78, 0xb2, + 0x85, 0xbd, 0x91, 0xda, 0xaa, 0xa5, 0xb7, 0xec, 0x61, 0x80, 0x99, 0xe3, 0x7b, 0x6a, 0x5f, 0x4f, + 0xef, 0x33, 0xc7, 0x25, 0x94, 0x61, 0x77, 0x10, 0x62, 0xcb, 0x93, 0x74, 0xa4, 0x52, 0x75, 0x2c, + 0x85, 0xad, 0x4c, 0xe9, 0x62, 0x4a, 0x22, 0x3b, 0x2c, 0xdf, 0x09, 0xb1, 0xaf, 0x33, 0xe2, 0xd9, + 0x24, 0x70, 0x1d, 0x8f, 0x6d, 0xb1, 0xd1, 0x80, 0x50, 0xf9, 0x57, 0xee, 0x1a, 0x3f, 0xd3, 0x60, + 0x65, 0xdf, 0xa1, 0xcc, 0x0f, 0x1c, 0x0b, 0xf7, 0xdb, 0xde, 0x89, 0x8f, 0xde, 0x82, 0xfc, 0x29, + 0xc1, 0x36, 0x09, 0x2a, 0x5a, 0x5d, 0xdb, 0x2c, 0x6d, 0x57, 0x1a, 0x31, 0x42, 0x43, 0xca, 0xee, + 0x8b, 0xfd, 0x66, 0xee, 0x93, 0xb1, 0x9e, 0x31, 0x15, 0x37, 0xfa, 0x06, 0xe4, 0xef, 0xe2, 0x3e, + 0x25, 0xac, 0x92, 0xad, 0x2f, 0x6c, 0x96, 0xb6, 0x5f, 0x69, 0x5c, 0xee, 0xbe, 0xc6, 0x31, 0xee, + 0x3b, 0x36, 0x66, 0x7e, 0x04, 0x20, 0xc5, 0x8c, 0x5f, 0x67, 0xa1, 0xbc, 0xeb, 0xbb, 0xae, 0x43, + 0xa9, 0xe3, 0x7b, 0x26, 0x66, 0x84, 0xa2, 0x26, 0xe4, 0x02, 0xcc, 0x88, 0x38, 0x4a, 0xb1, 0xd9, + 0xe0, 0xfc, 0x7f, 0x19, 0xeb, 0xaf, 0xf5, 0x1c, 0x76, 0x3a, 0xec, 0x36, 0x2c, 0xdf, 0x55, 0xce, + 0x50, 0xff, 0xde, 0xa0, 0xf6, 0x99, 0xb2, 0xaf, 0x45, 0x2c, 0x53, 0xc8, 0xa2, 0x77, 0xa1, 0xe0, + 0xe2, 0xf3, 0x8e, 0xc0, 0xc9, 0x0a, 0x9c, 0x9b, 0xf3, 0xe1, 0x4c, 0xc6, 0x7a, 0x79, 0x84, 0xdd, + 0xfe, 0x8e, 0x11, 0xe2, 0x18, 0xe6, 0xa2, 0x8b, 0xcf, 0xf9, 0x11, 0xd1, 0x00, 0xca, 0x9c, 0x6a, + 0x9d, 0x62, 0xaf, 0x47, 0xa4, 0x92, 0x05, 0xa1, 0x64, 0x7f, 0x6e, 0x25, 0xd7, 0x62, 0x25, 0x09, + 0x38, 0xc3, 0x5c, 0x76, 0xf1, 0xf9, 0xae, 0x20, 0x70, 0x8d, 0x3b, 0x85, 0x0f, 0x1f, 0xe8, 0x99, + 0x7f, 0x3c, 0xd0, 0x35, 0xe3, 0x4f, 0x1a, 0x40, 0xec, 0x31, 0xf4, 0x2e, 0xac, 0x5a, 0xd1, 0x4a, + 0xc8, 0x52, 0x15, 0xc3, 0x2f, 0xce, 0x8a, 0x45, 0xca, 0xdf, 0xcd, 0x02, 0x3f, 0xf4, 0xc3, 0xb1, + 0xae, 0x99, 0x65, 0x2b, 0x15, 0x8a, 0x1f, 0x40, 0x69, 0x38, 0xb0, 0x31, 0x23, 0x1d, 0x9e, 0x9d, + 0xc2, 0x93, 0xa5, 0xed, 0x6a, 0x43, 0xa6, 0x6e, 0x23, 0x4c, 0xdd, 0xc6, 0x51, 0x98, 0xba, 0xcd, + 0x1a, 0xc7, 0x9a, 0x8c, 0x75, 0x24, 0xcd, 0x4a, 0x08, 0x1b, 0x1f, 0xfc, 0x4d, 0xd7, 0x4c, 0x90, + 0x14, 0x2e, 0x90, 0xb0, 0xe9, 0xf7, 0x1a, 0x94, 0x5a, 0x84, 0x5a, 0x81, 0x33, 0xe0, 0x15, 0x82, + 0x2a, 0xb0, 0xe8, 0xfa, 0x9e, 0x73, 0xa6, 0xf2, 0xb1, 0x68, 0x86, 0x4b, 0x54, 0x85, 0x82, 0x63, + 0x13, 0x8f, 0x39, 0x6c, 0x24, 0xe3, 0x6a, 0x46, 0x6b, 0x2e, 0xf5, 0x13, 0xd2, 0xa5, 0x4e, 0x18, + 0x0d, 0x33, 0x5c, 0xa2, 0x5b, 0xb0, 0x4a, 0x89, 0x35, 0x0c, 0x1c, 0x36, 0xea, 0x58, 0xbe, 0xc7, + 0xb0, 0xc5, 0x2a, 0x39, 0x11, 0xb0, 0xcf, 0x4d, 0xc6, 0xfa, 0xcb, 0xf2, 0xac, 0x69, 0x0e, 0xc3, + 0x2c, 0x87, 0xa4, 0x5d, 0x49, 0xe1, 0x1a, 0x6c, 0xc2, 0xb0, 0xd3, 0xa7, 0x95, 0x97, 0xa4, 0x06, + 0xb5, 0x4c, 0xd8, 0xf2, 0xf1, 0x22, 0x14, 0xa3, 0x6c, 0xe7, 0x9a, 0xfd, 0x01, 0x09, 0xf8, 0xef, + 0x0e, 0xb6, 0xed, 0x80, 0x50, 0xaa, 0xf2, 0x3a, 0xa1, 0x39, 0xcd, 0x61, 0x98, 0xe5, 0x90, 0x74, + 0x53, 0x52, 0x10, 0xe3, 0x61, 0xf6, 0x28, 0xf1, 0xe8, 0x90, 0x76, 0x06, 0xc3, 0xee, 0x19, 0x19, + 0xa9, 0x68, 0xac, 0x4f, 0x45, 0xe3, 0xa6, 0x37, 0x6a, 0xbe, 0x19, 0xa3, 0xa7, 0xe5, 0x8c, 0x3f, + 0xfc, 0xe6, 0x8d, 0x75, 0x95, 0x1a, 0x56, 0x30, 0x1a, 0x30, 0xbf, 0x71, 0x30, 0xec, 0xbe, 0x4d, + 0x46, 0x3c, 0xfc, 0x8a, 0xf5, 0x40, 0x70, 0xa2, 0x6b, 0x90, 0xff, 0x11, 0x76, 0xfa, 0xc4, 0x16, + 0x0e, 0x2d, 0x98, 0x6a, 0x85, 0x76, 0x20, 0x4f, 0x19, 0x66, 0x43, 0x2a, 0xbc, 0xb8, 0xb2, 0x6d, + 0xcc, 0x4a, 0xb5, 0xa6, 0xef, 0xd9, 0x87, 0x82, 0xd3, 0x54, 0x12, 0xe8, 0x16, 0xe4, 0x99, 0x7f, + 0x46, 0x3c, 0xe5, 0xc2, 0xb9, 0xea, 0xbb, 0xed, 0x31, 0x53, 0x49, 0x73, 0x8f, 0xd8, 0xa4, 0x4f, + 0x7a, 0xc2, 0x71, 0xf4, 0x14, 0x07, 0x84, 0x56, 0xf2, 0x02, 0xb1, 0x3d, 0x77, 0x11, 0x2a, 0x4f, + 0xa5, 0xf1, 0x0c, 0xb3, 0x1c, 0x91, 0x0e, 0x05, 0x05, 0xbd, 0x0d, 0x25, 0x3b, 0x4e, 0xd4, 0xca, + 0xa2, 0x08, 0xc1, 0x17, 0x66, 0x99, 0x9f, 0xc8, 0x69, 0xd5, 0xf7, 0x92, 0xd2, 0x3c, 0x39, 0x86, + 0x5e, 0xd7, 0xf7, 0x6c, 0xc7, 0xeb, 0x75, 0x4e, 0x89, 0xd3, 0x3b, 0x65, 0x95, 0x42, 0x5d, 0xdb, + 0x5c, 0x48, 0x26, 0x47, 0x9a, 0xc3, 0x30, 0xcb, 0x11, 0x69, 0x5f, 0x50, 0x90, 0x0d, 0x2b, 0x31, + 0x97, 0x28, 0xd4, 0xe2, 0x53, 0x0b, 0xf5, 0x15, 0x55, 0xa8, 0x57, 0xd3, 0x5a, 0xe2, 0x5a, 0x5d, + 0x8e, 0x88, 0x5c, 0x0c, 0xed, 0x03, 0xc4, 0xed, 0xa1, 0x02, 0x42, 0x83, 0xf1, 0xf4, 0x1e, 0xa3, + 0x0c, 0x4f, 0xc8, 0xa2, 0xf7, 0xe0, 0x8a, 0xeb, 0x78, 0x1d, 0x4a, 0xfa, 0x27, 0x1d, 0xe5, 0x60, + 0x0e, 0x59, 0x12, 0xd1, 0x7b, 0x67, 0xbe, 0x7c, 0x98, 0x8c, 0xf5, 0xaa, 0x6a, 0xa1, 0xd3, 0x90, + 0x86, 0xb9, 0xe6, 0x3a, 0xde, 0x21, 0xe9, 0x9f, 0xb4, 0x22, 0xda, 0xce, 0xd2, 0xfb, 0x0f, 0xf4, + 0x8c, 0x2a, 0xd7, 0x8c, 0xf1, 0x16, 0x2c, 0x1d, 0xe3, 0xbe, 0x2a, 0x33, 0x42, 0xd1, 0x75, 0x28, + 0xe2, 0x70, 0x51, 0xd1, 0xea, 0x0b, 0x9b, 0x45, 0x33, 0x26, 0xc8, 0x32, 0xff, 0xe9, 0x5f, 0xeb, + 0x9a, 0xf1, 0xb1, 0x06, 0xf9, 0xd6, 0xf1, 0x01, 0x76, 0x02, 0xd4, 0x86, 0xb5, 0x38, 0x73, 0x2e, + 0x16, 0xf9, 0xf5, 0xc9, 0x58, 0xaf, 0xa4, 0x93, 0x2b, 0xaa, 0xf2, 0x38, 0x81, 0xc3, 0x32, 0x6f, + 0xc3, 0xda, 0xdd, 0xb0, 0x77, 0x44, 0x50, 0xd9, 0x34, 0xd4, 0x14, 0x8b, 0x61, 0xae, 0x46, 0x34, + 0x05, 0x95, 0x32, 0x73, 0x0f, 0x16, 0xe5, 0x69, 0x29, 0xda, 0x81, 0x97, 0x06, 0xfc, 0x87, 0xb0, + 0xae, 0xb4, 0x5d, 0x9b, 0x99, 0xbc, 0x82, 0x5f, 0x85, 0x4f, 0x8a, 0x18, 0xbf, 0xca, 0x02, 0xb4, + 0x8e, 0x8f, 0x8f, 0x02, 0x67, 0xd0, 0x27, 0xec, 0xd3, 0xb4, 0xfc, 0x08, 0xae, 0xc6, 0x66, 0xd1, + 0xc0, 0x4a, 0x59, 0x5f, 0x9f, 0x8c, 0xf5, 0xeb, 0x69, 0xeb, 0x13, 0x6c, 0x86, 0x79, 0x25, 0xa2, + 0x1f, 0x06, 0xd6, 0xa5, 0xa8, 0x36, 0x65, 0x11, 0xea, 0xc2, 0x6c, 0xd4, 0x04, 0x5b, 0x12, 0xb5, + 0x45, 0xd9, 0xe5, 0xae, 0x3d, 0x84, 0x52, 0xec, 0x12, 0x8a, 0x5a, 0x50, 0x60, 0xea, 0xb7, 0xf2, + 0xb0, 0x31, 0xdb, 0xc3, 0xa1, 0x98, 0xf2, 0x72, 0x24, 0x69, 0xfc, 0x47, 0x03, 0x88, 0x73, 0xf6, + 0xc5, 0x4c, 0x31, 0xde, 0xca, 0x55, 0xe3, 0x5d, 0x78, 0xae, 0x51, 0x4d, 0x49, 0xa7, 0xfc, 0xf9, + 0xf3, 0x2c, 0x5c, 0xb9, 0x13, 0x76, 0x9e, 0x17, 0xde, 0x07, 0x07, 0xb0, 0x48, 0x3c, 0x16, 0x38, + 0xc2, 0x09, 0x3c, 0xda, 0x5f, 0x99, 0x15, 0xed, 0x4b, 0x6c, 0xda, 0xf3, 0x58, 0x30, 0x52, 0xb1, + 0x0f, 0x61, 0x52, 0xde, 0xf8, 0xe5, 0x02, 0x54, 0x66, 0x49, 0xa2, 0x5d, 0x28, 0x5b, 0x01, 0x11, + 0x84, 0xf0, 0xfe, 0xd0, 0xc4, 0xfd, 0x51, 0x8d, 0x27, 0xcb, 0x14, 0x83, 0x61, 0xae, 0x84, 0x14, + 0x75, 0x7b, 0xf4, 0x80, 0x8f, 0x7d, 0x3c, 0xed, 0x38, 0xd7, 0x33, 0xce, 0x79, 0x86, 0xba, 0x3e, + 0x42, 0x25, 0x17, 0x01, 0xe4, 0xfd, 0xb1, 0x12, 0x53, 0xc5, 0x05, 0xf2, 0x63, 0x28, 0x3b, 0x9e, + 0xc3, 0x1c, 0xdc, 0xef, 0x74, 0x71, 0x1f, 0x7b, 0xd6, 0xf3, 0x4c, 0xcd, 0xb2, 0xe5, 0x2b, 0xb5, + 0x29, 0x38, 0xc3, 0x5c, 0x51, 0x94, 0xa6, 0x24, 0xa0, 0x7d, 0x58, 0x0c, 0x55, 0xe5, 0x9e, 0x6b, + 0xda, 0x08, 0xc5, 0x13, 0x03, 0xde, 0x2f, 0x16, 0x60, 0xcd, 0x24, 0xf6, 0x67, 0xa1, 0x98, 0x2f, + 0x14, 0xdf, 0x06, 0x90, 0xe5, 0xce, 0x1b, 0xec, 0x73, 0x44, 0x83, 0x37, 0x8c, 0xa2, 0x44, 0x68, + 0x51, 0x96, 0x88, 0xc7, 0x38, 0x0b, 0x4b, 0xc9, 0x78, 0xfc, 0x9f, 0xde, 0x4a, 0xa8, 0x1d, 0x77, + 0xa2, 0x9c, 0xe8, 0x44, 0x5f, 0x9a, 0xd5, 0x89, 0xa6, 0xb2, 0xf7, 0xc9, 0x2d, 0xe8, 0xdf, 0x59, + 0xc8, 0x1f, 0xe0, 0x00, 0xbb, 0x14, 0x59, 0x53, 0x93, 0xa6, 0x7c, 0x6b, 0x6e, 0x4c, 0xe5, 0x67, + 0x4b, 0x7d, 0xed, 0x78, 0xca, 0xa0, 0xf9, 0xe1, 0x25, 0x83, 0xe6, 0x37, 0x61, 0x85, 0x3f, 0x87, + 0x23, 0x1b, 0xa5, 0xb7, 0x97, 0x9b, 0x1b, 0x31, 0xca, 0xc5, 0x7d, 0xf9, 0x5a, 0x8e, 0x1e, 0x5d, + 0x14, 0x7d, 0x0d, 0x4a, 0x9c, 0x23, 0x6e, 0xcc, 0x5c, 0xfc, 0x5a, 0xfc, 0x2c, 0x4d, 0x6c, 0x1a, + 0x26, 0xb8, 0xf8, 0x7c, 0x4f, 0x2e, 0xd0, 0x3b, 0x80, 0x4e, 0xa3, 0x2f, 0x23, 0x9d, 0xd8, 0x9d, + 0x5c, 0xfe, 0xf3, 0x93, 0xb1, 0xbe, 0x21, 0xe5, 0xa7, 0x79, 0x0c, 0x73, 0x2d, 0x26, 0x86, 0x68, + 0x5f, 0x05, 0xe0, 0x76, 0x75, 0x6c, 0xe2, 0xf9, 0xae, 0x7a, 0xee, 0x5c, 0x9d, 0x8c, 0xf5, 0x35, + 0x89, 0x12, 0xef, 0x19, 0x66, 0x91, 0x2f, 0x5a, 0xfc, 0x77, 0x22, 0xb3, 0x3f, 0xd2, 0x00, 0xc5, + 0x2d, 0xdf, 0x24, 0x74, 0xc0, 0xdf, 0x67, 0x7c, 0x10, 0x4f, 0x4c, 0xcd, 0xda, 0x93, 0x07, 0xf1, + 0x58, 0x3e, 0x1c, 0xc4, 0x13, 0x95, 0xf2, 0xf5, 0xb8, 0x3d, 0x66, 0x55, 0x1c, 0x15, 0x4c, 0x17, + 0x53, 0x92, 0x18, 0xe6, 0x9d, 0x50, 0x7a, 0xaa, 0x1f, 0x66, 0x8c, 0x3f, 0x6a, 0xb0, 0x31, 0x95, + 0x51, 0xd1, 0x61, 0x7f, 0x08, 0x28, 0x48, 0x6c, 0x0a, 0x7f, 0x8d, 0xd4, 0xa1, 0xe7, 0x4e, 0xd0, + 0xb5, 0x60, 0xaa, 0xef, 0x7e, 0x7a, 0x1d, 0x3e, 0x27, 0x7c, 0xfe, 0x3b, 0x0d, 0xd6, 0x93, 0xea, + 0x23, 0x43, 0x6e, 0xc3, 0x52, 0x52, 0xbb, 0x32, 0xe1, 0xd5, 0x67, 0x31, 0x41, 0x9d, 0xfe, 0x82, + 0x3c, 0xfa, 0x6e, 0x5c, 0xae, 0xf2, 0xdb, 0xd9, 0x8d, 0x67, 0xf6, 0x46, 0x78, 0xa6, 0x74, 0xd9, + 0xe6, 0x44, 0x3c, 0xfe, 0xab, 0x41, 0xee, 0xc0, 0xf7, 0xfb, 0xc8, 0x87, 0x35, 0xcf, 0x67, 0x1d, + 0x9e, 0x59, 0xc4, 0xee, 0xa8, 0x47, 0xb7, 0xec, 0x83, 0xbb, 0xf3, 0x39, 0xe9, 0x9f, 0x63, 0x7d, + 0x1a, 0xca, 0x2c, 0x7b, 0x3e, 0x6b, 0x0a, 0xca, 0x91, 0x7c, 0x92, 0xbf, 0x07, 0xcb, 0x17, 0x95, + 0xc9, 0x2e, 0xf9, 0xbd, 0xb9, 0x95, 0x5d, 0x84, 0x99, 0x8c, 0xf5, 0xf5, 0xb8, 0x62, 0x22, 0xb2, + 0x61, 0x2e, 0x75, 0x13, 0xda, 0x77, 0x0a, 0x3c, 0x7e, 0xff, 0x7a, 0xa0, 0x6b, 0x5f, 0xfe, 0xad, + 0x06, 0x10, 0x7f, 0x79, 0x40, 0xaf, 0xc3, 0xcb, 0xcd, 0xef, 0xdc, 0x6e, 0x75, 0x0e, 0x8f, 0x6e, + 0x1e, 0xdd, 0x39, 0xec, 0xdc, 0xb9, 0x7d, 0x78, 0xb0, 0xb7, 0xdb, 0xbe, 0xd5, 0xde, 0x6b, 0xad, + 0x66, 0xaa, 0xe5, 0x7b, 0xf7, 0xeb, 0xa5, 0x3b, 0x1e, 0x1d, 0x10, 0xcb, 0x39, 0x71, 0x88, 0x8d, + 0x5e, 0x83, 0xf5, 0x8b, 0xdc, 0x7c, 0xb5, 0xd7, 0x5a, 0xd5, 0xaa, 0x4b, 0xf7, 0xee, 0xd7, 0x0b, + 0x72, 0x16, 0x23, 0x36, 0xda, 0x84, 0xab, 0xd3, 0x7c, 0xed, 0xdb, 0xdf, 0x5a, 0xcd, 0x56, 0x97, + 0xef, 0xdd, 0xaf, 0x17, 0xa3, 0xa1, 0x0d, 0x19, 0x80, 0x92, 0x9c, 0x0a, 0x6f, 0xa1, 0x0a, 0xf7, + 0xee, 0xd7, 0xf3, 0xd2, 0x81, 0xd5, 0xdc, 0xfb, 0x1f, 0xd5, 0x32, 0xcd, 0x5b, 0x9f, 0x3c, 0xaa, + 0x69, 0x0f, 0x1f, 0xd5, 0xb4, 0xbf, 0x3f, 0xaa, 0x69, 0x1f, 0x3c, 0xae, 0x65, 0x1e, 0x3e, 0xae, + 0x65, 0xfe, 0xfc, 0xb8, 0x96, 0xf9, 0xfe, 0xeb, 0x4f, 0xf4, 0xdd, 0x79, 0xf4, 0x51, 0x5b, 0x78, + 0xb1, 0x9b, 0x17, 0x6d, 0xf8, 0xcd, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xc2, 0x48, 0x4c, 0x86, + 0xf3, 0x16, 0x00, 0x00, } func (this *Pool) Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { @@ -1263,624 +1260,622 @@ func (this *Pool) Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_ func StakingDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 9862 bytes of a gzipped FileDescriptorSet + // 9834 bytes of a gzipped FileDescriptorSet 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x70, 0x5c, 0xd7, 0x75, 0x18, 0xde, 0x7e, 0x00, 0xbb, 0x07, 0x0b, 0x60, 0x71, 0x01, 0x92, 0xcb, 0x25, 0x09, 0x40, - 0x4f, 0x5f, 0x14, 0x25, 0x81, 0x12, 0x25, 0x52, 0xd2, 0xd2, 0xb6, 0xbc, 0x8b, 0x5d, 0x82, 0x10, + 0x4f, 0x5f, 0x14, 0x25, 0x81, 0x12, 0x25, 0x52, 0xd2, 0x32, 0xb6, 0xbc, 0x8b, 0x5d, 0x82, 0x10, 0xf1, 0xa5, 0x07, 0x80, 0x92, 0x65, 0xa7, 0x3b, 0x0f, 0xbb, 0x17, 0x8b, 0x27, 0xec, 0xbe, 0xf7, - 0xf4, 0xde, 0x5b, 0x12, 0x90, 0xed, 0x8e, 0xfc, 0x51, 0xd7, 0x66, 0x26, 0x8d, 0x5d, 0x77, 0x1a, + 0xf4, 0xde, 0x5b, 0x12, 0xa0, 0xed, 0x8e, 0xfc, 0x51, 0xd7, 0x66, 0x26, 0x8d, 0x5d, 0x77, 0x1a, 0x5b, 0x36, 0x5d, 0x39, 0x4e, 0xeb, 0xd4, 0x71, 0x1b, 0x3b, 0x76, 0xdd, 0xa6, 0xed, 0x4c, 0xed, - 0xce, 0xa4, 0xb1, 0xdd, 0x26, 0x63, 0xb7, 0x99, 0x36, 0xcd, 0xa4, 0x74, 0x2a, 0x7b, 0x5c, 0xc5, - 0x75, 0x1b, 0x87, 0x75, 0xa7, 0xe9, 0x78, 0x3a, 0xed, 0xdc, 0xaf, 0xf7, 0xb5, 0x9f, 0x80, 0x48, - 0xcb, 0x69, 0xf2, 0x0b, 0x7b, 0xcf, 0x3d, 0xe7, 0xdc, 0x73, 0xcf, 0x3d, 0xe7, 0xdc, 0x73, 0xbf, - 0x1e, 0xe0, 0x8b, 0xe7, 0x61, 0xa6, 0x66, 0x18, 0xb5, 0x3a, 0x3e, 0x6d, 0x5a, 0x86, 0x63, 0x6c, - 0x36, 0xb7, 0x4e, 0x57, 0xb1, 0x5d, 0xb1, 0x34, 0xd3, 0x31, 0xac, 0x59, 0x0a, 0x43, 0x63, 0x0c, - 0x63, 0x56, 0x60, 0xc8, 0x4b, 0x30, 0x7e, 0x41, 0xab, 0xe3, 0xa2, 0x8b, 0xb8, 0x86, 0x1d, 0xf4, - 0x38, 0xc4, 0xb6, 0xb4, 0x3a, 0xce, 0x48, 0x33, 0xd1, 0x93, 0xc3, 0x67, 0xee, 0x9a, 0x0d, 0x11, - 0xcd, 0x06, 0x29, 0x56, 0x09, 0x58, 0xa1, 0x14, 0xf2, 0xf7, 0x62, 0x30, 0xd1, 0xa6, 0x16, 0x21, - 0x88, 0xe9, 0x6a, 0x83, 0x70, 0x94, 0x4e, 0x26, 0x15, 0xfa, 0x1b, 0x65, 0x60, 0xc8, 0x54, 0x2b, - 0x3b, 0x6a, 0x0d, 0x67, 0x22, 0x14, 0x2c, 0x8a, 0x68, 0x0a, 0xa0, 0x8a, 0x4d, 0xac, 0x57, 0xb1, - 0x5e, 0xd9, 0xcb, 0x44, 0x67, 0xa2, 0x27, 0x93, 0x8a, 0x0f, 0x82, 0xee, 0x87, 0x71, 0xb3, 0xb9, - 0x59, 0xd7, 0x2a, 0x65, 0x1f, 0x1a, 0xcc, 0x44, 0x4f, 0xc6, 0x95, 0x34, 0xab, 0x28, 0x7a, 0xc8, - 0xf7, 0xc2, 0xd8, 0x55, 0xac, 0xee, 0xf8, 0x51, 0x87, 0x29, 0xea, 0x28, 0x01, 0xfb, 0x10, 0xe7, - 0x20, 0xd5, 0xc0, 0xb6, 0xad, 0xd6, 0x70, 0xd9, 0xd9, 0x33, 0x71, 0x26, 0x46, 0x7b, 0x3f, 0xd3, - 0xd2, 0xfb, 0x70, 0xcf, 0x87, 0x39, 0xd5, 0xfa, 0x9e, 0x89, 0x51, 0x1e, 0x92, 0x58, 0x6f, 0x36, - 0x18, 0x87, 0x78, 0x07, 0xfd, 0x95, 0xf4, 0x66, 0x23, 0xcc, 0x25, 0x41, 0xc8, 0x38, 0x8b, 0x21, - 0x1b, 0x5b, 0x57, 0xb4, 0x0a, 0xce, 0x0c, 0x52, 0x06, 0xf7, 0xb6, 0x30, 0x58, 0x63, 0xf5, 0x61, - 0x1e, 0x82, 0x0e, 0xcd, 0x41, 0x12, 0xef, 0x3a, 0x58, 0xb7, 0x35, 0x43, 0xcf, 0x0c, 0x51, 0x26, - 0x77, 0xb7, 0x19, 0x45, 0x5c, 0xaf, 0x86, 0x59, 0x78, 0x74, 0xe8, 0x1c, 0x0c, 0x19, 0xa6, 0xa3, - 0x19, 0xba, 0x9d, 0x49, 0xcc, 0x48, 0x27, 0x87, 0xcf, 0x1c, 0x6f, 0x6b, 0x08, 0x2b, 0x0c, 0x47, - 0x11, 0xc8, 0x68, 0x01, 0xd2, 0xb6, 0xd1, 0xb4, 0x2a, 0xb8, 0x5c, 0x31, 0xaa, 0xb8, 0xac, 0xe9, - 0x5b, 0x46, 0x26, 0x49, 0x19, 0x4c, 0xb7, 0x76, 0x84, 0x22, 0xce, 0x19, 0x55, 0xbc, 0xa0, 0x6f, - 0x19, 0xca, 0xa8, 0x1d, 0x28, 0xa3, 0xc3, 0x30, 0x68, 0xef, 0xe9, 0x8e, 0xba, 0x9b, 0x49, 0x51, - 0x0b, 0xe1, 0x25, 0xf9, 0x37, 0x07, 0x61, 0xac, 0x1f, 0x13, 0x3b, 0x0f, 0xf1, 0x2d, 0xd2, 0xcb, - 0x4c, 0x64, 0x3f, 0x3a, 0x60, 0x34, 0x41, 0x25, 0x0e, 0x1e, 0x50, 0x89, 0x79, 0x18, 0xd6, 0xb1, - 0xed, 0xe0, 0x2a, 0xb3, 0x88, 0x68, 0x9f, 0x36, 0x05, 0x8c, 0xa8, 0xd5, 0xa4, 0x62, 0x07, 0x32, - 0xa9, 0x67, 0x61, 0xcc, 0x15, 0xa9, 0x6c, 0xa9, 0x7a, 0x4d, 0xd8, 0xe6, 0xe9, 0x5e, 0x92, 0xcc, - 0x96, 0x04, 0x9d, 0x42, 0xc8, 0x94, 0x51, 0x1c, 0x28, 0xa3, 0x22, 0x80, 0xa1, 0x63, 0x63, 0xab, - 0x5c, 0xc5, 0x95, 0x7a, 0x26, 0xd1, 0x41, 0x4b, 0x2b, 0x04, 0xa5, 0x45, 0x4b, 0x06, 0x83, 0x56, - 0xea, 0xe8, 0x09, 0xcf, 0xd4, 0x86, 0x3a, 0x58, 0xca, 0x12, 0x73, 0xb2, 0x16, 0x6b, 0xdb, 0x80, - 0x51, 0x0b, 0x13, 0xbb, 0xc7, 0x55, 0xde, 0xb3, 0x24, 0x15, 0x62, 0xb6, 0x67, 0xcf, 0x14, 0x4e, - 0xc6, 0x3a, 0x36, 0x62, 0xf9, 0x8b, 0xe8, 0x4e, 0x70, 0x01, 0x65, 0x6a, 0x56, 0x40, 0xa3, 0x50, - 0x4a, 0x00, 0x97, 0xd5, 0x06, 0xce, 0xbe, 0x08, 0xa3, 0x41, 0xf5, 0xa0, 0x49, 0x88, 0xdb, 0x8e, - 0x6a, 0x39, 0xd4, 0x0a, 0xe3, 0x0a, 0x2b, 0xa0, 0x34, 0x44, 0xb1, 0x5e, 0xa5, 0x51, 0x2e, 0xae, - 0x90, 0x9f, 0xe8, 0xad, 0x5e, 0x87, 0xa3, 0xb4, 0xc3, 0xf7, 0xb4, 0x8e, 0x68, 0x80, 0x73, 0xb8, - 0xdf, 0xd9, 0xc7, 0x60, 0x24, 0xd0, 0x81, 0x7e, 0x9b, 0x96, 0xdf, 0x05, 0x87, 0xda, 0xb2, 0x46, - 0xcf, 0xc2, 0x64, 0x53, 0xd7, 0x74, 0x07, 0x5b, 0xa6, 0x85, 0x89, 0xc5, 0xb2, 0xa6, 0x32, 0xff, - 0x65, 0xa8, 0x83, 0xcd, 0x6d, 0xf8, 0xb1, 0x19, 0x17, 0x65, 0xa2, 0xd9, 0x0a, 0x3c, 0x95, 0x4c, - 0xbc, 0x36, 0x94, 0x7e, 0xe9, 0xa5, 0x97, 0x5e, 0x8a, 0xc8, 0x5f, 0x1b, 0x84, 0xc9, 0x76, 0x3e, - 0xd3, 0xd6, 0x7d, 0x0f, 0xc3, 0xa0, 0xde, 0x6c, 0x6c, 0x62, 0x8b, 0x2a, 0x29, 0xae, 0xf0, 0x12, - 0xca, 0x43, 0xbc, 0xae, 0x6e, 0xe2, 0x7a, 0x26, 0x36, 0x23, 0x9d, 0x1c, 0x3d, 0x73, 0x7f, 0x5f, - 0x5e, 0x39, 0xbb, 0x48, 0x48, 0x14, 0x46, 0x89, 0xde, 0x02, 0x31, 0x1e, 0xa2, 0x09, 0x87, 0x53, - 0xfd, 0x71, 0x20, 0xbe, 0xa4, 0x50, 0x3a, 0x74, 0x0c, 0x92, 0xe4, 0x2f, 0xb3, 0x8d, 0x41, 0x2a, - 0x73, 0x82, 0x00, 0x88, 0x5d, 0xa0, 0x2c, 0x24, 0xa8, 0x9b, 0x54, 0xb1, 0x98, 0xda, 0xdc, 0x32, - 0x31, 0xac, 0x2a, 0xde, 0x52, 0x9b, 0x75, 0xa7, 0x7c, 0x45, 0xad, 0x37, 0x31, 0x35, 0xf8, 0xa4, - 0x92, 0xe2, 0xc0, 0xcb, 0x04, 0x86, 0xa6, 0x61, 0x98, 0x79, 0x95, 0xa6, 0x57, 0xf1, 0x2e, 0x8d, - 0x9e, 0x71, 0x85, 0x39, 0xda, 0x02, 0x81, 0x90, 0xe6, 0x9f, 0xb7, 0x0d, 0x5d, 0x98, 0x26, 0x6d, - 0x82, 0x00, 0x68, 0xf3, 0x8f, 0x85, 0x03, 0xf7, 0x89, 0xf6, 0xdd, 0x6b, 0xf1, 0xa5, 0x7b, 0x61, - 0x8c, 0x62, 0x3c, 0xc2, 0x87, 0x5e, 0xad, 0x67, 0xc6, 0x67, 0xa4, 0x93, 0x09, 0x65, 0x94, 0x81, - 0x57, 0x38, 0x54, 0xfe, 0x4a, 0x04, 0x62, 0x34, 0xb0, 0x8c, 0xc1, 0xf0, 0xfa, 0xdb, 0x56, 0x4b, - 0xe5, 0xe2, 0xca, 0x46, 0x61, 0xb1, 0x94, 0x96, 0xd0, 0x28, 0x00, 0x05, 0x5c, 0x58, 0x5c, 0xc9, - 0xaf, 0xa7, 0x23, 0x6e, 0x79, 0x61, 0x79, 0xfd, 0xdc, 0xa3, 0xe9, 0xa8, 0x4b, 0xb0, 0xc1, 0x00, - 0x31, 0x3f, 0xc2, 0x23, 0x67, 0xd2, 0x71, 0x94, 0x86, 0x14, 0x63, 0xb0, 0xf0, 0x6c, 0xa9, 0x78, - 0xee, 0xd1, 0xf4, 0x60, 0x10, 0xf2, 0xc8, 0x99, 0xf4, 0x10, 0x1a, 0x81, 0x24, 0x85, 0x14, 0x56, - 0x56, 0x16, 0xd3, 0x09, 0x97, 0xe7, 0xda, 0xba, 0xb2, 0xb0, 0x3c, 0x9f, 0x4e, 0xba, 0x3c, 0xe7, - 0x95, 0x95, 0x8d, 0xd5, 0x34, 0xb8, 0x1c, 0x96, 0x4a, 0x6b, 0x6b, 0xf9, 0xf9, 0x52, 0x7a, 0xd8, - 0xc5, 0x28, 0xbc, 0x6d, 0xbd, 0xb4, 0x96, 0x4e, 0x05, 0xc4, 0x7a, 0xe4, 0x4c, 0x7a, 0xc4, 0x6d, - 0xa2, 0xb4, 0xbc, 0xb1, 0x94, 0x1e, 0x45, 0xe3, 0x30, 0xc2, 0x9a, 0x10, 0x42, 0x8c, 0x85, 0x40, - 0xe7, 0x1e, 0x4d, 0xa7, 0x3d, 0x41, 0x18, 0x97, 0xf1, 0x00, 0xe0, 0xdc, 0xa3, 0x69, 0x24, 0xcf, - 0x41, 0x9c, 0x9a, 0x21, 0x42, 0x30, 0xba, 0x98, 0x2f, 0x94, 0x16, 0xcb, 0x2b, 0xab, 0xeb, 0x0b, - 0x2b, 0xcb, 0xf9, 0xc5, 0xb4, 0xe4, 0xc1, 0x94, 0xd2, 0xd3, 0x1b, 0x0b, 0x4a, 0xa9, 0x98, 0x8e, - 0xf8, 0x61, 0xab, 0xa5, 0xfc, 0x7a, 0xa9, 0x98, 0x8e, 0xca, 0x15, 0x98, 0x6c, 0x17, 0x50, 0xdb, - 0xba, 0x90, 0xcf, 0x16, 0x22, 0x1d, 0x6c, 0x81, 0xf2, 0x0a, 0xdb, 0x82, 0xfc, 0xdd, 0x08, 0x4c, - 0xb4, 0x99, 0x54, 0xda, 0x36, 0xf2, 0x24, 0xc4, 0x99, 0x2d, 0xb3, 0x69, 0xf6, 0xbe, 0xb6, 0xb3, - 0x13, 0xb5, 0xec, 0x96, 0xa9, 0x96, 0xd2, 0xf9, 0x53, 0x8d, 0x68, 0x87, 0x54, 0x83, 0xb0, 0x68, - 0x31, 0xd8, 0x9f, 0x6b, 0x09, 0xfe, 0x6c, 0x7e, 0x3c, 0xd7, 0xcf, 0xfc, 0x48, 0x61, 0xfb, 0x9b, - 0x04, 0xe2, 0x6d, 0x26, 0x81, 0xf3, 0x30, 0xde, 0xc2, 0xa8, 0xef, 0x60, 0xfc, 0x3e, 0x09, 0x32, - 0x9d, 0x94, 0xd3, 0x23, 0x24, 0x46, 0x02, 0x21, 0xf1, 0x7c, 0x58, 0x83, 0x77, 0x74, 0x1e, 0x84, - 0x96, 0xb1, 0xfe, 0xac, 0x04, 0x87, 0xdb, 0xa7, 0x94, 0x6d, 0x65, 0x78, 0x0b, 0x0c, 0x36, 0xb0, - 0xb3, 0x6d, 0x88, 0xb4, 0xea, 0x9e, 0x36, 0x93, 0x35, 0xa9, 0x0e, 0x0f, 0x36, 0xa7, 0xf2, 0xcf, - 0xf6, 0xd1, 0x4e, 0x79, 0x21, 0x93, 0xa6, 0x45, 0xd2, 0x0f, 0x45, 0xe0, 0x50, 0x5b, 0xe6, 0x6d, - 0x05, 0x3d, 0x01, 0xa0, 0xe9, 0x66, 0xd3, 0x61, 0xa9, 0x13, 0x8b, 0xc4, 0x49, 0x0a, 0xa1, 0xc1, - 0x8b, 0x44, 0xd9, 0xa6, 0xe3, 0xd6, 0x47, 0x69, 0x3d, 0x30, 0x10, 0x45, 0x78, 0xdc, 0x13, 0x34, - 0x46, 0x05, 0x9d, 0xea, 0xd0, 0xd3, 0x16, 0xc3, 0x7c, 0x08, 0xd2, 0x95, 0xba, 0x86, 0x75, 0xa7, - 0x6c, 0x3b, 0x16, 0x56, 0x1b, 0x9a, 0x5e, 0xa3, 0x53, 0x4d, 0x22, 0x17, 0xdf, 0x52, 0xeb, 0x36, - 0x56, 0xc6, 0x58, 0xf5, 0x9a, 0xa8, 0x25, 0x14, 0xd4, 0x80, 0x2c, 0x1f, 0xc5, 0x60, 0x80, 0x82, - 0x55, 0xbb, 0x14, 0xf2, 0x47, 0x92, 0x30, 0xec, 0x4b, 0xc0, 0xd1, 0x1d, 0x90, 0x7a, 0x5e, 0xbd, - 0xa2, 0x96, 0xc5, 0xa2, 0x8a, 0x69, 0x62, 0x98, 0xc0, 0x56, 0xf9, 0xc2, 0xea, 0x21, 0x98, 0xa4, - 0x28, 0x46, 0xd3, 0xc1, 0x56, 0xb9, 0x52, 0x57, 0x6d, 0x9b, 0x2a, 0x2d, 0x41, 0x51, 0x11, 0xa9, - 0x5b, 0x21, 0x55, 0x73, 0xa2, 0x06, 0x9d, 0x85, 0x09, 0x4a, 0xd1, 0x68, 0xd6, 0x1d, 0xcd, 0xac, - 0xe3, 0x32, 0x59, 0xe6, 0xd9, 0x74, 0xca, 0x71, 0x25, 0x1b, 0x27, 0x18, 0x4b, 0x1c, 0x81, 0x48, - 0x64, 0xa3, 0x22, 0x9c, 0xa0, 0x64, 0x35, 0xac, 0x63, 0x4b, 0x75, 0x70, 0x19, 0xbf, 0xd0, 0x54, - 0xeb, 0x76, 0x59, 0xd5, 0xab, 0xe5, 0x6d, 0xd5, 0xde, 0xce, 0x4c, 0x12, 0x06, 0x85, 0x48, 0x46, - 0x52, 0x8e, 0x12, 0xc4, 0x79, 0x8e, 0x57, 0xa2, 0x68, 0x79, 0xbd, 0x7a, 0x51, 0xb5, 0xb7, 0x51, - 0x0e, 0x0e, 0x53, 0x2e, 0xb6, 0x63, 0x69, 0x7a, 0xad, 0x5c, 0xd9, 0xc6, 0x95, 0x9d, 0x72, 0xd3, - 0xd9, 0x7a, 0x3c, 0x73, 0xcc, 0xdf, 0x3e, 0x95, 0x70, 0x8d, 0xe2, 0xcc, 0x11, 0x94, 0x0d, 0x67, - 0xeb, 0x71, 0xb4, 0x06, 0x29, 0x32, 0x18, 0x0d, 0xed, 0x45, 0x5c, 0xde, 0x32, 0x2c, 0x3a, 0x87, - 0x8e, 0xb6, 0x09, 0x4d, 0x3e, 0x0d, 0xce, 0xae, 0x70, 0x82, 0x25, 0xa3, 0x8a, 0x73, 0xf1, 0xb5, - 0xd5, 0x52, 0xa9, 0xa8, 0x0c, 0x0b, 0x2e, 0x17, 0x0c, 0x8b, 0x18, 0x54, 0xcd, 0x70, 0x15, 0x3c, - 0xcc, 0x0c, 0xaa, 0x66, 0x08, 0xf5, 0x9e, 0x85, 0x89, 0x4a, 0x85, 0xf5, 0x59, 0xab, 0x94, 0xf9, - 0x62, 0xcc, 0xce, 0xa4, 0x03, 0xca, 0xaa, 0x54, 0xe6, 0x19, 0x02, 0xb7, 0x71, 0x1b, 0x3d, 0x01, - 0x87, 0x3c, 0x65, 0xf9, 0x09, 0xc7, 0x5b, 0x7a, 0x19, 0x26, 0x3d, 0x0b, 0x13, 0xe6, 0x5e, 0x2b, - 0x21, 0x0a, 0xb4, 0x68, 0xee, 0x85, 0xc9, 0x1e, 0x83, 0x49, 0x73, 0xdb, 0x6c, 0xa5, 0x3b, 0xe5, - 0xa7, 0x43, 0xe6, 0xb6, 0x19, 0x26, 0xbc, 0x9b, 0xae, 0xcc, 0x2d, 0x5c, 0x51, 0x1d, 0x5c, 0xcd, - 0x1c, 0xf1, 0xa3, 0xfb, 0x2a, 0xd0, 0x2c, 0xa4, 0x2b, 0x95, 0x32, 0xd6, 0xd5, 0xcd, 0x3a, 0x2e, - 0xab, 0x16, 0xd6, 0x55, 0x3b, 0x33, 0x4d, 0x91, 0x63, 0x8e, 0xd5, 0xc4, 0xca, 0x68, 0xa5, 0x52, - 0xa2, 0x95, 0x79, 0x5a, 0x87, 0x4e, 0xc1, 0xb8, 0xb1, 0xf9, 0x7c, 0x85, 0x59, 0x64, 0xd9, 0xb4, - 0xf0, 0x96, 0xb6, 0x9b, 0xb9, 0x8b, 0xaa, 0x77, 0x8c, 0x54, 0x50, 0x7b, 0x5c, 0xa5, 0x60, 0x74, - 0x1f, 0xa4, 0x2b, 0xf6, 0xb6, 0x6a, 0x99, 0x34, 0x24, 0xdb, 0xa6, 0x5a, 0xc1, 0x99, 0xbb, 0x19, - 0x2a, 0x83, 0x2f, 0x0b, 0x30, 0xf1, 0x08, 0xfb, 0xaa, 0xb6, 0xe5, 0x08, 0x8e, 0xf7, 0x32, 0x8f, - 0xa0, 0x30, 0xce, 0xed, 0x24, 0xa4, 0x89, 0x26, 0x02, 0x0d, 0x9f, 0xa4, 0x68, 0xa3, 0xe6, 0xb6, - 0xe9, 0x6f, 0xf7, 0x4e, 0x18, 0x21, 0x98, 0x5e, 0xa3, 0xf7, 0xb1, 0xc4, 0xcd, 0xdc, 0xf6, 0xb5, - 0xf8, 0x28, 0x1c, 0x26, 0x48, 0x0d, 0xec, 0xa8, 0x55, 0xd5, 0x51, 0x7d, 0xd8, 0x0f, 0x50, 0x6c, - 0xa2, 0xf6, 0x25, 0x5e, 0x19, 0x90, 0xd3, 0x6a, 0x6e, 0xee, 0xb9, 0x86, 0xf5, 0x20, 0x93, 0x93, - 0xc0, 0x84, 0x69, 0xdd, 0xb6, 0xe4, 0x5c, 0xce, 0x41, 0xca, 0x6f, 0xf7, 0x28, 0x09, 0xcc, 0xf2, - 0xd3, 0x12, 0x49, 0x82, 0xe6, 0x56, 0x8a, 0x24, 0x7d, 0x79, 0xae, 0x94, 0x8e, 0x90, 0x34, 0x6a, - 0x71, 0x61, 0xbd, 0x54, 0x56, 0x36, 0x96, 0xd7, 0x17, 0x96, 0x4a, 0xe9, 0xa8, 0x2f, 0xb1, 0x7f, - 0x2a, 0x96, 0xb8, 0x27, 0x7d, 0xaf, 0xfc, 0xed, 0x08, 0x8c, 0x06, 0x57, 0x6a, 0xe8, 0x4d, 0x70, - 0x44, 0x6c, 0xab, 0xd8, 0xd8, 0x29, 0x5f, 0xd5, 0x2c, 0xea, 0x90, 0x0d, 0x95, 0x4d, 0x8e, 0xae, - 0xfd, 0x4c, 0x72, 0xac, 0x35, 0xec, 0x3c, 0xa3, 0x59, 0xc4, 0xdd, 0x1a, 0xaa, 0x83, 0x16, 0x61, - 0x5a, 0x37, 0xca, 0xb6, 0xa3, 0xea, 0x55, 0xd5, 0xaa, 0x96, 0xbd, 0x0d, 0xad, 0xb2, 0x5a, 0xa9, - 0x60, 0xdb, 0x36, 0xd8, 0x44, 0xe8, 0x72, 0x39, 0xae, 0x1b, 0x6b, 0x1c, 0xd9, 0x9b, 0x21, 0xf2, - 0x1c, 0x35, 0x64, 0xbe, 0xd1, 0x4e, 0xe6, 0x7b, 0x0c, 0x92, 0x0d, 0xd5, 0x2c, 0x63, 0xdd, 0xb1, - 0xf6, 0x68, 0x7e, 0x9e, 0x50, 0x12, 0x0d, 0xd5, 0x2c, 0x91, 0xf2, 0x4f, 0x65, 0x99, 0xf4, 0x54, - 0x2c, 0x91, 0x48, 0x27, 0x9f, 0x8a, 0x25, 0x92, 0x69, 0x90, 0x5f, 0x8d, 0x42, 0xca, 0x9f, 0xaf, - 0x93, 0xe5, 0x4f, 0x85, 0xce, 0x58, 0x12, 0x8d, 0x69, 0x77, 0x76, 0xcd, 0xee, 0x67, 0xe7, 0xc8, - 0x54, 0x96, 0x1b, 0x64, 0xc9, 0xb1, 0xc2, 0x28, 0x49, 0x1a, 0x41, 0x8c, 0x0d, 0xb3, 0x64, 0x24, - 0xa1, 0xf0, 0x12, 0x9a, 0x87, 0xc1, 0xe7, 0x6d, 0xca, 0x7b, 0x90, 0xf2, 0xbe, 0xab, 0x3b, 0xef, - 0xa7, 0xd6, 0x28, 0xf3, 0xe4, 0x53, 0x6b, 0xe5, 0xe5, 0x15, 0x65, 0x29, 0xbf, 0xa8, 0x70, 0x72, - 0x74, 0x14, 0x62, 0x75, 0xf5, 0xc5, 0xbd, 0xe0, 0xa4, 0x47, 0x41, 0xfd, 0x0e, 0xc2, 0x51, 0x88, - 0x5d, 0xc5, 0xea, 0x4e, 0x70, 0xaa, 0xa1, 0xa0, 0xdb, 0xe8, 0x0c, 0xa7, 0x21, 0x4e, 0xf5, 0x85, - 0x00, 0xb8, 0xc6, 0xd2, 0x03, 0x28, 0x01, 0xb1, 0xb9, 0x15, 0x85, 0x38, 0x44, 0x1a, 0x52, 0x0c, - 0x5a, 0x5e, 0x5d, 0x28, 0xcd, 0x95, 0xd2, 0x11, 0xf9, 0x2c, 0x0c, 0x32, 0x25, 0x10, 0x67, 0x71, - 0xd5, 0x90, 0x1e, 0xe0, 0x45, 0xce, 0x43, 0x12, 0xb5, 0x1b, 0x4b, 0x85, 0x92, 0x92, 0x8e, 0x04, - 0x87, 0x3a, 0x96, 0x8e, 0xcb, 0x36, 0xa4, 0xfc, 0x79, 0xf8, 0x4f, 0x67, 0x31, 0xfe, 0x55, 0x09, - 0x86, 0x7d, 0x79, 0x35, 0x49, 0x88, 0xd4, 0x7a, 0xdd, 0xb8, 0x5a, 0x56, 0xeb, 0x9a, 0x6a, 0x73, - 0xd3, 0x00, 0x0a, 0xca, 0x13, 0x48, 0xbf, 0x43, 0xf7, 0x53, 0x72, 0x91, 0x78, 0x7a, 0x50, 0xfe, - 0x94, 0x04, 0xe9, 0x70, 0x62, 0x1b, 0x12, 0x53, 0x7a, 0x23, 0xc5, 0x94, 0x3f, 0x29, 0xc1, 0x68, - 0x30, 0x9b, 0x0d, 0x89, 0x77, 0xc7, 0x1b, 0x2a, 0xde, 0x1f, 0x45, 0x60, 0x24, 0x90, 0xc3, 0xf6, - 0x2b, 0xdd, 0x0b, 0x30, 0xae, 0x55, 0x71, 0xc3, 0x34, 0x1c, 0xac, 0x57, 0xf6, 0xca, 0x75, 0x7c, - 0x05, 0xd7, 0x33, 0x32, 0x0d, 0x1a, 0xa7, 0xbb, 0x67, 0xc9, 0xb3, 0x0b, 0x1e, 0xdd, 0x22, 0x21, - 0xcb, 0x4d, 0x2c, 0x14, 0x4b, 0x4b, 0xab, 0x2b, 0xeb, 0xa5, 0xe5, 0xb9, 0xb7, 0x95, 0x37, 0x96, - 0x2f, 0x2d, 0xaf, 0x3c, 0xb3, 0xac, 0xa4, 0xb5, 0x10, 0xda, 0x6d, 0x74, 0xfb, 0x55, 0x48, 0x87, - 0x85, 0x42, 0x47, 0xa0, 0x9d, 0x58, 0xe9, 0x01, 0x34, 0x01, 0x63, 0xcb, 0x2b, 0xe5, 0xb5, 0x85, - 0x62, 0xa9, 0x5c, 0xba, 0x70, 0xa1, 0x34, 0xb7, 0xbe, 0xc6, 0xf6, 0x3d, 0x5c, 0xec, 0xf5, 0x80, - 0x83, 0xcb, 0x2f, 0x47, 0x61, 0xa2, 0x8d, 0x24, 0x28, 0xcf, 0x57, 0x2c, 0x6c, 0x11, 0xf5, 0x60, - 0x3f, 0xd2, 0xcf, 0x92, 0x9c, 0x61, 0x55, 0xb5, 0x1c, 0xbe, 0xc0, 0xb9, 0x0f, 0x88, 0x96, 0x74, - 0x47, 0xdb, 0xd2, 0xb0, 0xc5, 0xf7, 0x93, 0xd8, 0x32, 0x66, 0xcc, 0x83, 0xb3, 0x2d, 0xa5, 0x07, - 0x00, 0x99, 0x86, 0xad, 0x39, 0xda, 0x15, 0x5c, 0xd6, 0x74, 0xb1, 0xf9, 0x44, 0x96, 0x35, 0x31, - 0x25, 0x2d, 0x6a, 0x16, 0x74, 0xc7, 0xc5, 0xd6, 0x71, 0x4d, 0x0d, 0x61, 0x93, 0x60, 0x1e, 0x55, - 0xd2, 0xa2, 0xc6, 0xc5, 0xbe, 0x03, 0x52, 0x55, 0xa3, 0x49, 0x72, 0x3d, 0x86, 0x47, 0xe6, 0x0e, - 0x49, 0x19, 0x66, 0x30, 0x17, 0x85, 0x67, 0xf1, 0xde, 0xae, 0x57, 0x4a, 0x19, 0x66, 0x30, 0x86, - 0x72, 0x2f, 0x8c, 0xa9, 0xb5, 0x9a, 0x45, 0x98, 0x0b, 0x46, 0x6c, 0x5d, 0x32, 0xea, 0x82, 0x29, - 0x62, 0xf6, 0x29, 0x48, 0x08, 0x3d, 0x90, 0xa9, 0x9a, 0x68, 0xa2, 0x6c, 0xb2, 0xc5, 0x76, 0xe4, - 0x64, 0x52, 0x49, 0xe8, 0xa2, 0xf2, 0x0e, 0x48, 0x69, 0x76, 0xd9, 0xdb, 0xc4, 0x8f, 0xcc, 0x44, - 0x4e, 0x26, 0x94, 0x61, 0xcd, 0x76, 0x37, 0x40, 0xe5, 0xcf, 0x46, 0x60, 0x34, 0x78, 0x08, 0x81, - 0x8a, 0x90, 0xa8, 0x1b, 0x15, 0x95, 0x9a, 0x16, 0x3b, 0x01, 0x3b, 0xd9, 0xe3, 0xdc, 0x62, 0x76, - 0x91, 0xe3, 0x2b, 0x2e, 0x65, 0xf6, 0x77, 0x25, 0x48, 0x08, 0x30, 0x3a, 0x0c, 0x31, 0x53, 0x75, - 0xb6, 0x29, 0xbb, 0x78, 0x21, 0x92, 0x96, 0x14, 0x5a, 0x26, 0x70, 0xdb, 0x54, 0x75, 0x6a, 0x02, - 0x1c, 0x4e, 0xca, 0x64, 0x5c, 0xeb, 0x58, 0xad, 0xd2, 0x45, 0x8f, 0xd1, 0x68, 0x60, 0xdd, 0xb1, - 0xc5, 0xb8, 0x72, 0xf8, 0x1c, 0x07, 0xa3, 0xfb, 0x61, 0xdc, 0xb1, 0x54, 0xad, 0x1e, 0xc0, 0x8d, - 0x51, 0xdc, 0xb4, 0xa8, 0x70, 0x91, 0x73, 0x70, 0x54, 0xf0, 0xad, 0x62, 0x47, 0xad, 0x6c, 0xe3, - 0xaa, 0x47, 0x34, 0x48, 0x37, 0x37, 0x8e, 0x70, 0x84, 0x22, 0xaf, 0x17, 0xb4, 0xf2, 0xb7, 0x25, - 0x18, 0x17, 0xcb, 0xb4, 0xaa, 0xab, 0xac, 0x25, 0x00, 0x55, 0xd7, 0x0d, 0xc7, 0xaf, 0xae, 0x56, - 0x53, 0x6e, 0xa1, 0x9b, 0xcd, 0xbb, 0x44, 0x8a, 0x8f, 0x41, 0xb6, 0x01, 0xe0, 0xd5, 0x74, 0x54, - 0xdb, 0x34, 0x0c, 0xf3, 0x13, 0x26, 0x7a, 0x4c, 0xc9, 0x16, 0xf6, 0xc0, 0x40, 0x64, 0x3d, 0x87, - 0x26, 0x21, 0xbe, 0x89, 0x6b, 0x9a, 0xce, 0xf7, 0x8d, 0x59, 0x41, 0x6c, 0xbf, 0xc4, 0xdc, 0xed, - 0x97, 0xc2, 0x5f, 0x85, 0x89, 0x8a, 0xd1, 0x08, 0x8b, 0x5b, 0x48, 0x87, 0x36, 0x17, 0xec, 0x8b, - 0xd2, 0x73, 0x0f, 0x72, 0xa4, 0x9a, 0x51, 0x57, 0xf5, 0xda, 0xac, 0x61, 0xd5, 0xbc, 0x63, 0x56, - 0x92, 0xf1, 0xd8, 0xbe, 0xc3, 0x56, 0x73, 0xf3, 0xcf, 0x24, 0xe9, 0x97, 0x23, 0xd1, 0xf9, 0xd5, - 0xc2, 0xe7, 0x22, 0xd9, 0x79, 0x46, 0xb8, 0x2a, 0x94, 0xa1, 0xe0, 0xad, 0x3a, 0xae, 0x90, 0x0e, - 0xc2, 0x0f, 0xee, 0x87, 0xc9, 0x9a, 0x51, 0x33, 0x28, 0xa7, 0xd3, 0xe4, 0x17, 0x3f, 0xa7, 0x4d, - 0xba, 0xd0, 0x6c, 0xcf, 0x43, 0xdd, 0xdc, 0x32, 0x4c, 0x70, 0xe4, 0x32, 0x3d, 0x28, 0x62, 0xcb, - 0x18, 0xd4, 0x75, 0x0f, 0x2d, 0xf3, 0xc5, 0xef, 0xd1, 0xe9, 0x5b, 0x19, 0xe7, 0xa4, 0xa4, 0x8e, - 0xad, 0x74, 0x72, 0x0a, 0x1c, 0x0a, 0xf0, 0x63, 0x4e, 0x8a, 0xad, 0x1e, 0x1c, 0x7f, 0x8b, 0x73, - 0x9c, 0xf0, 0x71, 0x5c, 0xe3, 0xa4, 0xb9, 0x39, 0x18, 0xd9, 0x0f, 0xaf, 0x7f, 0xc5, 0x79, 0xa5, - 0xb0, 0x9f, 0xc9, 0x3c, 0x8c, 0x51, 0x26, 0x95, 0xa6, 0xed, 0x18, 0x0d, 0x1a, 0x01, 0xbb, 0xb3, - 0xf9, 0xed, 0xef, 0x31, 0xaf, 0x19, 0x25, 0x64, 0x73, 0x2e, 0x55, 0x2e, 0x07, 0xf4, 0x6c, 0xac, - 0x8a, 0x2b, 0xf5, 0x1e, 0x1c, 0xbe, 0xce, 0x05, 0x71, 0xf1, 0x73, 0x97, 0x61, 0x92, 0xfc, 0xa6, - 0x01, 0xca, 0x2f, 0x49, 0xef, 0x0d, 0xb7, 0xcc, 0xb7, 0xdf, 0xc7, 0x1c, 0x73, 0xc2, 0x65, 0xe0, - 0x93, 0xc9, 0x37, 0x8a, 0x35, 0xec, 0x38, 0xd8, 0xb2, 0xcb, 0x6a, 0xbd, 0x9d, 0x78, 0xbe, 0x1d, - 0x8b, 0xcc, 0xc7, 0x7f, 0x18, 0x1c, 0xc5, 0x79, 0x46, 0x99, 0xaf, 0xd7, 0x73, 0x1b, 0x70, 0xa4, - 0x8d, 0x55, 0xf4, 0xc1, 0xf3, 0x65, 0xce, 0x73, 0xb2, 0xc5, 0x32, 0x08, 0xdb, 0x55, 0x10, 0x70, - 0x77, 0x2c, 0xfb, 0xe0, 0xf9, 0x09, 0xce, 0x13, 0x71, 0x5a, 0x31, 0xa4, 0x84, 0xe3, 0x53, 0x30, - 0x7e, 0x05, 0x5b, 0x9b, 0x86, 0xcd, 0x77, 0x89, 0xfa, 0x60, 0xf7, 0x49, 0xce, 0x6e, 0x8c, 0x13, - 0xd2, 0x6d, 0x23, 0xc2, 0xeb, 0x09, 0x48, 0x6c, 0xa9, 0x15, 0xdc, 0x07, 0x8b, 0xeb, 0x9c, 0xc5, - 0x10, 0xc1, 0x27, 0xa4, 0x79, 0x48, 0xd5, 0x0c, 0x3e, 0x47, 0xf5, 0x26, 0xff, 0x14, 0x27, 0x1f, - 0x16, 0x34, 0x9c, 0x85, 0x69, 0x98, 0xcd, 0x3a, 0x99, 0xc0, 0x7a, 0xb3, 0xf8, 0x3b, 0x82, 0x85, - 0xa0, 0xe1, 0x2c, 0xf6, 0xa1, 0xd6, 0x57, 0x04, 0x0b, 0xdb, 0xa7, 0xcf, 0x27, 0x61, 0xd8, 0xd0, - 0xeb, 0x7b, 0x86, 0xde, 0x8f, 0x10, 0x9f, 0xe6, 0x1c, 0x80, 0x93, 0x10, 0x06, 0xe7, 0x21, 0xd9, - 0xef, 0x40, 0xfc, 0xdd, 0x1f, 0x0a, 0xf7, 0x10, 0x23, 0x30, 0x0f, 0x63, 0x22, 0x40, 0x69, 0x86, - 0xde, 0x07, 0x8b, 0xbf, 0xc7, 0x59, 0x8c, 0xfa, 0xc8, 0x78, 0x37, 0x1c, 0x6c, 0x3b, 0x35, 0xdc, - 0x0f, 0x93, 0xcf, 0x8a, 0x6e, 0x70, 0x12, 0xae, 0xca, 0x4d, 0xac, 0x57, 0xb6, 0xfb, 0xe3, 0xf0, - 0xab, 0x42, 0x95, 0x82, 0x86, 0xb0, 0x98, 0x83, 0x91, 0x86, 0x6a, 0xd9, 0xdb, 0x6a, 0xbd, 0xaf, - 0xe1, 0xf8, 0xfb, 0x9c, 0x47, 0xca, 0x25, 0xe2, 0x1a, 0x69, 0xea, 0xfb, 0x61, 0xf3, 0x39, 0xa1, - 0x11, 0x1f, 0x19, 0x77, 0x3d, 0xdb, 0xa1, 0x5b, 0x6a, 0xfb, 0xe1, 0xf6, 0x6b, 0xc2, 0xf5, 0x18, - 0xed, 0x92, 0x9f, 0xe3, 0x79, 0x48, 0xda, 0xda, 0x8b, 0x7d, 0xb1, 0xf9, 0xbc, 0x18, 0x69, 0x4a, - 0x40, 0x88, 0xdf, 0x06, 0x47, 0xdb, 0x4e, 0x13, 0x7d, 0x30, 0xfb, 0x07, 0x9c, 0xd9, 0xe1, 0x36, - 0x53, 0x05, 0x0f, 0x09, 0xfb, 0x65, 0xf9, 0x0f, 0x45, 0x48, 0xc0, 0x21, 0x5e, 0xab, 0x64, 0xd5, - 0x60, 0xab, 0x5b, 0xfb, 0xd3, 0xda, 0xaf, 0x0b, 0xad, 0x31, 0xda, 0x80, 0xd6, 0xd6, 0xe1, 0x30, - 0xe7, 0xb8, 0xbf, 0x71, 0xfd, 0x82, 0x08, 0xac, 0x8c, 0x7a, 0x23, 0x38, 0xba, 0x6f, 0x87, 0xac, - 0xab, 0x4e, 0x91, 0x9e, 0xda, 0xe5, 0x86, 0x6a, 0xf6, 0xc1, 0xf9, 0x8b, 0x9c, 0xb3, 0x88, 0xf8, - 0x6e, 0x7e, 0x6b, 0x2f, 0xa9, 0x26, 0x61, 0xfe, 0x2c, 0x64, 0x04, 0xf3, 0xa6, 0x6e, 0xe1, 0x8a, - 0x51, 0xd3, 0xb5, 0x17, 0x71, 0xb5, 0x0f, 0xd6, 0xbf, 0x11, 0x1a, 0xaa, 0x0d, 0x1f, 0x39, 0xe1, - 0xbc, 0x00, 0x69, 0x37, 0x57, 0x29, 0x6b, 0x0d, 0xd3, 0xb0, 0x9c, 0x1e, 0x1c, 0xbf, 0x24, 0x46, - 0xca, 0xa5, 0x5b, 0xa0, 0x64, 0xb9, 0x12, 0xb0, 0x73, 0xe6, 0x7e, 0x4d, 0xf2, 0xcb, 0x9c, 0xd1, - 0x88, 0x47, 0xc5, 0x03, 0x47, 0xc5, 0x68, 0x98, 0xaa, 0xd5, 0x4f, 0xfc, 0xfb, 0x47, 0x22, 0x70, - 0x70, 0x12, 0x1e, 0x38, 0x48, 0x46, 0x47, 0x66, 0xfb, 0x3e, 0x38, 0x7c, 0x45, 0x04, 0x0e, 0x41, - 0xc3, 0x59, 0x88, 0x84, 0xa1, 0x0f, 0x16, 0xff, 0x58, 0xb0, 0x10, 0x34, 0x84, 0xc5, 0xd3, 0xde, - 0x44, 0x6b, 0xe1, 0x9a, 0x66, 0x3b, 0x16, 0x4b, 0x8a, 0xbb, 0xb3, 0xfa, 0x27, 0x3f, 0x0c, 0x26, - 0x61, 0x8a, 0x8f, 0x94, 0x44, 0x22, 0xbe, 0xc9, 0x4a, 0xd7, 0x4c, 0xbd, 0x05, 0xfb, 0x4d, 0x11, - 0x89, 0x7c, 0x64, 0x44, 0x36, 0x5f, 0x86, 0x48, 0xd4, 0x5e, 0x21, 0x2b, 0x85, 0x3e, 0xd8, 0xfd, - 0xd3, 0x90, 0x70, 0x6b, 0x82, 0x96, 0xf0, 0xf4, 0xe5, 0x3f, 0x4d, 0x7d, 0x07, 0xef, 0xf5, 0x65, - 0x9d, 0xff, 0x2c, 0x94, 0xff, 0x6c, 0x30, 0x4a, 0x16, 0x43, 0xc6, 0x42, 0xf9, 0x14, 0xea, 0x75, - 0xab, 0x28, 0xf3, 0x9e, 0x1f, 0xf3, 0xfe, 0x06, 0xd3, 0xa9, 0xdc, 0x22, 0x31, 0xf2, 0x60, 0xd2, - 0xd3, 0x9b, 0xd9, 0xfb, 0x7e, 0xec, 0xda, 0x79, 0x20, 0xe7, 0xc9, 0x5d, 0x80, 0x91, 0x40, 0xc2, - 0xd3, 0x9b, 0xd5, 0xfb, 0x39, 0xab, 0x94, 0x3f, 0xdf, 0xc9, 0x9d, 0x85, 0x18, 0x49, 0x5e, 0x7a, - 0x93, 0xff, 0x35, 0x4e, 0x4e, 0xd1, 0x73, 0x6f, 0x86, 0x84, 0x48, 0x5a, 0x7a, 0x93, 0x7e, 0x80, - 0x93, 0xba, 0x24, 0x84, 0x5c, 0x24, 0x2c, 0xbd, 0xc9, 0xff, 0xba, 0x20, 0x17, 0x24, 0x84, 0xbc, - 0x7f, 0x15, 0x7e, 0xf5, 0xe7, 0x63, 0x7c, 0xd2, 0x11, 0xba, 0x3b, 0x0f, 0x43, 0x3c, 0x53, 0xe9, - 0x4d, 0xfd, 0x21, 0xde, 0xb8, 0xa0, 0xc8, 0x3d, 0x06, 0xf1, 0x3e, 0x15, 0xfe, 0x0b, 0x9c, 0x94, - 0xe1, 0xe7, 0xe6, 0x60, 0xd8, 0x97, 0x9d, 0xf4, 0x26, 0xff, 0x1b, 0x9c, 0xdc, 0x4f, 0x45, 0x44, - 0xe7, 0xd9, 0x49, 0x6f, 0x06, 0xbf, 0x28, 0x44, 0xe7, 0x14, 0x44, 0x6d, 0x22, 0x31, 0xe9, 0x4d, - 0xfd, 0x61, 0xa1, 0x75, 0x41, 0x92, 0x7b, 0x12, 0x92, 0xee, 0x64, 0xd3, 0x9b, 0xfe, 0x23, 0x9c, - 0xde, 0xa3, 0x21, 0x1a, 0xf0, 0x4d, 0x76, 0xbd, 0x59, 0xfc, 0x4d, 0xa1, 0x01, 0x1f, 0x15, 0x71, - 0xa3, 0x70, 0x02, 0xd3, 0x9b, 0xd3, 0x47, 0x85, 0x1b, 0x85, 0xf2, 0x17, 0x32, 0x9a, 0x34, 0xe6, - 0xf7, 0x66, 0xf1, 0xb7, 0xc4, 0x68, 0x52, 0x7c, 0x22, 0x46, 0x38, 0x23, 0xe8, 0xcd, 0xe3, 0x97, - 0x84, 0x18, 0xa1, 0x84, 0x20, 0xb7, 0x0a, 0xa8, 0x35, 0x1b, 0xe8, 0xcd, 0xef, 0x63, 0x9c, 0xdf, - 0x78, 0x4b, 0x32, 0x90, 0x7b, 0x06, 0x0e, 0xb7, 0xcf, 0x04, 0x7a, 0x73, 0xfd, 0xf8, 0x8f, 0x43, - 0x6b, 0x37, 0x7f, 0x22, 0x90, 0x5b, 0xf7, 0xa6, 0x14, 0x7f, 0x16, 0xd0, 0x9b, 0xed, 0xcb, 0x3f, - 0x0e, 0x06, 0x6e, 0x7f, 0x12, 0x90, 0xcb, 0x03, 0x78, 0x13, 0x70, 0x6f, 0x5e, 0x9f, 0xe4, 0xbc, - 0x7c, 0x44, 0xc4, 0x35, 0xf8, 0xfc, 0xdb, 0x9b, 0xfe, 0xba, 0x70, 0x0d, 0x4e, 0x41, 0x5c, 0x43, - 0x4c, 0xbd, 0xbd, 0xa9, 0x3f, 0x25, 0x5c, 0x43, 0x90, 0x10, 0xcb, 0xf6, 0xcd, 0x6e, 0xbd, 0x39, - 0x7c, 0x5a, 0x58, 0xb6, 0x8f, 0x2a, 0xb7, 0x0c, 0xe3, 0x2d, 0x13, 0x62, 0x6f, 0x56, 0xbf, 0xcc, - 0x59, 0xa5, 0xc3, 0xf3, 0xa1, 0x7f, 0xf2, 0xe2, 0x93, 0x61, 0x6f, 0x6e, 0x9f, 0x09, 0x4d, 0x5e, - 0x7c, 0x2e, 0xcc, 0x9d, 0x87, 0x84, 0xde, 0xac, 0xd7, 0x89, 0xf3, 0xa0, 0xee, 0x37, 0x01, 0x33, - 0x7f, 0xfc, 0x13, 0xae, 0x1d, 0x41, 0x90, 0x3b, 0x0b, 0x71, 0xdc, 0xd8, 0xc4, 0xd5, 0x5e, 0x94, - 0x3f, 0xf8, 0x89, 0x08, 0x98, 0x04, 0x3b, 0xf7, 0x24, 0x00, 0xdb, 0x1a, 0xa1, 0x87, 0x81, 0x3d, - 0x68, 0xff, 0xeb, 0x4f, 0xf8, 0xd5, 0x1b, 0x8f, 0xc4, 0x63, 0xc0, 0x2e, 0xf2, 0x74, 0x67, 0xf0, - 0xc3, 0x20, 0x03, 0x3a, 0x22, 0x4f, 0xc0, 0xd0, 0xf3, 0xb6, 0xa1, 0x3b, 0x6a, 0xad, 0x17, 0xf5, - 0x7f, 0xe3, 0xd4, 0x02, 0x9f, 0x28, 0xac, 0x61, 0x58, 0xd8, 0x51, 0x6b, 0x76, 0x2f, 0xda, 0xff, - 0xce, 0x69, 0x5d, 0x02, 0x42, 0x5c, 0x51, 0x6d, 0xa7, 0x9f, 0x7e, 0xff, 0x89, 0x20, 0x16, 0x04, - 0x44, 0x68, 0xf2, 0x7b, 0x07, 0xef, 0xf5, 0xa2, 0xfd, 0x91, 0x10, 0x9a, 0xe3, 0xe7, 0xde, 0x0c, - 0x49, 0xf2, 0x93, 0xdd, 0xa7, 0xeb, 0x41, 0xfc, 0xa7, 0x9c, 0xd8, 0xa3, 0x20, 0x2d, 0xdb, 0x4e, - 0xd5, 0xd1, 0x7a, 0x2b, 0xfb, 0x26, 0x1f, 0x69, 0x81, 0x9f, 0xcb, 0xc3, 0xb0, 0xed, 0x54, 0xab, - 0x4d, 0x9e, 0x9f, 0xf6, 0x20, 0xff, 0x1f, 0x3f, 0x71, 0xb7, 0x2c, 0x5c, 0x1a, 0x32, 0xda, 0x57, - 0x77, 0x1c, 0xd3, 0xa0, 0x07, 0x1e, 0xbd, 0x38, 0xfc, 0x98, 0x73, 0xf0, 0x91, 0xe4, 0xe6, 0x20, - 0x45, 0xfa, 0x62, 0x61, 0x13, 0xd3, 0xd3, 0xa9, 0x1e, 0x2c, 0xfe, 0x27, 0x57, 0x40, 0x80, 0xa8, - 0xf0, 0x73, 0x5f, 0x7f, 0x75, 0x4a, 0xfa, 0xd6, 0xab, 0x53, 0xd2, 0x1f, 0xbd, 0x3a, 0x25, 0x7d, - 0xf8, 0xbb, 0x53, 0x03, 0xdf, 0xfa, 0xee, 0xd4, 0xc0, 0xef, 0x7f, 0x77, 0x6a, 0xa0, 0xfd, 0x2e, - 0x31, 0xcc, 0x1b, 0xf3, 0x06, 0xdb, 0x1f, 0x7e, 0x4e, 0xae, 0x69, 0xce, 0x76, 0x73, 0x73, 0xb6, - 0x62, 0x34, 0xe8, 0x36, 0xae, 0xb7, 0x5b, 0xeb, 0x2e, 0x72, 0xe0, 0xbd, 0x51, 0x38, 0x5a, 0x31, - 0xec, 0x86, 0x61, 0x97, 0xd9, 0x7e, 0x2f, 0x2b, 0xf0, 0x1d, 0xdf, 0x94, 0xbf, 0xaa, 0x8f, 0x4d, - 0xdf, 0x8b, 0x30, 0x4a, 0xbb, 0x4e, 0xb7, 0xbb, 0xa8, 0xb5, 0xf5, 0x0c, 0x10, 0xdf, 0xf8, 0xf7, - 0x71, 0xda, 0xeb, 0x11, 0x97, 0x90, 0x9e, 0xde, 0xaf, 0xc3, 0xa4, 0xd6, 0x30, 0xeb, 0x98, 0x6e, - 0xf3, 0x97, 0xdd, 0xba, 0xde, 0xfc, 0xbe, 0xc9, 0xf9, 0x4d, 0x78, 0xe4, 0x0b, 0x82, 0x3a, 0xb7, - 0x08, 0xe3, 0x6a, 0xa5, 0x82, 0xcd, 0x00, 0xcb, 0x1e, 0xc3, 0x22, 0x04, 0x4c, 0x73, 0x4a, 0x97, - 0x5b, 0xe1, 0xc9, 0x4e, 0x43, 0xf3, 0xdc, 0xdd, 0x3e, 0xcd, 0x5b, 0xb8, 0x86, 0xf5, 0x07, 0x75, - 0xec, 0x5c, 0x35, 0xac, 0x1d, 0xae, 0xde, 0x07, 0x59, 0x53, 0x83, 0xec, 0x06, 0x33, 0xbc, 0x3f, - 0x0a, 0x53, 0xac, 0xe2, 0xf4, 0xa6, 0x6a, 0xe3, 0xd3, 0x57, 0x1e, 0xde, 0xc4, 0x8e, 0xfa, 0xf0, - 0xe9, 0x8a, 0xa1, 0xe9, 0x7c, 0x24, 0x26, 0xf8, 0xb8, 0x90, 0xfa, 0x59, 0x5e, 0x9f, 0x6d, 0xbb, - 0x4d, 0x2f, 0xcf, 0x43, 0x6c, 0xce, 0xd0, 0x74, 0x34, 0x09, 0xf1, 0x2a, 0xd6, 0x8d, 0x06, 0xbf, - 0x73, 0xc7, 0x0a, 0xe8, 0x4e, 0x18, 0x54, 0x1b, 0x46, 0x53, 0x77, 0xd8, 0x09, 0x45, 0x61, 0xf8, - 0xeb, 0x37, 0xa6, 0x07, 0xfe, 0xe0, 0xc6, 0x74, 0x74, 0x41, 0x77, 0x14, 0x5e, 0x95, 0x8b, 0xbd, - 0xf6, 0xca, 0xb4, 0x24, 0x3f, 0x05, 0x43, 0x45, 0x5c, 0x39, 0x08, 0xaf, 0x22, 0xae, 0x84, 0x78, - 0xdd, 0x07, 0x89, 0x05, 0xdd, 0x61, 0xb7, 0x22, 0x4f, 0x40, 0x54, 0xd3, 0xd9, 0x45, 0x9b, 0x50, - 0xfb, 0x04, 0x4e, 0x50, 0x8b, 0xb8, 0xe2, 0xa2, 0x56, 0x71, 0x25, 0x8c, 0x4a, 0xd8, 0x13, 0x78, - 0xa1, 0xf8, 0xfb, 0xff, 0x79, 0x6a, 0xe0, 0xa5, 0x57, 0xa7, 0x06, 0x3a, 0x8e, 0x84, 0xdf, 0x07, - 0xb8, 0x8a, 0xf9, 0x10, 0xd8, 0xd5, 0x1d, 0x76, 0x46, 0xe2, 0x0e, 0xc3, 0xef, 0x0c, 0x82, 0xcc, - 0x71, 0x6c, 0x47, 0xdd, 0xd1, 0xf4, 0x9a, 0x3b, 0x12, 0x6a, 0xd3, 0xd9, 0x7e, 0x91, 0x0f, 0xc5, - 0x61, 0x3e, 0x14, 0x1c, 0xa7, 0xfb, 0x68, 0x64, 0x3b, 0x7b, 0x57, 0xb6, 0xc7, 0x98, 0xcb, 0xff, - 0x26, 0x0a, 0x68, 0xcd, 0x51, 0x77, 0x70, 0xbe, 0xe9, 0x6c, 0x1b, 0x96, 0xf6, 0x22, 0x8b, 0x65, - 0x18, 0xa0, 0xa1, 0xee, 0x96, 0x1d, 0x63, 0x07, 0xeb, 0x36, 0x55, 0xcd, 0xf0, 0x99, 0xa3, 0xb3, - 0x6d, 0xec, 0x63, 0x96, 0x0c, 0x5d, 0xe1, 0xfe, 0xcf, 0x7d, 0x67, 0xfa, 0xde, 0xde, 0x5a, 0xa0, - 0xc8, 0x24, 0xb9, 0xde, 0x5d, 0xa7, 0x8c, 0xd1, 0x65, 0x60, 0x97, 0x2c, 0xca, 0x75, 0xcd, 0x76, - 0xf8, 0x3d, 0xed, 0xb3, 0xb3, 0xed, 0xfb, 0x3e, 0xdb, 0x2a, 0xe6, 0xec, 0x65, 0xb5, 0xae, 0x55, - 0x55, 0xc7, 0xb0, 0xec, 0x8b, 0x03, 0x4a, 0x92, 0xb2, 0x5a, 0xd4, 0x6c, 0x07, 0xad, 0x43, 0xb2, - 0x8a, 0xf5, 0x3d, 0xc6, 0x36, 0xfa, 0xfa, 0xd8, 0x26, 0x08, 0x27, 0xca, 0xf5, 0x59, 0x40, 0xaa, - 0x1f, 0x4f, 0x3c, 0x4c, 0x62, 0xf7, 0x2b, 0x3b, 0xb0, 0x0f, 0x70, 0xa6, 0xef, 0x28, 0xc6, 0xd5, - 0x30, 0x28, 0x7b, 0x0f, 0x80, 0xd7, 0x26, 0xca, 0xc0, 0x90, 0x5a, 0xad, 0x5a, 0xd8, 0xb6, 0xe9, - 0x01, 0x60, 0x52, 0x11, 0xc5, 0xdc, 0xf8, 0xbf, 0xfd, 0xf2, 0x83, 0x23, 0x01, 0x8e, 0x85, 0x14, - 0xc0, 0x15, 0x97, 0xf4, 0xd4, 0xa7, 0x24, 0x18, 0x6f, 0x69, 0x11, 0xc9, 0x30, 0x95, 0xdf, 0x58, - 0xbf, 0xb8, 0xa2, 0x2c, 0x3c, 0x97, 0x5f, 0x5f, 0x58, 0x59, 0x2e, 0xb3, 0x2b, 0xff, 0xcb, 0x6b, - 0xab, 0xa5, 0xb9, 0x85, 0x0b, 0x0b, 0xa5, 0x62, 0x7a, 0x00, 0x4d, 0xc3, 0xb1, 0x36, 0x38, 0xc5, - 0xd2, 0x62, 0x69, 0x3e, 0xbf, 0x5e, 0x4a, 0x4b, 0xe8, 0x0e, 0x38, 0xd1, 0x96, 0x89, 0x8b, 0x12, - 0xe9, 0x80, 0xa2, 0x94, 0x5c, 0x94, 0x68, 0xe1, 0x42, 0x47, 0x2f, 0x7a, 0xa0, 0xab, 0xfd, 0xec, - 0xba, 0xee, 0x12, 0xf4, 0xa7, 0xf7, 0x44, 0xe0, 0x68, 0x78, 0xca, 0x50, 0xf5, 0xbd, 0x0e, 0xaf, - 0x3e, 0x3b, 0x44, 0xb3, 0x8b, 0x10, 0xcd, 0xeb, 0x7b, 0xe8, 0x28, 0xcb, 0xa7, 0xcb, 0x4d, 0xab, - 0xce, 0x63, 0xd0, 0x10, 0x29, 0x6f, 0x58, 0x75, 0x12, 0x9b, 0xc4, 0x45, 0x7f, 0xe9, 0x64, 0x8a, - 0xdf, 0xde, 0xcf, 0xa5, 0x3f, 0xf6, 0xca, 0xf4, 0xc0, 0x17, 0x5e, 0x99, 0x1e, 0xf8, 0xd1, 0xa7, - 0xa7, 0x07, 0x5e, 0xfa, 0xc3, 0x99, 0x81, 0xc2, 0x4e, 0xb8, 0x7b, 0x5f, 0xed, 0x39, 0x9b, 0x26, - 0xf2, 0xfa, 0x1e, 0x0d, 0x44, 0xab, 0xd2, 0x73, 0x71, 0xda, 0x39, 0x71, 0x80, 0x3a, 0x15, 0x3e, - 0x40, 0x7d, 0x06, 0xd7, 0xeb, 0x97, 0x74, 0xe3, 0x2a, 0x1d, 0x55, 0x4f, 0x07, 0x1f, 0x8d, 0xc0, - 0x54, 0xcb, 0xb4, 0xc9, 0x33, 0x8c, 0x4e, 0xcf, 0x5f, 0x73, 0x90, 0x28, 0x8a, 0xc4, 0x25, 0x03, - 0x43, 0x36, 0xae, 0x18, 0x7a, 0x95, 0x79, 0x7a, 0x54, 0x11, 0x45, 0xd2, 0x6d, 0x5d, 0xd5, 0x0d, - 0x9b, 0xdf, 0xb9, 0x67, 0x85, 0xc2, 0x27, 0xa4, 0xfd, 0xe5, 0x0b, 0x23, 0xa2, 0x25, 0xd1, 0xcd, - 0x87, 0x7b, 0x1e, 0x29, 0xef, 0x90, 0x5e, 0xba, 0x9d, 0x08, 0x1c, 0x2b, 0xf7, 0xab, 0x95, 0x5f, - 0x8a, 0xc0, 0x74, 0x58, 0x2b, 0x24, 0x6d, 0xb3, 0x1d, 0xb5, 0x61, 0x76, 0x52, 0xcb, 0x79, 0x48, - 0xae, 0x0b, 0x9c, 0x7d, 0xeb, 0xe5, 0xfa, 0x3e, 0xf5, 0x32, 0xea, 0x36, 0x25, 0x14, 0x73, 0xa6, - 0x4f, 0xc5, 0xb8, 0xfd, 0x38, 0x90, 0x66, 0x3e, 0x17, 0x83, 0x13, 0xf4, 0x51, 0x96, 0xd5, 0xd0, - 0x74, 0xe7, 0x74, 0xc5, 0xda, 0x33, 0x1d, 0x9a, 0xb8, 0x19, 0x5b, 0x5c, 0x2f, 0xe3, 0x5e, 0xf5, - 0x2c, 0xab, 0xee, 0xe0, 0x39, 0x5b, 0x10, 0x5f, 0x25, 0x74, 0x44, 0x23, 0x8e, 0xe1, 0xa8, 0x75, - 0xae, 0x29, 0x56, 0x20, 0x50, 0xf6, 0x90, 0x2b, 0xc2, 0xa0, 0x9a, 0x78, 0xc3, 0x55, 0xc7, 0xea, - 0x16, 0xbb, 0x0f, 0x1f, 0xa5, 0x0e, 0x95, 0x20, 0x00, 0x7a, 0xf5, 0x7d, 0x12, 0xe2, 0x6a, 0x93, - 0x5d, 0xe5, 0x88, 0x12, 0x4f, 0xa3, 0x05, 0xf9, 0x12, 0x0c, 0xf1, 0x03, 0x65, 0x94, 0x86, 0xe8, - 0x0e, 0xde, 0xa3, 0xed, 0xa4, 0x14, 0xf2, 0x13, 0xcd, 0x42, 0x9c, 0x0a, 0xcf, 0x27, 0x90, 0xcc, - 0x6c, 0x8b, 0xf4, 0xb3, 0x54, 0x48, 0x85, 0xa1, 0xc9, 0x4f, 0x41, 0xa2, 0x68, 0x34, 0x34, 0xdd, - 0x08, 0x72, 0x4b, 0x32, 0x6e, 0x54, 0x66, 0xb3, 0xc9, 0xf3, 0x0d, 0x85, 0x15, 0xd0, 0x61, 0x18, - 0x64, 0xef, 0x23, 0xf8, 0x75, 0x14, 0x5e, 0x92, 0xe7, 0x60, 0x88, 0xf2, 0x5e, 0x31, 0x11, 0xe2, - 0x2f, 0xeb, 0xf8, 0x43, 0x0c, 0x9a, 0x9a, 0x72, 0xf6, 0x11, 0x4f, 0x58, 0x04, 0xb1, 0xaa, 0xea, - 0xa8, 0xbc, 0xdf, 0xf4, 0xb7, 0xfc, 0x16, 0x48, 0x70, 0x26, 0x36, 0x3a, 0x03, 0x51, 0xc3, 0xb4, - 0xf9, 0x85, 0x92, 0x6c, 0xa7, 0xae, 0xac, 0x98, 0x85, 0x18, 0xc9, 0x54, 0x14, 0x82, 0x5c, 0x50, - 0x3a, 0x06, 0xd5, 0xc7, 0x7d, 0x41, 0xd5, 0x37, 0xe4, 0xbe, 0x9f, 0x6c, 0x48, 0x5b, 0xcc, 0xc1, - 0x35, 0x96, 0x4f, 0x47, 0x60, 0xca, 0x57, 0x7b, 0x05, 0x5b, 0xb6, 0x66, 0xe8, 0x7c, 0x3e, 0x67, - 0xd6, 0x82, 0x7c, 0x42, 0xf2, 0xfa, 0x0e, 0xe6, 0xf2, 0x66, 0x88, 0xe6, 0x4d, 0x13, 0x65, 0x21, - 0x41, 0xcb, 0x15, 0x83, 0xd9, 0x4b, 0x4c, 0x71, 0xcb, 0xa4, 0xce, 0x36, 0xb6, 0x9c, 0xab, 0xaa, - 0xe5, 0x3e, 0x21, 0x14, 0x65, 0xf9, 0x09, 0x48, 0xce, 0x19, 0xba, 0x8d, 0x75, 0xbb, 0x49, 0x7d, - 0x70, 0xb3, 0x6e, 0x54, 0x76, 0x38, 0x07, 0x56, 0x20, 0x0a, 0x57, 0x4d, 0x93, 0x52, 0xc6, 0x14, - 0xf2, 0x93, 0xe5, 0x86, 0x85, 0xb5, 0x8e, 0x2a, 0x7a, 0x62, 0xff, 0x2a, 0xe2, 0x9d, 0x74, 0x75, - 0xf4, 0x7f, 0x24, 0x38, 0xde, 0xea, 0x50, 0x3b, 0x78, 0xcf, 0xde, 0xaf, 0x3f, 0x3d, 0x0b, 0xc9, - 0x55, 0xfa, 0x8e, 0xff, 0x12, 0xde, 0x43, 0x59, 0x18, 0xc2, 0xd5, 0x33, 0x67, 0xcf, 0x3e, 0xfc, - 0x04, 0xb3, 0xf6, 0x8b, 0x03, 0x8a, 0x00, 0xa0, 0x29, 0x48, 0xda, 0xb8, 0x62, 0x9e, 0x39, 0x7b, - 0x6e, 0xe7, 0x61, 0x66, 0x5e, 0x24, 0x03, 0x72, 0x41, 0xb9, 0x04, 0xe9, 0xf5, 0x6b, 0x9f, 0x9e, - 0x96, 0x0a, 0x71, 0x88, 0xda, 0xcd, 0xc6, 0x6d, 0xb5, 0x91, 0x97, 0xe3, 0x30, 0xe3, 0xa7, 0xa4, - 0x91, 0xca, 0xcd, 0x4a, 0xb8, 0x0e, 0xd2, 0x3e, 0x1d, 0x50, 0x8c, 0x0e, 0xc9, 0x6c, 0x57, 0x4d, - 0xca, 0xbf, 0x21, 0x41, 0xca, 0x4d, 0x95, 0xd6, 0xb0, 0x83, 0xce, 0xfb, 0xf3, 0x1f, 0xee, 0x36, - 0xc7, 0x66, 0xc3, 0x6d, 0x79, 0x29, 0x9d, 0xe2, 0x43, 0x47, 0x8f, 0x51, 0x43, 0x34, 0x0d, 0x9b, - 0x3f, 0x2b, 0xeb, 0x41, 0xea, 0x22, 0xa3, 0x07, 0x00, 0xd1, 0x08, 0x57, 0xbe, 0x62, 0x38, 0x9a, - 0x5e, 0x2b, 0x9b, 0xc6, 0x55, 0xfe, 0x58, 0x37, 0xaa, 0xa4, 0x69, 0xcd, 0x65, 0x5a, 0xb1, 0x4a, - 0xe0, 0x44, 0xe8, 0xa4, 0xcb, 0x25, 0x98, 0xde, 0x91, 0x20, 0x20, 0x8a, 0xe8, 0x3c, 0x0c, 0x99, - 0xcd, 0xcd, 0xb2, 0x88, 0x18, 0xc3, 0x67, 0x8e, 0xb7, 0xf3, 0x7f, 0x61, 0x1f, 0x3c, 0x02, 0x0c, - 0x9a, 0xcd, 0x4d, 0x62, 0x2d, 0x77, 0x40, 0xaa, 0x8d, 0x30, 0xc3, 0x57, 0x3c, 0x39, 0xe8, 0xe7, - 0x23, 0x78, 0x0f, 0xca, 0xa6, 0xa5, 0x19, 0x96, 0xe6, 0xec, 0xd1, 0xfc, 0x35, 0xaa, 0xa4, 0x45, - 0xc5, 0x2a, 0x87, 0xcb, 0x3b, 0x30, 0xb6, 0x46, 0xd7, 0xb7, 0x9e, 0xe4, 0x67, 0x3d, 0xf9, 0xa4, - 0xde, 0xf2, 0x75, 0x94, 0x2c, 0xd2, 0x22, 0x59, 0xe1, 0xe9, 0x8e, 0xd6, 0xf9, 0xd8, 0xfe, 0xad, - 0x33, 0x98, 0x21, 0xfe, 0xc9, 0xd1, 0x80, 0x73, 0x32, 0xe3, 0xf4, 0x87, 0xaf, 0x7e, 0x0d, 0xb3, - 0x57, 0x36, 0x91, 0xed, 0x3e, 0xa9, 0x66, 0x7b, 0x84, 0xd1, 0x6c, 0x4f, 0x17, 0x92, 0x9f, 0x80, - 0x91, 0x55, 0xd5, 0x72, 0xd6, 0xb0, 0x73, 0x11, 0xab, 0x55, 0x6c, 0x05, 0x67, 0xdd, 0x11, 0x31, - 0xeb, 0x22, 0x88, 0xd1, 0xa9, 0x95, 0xcd, 0x3a, 0xf4, 0xb7, 0xbc, 0x0d, 0x31, 0x7a, 0x33, 0xd4, - 0x9d, 0x91, 0x39, 0x05, 0x9b, 0x91, 0x49, 0x2c, 0xdd, 0x73, 0xb0, 0x2d, 0xd2, 0x5b, 0x5a, 0x40, - 0x8f, 0x8a, 0x79, 0x35, 0xda, 0x7d, 0x5e, 0xe5, 0x86, 0xc8, 0x67, 0xd7, 0x3a, 0x0c, 0x15, 0x48, - 0x28, 0x5e, 0x28, 0xba, 0x82, 0x48, 0x9e, 0x20, 0x68, 0x09, 0xc6, 0x4c, 0xd5, 0x72, 0xe8, 0x93, - 0x98, 0x6d, 0xda, 0x0b, 0x6e, 0xeb, 0xd3, 0xad, 0x9e, 0x17, 0xe8, 0x2c, 0x6f, 0x65, 0xc4, 0xf4, - 0x03, 0xe5, 0xef, 0xc7, 0x60, 0x90, 0x2b, 0xe3, 0xcd, 0x30, 0xc4, 0xd5, 0xca, 0xad, 0xf3, 0xc4, - 0x6c, 0xeb, 0xc4, 0x34, 0xeb, 0x4e, 0x20, 0x9c, 0x9f, 0xa0, 0x41, 0xf7, 0x40, 0xa2, 0xb2, 0xad, - 0x6a, 0x7a, 0x59, 0xab, 0x8a, 0xad, 0x86, 0x57, 0x6f, 0x4c, 0x0f, 0xcd, 0x11, 0xd8, 0x42, 0x51, - 0x19, 0xa2, 0x95, 0x0b, 0x55, 0x92, 0x09, 0x6c, 0x63, 0xad, 0xb6, 0xed, 0x70, 0x0f, 0xe3, 0x25, - 0xf4, 0x38, 0xc4, 0x88, 0x41, 0xf0, 0x07, 0x93, 0xd9, 0x96, 0x0d, 0x1f, 0x37, 0xd9, 0x2b, 0x24, - 0x48, 0xc3, 0x1f, 0xfe, 0xce, 0xb4, 0xa4, 0x50, 0x0a, 0x34, 0x07, 0x23, 0x75, 0xd5, 0x76, 0xca, - 0x74, 0x06, 0x23, 0xcd, 0xc7, 0xf9, 0x7a, 0xbb, 0x45, 0x21, 0x5c, 0xb1, 0x5c, 0xf4, 0x61, 0x42, - 0xc5, 0x40, 0x55, 0x74, 0x12, 0xd2, 0x94, 0x49, 0xc5, 0x68, 0x34, 0x34, 0x87, 0xe5, 0x56, 0x83, - 0x54, 0xef, 0xa3, 0x04, 0x3e, 0x47, 0xc1, 0x34, 0xc3, 0x3a, 0x06, 0x49, 0xfa, 0x44, 0x8b, 0xa2, - 0xb0, 0xeb, 0xc8, 0x09, 0x02, 0xa0, 0x95, 0xf7, 0xc2, 0x98, 0x17, 0x1f, 0x19, 0x4a, 0x82, 0x71, - 0xf1, 0xc0, 0x14, 0xf1, 0x21, 0x98, 0xd4, 0xf1, 0x2e, 0xbd, 0x20, 0x1d, 0xc0, 0x4e, 0x52, 0x6c, - 0x44, 0xea, 0x2e, 0x07, 0x29, 0xee, 0x86, 0xd1, 0x8a, 0x50, 0x3e, 0xc3, 0x05, 0x8a, 0x3b, 0xe2, - 0x42, 0x29, 0xda, 0x51, 0x48, 0xa8, 0xa6, 0xc9, 0x10, 0x86, 0x79, 0x7c, 0x34, 0x4d, 0x5a, 0x75, - 0x0a, 0xc6, 0x69, 0x1f, 0x2d, 0x6c, 0x37, 0xeb, 0x0e, 0x67, 0x92, 0xa2, 0x38, 0x63, 0xa4, 0x42, - 0x61, 0x70, 0x8a, 0x7b, 0x27, 0x8c, 0xe0, 0x2b, 0x5a, 0x15, 0xeb, 0x15, 0xcc, 0xf0, 0x46, 0x28, - 0x5e, 0x4a, 0x00, 0x29, 0xd2, 0x7d, 0xe0, 0xc6, 0xbd, 0xb2, 0x88, 0xc9, 0xa3, 0x8c, 0x9f, 0x80, - 0xe7, 0x19, 0x58, 0xce, 0x40, 0xac, 0xa8, 0x3a, 0x2a, 0x49, 0x30, 0x9c, 0x5d, 0x36, 0xd1, 0xa4, - 0x14, 0xf2, 0x53, 0x7e, 0x2d, 0x02, 0xb1, 0xcb, 0x86, 0x83, 0xd1, 0x23, 0xbe, 0x04, 0x70, 0xb4, - 0x9d, 0x3d, 0xaf, 0x69, 0x35, 0x1d, 0x57, 0x97, 0xec, 0x9a, 0xef, 0x7b, 0x0a, 0x9e, 0x39, 0x45, - 0x02, 0xe6, 0x34, 0x09, 0x71, 0xcb, 0x68, 0xea, 0x55, 0x71, 0x93, 0x97, 0x16, 0x50, 0x09, 0x12, - 0xae, 0x95, 0xc4, 0x7a, 0x59, 0xc9, 0x18, 0xb1, 0x12, 0x62, 0xc3, 0x1c, 0xa0, 0x0c, 0x6d, 0x72, - 0x63, 0x29, 0x40, 0xd2, 0x0d, 0x5e, 0xdc, 0xda, 0xfa, 0x33, 0x58, 0x8f, 0x8c, 0x4c, 0x26, 0xee, - 0xd8, 0xbb, 0xca, 0x63, 0x16, 0x97, 0x76, 0x2b, 0xb8, 0xf6, 0x02, 0x66, 0xc5, 0xbf, 0xed, 0x30, - 0x44, 0xfb, 0xe5, 0x99, 0x15, 0xfb, 0xbe, 0xc3, 0x71, 0x48, 0xda, 0x5a, 0x4d, 0x57, 0x9d, 0xa6, - 0x85, 0xb9, 0xe5, 0x79, 0x00, 0xf9, 0xab, 0x12, 0x0c, 0x32, 0x4b, 0xf6, 0xe9, 0x4d, 0x6a, 0xaf, - 0xb7, 0x48, 0x27, 0xbd, 0x45, 0x0f, 0xae, 0xb7, 0x3c, 0x80, 0x2b, 0x8c, 0xcd, 0x9f, 0xdc, 0xb7, - 0xc9, 0x18, 0x98, 0x88, 0x6b, 0x5a, 0x8d, 0x3b, 0xaa, 0x8f, 0x48, 0xfe, 0x4f, 0x12, 0x49, 0x62, - 0x79, 0x3d, 0xca, 0xc3, 0x88, 0x90, 0xab, 0xbc, 0x55, 0x57, 0x6b, 0xdc, 0x76, 0x4e, 0x74, 0x14, - 0xee, 0x42, 0x5d, 0xad, 0x29, 0xc3, 0x5c, 0x1e, 0x52, 0x68, 0x3f, 0x0e, 0x91, 0x0e, 0xe3, 0x10, - 0x18, 0xf8, 0xe8, 0xc1, 0x06, 0x3e, 0x30, 0x44, 0xb1, 0xf0, 0x10, 0x7d, 0x29, 0x42, 0x17, 0x33, - 0xa6, 0x61, 0xab, 0xf5, 0x9f, 0x86, 0x47, 0x1c, 0x83, 0xa4, 0x69, 0xd4, 0xcb, 0xac, 0x86, 0xdd, - 0x70, 0x4f, 0x98, 0x46, 0x5d, 0x69, 0x19, 0xf6, 0xf8, 0x2d, 0x72, 0x97, 0xc1, 0x5b, 0xa0, 0xb5, - 0xa1, 0xb0, 0xd6, 0x2c, 0x48, 0x31, 0x55, 0xf0, 0xb9, 0xec, 0x21, 0xa2, 0x03, 0x3a, 0x39, 0x4a, - 0xad, 0x73, 0x2f, 0x13, 0x9b, 0x61, 0x2a, 0x1c, 0x8f, 0x50, 0xb0, 0xd0, 0xdf, 0x6e, 0x15, 0xec, - 0x37, 0x4b, 0x85, 0xe3, 0xc9, 0x7f, 0x5b, 0x02, 0x58, 0x24, 0x9a, 0xa5, 0xfd, 0x25, 0xb3, 0x90, - 0x4d, 0x45, 0x28, 0x07, 0x5a, 0x9e, 0xea, 0x34, 0x68, 0xbc, 0xfd, 0x94, 0xed, 0x97, 0x7b, 0x0e, - 0x46, 0x3c, 0x63, 0xb4, 0xb1, 0x10, 0x66, 0xaa, 0x4b, 0x56, 0xbd, 0x86, 0x1d, 0x25, 0x75, 0xc5, - 0x57, 0x92, 0xff, 0xa5, 0x04, 0x49, 0x2a, 0xd3, 0x12, 0x76, 0xd4, 0xc0, 0x18, 0x4a, 0x07, 0x1f, - 0xc3, 0x13, 0x00, 0x8c, 0x8d, 0xad, 0xbd, 0x88, 0xb9, 0x65, 0x25, 0x29, 0x64, 0x4d, 0x7b, 0x11, - 0xa3, 0x73, 0xae, 0xc2, 0xa3, 0xdd, 0x15, 0x2e, 0xb2, 0x6e, 0xae, 0xf6, 0x23, 0x30, 0x44, 0x3f, - 0x51, 0xb5, 0x6b, 0xf3, 0x44, 0x7a, 0x50, 0x6f, 0x36, 0xd6, 0x77, 0x6d, 0xf9, 0x79, 0x18, 0x5a, - 0xdf, 0x65, 0x7b, 0x23, 0xc7, 0x20, 0x69, 0x19, 0x06, 0x9f, 0x93, 0x59, 0x2e, 0x94, 0x20, 0x00, - 0x3a, 0x05, 0x89, 0xfd, 0x80, 0x88, 0xb7, 0x1f, 0xe0, 0x6d, 0x68, 0x44, 0xfb, 0xda, 0xd0, 0x38, - 0xf5, 0x1f, 0x24, 0x18, 0xf6, 0xc5, 0x07, 0xf4, 0x30, 0x1c, 0x2a, 0x2c, 0xae, 0xcc, 0x5d, 0x2a, - 0x2f, 0x14, 0xcb, 0x17, 0x16, 0xf3, 0xf3, 0xde, 0x1b, 0xae, 0xec, 0xe1, 0x6b, 0xd7, 0x67, 0x90, - 0x0f, 0x77, 0x43, 0xa7, 0x3b, 0x4a, 0xe8, 0x34, 0x4c, 0x06, 0x49, 0xf2, 0x85, 0xb5, 0xd2, 0xf2, - 0x7a, 0x5a, 0xca, 0x1e, 0xba, 0x76, 0x7d, 0x66, 0xdc, 0x47, 0x91, 0xdf, 0xb4, 0xb1, 0xee, 0xb4, - 0x12, 0xcc, 0xad, 0x2c, 0x2d, 0x2d, 0xac, 0xa7, 0x23, 0x2d, 0x04, 0x3c, 0x60, 0xdf, 0x07, 0xe3, - 0x41, 0x82, 0xe5, 0x85, 0xc5, 0x74, 0x34, 0x8b, 0xae, 0x5d, 0x9f, 0x19, 0xf5, 0x61, 0x2f, 0x6b, - 0xf5, 0x6c, 0xe2, 0x83, 0x9f, 0x99, 0x1a, 0xf8, 0xd5, 0x5f, 0x99, 0x92, 0x48, 0xcf, 0x46, 0x02, - 0x31, 0x02, 0x3d, 0x00, 0x47, 0xd6, 0x16, 0xe6, 0x97, 0x4b, 0xc5, 0xf2, 0xd2, 0xda, 0xbc, 0xd8, - 0x83, 0x16, 0xbd, 0x1b, 0xbb, 0x76, 0x7d, 0x66, 0x98, 0x77, 0xa9, 0x13, 0xf6, 0xaa, 0x52, 0xba, - 0xbc, 0xb2, 0x5e, 0x4a, 0x4b, 0x0c, 0x7b, 0xd5, 0xc2, 0x57, 0x0c, 0x87, 0x7d, 0xc3, 0xee, 0x21, - 0x38, 0xda, 0x06, 0xdb, 0xed, 0xd8, 0xf8, 0xb5, 0xeb, 0x33, 0x23, 0xab, 0x16, 0x66, 0xfe, 0x43, - 0x29, 0x66, 0x21, 0xd3, 0x4a, 0xb1, 0xb2, 0xba, 0xb2, 0x96, 0x5f, 0x4c, 0xcf, 0x64, 0xd3, 0xd7, - 0xae, 0xcf, 0xa4, 0x44, 0x30, 0xa4, 0x1b, 0xfd, 0x6e, 0xcf, 0x6e, 0xe7, 0x8a, 0xe7, 0xfb, 0xb3, - 0x70, 0x57, 0x87, 0x33, 0x26, 0x71, 0x3a, 0x71, 0xa0, 0x53, 0xa6, 0x8e, 0xfb, 0xec, 0xd9, 0x1e, - 0xdb, 0xcf, 0xbd, 0x97, 0x4e, 0x07, 0x3f, 0xc1, 0xca, 0x76, 0x5d, 0xdc, 0xc9, 0x1f, 0x92, 0x60, - 0xf4, 0xa2, 0x66, 0x3b, 0x86, 0xa5, 0x55, 0xd4, 0x3a, 0x7d, 0xb9, 0x75, 0xae, 0xdf, 0xd8, 0x1a, - 0x72, 0xf5, 0x27, 0x61, 0xf0, 0x8a, 0x5a, 0x67, 0x41, 0x2d, 0x4a, 0x3f, 0x34, 0xd3, 0xe1, 0xc8, - 0xc7, 0x0d, 0x6d, 0x82, 0x01, 0x23, 0x93, 0x7f, 0x3d, 0x02, 0x63, 0xd4, 0x19, 0x6c, 0xf6, 0x09, - 0x32, 0xb2, 0xc6, 0x2a, 0x40, 0xcc, 0x52, 0x1d, 0xbe, 0x69, 0x58, 0x98, 0xe5, 0xa7, 0x8f, 0xf7, - 0xf4, 0x71, 0x96, 0x56, 0xc4, 0x15, 0x85, 0xd2, 0xa2, 0x77, 0x40, 0xa2, 0xa1, 0xee, 0x96, 0x29, - 0x1f, 0xb6, 0x72, 0xc9, 0xef, 0x8f, 0xcf, 0xcd, 0x1b, 0xd3, 0x63, 0x7b, 0x6a, 0xa3, 0x9e, 0x93, - 0x05, 0x1f, 0x59, 0x19, 0x6a, 0xa8, 0xbb, 0x44, 0x44, 0x64, 0xc2, 0x18, 0x81, 0x56, 0xb6, 0x55, - 0xbd, 0x86, 0x59, 0x23, 0x74, 0x0b, 0xb4, 0x70, 0x71, 0xdf, 0x8d, 0x1c, 0xf6, 0x1a, 0xf1, 0xb1, - 0x93, 0x95, 0x91, 0x86, 0xba, 0x3b, 0x47, 0x01, 0xa4, 0xc5, 0x5c, 0xe2, 0x63, 0xaf, 0x4c, 0x0f, - 0xd0, 0x13, 0xdd, 0x6f, 0x4b, 0x00, 0x9e, 0xc6, 0xd0, 0x3b, 0x20, 0x5d, 0x71, 0x4b, 0x94, 0x56, - 0x9c, 0x4d, 0xde, 0xdb, 0x69, 0x2c, 0x42, 0xfa, 0x66, 0x73, 0xf3, 0xb7, 0x6e, 0x4c, 0x4b, 0xca, - 0x58, 0x25, 0x34, 0x14, 0x6f, 0x87, 0xe1, 0xa6, 0x59, 0x55, 0x1d, 0x5c, 0xa6, 0xeb, 0xb8, 0x48, - 0xcf, 0x79, 0x7e, 0x8a, 0xf0, 0xba, 0x79, 0x63, 0x1a, 0xb1, 0x6e, 0xf9, 0x88, 0x65, 0x3a, 0xfb, - 0x03, 0x83, 0x10, 0x02, 0x5f, 0x9f, 0xbe, 0x21, 0xc1, 0x70, 0xd1, 0x77, 0xa7, 0x32, 0x03, 0x43, - 0x0d, 0x43, 0xd7, 0x76, 0xb8, 0x3d, 0x26, 0x15, 0x51, 0x44, 0x59, 0x48, 0xb0, 0xc7, 0xac, 0xce, - 0x9e, 0xd8, 0x0a, 0x15, 0x65, 0x42, 0x75, 0x15, 0x6f, 0xda, 0x9a, 0x18, 0x0d, 0x45, 0x14, 0xd1, - 0x05, 0x48, 0xdb, 0xb8, 0xd2, 0xb4, 0x34, 0x67, 0xaf, 0x5c, 0x31, 0x74, 0x47, 0xad, 0x38, 0xec, - 0x59, 0x64, 0xe1, 0xd8, 0xcd, 0x1b, 0xd3, 0x47, 0x98, 0xac, 0x61, 0x0c, 0x59, 0x19, 0x13, 0xa0, - 0x39, 0x06, 0x21, 0x2d, 0x54, 0xb1, 0xa3, 0x6a, 0x75, 0x3b, 0xc3, 0x2e, 0x27, 0x88, 0xa2, 0xaf, - 0x2f, 0x9f, 0x1f, 0xf2, 0x6f, 0x6c, 0x5d, 0x80, 0xb4, 0x61, 0x62, 0x2b, 0x90, 0x88, 0x4a, 0xe1, - 0x96, 0xc3, 0x18, 0xb2, 0x32, 0x26, 0x40, 0x22, 0x49, 0x75, 0xc8, 0x30, 0x8b, 0x85, 0xa2, 0xd9, - 0xdc, 0xf4, 0xf6, 0xc3, 0x26, 0x5b, 0x46, 0x23, 0xaf, 0xef, 0x15, 0x1e, 0xf1, 0xb8, 0x87, 0xe9, - 0xe4, 0x6f, 0x7e, 0xf9, 0xc1, 0x49, 0x6e, 0x1a, 0xde, 0xfe, 0xd4, 0x25, 0xbc, 0x47, 0x86, 0x9f, - 0xa3, 0xae, 0x52, 0x4c, 0x92, 0x76, 0x3e, 0xaf, 0x6a, 0x75, 0xf1, 0xbc, 0x5f, 0xe1, 0x25, 0x94, - 0x83, 0x41, 0xdb, 0x51, 0x9d, 0xa6, 0xcd, 0x4f, 0x7a, 0xe5, 0x4e, 0xa6, 0x56, 0x30, 0xf4, 0xea, - 0x1a, 0xc5, 0x54, 0x38, 0x05, 0xba, 0x00, 0x83, 0xfc, 0x08, 0x3d, 0xbe, 0x6f, 0xff, 0xa6, 0x77, - 0x25, 0x18, 0x35, 0xd1, 0x48, 0x15, 0xd7, 0x71, 0x8d, 0xa5, 0x55, 0xdb, 0x2a, 0x59, 0x7d, 0xd0, - 0x6f, 0xef, 0x15, 0x16, 0xf6, 0xed, 0x84, 0x5c, 0x53, 0x61, 0x7e, 0xb2, 0x32, 0xe6, 0x82, 0xd6, - 0x28, 0x04, 0x5d, 0x0a, 0x5c, 0xfe, 0xe5, 0x1f, 0xa8, 0xbc, 0xb3, 0x53, 0xf7, 0x7d, 0x36, 0x2d, - 0xf6, 0x27, 0xfc, 0x57, 0x87, 0x2f, 0x40, 0xba, 0xa9, 0x6f, 0x1a, 0x3a, 0x7d, 0x83, 0xcb, 0xf3, - 0x7b, 0xb2, 0xbe, 0x8b, 0xfa, 0x8d, 0x23, 0x8c, 0x21, 0x2b, 0x63, 0x2e, 0xe8, 0x22, 0x5b, 0x05, - 0x54, 0x61, 0xd4, 0xc3, 0xa2, 0x8e, 0x9a, 0xec, 0xe9, 0xa8, 0x77, 0x70, 0x47, 0x3d, 0x14, 0x6e, - 0xc5, 0xf3, 0xd5, 0x11, 0x17, 0x48, 0xc8, 0xd0, 0x45, 0x00, 0x2f, 0x3c, 0xd0, 0x7d, 0x8a, 0xe1, - 0xce, 0x03, 0xef, 0xc5, 0x18, 0xb1, 0xde, 0xf3, 0x68, 0xd1, 0xbb, 0x60, 0xa2, 0xa1, 0xe9, 0x65, - 0x1b, 0xd7, 0xb7, 0xca, 0x5c, 0xc1, 0x84, 0x25, 0xfd, 0x84, 0x52, 0x61, 0x71, 0x7f, 0xf6, 0x70, - 0xf3, 0xc6, 0x74, 0x96, 0x87, 0xd0, 0x56, 0x96, 0xb2, 0x32, 0xde, 0xd0, 0xf4, 0x35, 0x5c, 0xdf, - 0x2a, 0xba, 0xb0, 0x5c, 0xea, 0x83, 0xaf, 0x4c, 0x0f, 0x70, 0x77, 0x1d, 0x90, 0xcf, 0xd1, 0xbd, - 0x73, 0xee, 0x66, 0xd8, 0x26, 0x6b, 0x12, 0x55, 0x14, 0xf8, 0x55, 0x03, 0x0f, 0xc0, 0xdc, 0xfc, - 0xa5, 0x3f, 0x9c, 0x91, 0xe4, 0xcf, 0x4b, 0x30, 0x58, 0xbc, 0xbc, 0xaa, 0x6a, 0x16, 0x5a, 0x80, - 0x71, 0xcf, 0x72, 0x82, 0x4e, 0x7e, 0xfc, 0xe6, 0x8d, 0xe9, 0x4c, 0xd8, 0xb8, 0x5c, 0x2f, 0xf7, - 0x0c, 0x58, 0xb8, 0xf9, 0x42, 0xa7, 0x85, 0x6b, 0x80, 0x55, 0x0b, 0x8a, 0xdc, 0xba, 0xac, 0x0d, - 0x75, 0xb3, 0x04, 0x43, 0x4c, 0x5a, 0x1b, 0xe5, 0x20, 0x6e, 0x92, 0x1f, 0xfc, 0x60, 0x60, 0xaa, - 0xa3, 0xf1, 0x52, 0x7c, 0x77, 0x23, 0x93, 0x90, 0xc8, 0x1f, 0x89, 0x00, 0x14, 0x2f, 0x5f, 0x5e, - 0xb7, 0x34, 0xb3, 0x8e, 0x9d, 0x5b, 0xd9, 0xf3, 0x75, 0x38, 0xe4, 0x5b, 0x25, 0x59, 0x95, 0x50, - 0xef, 0x67, 0x6e, 0xde, 0x98, 0x3e, 0x1e, 0xee, 0xbd, 0x0f, 0x4d, 0x56, 0x26, 0xbc, 0xf5, 0x92, - 0x55, 0x69, 0xcb, 0xb5, 0x6a, 0x3b, 0x2e, 0xd7, 0x68, 0x67, 0xae, 0x3e, 0x34, 0x3f, 0xd7, 0xa2, - 0xed, 0xb4, 0x57, 0xed, 0x1a, 0x0c, 0x7b, 0x2a, 0xb1, 0x51, 0x11, 0x12, 0x0e, 0xff, 0xcd, 0x35, - 0x2c, 0x77, 0xd6, 0xb0, 0x20, 0xe3, 0x5a, 0x76, 0x29, 0xe5, 0x3f, 0x93, 0x00, 0x3c, 0x9b, 0xfd, - 0xd9, 0x34, 0x31, 0x12, 0xca, 0x79, 0xe0, 0x8d, 0x1e, 0x28, 0x55, 0xe3, 0xd4, 0x21, 0x7d, 0xfe, - 0x7c, 0x04, 0x26, 0x36, 0x44, 0xe4, 0xf9, 0x99, 0xd7, 0xc1, 0x2a, 0x0c, 0x61, 0xdd, 0xb1, 0x34, - 0xaa, 0x04, 0x32, 0xda, 0x0f, 0x75, 0x1a, 0xed, 0x36, 0x7d, 0xa2, 0x1f, 0x91, 0x12, 0x9b, 0xee, - 0x9c, 0x4d, 0x48, 0x1b, 0xbf, 0x18, 0x85, 0x4c, 0x27, 0x4a, 0x34, 0x07, 0x63, 0x15, 0x0b, 0xb3, - 0x8b, 0x57, 0xfe, 0x9d, 0xbf, 0x42, 0xd6, 0xcb, 0x2c, 0x43, 0x08, 0xb2, 0x32, 0x2a, 0x20, 0x7c, - 0xf6, 0xa8, 0x01, 0x49, 0xfb, 0x88, 0xd9, 0xd1, 0xfb, 0x5b, 0xfd, 0xe5, 0x79, 0x32, 0x9f, 0x3e, - 0x44, 0x23, 0x41, 0x06, 0x6c, 0xfe, 0x18, 0xf5, 0xa0, 0x74, 0x02, 0x79, 0x01, 0xc6, 0x34, 0x5d, - 0x73, 0x34, 0xb5, 0x5e, 0xde, 0x54, 0xeb, 0xaa, 0x5e, 0x39, 0x48, 0xd6, 0xcc, 0x42, 0x3e, 0x6f, - 0x36, 0xc4, 0x4e, 0x56, 0x46, 0x39, 0xa4, 0xc0, 0x00, 0xe8, 0x22, 0x0c, 0x89, 0xa6, 0x62, 0x07, - 0xca, 0x36, 0x04, 0xb9, 0x2f, 0xc1, 0xfb, 0x85, 0x28, 0x8c, 0x2b, 0xb8, 0xfa, 0x97, 0x43, 0xb1, - 0xbf, 0xa1, 0x58, 0x02, 0x60, 0xee, 0x4e, 0x02, 0xec, 0x01, 0x46, 0x83, 0x04, 0x8c, 0x24, 0xe3, - 0x50, 0xb4, 0x1d, 0xdf, 0x78, 0xdc, 0x88, 0x40, 0xca, 0x3f, 0x1e, 0x7f, 0x41, 0x67, 0x25, 0xb4, - 0xe0, 0x45, 0xa2, 0x18, 0xff, 0xf4, 0x6e, 0x87, 0x48, 0xd4, 0x62, 0xbd, 0xdd, 0x43, 0xd0, 0x1f, - 0x47, 0x61, 0x70, 0x55, 0xb5, 0xd4, 0x86, 0x8d, 0x2a, 0x2d, 0x99, 0xa6, 0xd8, 0x7e, 0x6c, 0xf9, - 0xc0, 0x3a, 0xdf, 0xed, 0xe8, 0x91, 0x68, 0x7e, 0xac, 0x4d, 0xa2, 0xf9, 0x56, 0x18, 0x25, 0xcb, - 0x61, 0xdf, 0x15, 0x06, 0xa2, 0xed, 0x91, 0xc2, 0x51, 0x8f, 0x4b, 0xb0, 0x9e, 0xad, 0x96, 0x2f, - 0xfb, 0xef, 0x30, 0x0c, 0x13, 0x0c, 0x2f, 0x30, 0x13, 0xf2, 0xc3, 0xde, 0xb2, 0xd4, 0x57, 0x29, - 0x2b, 0xd0, 0x50, 0x77, 0x4b, 0xac, 0x80, 0x16, 0x01, 0x6d, 0xbb, 0x3b, 0x23, 0x65, 0x4f, 0x9d, - 0x84, 0xfe, 0xc4, 0xcd, 0x1b, 0xd3, 0x47, 0x19, 0x7d, 0x2b, 0x8e, 0xac, 0x8c, 0x7b, 0x40, 0xc1, - 0xed, 0x51, 0x00, 0xd2, 0xaf, 0x32, 0xbb, 0xc2, 0xcd, 0x96, 0x3b, 0x87, 0x6e, 0xde, 0x98, 0x1e, - 0x67, 0x5c, 0xbc, 0x3a, 0x59, 0x49, 0x92, 0x42, 0x91, 0xde, 0xee, 0x7e, 0x01, 0xc6, 0xe8, 0x9d, - 0x80, 0xb2, 0x85, 0xab, 0x4d, 0xfa, 0x69, 0x18, 0xbe, 0xae, 0x39, 0xb0, 0x6f, 0x86, 0xd8, 0xc9, - 0xca, 0x28, 0x85, 0x28, 0x02, 0xe0, 0x73, 0xa6, 0xcf, 0x48, 0x80, 0xbc, 0x59, 0x46, 0xc1, 0xb6, - 0x49, 0x96, 0x84, 0x24, 0xf7, 0xf7, 0x25, 0xea, 0x52, 0xf7, 0xdc, 0xdf, 0xa3, 0x17, 0xb9, 0xbf, - 0xcf, 0x39, 0x9f, 0xf0, 0x22, 0x72, 0xa4, 0xd7, 0x15, 0x6a, 0x6e, 0x95, 0xe1, 0x10, 0x3c, 0x20, - 0xff, 0x6b, 0x09, 0x8e, 0xb6, 0x18, 0xb1, 0x2b, 0xec, 0x5f, 0x01, 0x64, 0xf9, 0x2a, 0xf9, 0xa7, - 0x1b, 0x99, 0xd0, 0xfb, 0xf6, 0x89, 0x71, 0xab, 0x25, 0xd4, 0xdf, 0xba, 0x49, 0x85, 0xdd, 0xd1, - 0xff, 0x17, 0x12, 0x4c, 0xfa, 0x9b, 0x77, 0x3b, 0xb2, 0x0c, 0x29, 0x7f, 0xeb, 0xbc, 0x0b, 0x77, - 0xf5, 0xd3, 0x05, 0x2e, 0x7d, 0x80, 0x1e, 0x3d, 0xed, 0x45, 0x08, 0xb6, 0x5d, 0xf7, 0x70, 0xdf, - 0xda, 0x10, 0x32, 0x85, 0x23, 0x45, 0x8c, 0x8e, 0xc7, 0xff, 0x95, 0x20, 0xb6, 0x6a, 0x18, 0x75, - 0x64, 0xc0, 0xb8, 0x6e, 0x38, 0x65, 0x62, 0xcc, 0xb8, 0xea, 0xbf, 0x2a, 0x9f, 0x2c, 0xcc, 0xed, - 0x4f, 0x49, 0x3f, 0xb8, 0x31, 0xdd, 0xca, 0x4a, 0x19, 0xd3, 0x0d, 0xa7, 0x40, 0x21, 0xfc, 0xb6, - 0xfc, 0xbb, 0x60, 0x24, 0xd8, 0x18, 0x0b, 0xcc, 0xcf, 0xec, 0xbb, 0xb1, 0x20, 0x9b, 0x9b, 0x37, - 0xa6, 0x27, 0x3d, 0x27, 0x75, 0xc1, 0xb2, 0x92, 0xda, 0xf4, 0xb5, 0xce, 0x6e, 0x94, 0xfd, 0xe8, - 0x95, 0x69, 0xe9, 0xd4, 0x57, 0x24, 0x00, 0x6f, 0xb3, 0x03, 0x3d, 0x00, 0x47, 0x0a, 0x2b, 0xcb, - 0xc5, 0xf2, 0xda, 0x7a, 0x7e, 0x7d, 0x63, 0x2d, 0x78, 0xad, 0x5c, 0xec, 0xc8, 0xdb, 0x26, 0xae, - 0x68, 0x5b, 0x1a, 0xae, 0xa2, 0x7b, 0x60, 0x32, 0x88, 0x4d, 0x4a, 0xa5, 0x62, 0x5a, 0xca, 0xa6, - 0xae, 0x5d, 0x9f, 0x49, 0xb0, 0xf4, 0x0f, 0x57, 0xd1, 0x49, 0x38, 0xd4, 0x8a, 0xb7, 0xb0, 0x3c, - 0x9f, 0x8e, 0x64, 0x47, 0xae, 0x5d, 0x9f, 0x49, 0xba, 0x79, 0x22, 0x92, 0x01, 0xf9, 0x31, 0x39, - 0xbf, 0x68, 0x16, 0xae, 0x5d, 0x9f, 0x19, 0x64, 0x0a, 0xcc, 0xc6, 0x3e, 0xf8, 0x99, 0xa9, 0x81, - 0x5b, 0x7e, 0xf9, 0xfc, 0x4f, 0x87, 0x3a, 0x6e, 0xb4, 0xd7, 0xb0, 0x8e, 0x6d, 0xcd, 0x3e, 0xd0, - 0x46, 0x7b, 0x5f, 0x9b, 0xf7, 0xf2, 0xef, 0xc5, 0x21, 0x35, 0xcf, 0x5a, 0x21, 0x03, 0x81, 0xd1, - 0x9b, 0x60, 0xd0, 0xa4, 0x33, 0x97, 0x7b, 0x72, 0xd7, 0xc1, 0xe0, 0xd9, 0xfc, 0xe6, 0x5e, 0x1f, - 0x63, 0xb3, 0x9d, 0xcd, 0xef, 0x8f, 0xb0, 0x6b, 0x6d, 0xde, 0x45, 0xad, 0xd4, 0xbe, 0xb6, 0x98, - 0x58, 0x28, 0xe6, 0xbb, 0x39, 0x61, 0x7e, 0x32, 0xbb, 0x8a, 0xb2, 0x4e, 0x20, 0xec, 0x42, 0xda, - 0xfb, 0x25, 0x38, 0x44, 0xb1, 0xbc, 0xb9, 0x9f, 0x62, 0x8a, 0xf5, 0xc5, 0xa9, 0x4e, 0x5d, 0x58, - 0x54, 0x6d, 0xef, 0x7a, 0x09, 0xbb, 0x42, 0x76, 0x17, 0x9f, 0x7b, 0x8f, 0xfb, 0x1a, 0x0f, 0xb3, - 0x95, 0x95, 0x89, 0x7a, 0x0b, 0xa5, 0x8d, 0xe6, 0x03, 0x77, 0x08, 0x63, 0xfb, 0xdb, 0xdd, 0xf7, - 0xdf, 0x27, 0x7c, 0x0a, 0x86, 0xbd, 0x58, 0x62, 0xf3, 0x7f, 0x35, 0xd3, 0xff, 0xdc, 0xe1, 0x27, - 0x46, 0x1f, 0x90, 0xe0, 0x90, 0x97, 0x40, 0xf8, 0xd9, 0xb2, 0x7f, 0xc9, 0x73, 0xff, 0x3e, 0xd6, - 0x5e, 0x61, 0xe5, 0xb4, 0xe5, 0x2b, 0x2b, 0x93, 0xcd, 0x56, 0x52, 0xb2, 0xea, 0x1b, 0xf1, 0x47, - 0x56, 0x3b, 0x23, 0xbe, 0x3a, 0xd9, 0x7f, 0x68, 0x0e, 0x32, 0x60, 0xff, 0x26, 0xc4, 0x34, 0x2c, - 0x07, 0x57, 0xe9, 0x1e, 0x60, 0x42, 0x71, 0xcb, 0xf2, 0x32, 0xa0, 0xd6, 0xc1, 0x0d, 0xdf, 0x99, - 0xf4, 0x9e, 0xc4, 0xa0, 0x49, 0x88, 0xfb, 0x6f, 0x15, 0xb2, 0x42, 0x2e, 0xf1, 0x41, 0x3e, 0x7d, - 0xde, 0x72, 0x9f, 0xff, 0x4e, 0x04, 0x4e, 0xf9, 0x4f, 0xa4, 0x5e, 0x68, 0x62, 0x6b, 0xcf, 0x75, - 0x51, 0x53, 0xad, 0x69, 0xba, 0xff, 0xe1, 0xc5, 0x51, 0xff, 0x84, 0x4f, 0x71, 0x85, 0x9e, 0xe4, - 0x0f, 0x4a, 0x30, 0xbc, 0xaa, 0xd6, 0xb0, 0x82, 0x5f, 0x68, 0x62, 0xdb, 0x69, 0x73, 0xb1, 0xfd, - 0x30, 0x0c, 0x1a, 0x5b, 0x5b, 0xe2, 0x18, 0x3d, 0xa6, 0xf0, 0x12, 0xe9, 0x73, 0x5d, 0x6b, 0x68, - 0xec, 0x06, 0x5a, 0x4c, 0x61, 0x05, 0x34, 0x0d, 0xc3, 0x15, 0xa3, 0xa9, 0x73, 0x97, 0xcb, 0xc4, - 0xc4, 0xe7, 0x5d, 0x9a, 0x3a, 0x73, 0x39, 0xa2, 0x44, 0x0b, 0x5f, 0xc1, 0x96, 0xcd, 0x3e, 0x68, - 0x99, 0x50, 0x44, 0x51, 0x7e, 0x12, 0x52, 0x4c, 0x12, 0x3e, 0x19, 0x1f, 0x85, 0x04, 0xbd, 0xdc, - 0xe5, 0xc9, 0x33, 0x44, 0xca, 0x97, 0xd8, 0xf5, 0x78, 0xc6, 0x9f, 0x89, 0xc4, 0x0a, 0x85, 0x42, - 0x47, 0x2d, 0x9f, 0xec, 0x1d, 0x35, 0x98, 0x0e, 0x5d, 0x0d, 0xff, 0x56, 0x1c, 0x0e, 0xf1, 0xf3, - 0x42, 0xd5, 0xd4, 0x4e, 0x6f, 0x3b, 0x8e, 0x78, 0xae, 0x01, 0x3c, 0xf1, 0x56, 0x4d, 0x4d, 0xde, - 0x83, 0xd8, 0x45, 0xc7, 0x31, 0xd1, 0x29, 0x88, 0x5b, 0xcd, 0x3a, 0x16, 0xfb, 0x4f, 0xee, 0x09, - 0x81, 0x6a, 0x6a, 0xb3, 0x04, 0x41, 0x69, 0xd6, 0xb1, 0xc2, 0x50, 0x50, 0x09, 0xa6, 0xb7, 0x9a, - 0xf5, 0xfa, 0x5e, 0xb9, 0x8a, 0xe9, 0x7f, 0xe8, 0x72, 0xff, 0xc7, 0x05, 0xde, 0x35, 0x55, 0xf1, - 0xa5, 0x4c, 0xa2, 0x98, 0xe3, 0x14, 0xad, 0x48, 0xb1, 0xc4, 0xff, 0xb7, 0x28, 0x09, 0x1c, 0xf9, - 0x0f, 0x22, 0x90, 0x10, 0xac, 0xe9, 0x7d, 0x75, 0x5c, 0xc7, 0x15, 0xc7, 0x10, 0xe7, 0x37, 0x6e, - 0x19, 0x21, 0x88, 0xd6, 0xf8, 0xe0, 0x25, 0x2f, 0x0e, 0x28, 0xa4, 0x40, 0x60, 0xee, 0x2b, 0x02, - 0x02, 0x33, 0x9b, 0x64, 0x3c, 0x63, 0xa6, 0x21, 0x16, 0x8a, 0x17, 0x07, 0x14, 0x5a, 0x42, 0x19, - 0x18, 0x24, 0x4e, 0xe3, 0xb0, 0xd1, 0x22, 0x70, 0x5e, 0x46, 0x87, 0x21, 0x6e, 0xaa, 0x4e, 0x85, - 0x5d, 0xf0, 0x23, 0x15, 0xac, 0x88, 0x1e, 0x83, 0x41, 0xf6, 0x10, 0x3c, 0xfc, 0xef, 0x6f, 0x88, - 0x32, 0xd8, 0x17, 0xf7, 0x88, 0xdc, 0xab, 0xaa, 0xe3, 0x60, 0x4b, 0x27, 0x0c, 0x19, 0x3a, 0x42, - 0x10, 0xdb, 0x34, 0xaa, 0x7b, 0xfc, 0x5f, 0xf2, 0xd0, 0xdf, 0xfc, 0x7f, 0x80, 0x50, 0x7b, 0x28, - 0xd3, 0x4a, 0xf6, 0x9f, 0xc8, 0x52, 0x02, 0x58, 0x20, 0x48, 0x25, 0x98, 0x50, 0xab, 0x55, 0x8d, - 0xfd, 0x77, 0x9c, 0xf2, 0xa6, 0x46, 0x83, 0x87, 0x4d, 0xff, 0xcf, 0x5c, 0xa7, 0xb1, 0x40, 0x1e, - 0x41, 0x81, 0xe3, 0x17, 0x92, 0x30, 0x64, 0x32, 0xa1, 0xe4, 0xf3, 0x30, 0xde, 0x22, 0x29, 0x91, - 0x6f, 0x47, 0xd3, 0xab, 0xe2, 0x69, 0x05, 0xf9, 0x4d, 0x60, 0xf4, 0x1b, 0x99, 0xec, 0x64, 0x8c, - 0xfe, 0x2e, 0xbc, 0xb7, 0xf3, 0x0b, 0x9c, 0x51, 0xdf, 0x0b, 0x1c, 0xd5, 0xd4, 0x0a, 0x49, 0xca, - 0x9f, 0xbf, 0xbb, 0xc9, 0xb7, 0xbe, 0xbb, 0xa9, 0x61, 0x5d, 0x4c, 0xcc, 0xa4, 0x4a, 0x35, 0x35, - 0x9b, 0x9a, 0xa3, 0xf7, 0xcd, 0x4e, 0xfb, 0xbc, 0xef, 0x37, 0x7d, 0x86, 0x13, 0x9b, 0xcf, 0xaf, - 0x2e, 0xb8, 0x76, 0xfc, 0xb5, 0x08, 0x1c, 0xf7, 0xd9, 0xb1, 0x0f, 0xb9, 0xd5, 0x9c, 0xb3, 0xed, - 0x2d, 0xbe, 0x8f, 0xe7, 0xd0, 0x97, 0x20, 0x46, 0xf0, 0x51, 0x8f, 0xff, 0xd0, 0x91, 0xf9, 0xc2, - 0x37, 0xff, 0xb9, 0x1c, 0x3c, 0x43, 0x0b, 0x8c, 0x0a, 0x65, 0x52, 0xf8, 0x40, 0xff, 0xfa, 0x4b, - 0x7b, 0x9f, 0x2b, 0xb5, 0x6f, 0x9d, 0x1a, 0xc3, 0x3a, 0xfc, 0xde, 0xd9, 0x8e, 0xcf, 0x65, 0x59, - 0x30, 0xed, 0x9e, 0x5f, 0xed, 0x23, 0x52, 0x77, 0x7a, 0x8d, 0xd0, 0x6d, 0x04, 0xfb, 0xcc, 0xd4, - 0x76, 0xe1, 0xf0, 0xd3, 0xa4, 0x6d, 0x6f, 0xd1, 0x2e, 0x42, 0xfe, 0x61, 0xf7, 0x6c, 0x51, 0xe2, - 0xff, 0xe6, 0x4f, 0x9c, 0x1b, 0x82, 0x27, 0x1f, 0x5f, 0x3b, 0xde, 0x33, 0xdb, 0x71, 0x2a, 0x99, - 0xf5, 0x4d, 0x23, 0x8a, 0x8f, 0x52, 0xfe, 0x35, 0x09, 0x8e, 0xb4, 0x34, 0xcd, 0x63, 0xfc, 0x7c, - 0x9b, 0x87, 0x13, 0x07, 0x4a, 0x7a, 0xe6, 0xdb, 0x08, 0x7b, 0x6f, 0x4f, 0x61, 0x99, 0x14, 0x01, - 0x69, 0xdf, 0x02, 0x87, 0x82, 0xc2, 0x0a, 0x35, 0xdd, 0x0d, 0xa3, 0xc1, 0xfd, 0x69, 0xae, 0xae, - 0x91, 0xc0, 0x0e, 0xb5, 0x5c, 0x0e, 0xeb, 0xd9, 0xed, 0x6b, 0x09, 0x92, 0x2e, 0x2a, 0xcf, 0x8e, - 0xfb, 0xee, 0xaa, 0x47, 0x29, 0x7f, 0x44, 0x82, 0x99, 0x60, 0x0b, 0xbe, 0x3c, 0x69, 0x7f, 0xc2, - 0xde, 0xb2, 0x21, 0x7e, 0x4d, 0x82, 0x3b, 0xba, 0xc8, 0xc4, 0x15, 0xf0, 0x22, 0x4c, 0xfa, 0x36, - 0x09, 0x44, 0x08, 0x17, 0xc3, 0x7e, 0xaa, 0x77, 0x86, 0xea, 0xae, 0x89, 0x8f, 0x11, 0xa5, 0x7c, - 0xee, 0x3b, 0xd3, 0x13, 0xad, 0x75, 0xb6, 0x32, 0xd1, 0xba, 0xb0, 0xbf, 0x85, 0xf6, 0xf1, 0xb2, - 0x04, 0xf7, 0x05, 0xbb, 0xda, 0x26, 0xd5, 0x7d, 0xa3, 0xc6, 0xe1, 0x3f, 0x4a, 0x70, 0xaa, 0x1f, - 0xe1, 0xf8, 0x80, 0x6c, 0xc2, 0x84, 0x97, 0x84, 0x87, 0xc7, 0x63, 0x5f, 0xa9, 0x3d, 0xb3, 0x52, - 0xe4, 0x72, 0xbb, 0x0d, 0x8a, 0x37, 0xb9, 0x63, 0xf9, 0x87, 0xdc, 0x55, 0x72, 0x70, 0x6f, 0x59, - 0x28, 0x39, 0xb0, 0xbb, 0xdc, 0x66, 0x2c, 0x22, 0x6d, 0xc6, 0xc2, 0xcb, 0xda, 0xe5, 0x2b, 0x3c, - 0x6e, 0xb5, 0xd9, 0x9e, 0x7b, 0x3b, 0x4c, 0xb4, 0x31, 0x65, 0xee, 0xd5, 0xfb, 0xb0, 0x64, 0x05, - 0xb5, 0x1a, 0xab, 0xbc, 0x07, 0xd3, 0xb4, 0xdd, 0x36, 0x8a, 0xbe, 0xdd, 0x5d, 0x6e, 0xf0, 0xd8, - 0xd2, 0xb6, 0x69, 0xde, 0xf7, 0x05, 0x18, 0x64, 0xe3, 0xcc, 0xbb, 0x7b, 0x00, 0x43, 0xe1, 0x0c, - 0xe4, 0x4f, 0x88, 0x58, 0x56, 0x14, 0x62, 0xb7, 0xf7, 0xa1, 0x7e, 0xfa, 0x7a, 0x8b, 0x7c, 0xc8, - 0xa7, 0x8c, 0x6f, 0x8b, 0xa8, 0xd6, 0x5e, 0x3a, 0xae, 0x8e, 0xca, 0x2d, 0x8b, 0x6a, 0x4c, 0x37, - 0xb7, 0x37, 0x7c, 0xfd, 0x8a, 0x08, 0x5f, 0x6e, 0x9f, 0x7a, 0x84, 0xaf, 0x37, 0x46, 0xf5, 0x6e, - 0x20, 0xeb, 0x21, 0xe6, 0x9f, 0xc7, 0x40, 0xf6, 0x23, 0x09, 0x8e, 0xd2, 0xbe, 0xf9, 0xf7, 0x28, - 0xf6, 0xab, 0xf2, 0x07, 0x00, 0xd9, 0x56, 0xa5, 0xdc, 0xd6, 0xbb, 0xd3, 0xb6, 0x55, 0xb9, 0x1c, - 0x98, 0x5f, 0x1e, 0x00, 0x54, 0x0d, 0xec, 0x44, 0x51, 0x6c, 0x76, 0x67, 0x2f, 0x5d, 0xf5, 0x6d, - 0x74, 0xb4, 0x19, 0xce, 0xd8, 0x2d, 0x18, 0xce, 0x6f, 0x49, 0x90, 0x6d, 0xd7, 0x65, 0x3e, 0x7c, - 0x1a, 0x1c, 0x0e, 0x9c, 0x1f, 0x84, 0x47, 0xf0, 0x81, 0x7e, 0x76, 0x79, 0x42, 0x6e, 0x74, 0xc8, - 0xc2, 0xb7, 0x3b, 0x0f, 0x98, 0x0e, 0x5a, 0x68, 0x6b, 0x66, 0xfd, 0x86, 0xb9, 0xcf, 0x97, 0x5b, - 0xe2, 0xea, 0x9f, 0x8b, 0xdc, 0x7b, 0x17, 0xa6, 0x3a, 0x48, 0x7d, 0xbb, 0xe7, 0xbd, 0xed, 0x8e, - 0x83, 0x79, 0xab, 0xd3, 0xf7, 0x47, 0xb9, 0x27, 0x04, 0xef, 0x83, 0xfb, 0xd6, 0x62, 0xed, 0x1e, - 0x94, 0xc9, 0x6f, 0x83, 0x63, 0x6d, 0xa9, 0xb8, 0x6c, 0x39, 0x88, 0x6d, 0x6b, 0xb6, 0xc3, 0xc5, - 0xba, 0xa7, 0x93, 0x58, 0x21, 0x6a, 0x4a, 0x23, 0x23, 0x48, 0x53, 0xd6, 0xab, 0x86, 0x51, 0xe7, - 0x62, 0xc8, 0x97, 0x60, 0xdc, 0x07, 0xe3, 0x8d, 0x9c, 0x83, 0x98, 0x69, 0xf0, 0x8f, 0x25, 0x0c, - 0x9f, 0x39, 0xde, 0x71, 0x63, 0xdf, 0x30, 0xea, 0xbc, 0xdb, 0x14, 0x5f, 0x9e, 0x04, 0xc4, 0x98, - 0xd1, 0x3d, 0x7e, 0xd1, 0xc4, 0x1a, 0x4c, 0x04, 0xa0, 0xbc, 0x91, 0xd7, 0x75, 0x7e, 0x70, 0xe6, - 0x07, 0x87, 0x20, 0x4e, 0xb9, 0xa2, 0x8f, 0x4b, 0x81, 0xaf, 0x19, 0xcd, 0x76, 0x62, 0xd3, 0x7e, - 0x4d, 0x9c, 0x3d, 0xdd, 0x37, 0x3e, 0xcf, 0xd9, 0x4e, 0xbd, 0xf7, 0xdf, 0x7d, 0xef, 0xa3, 0x91, - 0xbb, 0x90, 0x7c, 0xba, 0xc3, 0x6a, 0xdc, 0xe7, 0x2f, 0x9f, 0x0d, 0xbc, 0xc4, 0x7f, 0xb0, 0xbf, - 0xa6, 0x84, 0x64, 0xb3, 0xfd, 0xa2, 0x73, 0xc1, 0xce, 0x53, 0xc1, 0xce, 0xa2, 0x47, 0x7a, 0x0b, - 0x76, 0xfa, 0x9d, 0x41, 0xa7, 0x79, 0x37, 0xfa, 0x3d, 0x09, 0x26, 0xdb, 0x2d, 0xe9, 0xd0, 0xe3, - 0xfd, 0x49, 0xd1, 0x9a, 0x52, 0x64, 0x9f, 0x38, 0x00, 0x25, 0xef, 0xca, 0x3c, 0xed, 0x4a, 0x1e, - 0x3d, 0x79, 0x80, 0xae, 0x9c, 0xf6, 0x6f, 0xfd, 0xff, 0x6f, 0x09, 0x4e, 0x74, 0x5d, 0x21, 0xa1, - 0x7c, 0x7f, 0x52, 0x76, 0xc9, 0x9d, 0xb2, 0x85, 0xd7, 0xc3, 0x82, 0xf7, 0xf8, 0x69, 0xda, 0xe3, - 0x4b, 0x68, 0xe1, 0x20, 0x3d, 0x6e, 0x7b, 0xbe, 0x82, 0x7e, 0x3b, 0x78, 0xcf, 0xb1, 0xbb, 0x39, - 0xb5, 0x2c, 0x3c, 0x7a, 0x38, 0x46, 0x6b, 0x52, 0x2b, 0x3f, 0x4b, 0xbb, 0xa0, 0xa0, 0xd5, 0xd7, - 0x39, 0x68, 0xa7, 0xdf, 0x19, 0x0c, 0xfc, 0xef, 0x46, 0xff, 0x4b, 0x6a, 0x7f, 0x6d, 0xf1, 0xb1, - 0xae, 0x22, 0x76, 0x5e, 0x54, 0x65, 0x1f, 0xdf, 0x3f, 0x21, 0xef, 0x64, 0x83, 0x76, 0xb2, 0x86, - 0xf0, 0xad, 0xee, 0x64, 0xdb, 0x41, 0x44, 0xdf, 0x90, 0x60, 0xb2, 0xdd, 0x9a, 0xa4, 0x87, 0x5b, - 0x76, 0x59, 0x64, 0xf5, 0x70, 0xcb, 0x6e, 0x0b, 0x20, 0xf9, 0x4d, 0xb4, 0xf3, 0xe7, 0xd0, 0xa3, - 0x9d, 0x3a, 0xdf, 0x75, 0x14, 0x89, 0x2f, 0x76, 0x4d, 0xf2, 0x7b, 0xf8, 0x62, 0x3f, 0xeb, 0x98, - 0x1e, 0xbe, 0xd8, 0xd7, 0x1a, 0xa3, 0xb7, 0x2f, 0xba, 0x3d, 0xeb, 0x73, 0x18, 0x6d, 0xf4, 0x35, - 0x09, 0x46, 0x02, 0x19, 0x31, 0x7a, 0xb8, 0xab, 0xa0, 0xed, 0x16, 0x0c, 0xd9, 0x33, 0xfb, 0x21, - 0xe1, 0x7d, 0x59, 0xa0, 0x7d, 0x99, 0x43, 0xf9, 0x83, 0xf4, 0x25, 0x78, 0x8c, 0xfa, 0x2d, 0x09, - 0x26, 0xda, 0x64, 0x99, 0x3d, 0xbc, 0xb0, 0x73, 0xd2, 0x9c, 0x7d, 0x7c, 0xff, 0x84, 0xbc, 0x57, - 0x17, 0x68, 0xaf, 0xde, 0x8a, 0xde, 0x72, 0x90, 0x5e, 0xf9, 0xe6, 0xe7, 0x1b, 0xde, 0x95, 0x2c, - 0x5f, 0x3b, 0xe8, 0xdc, 0x3e, 0x05, 0x13, 0x1d, 0x7a, 0x6c, 0xdf, 0x74, 0xbc, 0x3f, 0xcf, 0xd0, - 0xfe, 0x3c, 0x8d, 0x56, 0x5e, 0x5f, 0x7f, 0x5a, 0xa7, 0xf5, 0x2f, 0xb5, 0xbe, 0x47, 0xec, 0x6e, - 0x45, 0x6d, 0x93, 0xd5, 0xec, 0x23, 0xfb, 0xa2, 0xe1, 0x9d, 0x7a, 0x9c, 0x76, 0xea, 0x0c, 0x7a, - 0xa8, 0x53, 0xa7, 0x7c, 0x57, 0xfd, 0x34, 0x7d, 0xcb, 0x38, 0xfd, 0x4e, 0x96, 0x02, 0xbf, 0x1b, - 0xbd, 0x47, 0xdc, 0x79, 0x3a, 0xd9, 0xb5, 0x5d, 0x5f, 0x1e, 0x9b, 0xbd, 0xaf, 0x0f, 0x4c, 0x2e, - 0xd7, 0x5d, 0x54, 0xae, 0x29, 0x74, 0xbc, 0x93, 0x5c, 0x24, 0x97, 0x45, 0x1f, 0x92, 0xdc, 0x9b, - 0x99, 0xa7, 0xba, 0xf3, 0xf6, 0x27, 0xbb, 0xd9, 0xfb, 0xfb, 0xc2, 0xe5, 0x92, 0xdc, 0x43, 0x25, - 0x99, 0x41, 0x53, 0x1d, 0x25, 0x61, 0xa9, 0xef, 0xad, 0xbe, 0x54, 0x70, 0xed, 0x08, 0x4c, 0x77, - 0x68, 0xd1, 0xd9, 0xed, 0x71, 0xc6, 0xd5, 0xe5, 0x59, 0x6e, 0xcf, 0x67, 0xb7, 0xb7, 0xfa, 0x73, - 0xb2, 0x7d, 0x1e, 0x88, 0xfd, 0x4e, 0x0c, 0xd0, 0x92, 0x5d, 0x9b, 0xb3, 0x30, 0xfb, 0xd7, 0x96, - 0xdc, 0xcb, 0x43, 0xef, 0xcd, 0xa4, 0xd7, 0xf5, 0xde, 0x6c, 0x29, 0xf0, 0x82, 0x2b, 0xb2, 0xbf, - 0x57, 0xa2, 0x7d, 0x3f, 0xe3, 0x8a, 0xfe, 0x54, 0x9e, 0x71, 0xb5, 0xbf, 0xe5, 0x1d, 0xbb, 0x75, - 0xcf, 0x41, 0xe2, 0x07, 0x7d, 0x12, 0xc3, 0x5f, 0x67, 0x0e, 0x76, 0x79, 0x9d, 0x99, 0xe9, 0xf8, - 0x04, 0x93, 0x53, 0xa3, 0xb3, 0xe2, 0xe3, 0xaa, 0x43, 0xfd, 0x5d, 0x92, 0xe5, 0x5f, 0x5f, 0xf5, - 0xb6, 0x10, 0x8e, 0x43, 0xb6, 0xd5, 0x9c, 0x5c, 0xa7, 0xfe, 0x68, 0x14, 0xd2, 0x4b, 0x76, 0xad, - 0x54, 0xd5, 0x9c, 0xdb, 0x64, 0x6b, 0x4f, 0x76, 0x7e, 0x62, 0x83, 0x6e, 0xde, 0x98, 0x1e, 0x65, - 0x3a, 0xed, 0xa2, 0xc9, 0x06, 0x8c, 0x85, 0x1e, 0x36, 0x73, 0xcb, 0x2a, 0x1e, 0xe4, 0x7d, 0x75, - 0x88, 0x95, 0x4c, 0x5f, 0x44, 0xf8, 0xec, 0x1b, 0xed, 0xb6, 0x37, 0x66, 0x66, 0x50, 0x17, 0x6f, - 0xe7, 0x7b, 0x44, 0x6f, 0xcc, 0xb2, 0x90, 0x09, 0x0f, 0x8a, 0x3b, 0x62, 0xdf, 0x97, 0x60, 0x78, - 0xc9, 0x16, 0xa9, 0x20, 0xfe, 0x19, 0x7d, 0x0d, 0xf5, 0x98, 0xfb, 0x65, 0xf2, 0x68, 0x7f, 0x76, - 0x2b, 0xbe, 0x56, 0xee, 0x29, 0xe1, 0x10, 0x4c, 0xf8, 0xfa, 0xe9, 0xf6, 0xff, 0x77, 0x23, 0x34, - 0x3e, 0x16, 0x70, 0x4d, 0xd3, 0xdd, 0x2c, 0x12, 0xff, 0x45, 0x7d, 0xeb, 0xe1, 0xe9, 0x39, 0x76, - 0x50, 0x3d, 0xef, 0xd0, 0x00, 0x11, 0xd2, 0xa7, 0xbb, 0xf1, 0xb5, 0xd4, 0xfa, 0x12, 0x49, 0xda, - 0xc7, 0x47, 0x7e, 0x42, 0xef, 0x8d, 0xe4, 0xd7, 0x24, 0x18, 0x59, 0xb2, 0x6b, 0x1b, 0x7a, 0xf5, - 0xff, 0x7b, 0xfb, 0xdd, 0x82, 0x43, 0x81, 0x9e, 0xde, 0x26, 0x95, 0x9e, 0x79, 0x39, 0x06, 0xd1, - 0x25, 0xbb, 0x86, 0x5e, 0x80, 0xb1, 0x70, 0xd2, 0xd0, 0x31, 0x17, 0x6c, 0x9d, 0x11, 0x3a, 0xaf, - 0xd7, 0x3a, 0xcf, 0x1e, 0x68, 0x07, 0x46, 0x82, 0x33, 0xc7, 0xc9, 0x2e, 0x4c, 0x02, 0x98, 0xd9, - 0x87, 0xfa, 0xc5, 0x74, 0x1b, 0x7b, 0x07, 0x24, 0xdc, 0xa0, 0x77, 0x67, 0x17, 0x6a, 0x81, 0xd4, - 0x39, 0xbb, 0x6d, 0x13, 0x56, 0x88, 0xf6, 0xc2, 0x21, 0xa5, 0x9b, 0xf6, 0x42, 0xb8, 0x5d, 0xb5, - 0xd7, 0xc9, 0xb5, 0x36, 0x01, 0x7c, 0x7e, 0x70, 0x77, 0x17, 0x0e, 0x1e, 0x5a, 0xf6, 0xc1, 0xbe, - 0xd0, 0xdc, 0x43, 0xa7, 0x5b, 0x9c, 0x8c, 0xff, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x8d, 0xc7, - 0xe8, 0xef, 0x50, 0x98, 0x00, 0x00, + 0xce, 0xa4, 0xb1, 0xdd, 0x26, 0x63, 0xb7, 0x99, 0x36, 0xcd, 0xa4, 0x74, 0x2a, 0x7b, 0x52, 0xd5, + 0x75, 0x1b, 0x87, 0x71, 0xdb, 0x74, 0x3c, 0x9d, 0x76, 0xee, 0xd7, 0xfb, 0xda, 0x4f, 0x40, 0xa4, + 0xed, 0x34, 0xfd, 0x85, 0xbd, 0xe7, 0x9e, 0x73, 0xee, 0x39, 0xe7, 0x9e, 0x7b, 0xee, 0xb9, 0x5f, + 0x0f, 0xf0, 0x85, 0xf3, 0x30, 0x53, 0x33, 0x8c, 0x5a, 0x1d, 0x9f, 0x36, 0x2d, 0xc3, 0x31, 0x36, + 0x9b, 0x5b, 0xa7, 0xab, 0xd8, 0xae, 0x58, 0x9a, 0xe9, 0x18, 0xd6, 0x2c, 0x85, 0xa1, 0x31, 0x86, + 0x31, 0x2b, 0x30, 0xe4, 0x25, 0x18, 0xbf, 0xa0, 0xd5, 0x71, 0xd1, 0x45, 0x5c, 0xc3, 0x0e, 0x7a, + 0x12, 0x62, 0x5b, 0x5a, 0x1d, 0x67, 0xa4, 0x99, 0xe8, 0xc9, 0xe1, 0x33, 0xf7, 0xcc, 0x86, 0x88, + 0x66, 0x83, 0x14, 0xab, 0x04, 0xac, 0x50, 0x0a, 0xf9, 0xbb, 0x31, 0x98, 0x68, 0x53, 0x8b, 0x10, + 0xc4, 0x74, 0xb5, 0x41, 0x38, 0x4a, 0x27, 0x93, 0x0a, 0xfd, 0x8d, 0x32, 0x30, 0x64, 0xaa, 0x95, + 0x1d, 0xb5, 0x86, 0x33, 0x11, 0x0a, 0x16, 0x45, 0x34, 0x05, 0x50, 0xc5, 0x26, 0xd6, 0xab, 0x58, + 0xaf, 0xec, 0x65, 0xa2, 0x33, 0xd1, 0x93, 0x49, 0xc5, 0x07, 0x41, 0x0f, 0xc2, 0xb8, 0xd9, 0xdc, + 0xac, 0x6b, 0x95, 0xb2, 0x0f, 0x0d, 0x66, 0xa2, 0x27, 0xe3, 0x4a, 0x9a, 0x55, 0x14, 0x3d, 0xe4, + 0xfb, 0x61, 0xec, 0x2a, 0x56, 0x77, 0xfc, 0xa8, 0xc3, 0x14, 0x75, 0x94, 0x80, 0x7d, 0x88, 0x73, + 0x90, 0x6a, 0x60, 0xdb, 0x56, 0x6b, 0xb8, 0xec, 0xec, 0x99, 0x38, 0x13, 0xa3, 0xda, 0xcf, 0xb4, + 0x68, 0x1f, 0xd6, 0x7c, 0x98, 0x53, 0xad, 0xef, 0x99, 0x18, 0xe5, 0x21, 0x89, 0xf5, 0x66, 0x83, + 0x71, 0x88, 0x77, 0xb0, 0x5f, 0x49, 0x6f, 0x36, 0xc2, 0x5c, 0x12, 0x84, 0x8c, 0xb3, 0x18, 0xb2, + 0xb1, 0x75, 0x45, 0xab, 0xe0, 0xcc, 0x20, 0x65, 0x70, 0x7f, 0x0b, 0x83, 0x35, 0x56, 0x1f, 0xe6, + 0x21, 0xe8, 0xd0, 0x1c, 0x24, 0xf1, 0xae, 0x83, 0x75, 0x5b, 0x33, 0xf4, 0xcc, 0x10, 0x65, 0x72, + 0x6f, 0x9b, 0x5e, 0xc4, 0xf5, 0x6a, 0x98, 0x85, 0x47, 0x87, 0xce, 0xc1, 0x90, 0x61, 0x3a, 0x9a, + 0xa1, 0xdb, 0x99, 0xc4, 0x8c, 0x74, 0x72, 0xf8, 0xcc, 0xf1, 0xb6, 0x8e, 0xb0, 0xc2, 0x70, 0x14, + 0x81, 0x8c, 0x16, 0x20, 0x6d, 0x1b, 0x4d, 0xab, 0x82, 0xcb, 0x15, 0xa3, 0x8a, 0xcb, 0x9a, 0xbe, + 0x65, 0x64, 0x92, 0x94, 0xc1, 0x74, 0xab, 0x22, 0x14, 0x71, 0xce, 0xa8, 0xe2, 0x05, 0x7d, 0xcb, + 0x50, 0x46, 0xed, 0x40, 0x19, 0x1d, 0x86, 0x41, 0x7b, 0x4f, 0x77, 0xd4, 0xdd, 0x4c, 0x8a, 0x7a, + 0x08, 0x2f, 0xc9, 0xbf, 0x31, 0x08, 0x63, 0xfd, 0xb8, 0xd8, 0x79, 0x88, 0x6f, 0x11, 0x2d, 0x33, + 0x91, 0xfd, 0xd8, 0x80, 0xd1, 0x04, 0x8d, 0x38, 0x78, 0x40, 0x23, 0xe6, 0x61, 0x58, 0xc7, 0xb6, + 0x83, 0xab, 0xcc, 0x23, 0xa2, 0x7d, 0xfa, 0x14, 0x30, 0xa2, 0x56, 0x97, 0x8a, 0x1d, 0xc8, 0xa5, + 0x9e, 0x87, 0x31, 0x57, 0xa4, 0xb2, 0xa5, 0xea, 0x35, 0xe1, 0x9b, 0xa7, 0x7b, 0x49, 0x32, 0x5b, + 0x12, 0x74, 0x0a, 0x21, 0x53, 0x46, 0x71, 0xa0, 0x8c, 0x8a, 0x00, 0x86, 0x8e, 0x8d, 0xad, 0x72, + 0x15, 0x57, 0xea, 0x99, 0x44, 0x07, 0x2b, 0xad, 0x10, 0x94, 0x16, 0x2b, 0x19, 0x0c, 0x5a, 0xa9, + 0xa3, 0xa7, 0x3c, 0x57, 0x1b, 0xea, 0xe0, 0x29, 0x4b, 0x6c, 0x90, 0xb5, 0x78, 0xdb, 0x06, 0x8c, + 0x5a, 0x98, 0xf8, 0x3d, 0xae, 0x72, 0xcd, 0x92, 0x54, 0x88, 0xd9, 0x9e, 0x9a, 0x29, 0x9c, 0x8c, + 0x29, 0x36, 0x62, 0xf9, 0x8b, 0xe8, 0x6e, 0x70, 0x01, 0x65, 0xea, 0x56, 0x40, 0xa3, 0x50, 0x4a, + 0x00, 0x97, 0xd5, 0x06, 0xce, 0x5e, 0x83, 0xd1, 0xa0, 0x79, 0xd0, 0x24, 0xc4, 0x6d, 0x47, 0xb5, + 0x1c, 0xea, 0x85, 0x71, 0x85, 0x15, 0x50, 0x1a, 0xa2, 0x58, 0xaf, 0xd2, 0x28, 0x17, 0x57, 0xc8, + 0x4f, 0xf4, 0x16, 0x4f, 0xe1, 0x28, 0x55, 0xf8, 0xbe, 0xd6, 0x1e, 0x0d, 0x70, 0x0e, 0xeb, 0x9d, + 0x7d, 0x02, 0x46, 0x02, 0x0a, 0xf4, 0xdb, 0xb4, 0xfc, 0x4e, 0x38, 0xd4, 0x96, 0x35, 0x7a, 0x1e, + 0x26, 0x9b, 0xba, 0xa6, 0x3b, 0xd8, 0x32, 0x2d, 0x4c, 0x3c, 0x96, 0x35, 0x95, 0xf9, 0x4f, 0x43, + 0x1d, 0x7c, 0x6e, 0xc3, 0x8f, 0xcd, 0xb8, 0x28, 0x13, 0xcd, 0x56, 0xe0, 0xa9, 0x64, 0xe2, 0xf5, + 0xa1, 0xf4, 0xcb, 0x2f, 0xbf, 0xfc, 0x72, 0x44, 0xfe, 0xea, 0x20, 0x4c, 0xb6, 0x1b, 0x33, 0x6d, + 0x87, 0xef, 0x61, 0x18, 0xd4, 0x9b, 0x8d, 0x4d, 0x6c, 0x51, 0x23, 0xc5, 0x15, 0x5e, 0x42, 0x79, + 0x88, 0xd7, 0xd5, 0x4d, 0x5c, 0xcf, 0xc4, 0x66, 0xa4, 0x93, 0xa3, 0x67, 0x1e, 0xec, 0x6b, 0x54, + 0xce, 0x2e, 0x12, 0x12, 0x85, 0x51, 0xa2, 0x37, 0x43, 0x8c, 0x87, 0x68, 0xc2, 0xe1, 0x54, 0x7f, + 0x1c, 0xc8, 0x58, 0x52, 0x28, 0x1d, 0x3a, 0x06, 0x49, 0xf2, 0x97, 0xf9, 0xc6, 0x20, 0x95, 0x39, + 0x41, 0x00, 0xc4, 0x2f, 0x50, 0x16, 0x12, 0x74, 0x98, 0x54, 0xb1, 0x98, 0xda, 0xdc, 0x32, 0x71, + 0xac, 0x2a, 0xde, 0x52, 0x9b, 0x75, 0xa7, 0x7c, 0x45, 0xad, 0x37, 0x31, 0x75, 0xf8, 0xa4, 0x92, + 0xe2, 0xc0, 0xcb, 0x04, 0x86, 0xa6, 0x61, 0x98, 0x8d, 0x2a, 0x4d, 0xaf, 0xe2, 0x5d, 0x1a, 0x3d, + 0xe3, 0x0a, 0x1b, 0x68, 0x0b, 0x04, 0x42, 0x9a, 0x7f, 0xd1, 0x36, 0x74, 0xe1, 0x9a, 0xb4, 0x09, + 0x02, 0xa0, 0xcd, 0x3f, 0x11, 0x0e, 0xdc, 0x27, 0xda, 0xab, 0xd7, 0x32, 0x96, 0xee, 0x87, 0x31, + 0x8a, 0xf1, 0x18, 0xef, 0x7a, 0xb5, 0x9e, 0x19, 0x9f, 0x91, 0x4e, 0x26, 0x94, 0x51, 0x06, 0x5e, + 0xe1, 0x50, 0xf9, 0xcb, 0x11, 0x88, 0xd1, 0xc0, 0x32, 0x06, 0xc3, 0xeb, 0x6f, 0x5d, 0x2d, 0x95, + 0x8b, 0x2b, 0x1b, 0x85, 0xc5, 0x52, 0x5a, 0x42, 0xa3, 0x00, 0x14, 0x70, 0x61, 0x71, 0x25, 0xbf, + 0x9e, 0x8e, 0xb8, 0xe5, 0x85, 0xe5, 0xf5, 0x73, 0x8f, 0xa7, 0xa3, 0x2e, 0xc1, 0x06, 0x03, 0xc4, + 0xfc, 0x08, 0x8f, 0x9d, 0x49, 0xc7, 0x51, 0x1a, 0x52, 0x8c, 0xc1, 0xc2, 0xf3, 0xa5, 0xe2, 0xb9, + 0xc7, 0xd3, 0x83, 0x41, 0xc8, 0x63, 0x67, 0xd2, 0x43, 0x68, 0x04, 0x92, 0x14, 0x52, 0x58, 0x59, + 0x59, 0x4c, 0x27, 0x5c, 0x9e, 0x6b, 0xeb, 0xca, 0xc2, 0xf2, 0x7c, 0x3a, 0xe9, 0xf2, 0x9c, 0x57, + 0x56, 0x36, 0x56, 0xd3, 0xe0, 0x72, 0x58, 0x2a, 0xad, 0xad, 0xe5, 0xe7, 0x4b, 0xe9, 0x61, 0x17, + 0xa3, 0xf0, 0xd6, 0xf5, 0xd2, 0x5a, 0x3a, 0x15, 0x10, 0xeb, 0xb1, 0x33, 0xe9, 0x11, 0xb7, 0x89, + 0xd2, 0xf2, 0xc6, 0x52, 0x7a, 0x14, 0x8d, 0xc3, 0x08, 0x6b, 0x42, 0x08, 0x31, 0x16, 0x02, 0x9d, + 0x7b, 0x3c, 0x9d, 0xf6, 0x04, 0x61, 0x5c, 0xc6, 0x03, 0x80, 0x73, 0x8f, 0xa7, 0x91, 0x3c, 0x07, + 0x71, 0xea, 0x86, 0x08, 0xc1, 0xe8, 0x62, 0xbe, 0x50, 0x5a, 0x2c, 0xaf, 0xac, 0xae, 0x2f, 0xac, + 0x2c, 0xe7, 0x17, 0xd3, 0x92, 0x07, 0x53, 0x4a, 0xcf, 0x6e, 0x2c, 0x28, 0xa5, 0x62, 0x3a, 0xe2, + 0x87, 0xad, 0x96, 0xf2, 0xeb, 0xa5, 0x62, 0x3a, 0x2a, 0x57, 0x60, 0xb2, 0x5d, 0x40, 0x6d, 0x3b, + 0x84, 0x7c, 0xbe, 0x10, 0xe9, 0xe0, 0x0b, 0x94, 0x57, 0xd8, 0x17, 0xe4, 0xef, 0x44, 0x60, 0xa2, + 0xcd, 0xa4, 0xd2, 0xb6, 0x91, 0xa7, 0x21, 0xce, 0x7c, 0x99, 0x4d, 0xb3, 0x0f, 0xb4, 0x9d, 0x9d, + 0xa8, 0x67, 0xb7, 0x4c, 0xb5, 0x94, 0xce, 0x9f, 0x6a, 0x44, 0x3b, 0xa4, 0x1a, 0x84, 0x45, 0x8b, + 0xc3, 0xfe, 0x6c, 0x4b, 0xf0, 0x67, 0xf3, 0xe3, 0xb9, 0x7e, 0xe6, 0x47, 0x0a, 0xdb, 0xdf, 0x24, + 0x10, 0x6f, 0x33, 0x09, 0x9c, 0x87, 0xf1, 0x16, 0x46, 0x7d, 0x07, 0xe3, 0xf7, 0x4a, 0x90, 0xe9, + 0x64, 0x9c, 0x1e, 0x21, 0x31, 0x12, 0x08, 0x89, 0xe7, 0xc3, 0x16, 0xbc, 0xab, 0x73, 0x27, 0xb4, + 0xf4, 0xf5, 0x67, 0x24, 0x38, 0xdc, 0x3e, 0xa5, 0x6c, 0x2b, 0xc3, 0x9b, 0x61, 0xb0, 0x81, 0x9d, + 0x6d, 0x43, 0xa4, 0x55, 0xf7, 0xb5, 0x99, 0xac, 0x49, 0x75, 0xb8, 0xb3, 0x39, 0x95, 0x7f, 0xb6, + 0x8f, 0x76, 0xca, 0x0b, 0x99, 0x34, 0x2d, 0x92, 0x7e, 0x30, 0x02, 0x87, 0xda, 0x32, 0x6f, 0x2b, + 0xe8, 0x09, 0x00, 0x4d, 0x37, 0x9b, 0x0e, 0x4b, 0x9d, 0x58, 0x24, 0x4e, 0x52, 0x08, 0x0d, 0x5e, + 0x24, 0xca, 0x36, 0x1d, 0xb7, 0x3e, 0x4a, 0xeb, 0x81, 0x81, 0x28, 0xc2, 0x93, 0x9e, 0xa0, 0x31, + 0x2a, 0xe8, 0x54, 0x07, 0x4d, 0x5b, 0x1c, 0xf3, 0x11, 0x48, 0x57, 0xea, 0x1a, 0xd6, 0x9d, 0xb2, + 0xed, 0x58, 0x58, 0x6d, 0x68, 0x7a, 0x8d, 0x4e, 0x35, 0x89, 0x5c, 0x7c, 0x4b, 0xad, 0xdb, 0x58, + 0x19, 0x63, 0xd5, 0x6b, 0xa2, 0x96, 0x50, 0x50, 0x07, 0xb2, 0x7c, 0x14, 0x83, 0x01, 0x0a, 0x56, + 0xed, 0x52, 0xc8, 0x1f, 0x4e, 0xc2, 0xb0, 0x2f, 0x01, 0x47, 0x77, 0x41, 0xea, 0x45, 0xf5, 0x8a, + 0x5a, 0x16, 0x8b, 0x2a, 0x66, 0x89, 0x61, 0x02, 0x5b, 0xe5, 0x0b, 0xab, 0x47, 0x60, 0x92, 0xa2, + 0x18, 0x4d, 0x07, 0x5b, 0xe5, 0x4a, 0x5d, 0xb5, 0x6d, 0x6a, 0xb4, 0x04, 0x45, 0x45, 0xa4, 0x6e, + 0x85, 0x54, 0xcd, 0x89, 0x1a, 0x74, 0x16, 0x26, 0x28, 0x45, 0xa3, 0x59, 0x77, 0x34, 0xb3, 0x8e, + 0xcb, 0x64, 0x99, 0x67, 0xd3, 0x29, 0xc7, 0x95, 0x6c, 0x9c, 0x60, 0x2c, 0x71, 0x04, 0x22, 0x91, + 0x8d, 0x8a, 0x70, 0x82, 0x92, 0xd5, 0xb0, 0x8e, 0x2d, 0xd5, 0xc1, 0x65, 0xfc, 0x52, 0x53, 0xad, + 0xdb, 0x65, 0x55, 0xaf, 0x96, 0xb7, 0x55, 0x7b, 0x3b, 0x33, 0x49, 0x18, 0x14, 0x22, 0x19, 0x49, + 0x39, 0x4a, 0x10, 0xe7, 0x39, 0x5e, 0x89, 0xa2, 0xe5, 0xf5, 0xea, 0x45, 0xd5, 0xde, 0x46, 0x39, + 0x38, 0x4c, 0xb9, 0xd8, 0x8e, 0xa5, 0xe9, 0xb5, 0x72, 0x65, 0x1b, 0x57, 0x76, 0xca, 0x4d, 0x67, + 0xeb, 0xc9, 0xcc, 0x31, 0x7f, 0xfb, 0x54, 0xc2, 0x35, 0x8a, 0x33, 0x47, 0x50, 0x36, 0x9c, 0xad, + 0x27, 0xd1, 0x1a, 0xa4, 0x48, 0x67, 0x34, 0xb4, 0x6b, 0xb8, 0xbc, 0x65, 0x58, 0x74, 0x0e, 0x1d, + 0x6d, 0x13, 0x9a, 0x7c, 0x16, 0x9c, 0x5d, 0xe1, 0x04, 0x4b, 0x46, 0x15, 0xe7, 0xe2, 0x6b, 0xab, + 0xa5, 0x52, 0x51, 0x19, 0x16, 0x5c, 0x2e, 0x18, 0x16, 0x71, 0xa8, 0x9a, 0xe1, 0x1a, 0x78, 0x98, + 0x39, 0x54, 0xcd, 0x10, 0xe6, 0x3d, 0x0b, 0x13, 0x95, 0x0a, 0xd3, 0x59, 0xab, 0x94, 0xf9, 0x62, + 0xcc, 0xce, 0xa4, 0x03, 0xc6, 0xaa, 0x54, 0xe6, 0x19, 0x02, 0xf7, 0x71, 0x1b, 0x3d, 0x05, 0x87, + 0x3c, 0x63, 0xf9, 0x09, 0xc7, 0x5b, 0xb4, 0x0c, 0x93, 0x9e, 0x85, 0x09, 0x73, 0xaf, 0x95, 0x10, + 0x05, 0x5a, 0x34, 0xf7, 0xc2, 0x64, 0x4f, 0xc0, 0xa4, 0xb9, 0x6d, 0xb6, 0xd2, 0x9d, 0xf2, 0xd3, + 0x21, 0x73, 0xdb, 0x0c, 0x13, 0xde, 0x4b, 0x57, 0xe6, 0x16, 0xae, 0xa8, 0x0e, 0xae, 0x66, 0x8e, + 0xf8, 0xd1, 0x7d, 0x15, 0x68, 0x16, 0xd2, 0x95, 0x4a, 0x19, 0xeb, 0xea, 0x66, 0x1d, 0x97, 0x55, + 0x0b, 0xeb, 0xaa, 0x9d, 0x99, 0xa6, 0xc8, 0x31, 0xc7, 0x6a, 0x62, 0x65, 0xb4, 0x52, 0x29, 0xd1, + 0xca, 0x3c, 0xad, 0x43, 0xa7, 0x60, 0xdc, 0xd8, 0x7c, 0xb1, 0xc2, 0x3c, 0xb2, 0x6c, 0x5a, 0x78, + 0x4b, 0xdb, 0xcd, 0xdc, 0x43, 0xcd, 0x3b, 0x46, 0x2a, 0xa8, 0x3f, 0xae, 0x52, 0x30, 0x7a, 0x00, + 0xd2, 0x15, 0x7b, 0x5b, 0xb5, 0x4c, 0x1a, 0x92, 0x6d, 0x53, 0xad, 0xe0, 0xcc, 0xbd, 0x0c, 0x95, + 0xc1, 0x97, 0x05, 0x98, 0x8c, 0x08, 0xfb, 0xaa, 0xb6, 0xe5, 0x08, 0x8e, 0xf7, 0xb3, 0x11, 0x41, + 0x61, 0x9c, 0xdb, 0x49, 0x48, 0x13, 0x4b, 0x04, 0x1a, 0x3e, 0x49, 0xd1, 0x46, 0xcd, 0x6d, 0xd3, + 0xdf, 0xee, 0xdd, 0x30, 0x42, 0x30, 0xbd, 0x46, 0x1f, 0x60, 0x89, 0x9b, 0xb9, 0xed, 0x6b, 0xf1, + 0x71, 0x38, 0x4c, 0x90, 0x1a, 0xd8, 0x51, 0xab, 0xaa, 0xa3, 0xfa, 0xb0, 0x1f, 0xa2, 0xd8, 0xc4, + 0xec, 0x4b, 0xbc, 0x32, 0x20, 0xa7, 0xd5, 0xdc, 0xdc, 0x73, 0x1d, 0xeb, 0x61, 0x26, 0x27, 0x81, + 0x09, 0xd7, 0xba, 0x63, 0xc9, 0xb9, 0x9c, 0x83, 0x94, 0xdf, 0xef, 0x51, 0x12, 0x98, 0xe7, 0xa7, + 0x25, 0x92, 0x04, 0xcd, 0xad, 0x14, 0x49, 0xfa, 0xf2, 0x42, 0x29, 0x1d, 0x21, 0x69, 0xd4, 0xe2, + 0xc2, 0x7a, 0xa9, 0xac, 0x6c, 0x2c, 0xaf, 0x2f, 0x2c, 0x95, 0xd2, 0x51, 0x5f, 0x62, 0xff, 0x4c, + 0x2c, 0x71, 0x5f, 0xfa, 0x7e, 0xf9, 0x5b, 0x11, 0x18, 0x0d, 0xae, 0xd4, 0xd0, 0xcf, 0xc0, 0x11, + 0xb1, 0xad, 0x62, 0x63, 0xa7, 0x7c, 0x55, 0xb3, 0xe8, 0x80, 0x6c, 0xa8, 0x6c, 0x72, 0x74, 0xfd, + 0x67, 0x92, 0x63, 0xad, 0x61, 0xe7, 0x39, 0xcd, 0x22, 0xc3, 0xad, 0xa1, 0x3a, 0x68, 0x11, 0xa6, + 0x75, 0xa3, 0x6c, 0x3b, 0xaa, 0x5e, 0x55, 0xad, 0x6a, 0xd9, 0xdb, 0xd0, 0x2a, 0xab, 0x95, 0x0a, + 0xb6, 0x6d, 0x83, 0x4d, 0x84, 0x2e, 0x97, 0xe3, 0xba, 0xb1, 0xc6, 0x91, 0xbd, 0x19, 0x22, 0xcf, + 0x51, 0x43, 0xee, 0x1b, 0xed, 0xe4, 0xbe, 0xc7, 0x20, 0xd9, 0x50, 0xcd, 0x32, 0xd6, 0x1d, 0x6b, + 0x8f, 0xe6, 0xe7, 0x09, 0x25, 0xd1, 0x50, 0xcd, 0x12, 0x29, 0xff, 0x58, 0x96, 0x49, 0xcf, 0xc4, + 0x12, 0x89, 0x74, 0xf2, 0x99, 0x58, 0x22, 0x99, 0x06, 0xf9, 0xb5, 0x28, 0xa4, 0xfc, 0xf9, 0x3a, + 0x59, 0xfe, 0x54, 0xe8, 0x8c, 0x25, 0xd1, 0x98, 0x76, 0x77, 0xd7, 0xec, 0x7e, 0x76, 0x8e, 0x4c, + 0x65, 0xb9, 0x41, 0x96, 0x1c, 0x2b, 0x8c, 0x92, 0xa4, 0x11, 0xc4, 0xd9, 0x30, 0x4b, 0x46, 0x12, + 0x0a, 0x2f, 0xa1, 0x79, 0x18, 0x7c, 0xd1, 0xa6, 0xbc, 0x07, 0x29, 0xef, 0x7b, 0xba, 0xf3, 0x7e, + 0x66, 0x8d, 0x32, 0x4f, 0x3e, 0xb3, 0x56, 0x5e, 0x5e, 0x51, 0x96, 0xf2, 0x8b, 0x0a, 0x27, 0x47, + 0x47, 0x21, 0x56, 0x57, 0xaf, 0xed, 0x05, 0x27, 0x3d, 0x0a, 0xea, 0xb7, 0x13, 0x8e, 0x42, 0xec, + 0x2a, 0x56, 0x77, 0x82, 0x53, 0x0d, 0x05, 0xdd, 0xc1, 0xc1, 0x70, 0x1a, 0xe2, 0xd4, 0x5e, 0x08, + 0x80, 0x5b, 0x2c, 0x3d, 0x80, 0x12, 0x10, 0x9b, 0x5b, 0x51, 0xc8, 0x80, 0x48, 0x43, 0x8a, 0x41, + 0xcb, 0xab, 0x0b, 0xa5, 0xb9, 0x52, 0x3a, 0x22, 0x9f, 0x85, 0x41, 0x66, 0x04, 0x32, 0x58, 0x5c, + 0x33, 0xa4, 0x07, 0x78, 0x91, 0xf3, 0x90, 0x44, 0xed, 0xc6, 0x52, 0xa1, 0xa4, 0xa4, 0x23, 0xc1, + 0xae, 0x8e, 0xa5, 0xe3, 0xb2, 0x0d, 0x29, 0x7f, 0x1e, 0xfe, 0xe3, 0x59, 0x8c, 0x7f, 0x45, 0x82, + 0x61, 0x5f, 0x5e, 0x4d, 0x12, 0x22, 0xb5, 0x5e, 0x37, 0xae, 0x96, 0xd5, 0xba, 0xa6, 0xda, 0xdc, + 0x35, 0x80, 0x82, 0xf2, 0x04, 0xd2, 0x6f, 0xd7, 0xfd, 0x98, 0x86, 0x48, 0x3c, 0x3d, 0x28, 0x7f, + 0x52, 0x82, 0x74, 0x38, 0xb1, 0x0d, 0x89, 0x29, 0xfd, 0x24, 0xc5, 0x94, 0x3f, 0x21, 0xc1, 0x68, + 0x30, 0x9b, 0x0d, 0x89, 0x77, 0xd7, 0x4f, 0x54, 0xbc, 0x3f, 0x8c, 0xc0, 0x48, 0x20, 0x87, 0xed, + 0x57, 0xba, 0x97, 0x60, 0x5c, 0xab, 0xe2, 0x86, 0x69, 0x38, 0x58, 0xaf, 0xec, 0x95, 0xeb, 0xf8, + 0x0a, 0xae, 0x67, 0x64, 0x1a, 0x34, 0x4e, 0x77, 0xcf, 0x92, 0x67, 0x17, 0x3c, 0xba, 0x45, 0x42, + 0x96, 0x9b, 0x58, 0x28, 0x96, 0x96, 0x56, 0x57, 0xd6, 0x4b, 0xcb, 0x73, 0x6f, 0x2d, 0x6f, 0x2c, + 0x5f, 0x5a, 0x5e, 0x79, 0x6e, 0x59, 0x49, 0x6b, 0x21, 0xb4, 0x3b, 0x38, 0xec, 0x57, 0x21, 0x1d, + 0x16, 0x0a, 0x1d, 0x81, 0x76, 0x62, 0xa5, 0x07, 0xd0, 0x04, 0x8c, 0x2d, 0xaf, 0x94, 0xd7, 0x16, + 0x8a, 0xa5, 0x72, 0xe9, 0xc2, 0x85, 0xd2, 0xdc, 0xfa, 0x1a, 0xdb, 0xf7, 0x70, 0xb1, 0xd7, 0x03, + 0x03, 0x5c, 0x7e, 0x25, 0x0a, 0x13, 0x6d, 0x24, 0x41, 0x79, 0xbe, 0x62, 0x61, 0x8b, 0xa8, 0x87, + 0xfb, 0x91, 0x7e, 0x96, 0xe4, 0x0c, 0xab, 0xaa, 0xe5, 0xf0, 0x05, 0xce, 0x03, 0x40, 0xac, 0xa4, + 0x3b, 0xda, 0x96, 0x86, 0x2d, 0xbe, 0x9f, 0xc4, 0x96, 0x31, 0x63, 0x1e, 0x9c, 0x6d, 0x29, 0x3d, + 0x04, 0xc8, 0x34, 0x6c, 0xcd, 0xd1, 0xae, 0xe0, 0xb2, 0xa6, 0x8b, 0xcd, 0x27, 0xb2, 0xac, 0x89, + 0x29, 0x69, 0x51, 0xb3, 0xa0, 0x3b, 0x2e, 0xb6, 0x8e, 0x6b, 0x6a, 0x08, 0x9b, 0x04, 0xf3, 0xa8, + 0x92, 0x16, 0x35, 0x2e, 0xf6, 0x5d, 0x90, 0xaa, 0x1a, 0x4d, 0x92, 0xeb, 0x31, 0x3c, 0x32, 0x77, + 0x48, 0xca, 0x30, 0x83, 0xb9, 0x28, 0x3c, 0x8b, 0xf7, 0x76, 0xbd, 0x52, 0xca, 0x30, 0x83, 0x31, + 0x94, 0xfb, 0x61, 0x4c, 0xad, 0xd5, 0x2c, 0xc2, 0x5c, 0x30, 0x62, 0xeb, 0x92, 0x51, 0x17, 0x4c, + 0x11, 0xb3, 0xcf, 0x40, 0x42, 0xd8, 0x81, 0x4c, 0xd5, 0xc4, 0x12, 0x65, 0x93, 0x2d, 0xb6, 0x23, + 0x27, 0x93, 0x4a, 0x42, 0x17, 0x95, 0x77, 0x41, 0x4a, 0xb3, 0xcb, 0xde, 0x26, 0x7e, 0x64, 0x26, + 0x72, 0x32, 0xa1, 0x0c, 0x6b, 0xb6, 0xbb, 0x01, 0x2a, 0x7f, 0x26, 0x02, 0xa3, 0xc1, 0x43, 0x08, + 0x54, 0x84, 0x44, 0xdd, 0xa8, 0xa8, 0xd4, 0xb5, 0xd8, 0x09, 0xd8, 0xc9, 0x1e, 0xe7, 0x16, 0xb3, + 0x8b, 0x1c, 0x5f, 0x71, 0x29, 0xb3, 0xbf, 0x23, 0x41, 0x42, 0x80, 0xd1, 0x61, 0x88, 0x99, 0xaa, + 0xb3, 0x4d, 0xd9, 0xc5, 0x0b, 0x91, 0xb4, 0xa4, 0xd0, 0x32, 0x81, 0xdb, 0xa6, 0xaa, 0x53, 0x17, + 0xe0, 0x70, 0x52, 0x26, 0xfd, 0x5a, 0xc7, 0x6a, 0x95, 0x2e, 0x7a, 0x8c, 0x46, 0x03, 0xeb, 0x8e, + 0x2d, 0xfa, 0x95, 0xc3, 0xe7, 0x38, 0x18, 0x3d, 0x08, 0xe3, 0x8e, 0xa5, 0x6a, 0xf5, 0x00, 0x6e, + 0x8c, 0xe2, 0xa6, 0x45, 0x85, 0x8b, 0x9c, 0x83, 0xa3, 0x82, 0x6f, 0x15, 0x3b, 0x6a, 0x65, 0x1b, + 0x57, 0x3d, 0xa2, 0x41, 0xba, 0xb9, 0x71, 0x84, 0x23, 0x14, 0x79, 0xbd, 0xa0, 0x95, 0xbf, 0x25, + 0xc1, 0xb8, 0x58, 0xa6, 0x55, 0x5d, 0x63, 0x2d, 0x01, 0xa8, 0xba, 0x6e, 0x38, 0x7e, 0x73, 0xb5, + 0xba, 0x72, 0x0b, 0xdd, 0x6c, 0xde, 0x25, 0x52, 0x7c, 0x0c, 0xb2, 0x0d, 0x00, 0xaf, 0xa6, 0xa3, + 0xd9, 0xa6, 0x61, 0x98, 0x9f, 0x30, 0xd1, 0x63, 0x4a, 0xb6, 0xb0, 0x07, 0x06, 0x22, 0xeb, 0x39, + 0x34, 0x09, 0xf1, 0x4d, 0x5c, 0xd3, 0x74, 0xbe, 0x6f, 0xcc, 0x0a, 0x62, 0xfb, 0x25, 0xe6, 0x6e, + 0xbf, 0x14, 0xfe, 0x32, 0x4c, 0x54, 0x8c, 0x46, 0x58, 0xdc, 0x42, 0x3a, 0xb4, 0xb9, 0x60, 0x5f, + 0x94, 0x5e, 0x78, 0x98, 0x23, 0xd5, 0x8c, 0xba, 0xaa, 0xd7, 0x66, 0x0d, 0xab, 0xe6, 0x1d, 0xb3, + 0x92, 0x8c, 0xc7, 0xf6, 0x1d, 0xb6, 0x9a, 0x9b, 0x7f, 0x26, 0x49, 0xbf, 0x14, 0x89, 0xce, 0xaf, + 0x16, 0x3e, 0x1b, 0xc9, 0xce, 0x33, 0xc2, 0x55, 0x61, 0x0c, 0x05, 0x6f, 0xd5, 0x71, 0x85, 0x28, + 0x08, 0xdf, 0x7b, 0x10, 0x26, 0x6b, 0x46, 0xcd, 0xa0, 0x9c, 0x4e, 0x93, 0x5f, 0xfc, 0x9c, 0x36, + 0xe9, 0x42, 0xb3, 0x3d, 0x0f, 0x75, 0x73, 0xcb, 0x30, 0xc1, 0x91, 0xcb, 0xf4, 0xa0, 0x88, 0x2d, + 0x63, 0x50, 0xd7, 0x3d, 0xb4, 0xcc, 0x17, 0xbe, 0x4b, 0xa7, 0x6f, 0x65, 0x9c, 0x93, 0x92, 0x3a, + 0xb6, 0xd2, 0xc9, 0x29, 0x70, 0x28, 0xc0, 0x8f, 0x0d, 0x52, 0x6c, 0xf5, 0xe0, 0xf8, 0x9b, 0x9c, + 0xe3, 0x84, 0x8f, 0xe3, 0x1a, 0x27, 0xcd, 0xcd, 0xc1, 0xc8, 0x7e, 0x78, 0xfd, 0x0b, 0xce, 0x2b, + 0x85, 0xfd, 0x4c, 0xe6, 0x61, 0x8c, 0x32, 0xa9, 0x34, 0x6d, 0xc7, 0x68, 0xd0, 0x08, 0xd8, 0x9d, + 0xcd, 0x6f, 0x7d, 0x97, 0x8d, 0x9a, 0x51, 0x42, 0x36, 0xe7, 0x52, 0xe5, 0x72, 0x40, 0xcf, 0xc6, + 0xaa, 0xb8, 0x52, 0xef, 0xc1, 0xe1, 0x6b, 0x5c, 0x10, 0x17, 0x3f, 0x77, 0x19, 0x26, 0xc9, 0x6f, + 0x1a, 0xa0, 0xfc, 0x92, 0xf4, 0xde, 0x70, 0xcb, 0x7c, 0xeb, 0xbd, 0x6c, 0x60, 0x4e, 0xb8, 0x0c, + 0x7c, 0x32, 0xf9, 0x7a, 0xb1, 0x86, 0x1d, 0x07, 0x5b, 0x76, 0x59, 0xad, 0xb7, 0x13, 0xcf, 0xb7, + 0x63, 0x91, 0xf9, 0xd8, 0xf7, 0x83, 0xbd, 0x38, 0xcf, 0x28, 0xf3, 0xf5, 0x7a, 0x6e, 0x03, 0x8e, + 0xb4, 0xf1, 0x8a, 0x3e, 0x78, 0xbe, 0xc2, 0x79, 0x4e, 0xb6, 0x78, 0x06, 0x61, 0xbb, 0x0a, 0x02, + 0xee, 0xf6, 0x65, 0x1f, 0x3c, 0x3f, 0xce, 0x79, 0x22, 0x4e, 0x2b, 0xba, 0x94, 0x70, 0x7c, 0x06, + 0xc6, 0xaf, 0x60, 0x6b, 0xd3, 0xb0, 0xf9, 0x2e, 0x51, 0x1f, 0xec, 0x3e, 0xc1, 0xd9, 0x8d, 0x71, + 0x42, 0xba, 0x6d, 0x44, 0x78, 0x3d, 0x05, 0x89, 0x2d, 0xb5, 0x82, 0xfb, 0x60, 0x71, 0x83, 0xb3, + 0x18, 0x22, 0xf8, 0x84, 0x34, 0x0f, 0xa9, 0x9a, 0xc1, 0xe7, 0xa8, 0xde, 0xe4, 0x9f, 0xe4, 0xe4, + 0xc3, 0x82, 0x86, 0xb3, 0x30, 0x0d, 0xb3, 0x59, 0x27, 0x13, 0x58, 0x6f, 0x16, 0x7f, 0x4b, 0xb0, + 0x10, 0x34, 0x9c, 0xc5, 0x3e, 0xcc, 0xfa, 0xaa, 0x60, 0x61, 0xfb, 0xec, 0xf9, 0x34, 0x0c, 0x1b, + 0x7a, 0x7d, 0xcf, 0xd0, 0xfb, 0x11, 0xe2, 0x53, 0x9c, 0x03, 0x70, 0x12, 0xc2, 0xe0, 0x3c, 0x24, + 0xfb, 0xed, 0x88, 0xbf, 0xfd, 0x7d, 0x31, 0x3c, 0x44, 0x0f, 0xcc, 0xc3, 0x98, 0x08, 0x50, 0x9a, + 0xa1, 0xf7, 0xc1, 0xe2, 0xef, 0x70, 0x16, 0xa3, 0x3e, 0x32, 0xae, 0x86, 0x83, 0x6d, 0xa7, 0x86, + 0xfb, 0x61, 0xf2, 0x19, 0xa1, 0x06, 0x27, 0xe1, 0xa6, 0xdc, 0xc4, 0x7a, 0x65, 0xbb, 0x3f, 0x0e, + 0xbf, 0x22, 0x4c, 0x29, 0x68, 0x08, 0x8b, 0x39, 0x18, 0x69, 0xa8, 0x96, 0xbd, 0xad, 0xd6, 0xfb, + 0xea, 0x8e, 0xbf, 0xcb, 0x79, 0xa4, 0x5c, 0x22, 0x6e, 0x91, 0xa6, 0xbe, 0x1f, 0x36, 0x9f, 0x15, + 0x16, 0xf1, 0x91, 0xf1, 0xa1, 0x67, 0x3b, 0x74, 0x4b, 0x6d, 0x3f, 0xdc, 0x7e, 0x55, 0x0c, 0x3d, + 0x46, 0xbb, 0xe4, 0xe7, 0x78, 0x1e, 0x92, 0xb6, 0x76, 0xad, 0x2f, 0x36, 0x9f, 0x13, 0x3d, 0x4d, + 0x09, 0x08, 0xf1, 0x5b, 0xe1, 0x68, 0xdb, 0x69, 0xa2, 0x0f, 0x66, 0x7f, 0x8f, 0x33, 0x3b, 0xdc, + 0x66, 0xaa, 0xe0, 0x21, 0x61, 0xbf, 0x2c, 0xff, 0xbe, 0x08, 0x09, 0x38, 0xc4, 0x6b, 0x95, 0xac, + 0x1a, 0x6c, 0x75, 0x6b, 0x7f, 0x56, 0xfb, 0x35, 0x61, 0x35, 0x46, 0x1b, 0xb0, 0xda, 0x3a, 0x1c, + 0xe6, 0x1c, 0xf7, 0xd7, 0xaf, 0x9f, 0x17, 0x81, 0x95, 0x51, 0x6f, 0x04, 0x7b, 0xf7, 0x6d, 0x90, + 0x75, 0xcd, 0x29, 0xd2, 0x53, 0xbb, 0xdc, 0x50, 0xcd, 0x3e, 0x38, 0x7f, 0x81, 0x73, 0x16, 0x11, + 0xdf, 0xcd, 0x6f, 0xed, 0x25, 0xd5, 0x24, 0xcc, 0x9f, 0x87, 0x8c, 0x60, 0xde, 0xd4, 0x2d, 0x5c, + 0x31, 0x6a, 0xba, 0x76, 0x0d, 0x57, 0xfb, 0x60, 0xfd, 0xeb, 0xa1, 0xae, 0xda, 0xf0, 0x91, 0x13, + 0xce, 0x0b, 0x90, 0x76, 0x73, 0x95, 0xb2, 0xd6, 0x30, 0x0d, 0xcb, 0xe9, 0xc1, 0xf1, 0x8b, 0xa2, + 0xa7, 0x5c, 0xba, 0x05, 0x4a, 0x96, 0x2b, 0x01, 0x3b, 0x67, 0xee, 0xd7, 0x25, 0xbf, 0xc4, 0x19, + 0x8d, 0x78, 0x54, 0x3c, 0x70, 0x54, 0x8c, 0x86, 0xa9, 0x5a, 0xfd, 0xc4, 0xbf, 0x7f, 0x20, 0x02, + 0x07, 0x27, 0xe1, 0x81, 0x83, 0x64, 0x74, 0x64, 0xb6, 0xef, 0x83, 0xc3, 0x97, 0x45, 0xe0, 0x10, + 0x34, 0x9c, 0x85, 0x48, 0x18, 0xfa, 0x60, 0xf1, 0x0f, 0x05, 0x0b, 0x41, 0x43, 0x58, 0x3c, 0xeb, + 0x4d, 0xb4, 0x16, 0xae, 0x69, 0xb6, 0x63, 0xb1, 0xa4, 0xb8, 0x3b, 0xab, 0x7f, 0xf4, 0xfd, 0x60, + 0x12, 0xa6, 0xf8, 0x48, 0x49, 0x24, 0xe2, 0x9b, 0xac, 0x74, 0xcd, 0xd4, 0x5b, 0xb0, 0xdf, 0x10, + 0x91, 0xc8, 0x47, 0x46, 0x64, 0xf3, 0x65, 0x88, 0xc4, 0xec, 0x15, 0xb2, 0x52, 0xe8, 0x83, 0xdd, + 0x3f, 0x0e, 0x09, 0xb7, 0x26, 0x68, 0x09, 0x4f, 0x5f, 0xfe, 0xd3, 0xd4, 0x77, 0xf0, 0x5e, 0x5f, + 0xde, 0xf9, 0x4f, 0x42, 0xf9, 0xcf, 0x06, 0xa3, 0x64, 0x31, 0x64, 0x2c, 0x94, 0x4f, 0xa1, 0x5e, + 0xb7, 0x8a, 0x32, 0xef, 0xfe, 0x21, 0xd7, 0x37, 0x98, 0x4e, 0xe5, 0x16, 0x89, 0x93, 0x07, 0x93, + 0x9e, 0xde, 0xcc, 0xde, 0xfb, 0x43, 0xd7, 0xcf, 0x03, 0x39, 0x4f, 0xee, 0x02, 0x8c, 0x04, 0x12, + 0x9e, 0xde, 0xac, 0xde, 0xc7, 0x59, 0xa5, 0xfc, 0xf9, 0x4e, 0xee, 0x2c, 0xc4, 0x48, 0xf2, 0xd2, + 0x9b, 0xfc, 0xaf, 0x70, 0x72, 0x8a, 0x9e, 0x7b, 0x13, 0x24, 0x44, 0xd2, 0xd2, 0x9b, 0xf4, 0xfd, + 0x9c, 0xd4, 0x25, 0x21, 0xe4, 0x22, 0x61, 0xe9, 0x4d, 0xfe, 0x57, 0x05, 0xb9, 0x20, 0x21, 0xe4, + 0xfd, 0x9b, 0xf0, 0x2b, 0x3f, 0x17, 0xe3, 0x93, 0x8e, 0xb0, 0xdd, 0x79, 0x18, 0xe2, 0x99, 0x4a, + 0x6f, 0xea, 0x0f, 0xf2, 0xc6, 0x05, 0x45, 0xee, 0x09, 0x88, 0xf7, 0x69, 0xf0, 0x9f, 0xe7, 0xa4, + 0x0c, 0x3f, 0x37, 0x07, 0xc3, 0xbe, 0xec, 0xa4, 0x37, 0xf9, 0x5f, 0xe3, 0xe4, 0x7e, 0x2a, 0x22, + 0x3a, 0xcf, 0x4e, 0x7a, 0x33, 0xf8, 0x05, 0x21, 0x3a, 0xa7, 0x20, 0x66, 0x13, 0x89, 0x49, 0x6f, + 0xea, 0x0f, 0x09, 0xab, 0x0b, 0x92, 0xdc, 0xd3, 0x90, 0x74, 0x27, 0x9b, 0xde, 0xf4, 0x1f, 0xe6, + 0xf4, 0x1e, 0x0d, 0xb1, 0x80, 0x6f, 0xb2, 0xeb, 0xcd, 0xe2, 0xaf, 0x0b, 0x0b, 0xf8, 0xa8, 0xc8, + 0x30, 0x0a, 0x27, 0x30, 0xbd, 0x39, 0x7d, 0x44, 0x0c, 0xa3, 0x50, 0xfe, 0x42, 0x7a, 0x93, 0xc6, + 0xfc, 0xde, 0x2c, 0xfe, 0x86, 0xe8, 0x4d, 0x8a, 0x4f, 0xc4, 0x08, 0x67, 0x04, 0xbd, 0x79, 0xfc, + 0xa2, 0x10, 0x23, 0x94, 0x10, 0xe4, 0x56, 0x01, 0xb5, 0x66, 0x03, 0xbd, 0xf9, 0x7d, 0x94, 0xf3, + 0x1b, 0x6f, 0x49, 0x06, 0x72, 0xcf, 0xc1, 0xe1, 0xf6, 0x99, 0x40, 0x6f, 0xae, 0x1f, 0xfb, 0x61, + 0x68, 0xed, 0xe6, 0x4f, 0x04, 0x72, 0xeb, 0xde, 0x94, 0xe2, 0xcf, 0x02, 0x7a, 0xb3, 0x7d, 0xe5, + 0x87, 0xc1, 0xc0, 0xed, 0x4f, 0x02, 0x72, 0x79, 0x00, 0x6f, 0x02, 0xee, 0xcd, 0xeb, 0x13, 0x9c, + 0x97, 0x8f, 0x88, 0x0c, 0x0d, 0x3e, 0xff, 0xf6, 0xa6, 0xbf, 0x21, 0x86, 0x06, 0xa7, 0x20, 0x43, + 0x43, 0x4c, 0xbd, 0xbd, 0xa9, 0x3f, 0x29, 0x86, 0x86, 0x20, 0x21, 0x9e, 0xed, 0x9b, 0xdd, 0x7a, + 0x73, 0xf8, 0x94, 0xf0, 0x6c, 0x1f, 0x55, 0x6e, 0x19, 0xc6, 0x5b, 0x26, 0xc4, 0xde, 0xac, 0x7e, + 0x89, 0xb3, 0x4a, 0x87, 0xe7, 0x43, 0xff, 0xe4, 0xc5, 0x27, 0xc3, 0xde, 0xdc, 0x3e, 0x1d, 0x9a, + 0xbc, 0xf8, 0x5c, 0x98, 0x3b, 0x0f, 0x09, 0xbd, 0x59, 0xaf, 0x93, 0xc1, 0x83, 0xba, 0xdf, 0x04, + 0xcc, 0xfc, 0xe7, 0x1f, 0x71, 0xeb, 0x08, 0x82, 0xdc, 0x59, 0x88, 0xe3, 0xc6, 0x26, 0xae, 0xf6, + 0xa2, 0xfc, 0xde, 0x8f, 0x44, 0xc0, 0x24, 0xd8, 0xb9, 0xa7, 0x01, 0xd8, 0xd6, 0x08, 0x3d, 0x0c, + 0xec, 0x41, 0xfb, 0x5f, 0x7e, 0xc4, 0xaf, 0xde, 0x78, 0x24, 0x1e, 0x03, 0x76, 0x91, 0xa7, 0x3b, + 0x83, 0xef, 0x07, 0x19, 0xd0, 0x1e, 0x79, 0x0a, 0x86, 0x5e, 0xb4, 0x0d, 0xdd, 0x51, 0x6b, 0xbd, + 0xa8, 0xff, 0x2b, 0xa7, 0x16, 0xf8, 0xc4, 0x60, 0x0d, 0xc3, 0xc2, 0x8e, 0x5a, 0xb3, 0x7b, 0xd1, + 0xfe, 0x37, 0x4e, 0xeb, 0x12, 0x10, 0xe2, 0x8a, 0x6a, 0x3b, 0xfd, 0xe8, 0xfd, 0xc7, 0x82, 0x58, + 0x10, 0x10, 0xa1, 0xc9, 0xef, 0x1d, 0xbc, 0xd7, 0x8b, 0xf6, 0x07, 0x42, 0x68, 0x8e, 0x9f, 0x7b, + 0x13, 0x24, 0xc9, 0x4f, 0x76, 0x9f, 0xae, 0x07, 0xf1, 0x9f, 0x70, 0x62, 0x8f, 0x82, 0xb4, 0x6c, + 0x3b, 0x55, 0x47, 0xeb, 0x6d, 0xec, 0x5b, 0xbc, 0xa7, 0x05, 0x7e, 0x2e, 0x0f, 0xc3, 0xb6, 0x53, + 0xad, 0x36, 0x79, 0x7e, 0xda, 0x83, 0xfc, 0x4f, 0x7f, 0xe4, 0x6e, 0x59, 0xb8, 0x34, 0xa4, 0xb7, + 0xaf, 0xee, 0x38, 0xa6, 0x41, 0x0f, 0x3c, 0x7a, 0x71, 0xf8, 0x21, 0xe7, 0xe0, 0x23, 0xc9, 0xcd, + 0x41, 0x8a, 0xe8, 0x62, 0x61, 0x13, 0xd3, 0xd3, 0xa9, 0x1e, 0x2c, 0xfe, 0x3b, 0x37, 0x40, 0x80, + 0xa8, 0xf0, 0xb3, 0x5f, 0x7b, 0x6d, 0x4a, 0xfa, 0xe6, 0x6b, 0x53, 0xd2, 0x1f, 0xbe, 0x36, 0x25, + 0x7d, 0xe8, 0x3b, 0x53, 0x03, 0xdf, 0xfc, 0xce, 0xd4, 0xc0, 0xef, 0x7d, 0x67, 0x6a, 0xa0, 0xfd, + 0x2e, 0x31, 0xcc, 0x1b, 0xf3, 0x06, 0xdb, 0x1f, 0x7e, 0x41, 0xae, 0x69, 0xce, 0x76, 0x73, 0x73, + 0xb6, 0x62, 0x34, 0xe8, 0x36, 0xae, 0xb7, 0x5b, 0xeb, 0x2e, 0x72, 0xe0, 0x3d, 0x51, 0x38, 0x5a, + 0x31, 0xec, 0x86, 0x61, 0x97, 0xd9, 0x7e, 0x2f, 0x2b, 0xf0, 0x1d, 0xdf, 0x94, 0xbf, 0xaa, 0x8f, + 0x4d, 0xdf, 0x8b, 0x30, 0x4a, 0x55, 0xa7, 0xdb, 0x5d, 0xd4, 0xdb, 0x7a, 0x06, 0x88, 0xaf, 0xff, + 0xdb, 0x38, 0xd5, 0x7a, 0xc4, 0x25, 0xa4, 0xa7, 0xf7, 0xeb, 0x30, 0xa9, 0x35, 0xcc, 0x3a, 0xa6, + 0xdb, 0xfc, 0x65, 0xb7, 0xae, 0x37, 0xbf, 0x6f, 0x70, 0x7e, 0x13, 0x1e, 0xf9, 0x82, 0xa0, 0xce, + 0x2d, 0xc2, 0xb8, 0x5a, 0xa9, 0x60, 0x33, 0xc0, 0xb2, 0x47, 0xb7, 0x08, 0x01, 0xd3, 0x9c, 0xd2, + 0xe5, 0x56, 0x78, 0xba, 0x53, 0xd7, 0xbc, 0x70, 0xaf, 0xcf, 0xf2, 0x16, 0xae, 0x61, 0xfd, 0x61, + 0x1d, 0x3b, 0x57, 0x0d, 0x6b, 0x87, 0x9b, 0xf7, 0x61, 0xd6, 0xd4, 0x20, 0xbb, 0xc1, 0x0c, 0xef, + 0x8b, 0xc2, 0x14, 0xab, 0x38, 0xbd, 0xa9, 0xda, 0xf8, 0xf4, 0x95, 0x47, 0x37, 0xb1, 0xa3, 0x3e, + 0x7a, 0xba, 0x62, 0x68, 0x3a, 0xef, 0x89, 0x09, 0xde, 0x2f, 0xa4, 0x7e, 0x96, 0xd7, 0x67, 0xdb, + 0x6e, 0xd3, 0xcb, 0xf3, 0x10, 0x9b, 0x33, 0x34, 0x1d, 0x4d, 0x42, 0xbc, 0x8a, 0x75, 0xa3, 0xc1, + 0xef, 0xdc, 0xb1, 0x02, 0xba, 0x1b, 0x06, 0xd5, 0x86, 0xd1, 0xd4, 0x1d, 0x76, 0x42, 0x51, 0x18, + 0xfe, 0xda, 0xcd, 0xe9, 0x81, 0xdf, 0xbf, 0x39, 0x1d, 0x5d, 0xd0, 0x1d, 0x85, 0x57, 0xe5, 0x62, + 0xaf, 0xbf, 0x3a, 0x2d, 0xc9, 0xcf, 0xc0, 0x50, 0x11, 0x57, 0x0e, 0xc2, 0xab, 0x88, 0x2b, 0x21, + 0x5e, 0x0f, 0x40, 0x62, 0x41, 0x77, 0xd8, 0xad, 0xc8, 0x13, 0x10, 0xd5, 0x74, 0x76, 0xd1, 0x26, + 0xd4, 0x3e, 0x81, 0x13, 0xd4, 0x22, 0xae, 0xb8, 0xa8, 0x55, 0x5c, 0x09, 0xa3, 0x12, 0xf6, 0x04, + 0x5e, 0x28, 0xfe, 0xde, 0x7f, 0x9c, 0x1a, 0x78, 0xf9, 0xb5, 0xa9, 0x81, 0x8e, 0x3d, 0xe1, 0x1f, + 0x03, 0xdc, 0xc4, 0xbc, 0x0b, 0xec, 0xea, 0x0e, 0x3b, 0x23, 0x71, 0xbb, 0xe1, 0xb7, 0x07, 0x41, + 0xe6, 0x38, 0xb6, 0xa3, 0xee, 0x68, 0x7a, 0xcd, 0xed, 0x09, 0xb5, 0xe9, 0x6c, 0x5f, 0xe3, 0x5d, + 0x71, 0x98, 0x77, 0x05, 0xc7, 0xe9, 0xde, 0x1b, 0xd9, 0xce, 0xa3, 0x2b, 0xdb, 0xa3, 0xcf, 0xe5, + 0x7f, 0x15, 0x05, 0xb4, 0xe6, 0xa8, 0x3b, 0x38, 0xdf, 0x74, 0xb6, 0x0d, 0x4b, 0xbb, 0xc6, 0x62, + 0x19, 0x06, 0x68, 0xa8, 0xbb, 0x65, 0xc7, 0xd8, 0xc1, 0xba, 0x4d, 0x4d, 0x33, 0x7c, 0xe6, 0xe8, + 0x6c, 0x1b, 0xff, 0x98, 0x25, 0x5d, 0x57, 0x78, 0xf0, 0xb3, 0xdf, 0x9e, 0xbe, 0xbf, 0xb7, 0x15, + 0x28, 0x32, 0x49, 0xae, 0x77, 0xd7, 0x29, 0x63, 0x74, 0x19, 0xd8, 0x25, 0x8b, 0x72, 0x5d, 0xb3, + 0x1d, 0x7e, 0x4f, 0xfb, 0xec, 0x6c, 0x7b, 0xdd, 0x67, 0x5b, 0xc5, 0x9c, 0xbd, 0xac, 0xd6, 0xb5, + 0xaa, 0xea, 0x18, 0x96, 0x7d, 0x71, 0x40, 0x49, 0x52, 0x56, 0x8b, 0x9a, 0xed, 0xa0, 0x75, 0x48, + 0x56, 0xb1, 0xbe, 0xc7, 0xd8, 0x46, 0xdf, 0x18, 0xdb, 0x04, 0xe1, 0x44, 0xb9, 0x3e, 0x0f, 0x48, + 0xf5, 0xe3, 0x89, 0x87, 0x49, 0xec, 0x7e, 0x65, 0x07, 0xf6, 0x01, 0xce, 0xf4, 0x1d, 0xc5, 0xb8, + 0x1a, 0x06, 0x65, 0xef, 0x03, 0xf0, 0xda, 0x44, 0x19, 0x18, 0x52, 0xab, 0x55, 0x0b, 0xdb, 0x36, + 0x3d, 0x00, 0x4c, 0x2a, 0xa2, 0x98, 0x1b, 0xff, 0xd7, 0x5f, 0x7a, 0x78, 0x24, 0xc0, 0xb1, 0x90, + 0x02, 0xb8, 0xe2, 0x92, 0x9e, 0xfa, 0xa4, 0x04, 0xe3, 0x2d, 0x2d, 0x22, 0x19, 0xa6, 0xf2, 0x1b, + 0xeb, 0x17, 0x57, 0x94, 0x85, 0x17, 0xf2, 0xeb, 0x0b, 0x2b, 0xcb, 0x65, 0x76, 0xe5, 0x7f, 0x79, + 0x6d, 0xb5, 0x34, 0xb7, 0x70, 0x61, 0xa1, 0x54, 0x4c, 0x0f, 0xa0, 0x69, 0x38, 0xd6, 0x06, 0xa7, + 0x58, 0x5a, 0x2c, 0xcd, 0xe7, 0xd7, 0x4b, 0x69, 0x09, 0xdd, 0x05, 0x27, 0xda, 0x32, 0x71, 0x51, + 0x22, 0x1d, 0x50, 0x94, 0x92, 0x8b, 0x12, 0x2d, 0x5c, 0xe8, 0x38, 0x8a, 0x1e, 0xea, 0xea, 0x3f, + 0xbb, 0xee, 0x70, 0x09, 0x8e, 0xa7, 0x77, 0x47, 0xe0, 0x68, 0x78, 0xca, 0x50, 0xf5, 0xbd, 0x0e, + 0xaf, 0x3e, 0x3b, 0x44, 0xb3, 0x8b, 0x10, 0xcd, 0xeb, 0x7b, 0xe8, 0x28, 0xcb, 0xa7, 0xcb, 0x4d, + 0xab, 0xce, 0x63, 0xd0, 0x10, 0x29, 0x6f, 0x58, 0x75, 0x12, 0x9b, 0xc4, 0x45, 0x7f, 0xe9, 0x64, + 0x8a, 0xdf, 0xde, 0xcf, 0xa5, 0x3f, 0xfa, 0xea, 0xf4, 0xc0, 0xe7, 0x5f, 0x9d, 0x1e, 0xf8, 0xc1, + 0xa7, 0xa6, 0x07, 0x5e, 0xfe, 0x83, 0x99, 0x81, 0xc2, 0x4e, 0x58, 0xbd, 0xaf, 0xf4, 0x9c, 0x4d, + 0x13, 0x79, 0x7d, 0x8f, 0x06, 0xa2, 0x55, 0xe9, 0x85, 0x38, 0x55, 0x4e, 0x1c, 0xa0, 0x4e, 0x85, + 0x0f, 0x50, 0x9f, 0xc3, 0xf5, 0xfa, 0x25, 0xdd, 0xb8, 0x4a, 0x7b, 0xd5, 0xb3, 0xc1, 0x47, 0x22, + 0x30, 0xd5, 0x32, 0x6d, 0xf2, 0x0c, 0xa3, 0xd3, 0xf3, 0xd7, 0x1c, 0x24, 0x8a, 0x22, 0x71, 0xc9, + 0xc0, 0x90, 0x8d, 0x2b, 0x86, 0x5e, 0x65, 0x23, 0x3d, 0xaa, 0x88, 0x22, 0x51, 0x5b, 0x57, 0x75, + 0xc3, 0xe6, 0x77, 0xee, 0x59, 0xa1, 0xf0, 0x71, 0x69, 0x7f, 0xf9, 0xc2, 0x88, 0x68, 0x49, 0xa8, + 0xf9, 0x68, 0xcf, 0x23, 0xe5, 0x1d, 0xa2, 0xa5, 0xab, 0x44, 0xe0, 0x58, 0xb9, 0x5f, 0xab, 0xfc, + 0x62, 0x04, 0xa6, 0xc3, 0x56, 0x21, 0x69, 0x9b, 0xed, 0xa8, 0x0d, 0xb3, 0x93, 0x59, 0xce, 0x43, + 0x72, 0x5d, 0xe0, 0xec, 0xdb, 0x2e, 0x37, 0xf6, 0x69, 0x97, 0x51, 0xb7, 0x29, 0x61, 0x98, 0x33, + 0x7d, 0x1a, 0xc6, 0xd5, 0xe3, 0x40, 0x96, 0xf9, 0x6c, 0x0c, 0x4e, 0xd0, 0x47, 0x59, 0x56, 0x43, + 0xd3, 0x9d, 0xd3, 0x15, 0x6b, 0xcf, 0x74, 0x68, 0xe2, 0x66, 0x6c, 0x71, 0xbb, 0x8c, 0x7b, 0xd5, + 0xb3, 0xac, 0xba, 0xc3, 0xc8, 0xd9, 0x82, 0xf8, 0x2a, 0xa1, 0x23, 0x16, 0x71, 0x0c, 0x47, 0xad, + 0x73, 0x4b, 0xb1, 0x02, 0x81, 0xb2, 0x87, 0x5c, 0x11, 0x06, 0xd5, 0xc4, 0x1b, 0xae, 0x3a, 0x56, + 0xb7, 0xd8, 0x7d, 0xf8, 0x28, 0x1d, 0x50, 0x09, 0x02, 0xa0, 0x57, 0xdf, 0x27, 0x21, 0xae, 0x36, + 0xd9, 0x55, 0x8e, 0x28, 0x19, 0x69, 0xb4, 0x20, 0x5f, 0x82, 0x21, 0x7e, 0xa0, 0x8c, 0xd2, 0x10, + 0xdd, 0xc1, 0x7b, 0xb4, 0x9d, 0x94, 0x42, 0x7e, 0xa2, 0x59, 0x88, 0x53, 0xe1, 0xf9, 0x04, 0x92, + 0x99, 0x6d, 0x91, 0x7e, 0x96, 0x0a, 0xa9, 0x30, 0x34, 0xf9, 0x19, 0x48, 0x14, 0x8d, 0x86, 0xa6, + 0x1b, 0x41, 0x6e, 0x49, 0xc6, 0x8d, 0xca, 0x6c, 0x36, 0x79, 0xbe, 0xa1, 0xb0, 0x02, 0x3a, 0x0c, + 0x83, 0xec, 0x7d, 0x04, 0xbf, 0x8e, 0xc2, 0x4b, 0xf2, 0x1c, 0x0c, 0x51, 0xde, 0x2b, 0x26, 0x42, + 0xfc, 0x65, 0x1d, 0x7f, 0x88, 0x41, 0x53, 0x53, 0xce, 0x3e, 0xe2, 0x09, 0x8b, 0x20, 0x56, 0x55, + 0x1d, 0x95, 0xeb, 0x4d, 0x7f, 0xcb, 0x6f, 0x86, 0x04, 0x67, 0x62, 0xa3, 0x33, 0x10, 0x35, 0x4c, + 0x9b, 0x5f, 0x28, 0xc9, 0x76, 0x52, 0x65, 0xc5, 0x2c, 0xc4, 0x48, 0xa6, 0xa2, 0x10, 0xe4, 0x82, + 0xd2, 0x31, 0xa8, 0x3e, 0xe9, 0x0b, 0xaa, 0xbe, 0x2e, 0xf7, 0xfd, 0x64, 0x5d, 0xda, 0xe2, 0x0e, + 0xae, 0xb3, 0x7c, 0x2a, 0x02, 0x53, 0xbe, 0xda, 0x2b, 0xd8, 0xb2, 0x35, 0x43, 0xe7, 0xf3, 0x39, + 0xf3, 0x16, 0xe4, 0x13, 0x92, 0xd7, 0x77, 0x70, 0x97, 0x37, 0x41, 0x34, 0x6f, 0x9a, 0x28, 0x0b, + 0x09, 0x5a, 0xae, 0x18, 0xcc, 0x5f, 0x62, 0x8a, 0x5b, 0x26, 0x75, 0xb6, 0xb1, 0xe5, 0x5c, 0x55, + 0x2d, 0xf7, 0x09, 0xa1, 0x28, 0xcb, 0x4f, 0x41, 0x72, 0xce, 0xd0, 0x6d, 0xac, 0xdb, 0x4d, 0x3a, + 0x06, 0x37, 0xeb, 0x46, 0x65, 0x87, 0x73, 0x60, 0x05, 0x62, 0x70, 0xd5, 0x34, 0x29, 0x65, 0x4c, + 0x21, 0x3f, 0x59, 0x6e, 0x58, 0x58, 0xeb, 0x68, 0xa2, 0xa7, 0xf6, 0x6f, 0x22, 0xae, 0xa4, 0x6b, + 0xa3, 0xff, 0x2d, 0xc1, 0xf1, 0xd6, 0x01, 0xb5, 0x83, 0xf7, 0xec, 0xfd, 0x8e, 0xa7, 0xe7, 0x21, + 0xb9, 0x4a, 0xdf, 0xf1, 0x5f, 0xc2, 0x7b, 0x28, 0x0b, 0x43, 0xb8, 0x7a, 0xe6, 0xec, 0xd9, 0x47, + 0x9f, 0x62, 0xde, 0x7e, 0x71, 0x40, 0x11, 0x00, 0x34, 0x05, 0x49, 0x1b, 0x57, 0xcc, 0x33, 0x67, + 0xcf, 0xed, 0x3c, 0xca, 0xdc, 0x8b, 0x64, 0x40, 0x2e, 0x28, 0x97, 0x20, 0x5a, 0xbf, 0xfe, 0xa9, + 0x69, 0xa9, 0x10, 0x87, 0xa8, 0xdd, 0x6c, 0xdc, 0x51, 0x1f, 0x79, 0x25, 0x0e, 0x33, 0x7e, 0x4a, + 0x1a, 0xa9, 0xdc, 0xac, 0x84, 0xdb, 0x20, 0xed, 0xb3, 0x01, 0xc5, 0xe8, 0x90, 0xcc, 0x76, 0xb5, + 0xa4, 0xfc, 0xeb, 0x12, 0xa4, 0xdc, 0x54, 0x69, 0x0d, 0x3b, 0xe8, 0xbc, 0x3f, 0xff, 0xe1, 0xc3, + 0xe6, 0xd8, 0x6c, 0xb8, 0x2d, 0x2f, 0xa5, 0x53, 0x7c, 0xe8, 0xe8, 0x09, 0xea, 0x88, 0xa6, 0x61, + 0xf3, 0x67, 0x65, 0x3d, 0x48, 0x5d, 0x64, 0xf4, 0x10, 0x20, 0x1a, 0xe1, 0xca, 0x57, 0x0c, 0x47, + 0xd3, 0x6b, 0x65, 0xd3, 0xb8, 0xca, 0x1f, 0xeb, 0x46, 0x95, 0x34, 0xad, 0xb9, 0x4c, 0x2b, 0x56, + 0x09, 0x9c, 0x08, 0x9d, 0x74, 0xb9, 0x04, 0xd3, 0x3b, 0x12, 0x04, 0x44, 0x11, 0x9d, 0x87, 0x21, + 0xb3, 0xb9, 0x59, 0x16, 0x11, 0x63, 0xf8, 0xcc, 0xf1, 0x76, 0xe3, 0x5f, 0xf8, 0x07, 0x8f, 0x00, + 0x83, 0x66, 0x73, 0x93, 0x78, 0xcb, 0x5d, 0x90, 0x6a, 0x23, 0xcc, 0xf0, 0x15, 0x4f, 0x0e, 0xfa, + 0xf9, 0x08, 0xae, 0x41, 0xd9, 0xb4, 0x34, 0xc3, 0xd2, 0x9c, 0x3d, 0x9a, 0xbf, 0x46, 0x95, 0xb4, + 0xa8, 0x58, 0xe5, 0x70, 0x79, 0x07, 0xc6, 0xd6, 0xe8, 0xfa, 0xd6, 0x93, 0xfc, 0xac, 0x27, 0x9f, + 0xd4, 0x5b, 0xbe, 0x8e, 0x92, 0x45, 0x5a, 0x24, 0x2b, 0x3c, 0xdb, 0xd1, 0x3b, 0x9f, 0xd8, 0xbf, + 0x77, 0x06, 0x33, 0xc4, 0x3f, 0x3e, 0x1a, 0x18, 0x9c, 0xcc, 0x39, 0xfd, 0xe1, 0xab, 0x5f, 0xc7, + 0xec, 0x95, 0x4d, 0x64, 0xbb, 0x4f, 0xaa, 0xd9, 0x1e, 0x61, 0x34, 0xdb, 0x73, 0x08, 0xc9, 0x4f, + 0xc1, 0xc8, 0xaa, 0x6a, 0x39, 0x6b, 0xd8, 0xb9, 0x88, 0xd5, 0x2a, 0xb6, 0x82, 0xb3, 0xee, 0x88, + 0x98, 0x75, 0x11, 0xc4, 0xe8, 0xd4, 0xca, 0x66, 0x1d, 0xfa, 0x5b, 0xde, 0x86, 0x18, 0xbd, 0x19, + 0xea, 0xce, 0xc8, 0x9c, 0x82, 0xcd, 0xc8, 0x24, 0x96, 0xee, 0x39, 0xd8, 0x16, 0xe9, 0x2d, 0x2d, + 0xa0, 0xc7, 0xc5, 0xbc, 0x1a, 0xed, 0x3e, 0xaf, 0x72, 0x47, 0xe4, 0xb3, 0x6b, 0x1d, 0x86, 0x0a, + 0x24, 0x14, 0x2f, 0x14, 0x5d, 0x41, 0x24, 0x4f, 0x10, 0xb4, 0x04, 0x63, 0xa6, 0x6a, 0x39, 0xf4, + 0x49, 0xcc, 0x36, 0xd5, 0x82, 0xfb, 0xfa, 0x74, 0xeb, 0xc8, 0x0b, 0x28, 0xcb, 0x5b, 0x19, 0x31, + 0xfd, 0x40, 0xf9, 0x8f, 0x62, 0x30, 0xc8, 0x8d, 0xf1, 0x26, 0x18, 0xe2, 0x66, 0xe5, 0xde, 0x79, + 0x62, 0xb6, 0x75, 0x62, 0x9a, 0x75, 0x27, 0x10, 0xce, 0x4f, 0xd0, 0xa0, 0xfb, 0x20, 0x51, 0xd9, + 0x56, 0x35, 0xbd, 0xac, 0x55, 0xc5, 0x56, 0xc3, 0x6b, 0x37, 0xa7, 0x87, 0xe6, 0x08, 0x6c, 0xa1, + 0xa8, 0x0c, 0xd1, 0xca, 0x85, 0x2a, 0xc9, 0x04, 0xb6, 0xb1, 0x56, 0xdb, 0x76, 0xf8, 0x08, 0xe3, + 0x25, 0xf4, 0x24, 0xc4, 0x88, 0x43, 0xf0, 0x07, 0x93, 0xd9, 0x96, 0x0d, 0x1f, 0x37, 0xd9, 0x2b, + 0x24, 0x48, 0xc3, 0x1f, 0xfa, 0xf6, 0xb4, 0xa4, 0x50, 0x0a, 0x34, 0x07, 0x23, 0x75, 0xd5, 0x76, + 0xca, 0x74, 0x06, 0x23, 0xcd, 0xc7, 0xf9, 0x7a, 0xbb, 0xc5, 0x20, 0xdc, 0xb0, 0x5c, 0xf4, 0x61, + 0x42, 0xc5, 0x40, 0x55, 0x74, 0x12, 0xd2, 0x94, 0x49, 0xc5, 0x68, 0x34, 0x34, 0x87, 0xe5, 0x56, + 0x83, 0xd4, 0xee, 0xa3, 0x04, 0x3e, 0x47, 0xc1, 0x34, 0xc3, 0x3a, 0x06, 0x49, 0xfa, 0x44, 0x8b, + 0xa2, 0xb0, 0xeb, 0xc8, 0x09, 0x02, 0xa0, 0x95, 0xf7, 0xc3, 0x98, 0x17, 0x1f, 0x19, 0x4a, 0x82, + 0x71, 0xf1, 0xc0, 0x14, 0xf1, 0x11, 0x98, 0xd4, 0xf1, 0x2e, 0xbd, 0x20, 0x1d, 0xc0, 0x4e, 0x52, + 0x6c, 0x44, 0xea, 0x2e, 0x07, 0x29, 0xee, 0x85, 0xd1, 0x8a, 0x30, 0x3e, 0xc3, 0x05, 0x8a, 0x3b, + 0xe2, 0x42, 0x29, 0xda, 0x51, 0x48, 0xa8, 0xa6, 0xc9, 0x10, 0x86, 0x79, 0x7c, 0x34, 0x4d, 0x5a, + 0x75, 0x0a, 0xc6, 0xa9, 0x8e, 0x16, 0xb6, 0x9b, 0x75, 0x87, 0x33, 0x49, 0x51, 0x9c, 0x31, 0x52, + 0xa1, 0x30, 0x38, 0xc5, 0xbd, 0x1b, 0x46, 0xf0, 0x15, 0xad, 0x8a, 0xf5, 0x0a, 0x66, 0x78, 0x23, + 0x14, 0x2f, 0x25, 0x80, 0x14, 0xe9, 0x01, 0x70, 0xe3, 0x5e, 0x59, 0xc4, 0xe4, 0x51, 0xc6, 0x4f, + 0xc0, 0xf3, 0x0c, 0x2c, 0x67, 0x20, 0x56, 0x54, 0x1d, 0x95, 0x24, 0x18, 0xce, 0x2e, 0x9b, 0x68, + 0x52, 0x0a, 0xf9, 0x29, 0xbf, 0x1e, 0x81, 0xd8, 0x65, 0xc3, 0xc1, 0xe8, 0x31, 0x5f, 0x02, 0x38, + 0xda, 0xce, 0x9f, 0xd7, 0xb4, 0x9a, 0x8e, 0xab, 0x4b, 0x76, 0xcd, 0xf7, 0x3d, 0x05, 0xcf, 0x9d, + 0x22, 0x01, 0x77, 0x9a, 0x84, 0xb8, 0x65, 0x34, 0xf5, 0xaa, 0xb8, 0xc9, 0x4b, 0x0b, 0xa8, 0x04, + 0x09, 0xd7, 0x4b, 0x62, 0xbd, 0xbc, 0x64, 0x8c, 0x78, 0x09, 0xf1, 0x61, 0x0e, 0x50, 0x86, 0x36, + 0xb9, 0xb3, 0x14, 0x20, 0xe9, 0x06, 0x2f, 0xee, 0x6d, 0xfd, 0x39, 0xac, 0x47, 0x46, 0x26, 0x13, + 0xb7, 0xef, 0x5d, 0xe3, 0x31, 0x8f, 0x4b, 0xbb, 0x15, 0xdc, 0x7a, 0x01, 0xb7, 0xe2, 0xdf, 0x76, + 0x18, 0xa2, 0x7a, 0x79, 0x6e, 0xc5, 0xbe, 0xef, 0x70, 0x1c, 0x92, 0xb6, 0x56, 0xd3, 0x55, 0xa7, + 0x69, 0x61, 0xee, 0x79, 0x1e, 0x40, 0xfe, 0x8a, 0x04, 0x83, 0xcc, 0x93, 0x7d, 0x76, 0x93, 0xda, + 0xdb, 0x2d, 0xd2, 0xc9, 0x6e, 0xd1, 0x83, 0xdb, 0x2d, 0x0f, 0xe0, 0x0a, 0x63, 0xf3, 0x27, 0xf7, + 0x6d, 0x32, 0x06, 0x26, 0xe2, 0x9a, 0x56, 0xe3, 0x03, 0xd5, 0x47, 0x24, 0xff, 0x07, 0x89, 0x24, + 0xb1, 0xbc, 0x1e, 0xe5, 0x61, 0x44, 0xc8, 0x55, 0xde, 0xaa, 0xab, 0x35, 0xee, 0x3b, 0x27, 0x3a, + 0x0a, 0x77, 0xa1, 0xae, 0xd6, 0x94, 0x61, 0x2e, 0x0f, 0x29, 0xb4, 0xef, 0x87, 0x48, 0x87, 0x7e, + 0x08, 0x74, 0x7c, 0xf4, 0x60, 0x1d, 0x1f, 0xe8, 0xa2, 0x58, 0xb8, 0x8b, 0xbe, 0x18, 0xa1, 0x8b, + 0x19, 0xd3, 0xb0, 0xd5, 0xfa, 0x8f, 0x63, 0x44, 0x1c, 0x83, 0xa4, 0x69, 0xd4, 0xcb, 0xac, 0x86, + 0xdd, 0x70, 0x4f, 0x98, 0x46, 0x5d, 0x69, 0xe9, 0xf6, 0xf8, 0x6d, 0x1a, 0x2e, 0x83, 0xb7, 0xc1, + 0x6a, 0x43, 0x61, 0xab, 0x59, 0x90, 0x62, 0xa6, 0xe0, 0x73, 0xd9, 0x23, 0xc4, 0x06, 0x74, 0x72, + 0x94, 0x5a, 0xe7, 0x5e, 0x26, 0x36, 0xc3, 0x54, 0x38, 0x1e, 0xa1, 0x60, 0xa1, 0xbf, 0xdd, 0x2a, + 0xd8, 0xef, 0x96, 0x0a, 0xc7, 0x93, 0xff, 0xa6, 0x04, 0xb0, 0x48, 0x2c, 0x4b, 0xf5, 0x25, 0xb3, + 0x90, 0x4d, 0x45, 0x28, 0x07, 0x5a, 0x9e, 0xea, 0xd4, 0x69, 0xbc, 0xfd, 0x94, 0xed, 0x97, 0x7b, + 0x0e, 0x46, 0x3c, 0x67, 0xb4, 0xb1, 0x10, 0x66, 0xaa, 0x4b, 0x56, 0xbd, 0x86, 0x1d, 0x25, 0x75, + 0xc5, 0x57, 0x92, 0xff, 0xb9, 0x04, 0x49, 0x2a, 0xd3, 0x12, 0x76, 0xd4, 0x40, 0x1f, 0x4a, 0x07, + 0xef, 0xc3, 0x13, 0x00, 0x8c, 0x8d, 0xad, 0x5d, 0xc3, 0xdc, 0xb3, 0x92, 0x14, 0xb2, 0xa6, 0x5d, + 0xc3, 0xe8, 0x9c, 0x6b, 0xf0, 0x68, 0x77, 0x83, 0x8b, 0xac, 0x9b, 0x9b, 0xfd, 0x08, 0x0c, 0xd1, + 0x4f, 0x54, 0xed, 0xda, 0x3c, 0x91, 0x1e, 0xd4, 0x9b, 0x8d, 0xf5, 0x5d, 0x5b, 0x7e, 0x11, 0x86, + 0xd6, 0x77, 0xd9, 0xde, 0xc8, 0x31, 0x48, 0x5a, 0x86, 0xc1, 0xe7, 0x64, 0x96, 0x0b, 0x25, 0x08, + 0x80, 0x4e, 0x41, 0x62, 0x3f, 0x20, 0xe2, 0xed, 0x07, 0x78, 0x1b, 0x1a, 0xd1, 0xbe, 0x36, 0x34, + 0x4e, 0xfd, 0x3b, 0x09, 0x86, 0x7d, 0xf1, 0x01, 0x3d, 0x0a, 0x87, 0x0a, 0x8b, 0x2b, 0x73, 0x97, + 0xca, 0x0b, 0xc5, 0xf2, 0x85, 0xc5, 0xfc, 0xbc, 0xf7, 0x86, 0x2b, 0x7b, 0xf8, 0xfa, 0x8d, 0x19, + 0xe4, 0xc3, 0xdd, 0xd0, 0xe9, 0x8e, 0x12, 0x3a, 0x0d, 0x93, 0x41, 0x92, 0x7c, 0x61, 0xad, 0xb4, + 0xbc, 0x9e, 0x96, 0xb2, 0x87, 0xae, 0xdf, 0x98, 0x19, 0xf7, 0x51, 0xe4, 0x37, 0x6d, 0xac, 0x3b, + 0xad, 0x04, 0x73, 0x2b, 0x4b, 0x4b, 0x0b, 0xeb, 0xe9, 0x48, 0x0b, 0x01, 0x0f, 0xd8, 0x0f, 0xc0, + 0x78, 0x90, 0x60, 0x79, 0x61, 0x31, 0x1d, 0xcd, 0xa2, 0xeb, 0x37, 0x66, 0x46, 0x7d, 0xd8, 0xcb, + 0x5a, 0x3d, 0x9b, 0xf8, 0xc0, 0xa7, 0xa7, 0x06, 0x7e, 0xe5, 0x97, 0xa7, 0x24, 0xa2, 0xd9, 0x48, + 0x20, 0x46, 0xa0, 0x87, 0xe0, 0xc8, 0xda, 0xc2, 0xfc, 0x72, 0xa9, 0x58, 0x5e, 0x5a, 0x9b, 0x17, + 0x7b, 0xd0, 0x42, 0xbb, 0xb1, 0xeb, 0x37, 0x66, 0x86, 0xb9, 0x4a, 0x9d, 0xb0, 0x57, 0x95, 0xd2, + 0xe5, 0x95, 0xf5, 0x52, 0x5a, 0x62, 0xd8, 0xab, 0x16, 0xbe, 0x62, 0x38, 0xec, 0x1b, 0x76, 0x8f, + 0xc0, 0xd1, 0x36, 0xd8, 0xae, 0x62, 0xe3, 0xd7, 0x6f, 0xcc, 0x8c, 0xac, 0x5a, 0x98, 0x8d, 0x1f, + 0x4a, 0x31, 0x0b, 0x99, 0x56, 0x8a, 0x95, 0xd5, 0x95, 0xb5, 0xfc, 0x62, 0x7a, 0x26, 0x9b, 0xbe, + 0x7e, 0x63, 0x26, 0x25, 0x82, 0x21, 0xdd, 0xe8, 0x77, 0x35, 0xbb, 0x93, 0x2b, 0x9e, 0x3f, 0x7d, + 0x18, 0xee, 0xe9, 0x70, 0xc6, 0x24, 0x4e, 0x27, 0x0e, 0x74, 0xca, 0xd4, 0x71, 0x9f, 0x3d, 0xdb, + 0x63, 0xfb, 0xb9, 0xf7, 0xd2, 0xe9, 0xe0, 0x27, 0x58, 0xd9, 0xae, 0x8b, 0x3b, 0xf9, 0x83, 0x12, + 0x8c, 0x5e, 0xd4, 0x6c, 0xc7, 0xb0, 0xb4, 0x8a, 0x5a, 0xa7, 0x2f, 0xb7, 0xce, 0xf5, 0x1b, 0x5b, + 0x43, 0x43, 0xfd, 0x69, 0x18, 0xbc, 0xa2, 0xd6, 0x59, 0x50, 0x8b, 0xd2, 0x0f, 0xcd, 0x74, 0x38, + 0xf2, 0x71, 0x43, 0x9b, 0x60, 0xc0, 0xc8, 0xe4, 0x5f, 0x8b, 0xc0, 0x18, 0x1d, 0x0c, 0x36, 0xfb, + 0x04, 0x19, 0x59, 0x63, 0x15, 0x20, 0x66, 0xa9, 0x0e, 0xdf, 0x34, 0x2c, 0xcc, 0xf2, 0xd3, 0xc7, + 0xfb, 0xfa, 0x38, 0x4b, 0x2b, 0xe2, 0x8a, 0x42, 0x69, 0xd1, 0xdb, 0x21, 0xd1, 0x50, 0x77, 0xcb, + 0x94, 0x0f, 0x5b, 0xb9, 0xe4, 0xf7, 0xc7, 0xe7, 0xd6, 0xcd, 0xe9, 0xb1, 0x3d, 0xb5, 0x51, 0xcf, + 0xc9, 0x82, 0x8f, 0xac, 0x0c, 0x35, 0xd4, 0x5d, 0x22, 0x22, 0x32, 0x61, 0x8c, 0x40, 0x2b, 0xdb, + 0xaa, 0x5e, 0xc3, 0xac, 0x11, 0xba, 0x05, 0x5a, 0xb8, 0xb8, 0xef, 0x46, 0x0e, 0x7b, 0x8d, 0xf8, + 0xd8, 0xc9, 0xca, 0x48, 0x43, 0xdd, 0x9d, 0xa3, 0x00, 0xd2, 0x62, 0x2e, 0xf1, 0xd1, 0x57, 0xa7, + 0x07, 0xe8, 0x89, 0xee, 0xb7, 0x24, 0x00, 0xcf, 0x62, 0xe8, 0xed, 0x90, 0xae, 0xb8, 0x25, 0x4a, + 0x2b, 0xce, 0x26, 0xef, 0xef, 0xd4, 0x17, 0x21, 0x7b, 0xb3, 0xb9, 0xf9, 0x9b, 0x37, 0xa7, 0x25, + 0x65, 0xac, 0x12, 0xea, 0x8a, 0xb7, 0xc1, 0x70, 0xd3, 0xac, 0xaa, 0x0e, 0x2e, 0xd3, 0x75, 0x5c, + 0xa4, 0xe7, 0x3c, 0x3f, 0x45, 0x78, 0xdd, 0xba, 0x39, 0x8d, 0x98, 0x5a, 0x3e, 0x62, 0x99, 0xce, + 0xfe, 0xc0, 0x20, 0x84, 0xc0, 0xa7, 0xd3, 0xd7, 0x25, 0x18, 0x2e, 0xfa, 0xee, 0x54, 0x66, 0x60, + 0xa8, 0x61, 0xe8, 0xda, 0x0e, 0xf7, 0xc7, 0xa4, 0x22, 0x8a, 0x28, 0x0b, 0x09, 0xf6, 0x98, 0xd5, + 0xd9, 0x13, 0x5b, 0xa1, 0xa2, 0x4c, 0xa8, 0xae, 0xe2, 0x4d, 0x5b, 0x13, 0xbd, 0xa1, 0x88, 0x22, + 0xba, 0x00, 0x69, 0x1b, 0x57, 0x9a, 0x96, 0xe6, 0xec, 0x95, 0x2b, 0x86, 0xee, 0xa8, 0x15, 0x87, + 0x3d, 0x8b, 0x2c, 0x1c, 0xbb, 0x75, 0x73, 0xfa, 0x08, 0x93, 0x35, 0x8c, 0x21, 0x2b, 0x63, 0x02, + 0x34, 0xc7, 0x20, 0xa4, 0x85, 0x2a, 0x76, 0x54, 0xad, 0x6e, 0x67, 0xd8, 0xe5, 0x04, 0x51, 0xf4, + 0xe9, 0xf2, 0xb9, 0x21, 0xff, 0xc6, 0xd6, 0x05, 0x48, 0x1b, 0x26, 0xb6, 0x02, 0x89, 0xa8, 0x14, + 0x6e, 0x39, 0x8c, 0x21, 0x2b, 0x63, 0x02, 0x24, 0x92, 0x54, 0x87, 0x74, 0xb3, 0x58, 0x28, 0x9a, + 0xcd, 0x4d, 0x6f, 0x3f, 0x6c, 0xb2, 0xa5, 0x37, 0xf2, 0xfa, 0x5e, 0xe1, 0x31, 0x8f, 0x7b, 0x98, + 0x4e, 0xfe, 0xc6, 0x97, 0x1e, 0x9e, 0xe4, 0xae, 0xe1, 0xed, 0x4f, 0x5d, 0xc2, 0x7b, 0xa4, 0xfb, + 0x39, 0xea, 0x2a, 0xc5, 0x24, 0x69, 0xe7, 0x8b, 0xaa, 0x56, 0x17, 0xcf, 0xfb, 0x15, 0x5e, 0x42, + 0x39, 0x18, 0xb4, 0x1d, 0xd5, 0x69, 0xda, 0xfc, 0xa4, 0x57, 0xee, 0xe4, 0x6a, 0x05, 0x43, 0xaf, + 0xae, 0x51, 0x4c, 0x85, 0x53, 0xa0, 0x0b, 0x30, 0xc8, 0x8f, 0xd0, 0xe3, 0xfb, 0x1e, 0xdf, 0xf4, + 0xae, 0x04, 0xa3, 0x26, 0x16, 0xa9, 0xe2, 0x3a, 0xae, 0xb1, 0xb4, 0x6a, 0x5b, 0x25, 0xab, 0x0f, + 0xfa, 0xed, 0xbd, 0xc2, 0xc2, 0xbe, 0x07, 0x21, 0xb7, 0x54, 0x98, 0x9f, 0xac, 0x8c, 0xb9, 0xa0, + 0x35, 0x0a, 0x41, 0x97, 0x02, 0x97, 0x7f, 0xf9, 0x07, 0x2a, 0xef, 0xee, 0xa4, 0xbe, 0xcf, 0xa7, + 0xc5, 0xfe, 0x84, 0xff, 0xea, 0xf0, 0x05, 0x48, 0x37, 0xf5, 0x4d, 0x43, 0xa7, 0x6f, 0x70, 0x79, + 0x7e, 0x4f, 0xd6, 0x77, 0x51, 0xbf, 0x73, 0x84, 0x31, 0x64, 0x65, 0xcc, 0x05, 0x5d, 0x64, 0xab, + 0x80, 0x2a, 0x8c, 0x7a, 0x58, 0x74, 0xa0, 0x26, 0x7b, 0x0e, 0xd4, 0xbb, 0xf8, 0x40, 0x3d, 0x14, + 0x6e, 0xc5, 0x1b, 0xab, 0x23, 0x2e, 0x90, 0x90, 0xa1, 0x8b, 0x00, 0x5e, 0x78, 0xa0, 0xfb, 0x14, + 0xc3, 0x9d, 0x3b, 0xde, 0x8b, 0x31, 0x62, 0xbd, 0xe7, 0xd1, 0xa2, 0x77, 0xc2, 0x44, 0x43, 0xd3, + 0xcb, 0x36, 0xae, 0x6f, 0x95, 0xb9, 0x81, 0x09, 0x4b, 0xfa, 0x09, 0xa5, 0xc2, 0xe2, 0xfe, 0xfc, + 0xe1, 0xd6, 0xcd, 0xe9, 0x2c, 0x0f, 0xa1, 0xad, 0x2c, 0x65, 0x65, 0xbc, 0xa1, 0xe9, 0x6b, 0xb8, + 0xbe, 0x55, 0x74, 0x61, 0xb9, 0xd4, 0x07, 0x5e, 0x9d, 0x1e, 0xe0, 0xc3, 0x75, 0x40, 0x3e, 0x47, + 0xf7, 0xce, 0xf9, 0x30, 0xc3, 0x36, 0x59, 0x93, 0xa8, 0xa2, 0xc0, 0xaf, 0x1a, 0x78, 0x00, 0x36, + 0xcc, 0x5f, 0xfe, 0x83, 0x19, 0x49, 0xfe, 0x9c, 0x04, 0x83, 0xc5, 0xcb, 0xab, 0xaa, 0x66, 0xa1, + 0x05, 0x18, 0xf7, 0x3c, 0x27, 0x38, 0xc8, 0x8f, 0xdf, 0xba, 0x39, 0x9d, 0x09, 0x3b, 0x97, 0x3b, + 0xca, 0x3d, 0x07, 0x16, 0xc3, 0x7c, 0xa1, 0xd3, 0xc2, 0x35, 0xc0, 0xaa, 0x05, 0x45, 0x6e, 0x5d, + 0xd6, 0x86, 0xd4, 0x2c, 0xc1, 0x10, 0x93, 0xd6, 0x46, 0x39, 0x88, 0x9b, 0xe4, 0x07, 0x3f, 0x18, + 0x98, 0xea, 0xe8, 0xbc, 0x14, 0xdf, 0xdd, 0xc8, 0x24, 0x24, 0xf2, 0x87, 0x23, 0x00, 0xc5, 0xcb, + 0x97, 0xd7, 0x2d, 0xcd, 0xac, 0x63, 0xe7, 0x76, 0x6a, 0xbe, 0x0e, 0x87, 0x7c, 0xab, 0x24, 0xab, + 0x12, 0xd2, 0x7e, 0xe6, 0xd6, 0xcd, 0xe9, 0xe3, 0x61, 0xed, 0x7d, 0x68, 0xb2, 0x32, 0xe1, 0xad, + 0x97, 0xac, 0x4a, 0x5b, 0xae, 0x55, 0xdb, 0x71, 0xb9, 0x46, 0x3b, 0x73, 0xf5, 0xa1, 0xf9, 0xb9, + 0x16, 0x6d, 0xa7, 0xbd, 0x69, 0xd7, 0x60, 0xd8, 0x33, 0x89, 0x8d, 0x8a, 0x90, 0x70, 0xf8, 0x6f, + 0x6e, 0x61, 0xb9, 0xb3, 0x85, 0x05, 0x19, 0xb7, 0xb2, 0x4b, 0x29, 0xff, 0x99, 0x04, 0xe0, 0xf9, + 0xec, 0x4f, 0xa7, 0x8b, 0x91, 0x50, 0xce, 0x03, 0x6f, 0xf4, 0x40, 0xa9, 0x1a, 0xa7, 0x0e, 0xd9, + 0xf3, 0xe7, 0x22, 0x30, 0xb1, 0x21, 0x22, 0xcf, 0x4f, 0xbd, 0x0d, 0x56, 0x61, 0x08, 0xeb, 0x8e, + 0xa5, 0x51, 0x23, 0x90, 0xde, 0x7e, 0xa4, 0x53, 0x6f, 0xb7, 0xd1, 0x89, 0x7e, 0x44, 0x4a, 0x6c, + 0xba, 0x73, 0x36, 0x21, 0x6b, 0xfc, 0x42, 0x14, 0x32, 0x9d, 0x28, 0xd1, 0x1c, 0x8c, 0x55, 0x2c, + 0xcc, 0x2e, 0x5e, 0xf9, 0x77, 0xfe, 0x0a, 0x59, 0x2f, 0xb3, 0x0c, 0x21, 0xc8, 0xca, 0xa8, 0x80, + 0xf0, 0xd9, 0xa3, 0x06, 0x24, 0xed, 0x23, 0x6e, 0x47, 0xef, 0x6f, 0xf5, 0x97, 0xe7, 0xc9, 0x7c, + 0xfa, 0x10, 0x8d, 0x04, 0x19, 0xb0, 0xf9, 0x63, 0xd4, 0x83, 0xd2, 0x09, 0xe4, 0x25, 0x18, 0xd3, + 0x74, 0xcd, 0xd1, 0xd4, 0x7a, 0x79, 0x53, 0xad, 0xab, 0x7a, 0xe5, 0x20, 0x59, 0x33, 0x0b, 0xf9, + 0xbc, 0xd9, 0x10, 0x3b, 0x59, 0x19, 0xe5, 0x90, 0x02, 0x03, 0xa0, 0x8b, 0x30, 0x24, 0x9a, 0x8a, + 0x1d, 0x28, 0xdb, 0x10, 0xe4, 0xbe, 0x04, 0xef, 0xe7, 0xa3, 0x30, 0xae, 0xe0, 0xea, 0xff, 0xef, + 0x8a, 0xfd, 0x75, 0xc5, 0x12, 0x00, 0x1b, 0xee, 0x24, 0xc0, 0x1e, 0xa0, 0x37, 0x48, 0xc0, 0x48, + 0x32, 0x0e, 0x45, 0xdb, 0xf1, 0xf5, 0xc7, 0xcd, 0x08, 0xa4, 0xfc, 0xfd, 0xf1, 0x17, 0x74, 0x56, + 0x42, 0x0b, 0x5e, 0x24, 0x8a, 0xf1, 0x4f, 0xef, 0x76, 0x88, 0x44, 0x2d, 0xde, 0xdb, 0x3d, 0x04, + 0xfd, 0x8f, 0x08, 0x0c, 0xae, 0xaa, 0x96, 0xda, 0xb0, 0x51, 0xa5, 0x25, 0xd3, 0x14, 0xdb, 0x8f, + 0x2d, 0x1f, 0x58, 0xe7, 0xbb, 0x1d, 0x3d, 0x12, 0xcd, 0x8f, 0xb6, 0x49, 0x34, 0xdf, 0x02, 0xa3, + 0x64, 0x39, 0xec, 0xbb, 0xc2, 0x40, 0xac, 0x3d, 0x52, 0x38, 0xea, 0x71, 0x09, 0xd6, 0xb3, 0xd5, + 0xf2, 0x65, 0xff, 0x1d, 0x86, 0x61, 0x82, 0xe1, 0x05, 0x66, 0x42, 0x7e, 0xd8, 0x5b, 0x96, 0xfa, + 0x2a, 0x65, 0x05, 0x1a, 0xea, 0x6e, 0x89, 0x15, 0xd0, 0x22, 0xa0, 0x6d, 0x77, 0x67, 0xa4, 0xec, + 0x99, 0x93, 0xd0, 0x9f, 0xb8, 0x75, 0x73, 0xfa, 0x28, 0xa3, 0x6f, 0xc5, 0x91, 0x95, 0x71, 0x0f, + 0x28, 0xb8, 0x3d, 0x0e, 0x40, 0xf4, 0x2a, 0xb3, 0x2b, 0xdc, 0x6c, 0xb9, 0x73, 0xe8, 0xd6, 0xcd, + 0xe9, 0x71, 0xc6, 0xc5, 0xab, 0x93, 0x95, 0x24, 0x29, 0x14, 0xc9, 0x6f, 0x9f, 0x67, 0x7f, 0x5a, + 0x02, 0xe4, 0x85, 0x7c, 0x05, 0xdb, 0x26, 0x59, 0x9f, 0x91, 0x44, 0xdc, 0x97, 0x35, 0x4b, 0xdd, + 0x13, 0x71, 0x8f, 0x5e, 0x24, 0xe2, 0xbe, 0x91, 0xf2, 0x94, 0x17, 0x1e, 0x23, 0xbd, 0xee, 0x33, + 0x73, 0x17, 0x09, 0xc7, 0xc3, 0x01, 0xf9, 0x5f, 0x4a, 0x70, 0xb4, 0xc5, 0xa3, 0x5c, 0x61, 0xff, + 0x12, 0x20, 0xcb, 0x57, 0xc9, 0xbf, 0xa3, 0xc8, 0x84, 0xde, 0xb7, 0x83, 0x8e, 0x5b, 0x2d, 0x71, + 0xf7, 0xf6, 0x45, 0x78, 0x76, 0x61, 0xfe, 0x9f, 0x49, 0x30, 0xe9, 0x6f, 0xde, 0x55, 0x64, 0x19, + 0x52, 0xfe, 0xd6, 0xb9, 0x0a, 0xf7, 0xf4, 0xa3, 0x02, 0x97, 0x3e, 0x40, 0x8f, 0x9e, 0xf5, 0x86, + 0x2b, 0xdb, 0x3b, 0x7b, 0xb4, 0x6f, 0x6b, 0x08, 0x99, 0xc2, 0xc3, 0x36, 0x46, 0xfb, 0xe3, 0xff, + 0x48, 0x10, 0x5b, 0x35, 0x8c, 0x3a, 0x32, 0x60, 0x5c, 0x37, 0x9c, 0x32, 0xf1, 0x2c, 0x5c, 0xf5, + 0xdf, 0x5b, 0x4f, 0x16, 0xe6, 0xf6, 0x67, 0xa4, 0xef, 0xdd, 0x9c, 0x6e, 0x65, 0xa5, 0x8c, 0xe9, + 0x86, 0x53, 0xa0, 0x10, 0x7e, 0x75, 0xfd, 0x9d, 0x30, 0x12, 0x6c, 0x8c, 0x45, 0xc9, 0xe7, 0xf6, + 0xdd, 0x58, 0x90, 0xcd, 0xad, 0x9b, 0xd3, 0x93, 0xde, 0x88, 0x71, 0xc1, 0xb2, 0x92, 0xda, 0xf4, + 0xb5, 0xce, 0xae, 0x77, 0xfd, 0xe0, 0xd5, 0x69, 0xe9, 0xd4, 0x97, 0x25, 0x00, 0x6f, 0xe7, 0x01, + 0x3d, 0x04, 0x47, 0x0a, 0x2b, 0xcb, 0xc5, 0xf2, 0xda, 0x7a, 0x7e, 0x7d, 0x63, 0x2d, 0x78, 0xc7, + 0x5b, 0x6c, 0x8f, 0xdb, 0x26, 0xae, 0x68, 0x5b, 0x1a, 0xae, 0xa2, 0xfb, 0x60, 0x32, 0x88, 0x4d, + 0x4a, 0xa5, 0x62, 0x5a, 0xca, 0xa6, 0xae, 0xdf, 0x98, 0x49, 0xb0, 0x5c, 0x0c, 0x57, 0xd1, 0x49, + 0x38, 0xd4, 0x8a, 0xb7, 0xb0, 0x3c, 0x9f, 0x8e, 0x64, 0x47, 0xae, 0xdf, 0x98, 0x49, 0xba, 0x49, + 0x1b, 0x92, 0x01, 0xf9, 0x31, 0x39, 0xbf, 0x68, 0x16, 0xae, 0xdf, 0x98, 0x19, 0x64, 0x06, 0xcc, + 0xc6, 0x3e, 0xf0, 0xe9, 0xa9, 0x81, 0xdb, 0x7e, 0x13, 0xfc, 0x4f, 0x86, 0x3a, 0xee, 0x7a, 0xd7, + 0xb0, 0x8e, 0x6d, 0xcd, 0x3e, 0xd0, 0xae, 0x77, 0x5f, 0x3b, 0xe9, 0xf2, 0xef, 0xc6, 0x21, 0x35, + 0xcf, 0x5a, 0x21, 0x1d, 0x81, 0xd1, 0xcf, 0xc0, 0xa0, 0x49, 0xa7, 0x11, 0xf7, 0x18, 0xad, 0x83, + 0xc3, 0xb3, 0xc9, 0xc6, 0xbd, 0xcb, 0xc5, 0xa6, 0x1e, 0x9b, 0x5f, 0xe6, 0x60, 0x77, 0xcc, 0xbc, + 0x5b, 0x53, 0xa9, 0x7d, 0xed, 0xf7, 0xb0, 0x9c, 0x85, 0x6f, 0xad, 0x84, 0xf9, 0xc9, 0xec, 0x5e, + 0xc8, 0x3a, 0x81, 0xb0, 0xdb, 0x61, 0xef, 0x93, 0xe0, 0x10, 0xc5, 0xf2, 0x26, 0x62, 0x8a, 0x29, + 0x92, 0xfd, 0x53, 0x9d, 0x54, 0x58, 0x54, 0x6d, 0xef, 0xae, 0x07, 0xbb, 0xcf, 0x75, 0x0f, 0x9f, + 0x08, 0x8f, 0xfb, 0x1a, 0x0f, 0xb3, 0x95, 0x95, 0x89, 0x7a, 0x0b, 0xa5, 0x8d, 0xe6, 0x03, 0x17, + 0xfa, 0x62, 0xfb, 0xdb, 0x6a, 0xf7, 0x5f, 0xee, 0x7b, 0x06, 0x86, 0xbd, 0x58, 0x62, 0xf3, 0xff, + 0xfb, 0xd2, 0xff, 0xdc, 0xe1, 0x27, 0x46, 0xef, 0x97, 0xe0, 0x90, 0x37, 0x9b, 0xfb, 0xd9, 0xb2, + 0xff, 0x8f, 0xf3, 0xe0, 0x3e, 0x16, 0x42, 0x61, 0xe3, 0xb4, 0xe5, 0x2b, 0x2b, 0x93, 0xcd, 0x56, + 0x52, 0xb2, 0x04, 0x1b, 0xf1, 0x47, 0x56, 0x3b, 0x23, 0x3e, 0x01, 0xd9, 0x7f, 0x68, 0x0e, 0x32, + 0x60, 0xff, 0xb3, 0xc3, 0x34, 0x2c, 0x07, 0x57, 0xe9, 0x86, 0x5c, 0x42, 0x71, 0xcb, 0xf2, 0x32, + 0xa0, 0xd6, 0xce, 0x0d, 0x5f, 0x60, 0xf4, 0xde, 0xa7, 0xa0, 0x49, 0x88, 0xfb, 0xaf, 0xf8, 0xb1, + 0x42, 0x2e, 0xf1, 0x01, 0x3e, 0x7d, 0xde, 0xf6, 0x31, 0xff, 0xed, 0x08, 0x9c, 0xf2, 0x1f, 0x0f, + 0xbd, 0xd4, 0xc4, 0xd6, 0x9e, 0x3b, 0x44, 0x4d, 0xb5, 0xa6, 0xe9, 0xfe, 0x57, 0x10, 0x47, 0xfd, + 0x13, 0x3e, 0xc5, 0x15, 0x76, 0x92, 0x3f, 0x20, 0xc1, 0xf0, 0xaa, 0x5a, 0xc3, 0x0a, 0x7e, 0xa9, + 0x89, 0x6d, 0xa7, 0xcd, 0x2d, 0xf3, 0xc3, 0x30, 0x68, 0x6c, 0x6d, 0x89, 0x33, 0xed, 0x98, 0xc2, + 0x4b, 0x44, 0xe7, 0xba, 0xd6, 0xd0, 0xd8, 0x75, 0xb0, 0x98, 0xc2, 0x0a, 0x68, 0x1a, 0x86, 0x2b, + 0x46, 0x53, 0xe7, 0x43, 0x2e, 0x13, 0x13, 0xdf, 0x5a, 0x69, 0xea, 0x6c, 0xc8, 0x11, 0x23, 0x5a, + 0xf8, 0x0a, 0xb6, 0x6c, 0xf6, 0x75, 0xc9, 0x84, 0x22, 0x8a, 0xf2, 0xd3, 0x90, 0x62, 0x92, 0xf0, + 0xc9, 0xf8, 0x28, 0x24, 0xe8, 0x4d, 0x2b, 0x4f, 0x9e, 0x21, 0x52, 0xbe, 0xc4, 0xee, 0xaa, 0x33, + 0xfe, 0x4c, 0x24, 0x56, 0x28, 0x14, 0x3a, 0x5a, 0xf9, 0x64, 0xef, 0xa8, 0xc1, 0x6c, 0xe8, 0x5a, + 0xf8, 0x37, 0xe3, 0x70, 0x88, 0x1f, 0xde, 0xa9, 0xa6, 0x76, 0x7a, 0xdb, 0x71, 0xc4, 0xdb, 0x09, + 0xe0, 0x59, 0xb0, 0x6a, 0x6a, 0xf2, 0x1e, 0xc4, 0x2e, 0x3a, 0x8e, 0x89, 0x4e, 0x41, 0xdc, 0x6a, + 0xd6, 0xb1, 0xd8, 0x0c, 0x72, 0xb7, 0xeb, 0x55, 0x53, 0x9b, 0x25, 0x08, 0x4a, 0xb3, 0x8e, 0x15, + 0x86, 0x82, 0x4a, 0x30, 0xbd, 0xd5, 0xac, 0xd7, 0xf7, 0xca, 0x55, 0x4c, 0xff, 0x5d, 0x96, 0xfb, + 0x0f, 0x27, 0xf0, 0xae, 0xa9, 0x8a, 0xcf, 0x56, 0x12, 0xc3, 0x1c, 0xa7, 0x68, 0x45, 0x8a, 0x25, + 0xfe, 0xd9, 0x44, 0x49, 0xe0, 0xc8, 0xbf, 0x1f, 0x81, 0x84, 0x60, 0x4d, 0x2f, 0x8f, 0xe3, 0x3a, + 0xae, 0x38, 0x86, 0x38, 0x4c, 0x71, 0xcb, 0x08, 0x41, 0xb4, 0xc6, 0x3b, 0x2f, 0x79, 0x71, 0x40, + 0x21, 0x05, 0x02, 0x73, 0xaf, 0xf4, 0x13, 0x98, 0xd9, 0x24, 0xfd, 0x19, 0x33, 0x0d, 0xb1, 0x6a, + 0xbb, 0x38, 0xa0, 0xd0, 0x12, 0xca, 0xc0, 0x20, 0x19, 0x34, 0x0e, 0xeb, 0x2d, 0x02, 0xe7, 0x65, + 0x74, 0x18, 0xe2, 0xa6, 0xea, 0x54, 0xd8, 0x6d, 0x3b, 0x52, 0xc1, 0x8a, 0xe8, 0x09, 0x18, 0x64, + 0xaf, 0xb2, 0xc3, 0xff, 0x8b, 0x86, 0x18, 0x83, 0x7d, 0xfe, 0x8e, 0xc8, 0xbd, 0xaa, 0x3a, 0x0e, + 0xb6, 0x74, 0xc2, 0x90, 0xa1, 0x23, 0x04, 0xb1, 0x4d, 0xa3, 0xba, 0xc7, 0xff, 0x3f, 0x0e, 0xfd, + 0xcd, 0xff, 0x21, 0x07, 0xf5, 0x87, 0x32, 0xad, 0x64, 0xff, 0x16, 0x2c, 0x25, 0x80, 0x05, 0x82, + 0x54, 0x82, 0x09, 0xb5, 0x5a, 0xd5, 0xd8, 0xbf, 0xaa, 0x29, 0x6f, 0x6a, 0x34, 0x78, 0xd8, 0xf4, + 0x9f, 0xbe, 0x75, 0xea, 0x0b, 0xe4, 0x11, 0x14, 0x38, 0x7e, 0x21, 0x09, 0x43, 0x26, 0x13, 0x4a, + 0x3e, 0x0f, 0xe3, 0x2d, 0x92, 0x12, 0xf9, 0x76, 0x34, 0xbd, 0x2a, 0xde, 0x39, 0x90, 0xdf, 0x04, + 0x46, 0x3f, 0x58, 0xc9, 0x8e, 0xa9, 0xe8, 0xef, 0xc2, 0x7b, 0x3a, 0x3f, 0x87, 0x19, 0xf5, 0x3d, + 0x87, 0x51, 0x4d, 0xad, 0x90, 0xa4, 0xfc, 0xf9, 0x23, 0x98, 0x7c, 0xeb, 0x23, 0x98, 0x1a, 0xd6, + 0xc5, 0xc4, 0x4c, 0xaa, 0x54, 0x53, 0xb3, 0xa9, 0x3b, 0x7a, 0x1f, 0xd0, 0xb4, 0xcf, 0xfb, 0x7e, + 0xd3, 0x37, 0x31, 0xb1, 0xf9, 0xfc, 0xea, 0x82, 0xeb, 0xc7, 0x5f, 0x8d, 0xc0, 0x71, 0x9f, 0x1f, + 0xfb, 0x90, 0x5b, 0xdd, 0x39, 0xdb, 0xde, 0xe3, 0xfb, 0x78, 0x9b, 0x7c, 0x09, 0x62, 0x04, 0x1f, + 0xf5, 0xf8, 0x77, 0x19, 0x99, 0xcf, 0x7f, 0xe3, 0x9f, 0xca, 0xc1, 0x03, 0xad, 0x40, 0xaf, 0x50, + 0x26, 0x85, 0xf7, 0xf7, 0x6f, 0xbf, 0xb4, 0xf7, 0xed, 0x50, 0xfb, 0xf6, 0x99, 0x31, 0x6c, 0xc3, + 0xef, 0x9e, 0xed, 0xf8, 0x76, 0x95, 0x05, 0xd3, 0xee, 0xf9, 0xd5, 0x3e, 0x22, 0x75, 0xa7, 0xa7, + 0x01, 0xdd, 0x7a, 0xb0, 0xcf, 0x4c, 0x6d, 0x17, 0x0e, 0x3f, 0x4b, 0xda, 0xf6, 0x56, 0xd0, 0x22, + 0xe4, 0x1f, 0x76, 0x0f, 0xfa, 0x24, 0xfe, 0x3f, 0xf7, 0xc4, 0x21, 0x1e, 0x78, 0xf2, 0xf1, 0xb5, + 0xe3, 0x7d, 0xb3, 0x1d, 0xa7, 0x92, 0x59, 0xdf, 0x34, 0xa2, 0xf8, 0x28, 0xe5, 0x5f, 0x95, 0xe0, + 0x48, 0x4b, 0xd3, 0x3c, 0xc6, 0xcf, 0xb7, 0x79, 0xc5, 0x70, 0xa0, 0xa4, 0x67, 0xbe, 0x8d, 0xb0, + 0xf7, 0xf7, 0x14, 0x96, 0x49, 0x11, 0x90, 0xf6, 0xcd, 0x70, 0x28, 0x28, 0xac, 0x30, 0xd3, 0xbd, + 0x30, 0x1a, 0xdc, 0x2c, 0xe6, 0xe6, 0x1a, 0x09, 0x6c, 0x17, 0xcb, 0xe5, 0xb0, 0x9d, 0x5d, 0x5d, + 0x4b, 0x90, 0x74, 0x51, 0x79, 0x76, 0xdc, 0xb7, 0xaa, 0x1e, 0xa5, 0xfc, 0x61, 0x09, 0x66, 0x82, + 0x2d, 0xf8, 0xf2, 0xa4, 0xfd, 0x09, 0x7b, 0xdb, 0xba, 0xf8, 0x75, 0x09, 0xee, 0xea, 0x22, 0x13, + 0x37, 0xc0, 0x35, 0x98, 0xf4, 0x6d, 0x12, 0x88, 0x10, 0x2e, 0xba, 0xfd, 0x54, 0xef, 0x0c, 0xd5, + 0x5d, 0x13, 0x1f, 0x23, 0x46, 0xf9, 0xec, 0xb7, 0xa7, 0x27, 0x5a, 0xeb, 0x6c, 0x65, 0xa2, 0x75, + 0x61, 0x7f, 0x1b, 0xfd, 0xe3, 0x15, 0x09, 0x1e, 0x08, 0xaa, 0xda, 0x26, 0xd5, 0xfd, 0x49, 0xf5, + 0xc3, 0xbf, 0x97, 0xe0, 0x54, 0x3f, 0xc2, 0xf1, 0x0e, 0xd9, 0x84, 0x09, 0x2f, 0x09, 0x0f, 0xf7, + 0xc7, 0xbe, 0x52, 0x7b, 0xe6, 0xa5, 0xc8, 0xe5, 0x76, 0x07, 0x0c, 0x6f, 0xf2, 0x81, 0xe5, 0xef, + 0x72, 0xd7, 0xc8, 0xc1, 0x8d, 0x5e, 0x61, 0xe4, 0xc0, 0x56, 0x6f, 0x9b, 0xbe, 0x88, 0xb4, 0xe9, + 0x0b, 0x2f, 0x6b, 0x97, 0xaf, 0xf0, 0xb8, 0xd5, 0x66, 0x7b, 0xee, 0x6d, 0x30, 0xd1, 0xc6, 0x95, + 0xf9, 0xa8, 0xde, 0x87, 0x27, 0x2b, 0xa8, 0xd5, 0x59, 0xe5, 0x3d, 0x98, 0xa6, 0xed, 0xb6, 0x31, + 0xf4, 0x9d, 0x56, 0xb9, 0xc1, 0x63, 0x4b, 0xdb, 0xa6, 0xb9, 0xee, 0x0b, 0x30, 0xc8, 0xfa, 0x99, + 0xab, 0x7b, 0x00, 0x47, 0xe1, 0x0c, 0xe4, 0x8f, 0x8b, 0x58, 0x56, 0x14, 0x62, 0xb7, 0x1f, 0x43, + 0xfd, 0xe8, 0x7a, 0x9b, 0xc6, 0x90, 0xcf, 0x18, 0xdf, 0x12, 0x51, 0xad, 0xbd, 0x74, 0xdc, 0x1c, + 0x95, 0xdb, 0x16, 0xd5, 0x98, 0x6d, 0xee, 0x6c, 0xf8, 0xfa, 0x65, 0x11, 0xbe, 0x5c, 0x9d, 0x7a, + 0x84, 0xaf, 0x9f, 0x8c, 0xe9, 0xdd, 0x40, 0xd6, 0x43, 0xcc, 0x3f, 0x8f, 0x81, 0xec, 0x07, 0x12, + 0x1c, 0xa5, 0xba, 0xf9, 0xf7, 0x28, 0xf6, 0x6b, 0xf2, 0x87, 0x00, 0xd9, 0x56, 0xa5, 0xdc, 0x76, + 0x74, 0xa7, 0x6d, 0xab, 0x72, 0x39, 0x30, 0xbf, 0x3c, 0x04, 0xa8, 0x1a, 0xd8, 0x89, 0xa2, 0xd8, + 0xec, 0x02, 0x5d, 0xba, 0xea, 0xdb, 0xe8, 0x68, 0xd3, 0x9d, 0xb1, 0xdb, 0xd0, 0x9d, 0xdf, 0x94, + 0x20, 0xdb, 0x4e, 0x65, 0xde, 0x7d, 0x1a, 0x1c, 0x0e, 0x9c, 0x1f, 0x84, 0x7b, 0xf0, 0xa1, 0x7e, + 0x76, 0x79, 0x42, 0xc3, 0xe8, 0x90, 0x85, 0xef, 0x74, 0x1e, 0x30, 0x1d, 0xf4, 0xd0, 0xd6, 0xcc, + 0xfa, 0x27, 0x36, 0x7c, 0xbe, 0xd4, 0x12, 0x57, 0xff, 0x5c, 0xe4, 0xde, 0xbb, 0x30, 0xd5, 0x41, + 0xea, 0x3b, 0x3d, 0xef, 0x6d, 0x77, 0xec, 0xcc, 0xdb, 0x9d, 0xbe, 0x3f, 0xce, 0x47, 0x42, 0xf0, + 0x72, 0xb6, 0x6f, 0x2d, 0xd6, 0xee, 0x75, 0x97, 0xfc, 0x56, 0x38, 0xd6, 0x96, 0x8a, 0xcb, 0x96, + 0x83, 0xd8, 0xb6, 0x66, 0x3b, 0x5c, 0xac, 0xfb, 0x3a, 0x89, 0x15, 0xa2, 0xa6, 0x34, 0x32, 0x82, + 0x34, 0x65, 0xbd, 0x6a, 0x18, 0x75, 0x2e, 0x86, 0x7c, 0x09, 0xc6, 0x7d, 0x30, 0xde, 0xc8, 0x39, + 0x88, 0x99, 0x06, 0xff, 0x72, 0xc1, 0xf0, 0x99, 0xe3, 0x1d, 0x37, 0xf6, 0x0d, 0xa3, 0xce, 0xd5, + 0xa6, 0xf8, 0xf2, 0x24, 0x20, 0xc6, 0x8c, 0xee, 0xf1, 0x8b, 0x26, 0xd6, 0x60, 0x22, 0x00, 0xe5, + 0x8d, 0xbc, 0xa1, 0xf3, 0x83, 0x33, 0xdf, 0x3b, 0x04, 0x71, 0xca, 0x15, 0x7d, 0x4c, 0x0a, 0x7c, + 0x5a, 0x68, 0xb6, 0x13, 0x9b, 0xf6, 0x6b, 0xe2, 0xec, 0xe9, 0xbe, 0xf1, 0x79, 0xce, 0x76, 0xea, + 0x3d, 0xff, 0xe6, 0xbb, 0x1f, 0x89, 0xdc, 0x83, 0xe4, 0xd3, 0x1d, 0x56, 0xe3, 0xbe, 0xf1, 0xf2, + 0x99, 0xc0, 0xb3, 0xf8, 0x87, 0xfb, 0x6b, 0x4a, 0x48, 0x36, 0xdb, 0x2f, 0x3a, 0x17, 0xec, 0x3c, + 0x15, 0xec, 0x2c, 0x7a, 0xac, 0xb7, 0x60, 0xa7, 0xdf, 0x11, 0x1c, 0x34, 0xef, 0x42, 0xbf, 0x2b, + 0xc1, 0x64, 0xbb, 0x25, 0x1d, 0x7a, 0xb2, 0x3f, 0x29, 0x5a, 0x53, 0x8a, 0xec, 0x53, 0x07, 0xa0, + 0xe4, 0xaa, 0xcc, 0x53, 0x55, 0xf2, 0xe8, 0xe9, 0x03, 0xa8, 0x72, 0xda, 0xbf, 0xf5, 0xff, 0xbf, + 0x24, 0x38, 0xd1, 0x75, 0x85, 0x84, 0xf2, 0xfd, 0x49, 0xd9, 0x25, 0x77, 0xca, 0x16, 0xde, 0x08, + 0x0b, 0xae, 0xf1, 0xb3, 0x54, 0xe3, 0x4b, 0x68, 0xe1, 0x20, 0x1a, 0xb7, 0x3d, 0x5f, 0x41, 0xbf, + 0x15, 0xbc, 0x74, 0xd8, 0xdd, 0x9d, 0x5a, 0x16, 0x1e, 0x3d, 0x06, 0x46, 0x6b, 0x52, 0x2b, 0x3f, + 0x4f, 0x55, 0x50, 0xd0, 0xea, 0x1b, 0xec, 0xb4, 0xd3, 0xef, 0x08, 0x06, 0xfe, 0x77, 0xa1, 0xff, + 0x29, 0xb5, 0xbf, 0x43, 0xf8, 0x44, 0x57, 0x11, 0x3b, 0x2f, 0xaa, 0xb2, 0x4f, 0xee, 0x9f, 0x90, + 0x2b, 0xd9, 0xa0, 0x4a, 0xd6, 0x10, 0xbe, 0xdd, 0x4a, 0xb6, 0xed, 0x44, 0xf4, 0x75, 0x09, 0x26, + 0xdb, 0xad, 0x49, 0x7a, 0x0c, 0xcb, 0x2e, 0x8b, 0xac, 0x1e, 0xc3, 0xb2, 0xdb, 0x02, 0x48, 0xfe, + 0x19, 0xaa, 0xfc, 0x39, 0xf4, 0x78, 0x27, 0xe5, 0xbb, 0xf6, 0x22, 0x19, 0x8b, 0x5d, 0x93, 0xfc, + 0x1e, 0x63, 0xb1, 0x9f, 0x75, 0x4c, 0x8f, 0xb1, 0xd8, 0xd7, 0x1a, 0xa3, 0xf7, 0x58, 0x74, 0x35, + 0xeb, 0xb3, 0x1b, 0x6d, 0xf4, 0x55, 0x09, 0x46, 0x02, 0x19, 0x31, 0x7a, 0xb4, 0xab, 0xa0, 0xed, + 0x16, 0x0c, 0xd9, 0x33, 0xfb, 0x21, 0xe1, 0xba, 0x2c, 0x50, 0x5d, 0xe6, 0x50, 0xfe, 0x20, 0xba, + 0x04, 0x8f, 0x51, 0xbf, 0x29, 0xc1, 0x44, 0x9b, 0x2c, 0xb3, 0xc7, 0x28, 0xec, 0x9c, 0x34, 0x67, + 0x9f, 0xdc, 0x3f, 0x21, 0xd7, 0xea, 0x02, 0xd5, 0xea, 0x2d, 0xe8, 0xcd, 0x07, 0xd1, 0xca, 0x37, + 0x3f, 0xdf, 0xf4, 0xae, 0x64, 0xf9, 0xda, 0x41, 0xe7, 0xf6, 0x29, 0x98, 0x50, 0xe8, 0x89, 0x7d, + 0xd3, 0x71, 0x7d, 0x9e, 0xa3, 0xfa, 0x3c, 0x8b, 0x56, 0xde, 0x98, 0x3e, 0xad, 0xd3, 0xfa, 0x17, + 0x5b, 0x1f, 0x07, 0x76, 0xf7, 0xa2, 0xb6, 0xc9, 0x6a, 0xf6, 0xb1, 0x7d, 0xd1, 0x70, 0xa5, 0x9e, + 0xa4, 0x4a, 0x9d, 0x41, 0x8f, 0x74, 0x52, 0xca, 0x77, 0xef, 0x4e, 0xd3, 0xb7, 0x8c, 0xd3, 0xef, + 0x60, 0x29, 0xf0, 0xbb, 0xd0, 0xbb, 0xc5, 0x9d, 0xa7, 0x93, 0x5d, 0xdb, 0xf5, 0xe5, 0xb1, 0xd9, + 0x07, 0xfa, 0xc0, 0xe4, 0x72, 0xdd, 0x43, 0xe5, 0x9a, 0x42, 0xc7, 0x3b, 0xc9, 0x45, 0x72, 0x59, + 0xf4, 0x41, 0xc9, 0xbd, 0x26, 0x79, 0xaa, 0x3b, 0x6f, 0x7f, 0xb2, 0x9b, 0x7d, 0xb0, 0x2f, 0x5c, + 0x2e, 0xc9, 0x7d, 0x54, 0x92, 0x19, 0x34, 0xd5, 0x51, 0x12, 0x96, 0xfa, 0xde, 0xee, 0x4b, 0x05, + 0xd7, 0x8f, 0xc0, 0x74, 0x87, 0x16, 0x9d, 0xdd, 0x1e, 0x67, 0x5c, 0x5d, 0xde, 0xc8, 0xf6, 0x7c, + 0x03, 0x7b, 0xbb, 0xbf, 0xed, 0xda, 0xe7, 0x81, 0xd8, 0x6f, 0xc7, 0x00, 0x2d, 0xd9, 0xb5, 0x39, + 0x0b, 0xb3, 0xff, 0x33, 0xc9, 0x47, 0x79, 0xe8, 0xf1, 0x97, 0xf4, 0x86, 0x1e, 0x7f, 0x2d, 0x05, + 0x9e, 0x53, 0x45, 0xf6, 0xf7, 0x64, 0xb3, 0xef, 0x37, 0x55, 0xd1, 0x1f, 0xcb, 0x9b, 0xaa, 0xf6, + 0x57, 0xae, 0x63, 0xb7, 0xef, 0x6d, 0x46, 0xfc, 0xa0, 0xef, 0x53, 0xf8, 0x53, 0xc9, 0xc1, 0x2e, + 0x4f, 0x25, 0x33, 0x1d, 0xdf, 0x43, 0x72, 0x6a, 0x74, 0x56, 0x7c, 0xe9, 0x74, 0xa8, 0xbf, 0x4b, + 0xb2, 0xfc, 0x53, 0xa8, 0xde, 0x16, 0xc2, 0x71, 0xc8, 0xb6, 0xba, 0x93, 0x3b, 0xa8, 0x3f, 0x12, + 0x85, 0xf4, 0x92, 0x5d, 0x2b, 0x55, 0x35, 0xe7, 0x0e, 0xf9, 0xda, 0xd3, 0x9d, 0xdf, 0xbb, 0xa0, + 0x5b, 0x37, 0xa7, 0x47, 0x99, 0x4d, 0xbb, 0x58, 0xb2, 0x01, 0x63, 0xa1, 0x57, 0xc6, 0xdc, 0xb3, + 0x8a, 0x07, 0x79, 0xec, 0x1c, 0x62, 0x25, 0xd3, 0xe7, 0x09, 0x3e, 0xff, 0x46, 0xbb, 0xed, 0x9d, + 0x99, 0x39, 0xd4, 0xc5, 0x3b, 0xf9, 0x38, 0xd0, 0xeb, 0xb3, 0x2c, 0x64, 0xc2, 0x9d, 0xe2, 0xf6, + 0xd8, 0x1f, 0x49, 0x30, 0xbc, 0x64, 0x8b, 0x54, 0x10, 0xff, 0x94, 0x3e, 0x4d, 0x7a, 0xc2, 0xfd, + 0x4c, 0x78, 0xb4, 0x3f, 0xbf, 0x15, 0x9f, 0x0e, 0xf7, 0x8c, 0x70, 0x08, 0x26, 0x7c, 0x7a, 0xba, + 0xfa, 0xff, 0x4e, 0x84, 0xc6, 0xc7, 0x02, 0xae, 0x69, 0xba, 0x9b, 0x45, 0xe2, 0xbf, 0xa8, 0x0f, + 0x2f, 0x3c, 0x3b, 0xc7, 0x0e, 0x6a, 0xe7, 0x1d, 0x1a, 0x20, 0x42, 0xf6, 0x74, 0x37, 0xbe, 0x96, + 0x5a, 0x9f, 0x05, 0x49, 0xfb, 0xf8, 0xe2, 0x4e, 0xe8, 0xf1, 0x8f, 0xfc, 0xba, 0x04, 0x23, 0x4b, + 0x76, 0x6d, 0x43, 0xaf, 0xfe, 0x3f, 0xef, 0xbf, 0x5b, 0x70, 0x28, 0xa0, 0xe9, 0x1d, 0x32, 0xe9, + 0x99, 0x57, 0x62, 0x10, 0x5d, 0xb2, 0x6b, 0xe8, 0x25, 0x18, 0x0b, 0x27, 0x0d, 0x1d, 0x73, 0xc1, + 0xd6, 0x19, 0xa1, 0xf3, 0x7a, 0xad, 0xf3, 0xec, 0x81, 0x76, 0x60, 0x24, 0x38, 0x73, 0x9c, 0xec, + 0xc2, 0x24, 0x80, 0x99, 0x7d, 0xa4, 0x5f, 0x4c, 0xb7, 0xb1, 0xb7, 0x43, 0xc2, 0x0d, 0x7a, 0x77, + 0x77, 0xa1, 0x16, 0x48, 0x9d, 0xb3, 0xdb, 0x36, 0x61, 0x85, 0x58, 0x2f, 0x1c, 0x52, 0xba, 0x59, + 0x2f, 0x84, 0xdb, 0xd5, 0x7a, 0x9d, 0x86, 0xd6, 0x26, 0x80, 0x6f, 0x1c, 0xdc, 0xdb, 0x85, 0x83, + 0x87, 0x96, 0x7d, 0xb8, 0x2f, 0x34, 0xf7, 0xd0, 0xe9, 0x36, 0x27, 0xe3, 0xff, 0x37, 0x00, 0x00, + 0xff, 0xff, 0xb1, 0x48, 0x2a, 0x05, 0xdd, 0x97, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) @@ -2089,9 +2084,6 @@ func (this *Params) Equal(that interface{}) bool { if this.BondDenom != that1.BondDenom { return false } - if !this.PowerReduction.Equal(that1.PowerReduction) { - return false - } return true } func (this *RedelegationEntryResponse) Equal(that interface{}) bool { @@ -2942,16 +2934,6 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - { - size := m.PowerReduction.Size() - i -= size - if _, err := m.PowerReduction.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - i = encodeVarintStaking(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x32 if len(m.BondDenom) > 0 { i -= len(m.BondDenom) copy(dAtA[i:], m.BondDenom) @@ -3493,8 +3475,6 @@ func (m *Params) Size() (n int) { if l > 0 { n += 1 + l + sovStaking(uint64(l)) } - l = m.PowerReduction.Size() - n += 1 + l + sovStaking(uint64(l)) return n } @@ -6027,40 +6007,6 @@ func (m *Params) Unmarshal(dAtA []byte) error { } m.BondDenom = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PowerReduction", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowStaking - } - 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 ErrInvalidLengthStaking - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthStaking - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.PowerReduction.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipStaking(dAtA[iNdEx:]) diff --git a/x/upgrade/client/testutil/suite.go b/x/upgrade/client/testutil/suite.go index 2faee645ea..6b559e823c 100644 --- a/x/upgrade/client/testutil/suite.go +++ b/x/upgrade/client/testutil/suite.go @@ -92,7 +92,7 @@ func (s *IntegrationTestSuite) TestModuleVersionsCLI() { pm := types.QueryModuleVersionsResponse{ ModuleVersions: expect, } - jsonVM, _ := clientCtx.JSONCodec.MarshalJSON(&pm) + jsonVM, _ := clientCtx.Codec.MarshalJSON(&pm) expectedRes := string(jsonVM) // append new line to match behaviour of PrintProto expectedRes += "\n"