diff --git a/client/flags/flags.go b/client/flags/flags.go index 343106f8f1b..2011eada195 100644 --- a/client/flags/flags.go +++ b/client/flags/flags.go @@ -87,8 +87,7 @@ const ( FlagLogFormat = "log_format" // QGB related flags - FlagOrchestratorAddress = "orchestrator-address" - FlagEVMAddress = "evm-address" + FlagEVMAddress = "evm-address" ) // LineBreak can be included in a command list to provide a blank line diff --git a/proto/cosmos/staking/v1beta1/staking.proto b/proto/cosmos/staking/v1beta1/staking.proto index 0c9a002f917..57ebfb8d4f6 100644 --- a/proto/cosmos/staking/v1beta1/staking.proto +++ b/proto/cosmos/staking/v1beta1/staking.proto @@ -124,12 +124,9 @@ message Validator { (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false ]; - // The orchestrator field is a celes1... string (i.e. sdk.AccAddress) that - // references the key that is being delegated to - string orchestrator = 12; // This is a hex encoded 0x EVM public key that will be used by this // validator on the target EVM chain. - string evm_address = 13; + string evm_address = 12; } // BondStatus is the status of a validator. diff --git a/proto/cosmos/staking/v1beta1/tx.proto b/proto/cosmos/staking/v1beta1/tx.proto index ddcfea3b983..e5e9a40bf21 100644 --- a/proto/cosmos/staking/v1beta1/tx.proto +++ b/proto/cosmos/staking/v1beta1/tx.proto @@ -62,12 +62,9 @@ message MsgCreateValidator { string validator_address = 5 [(cosmos_proto.scalar) = "cosmos.AddressString"]; google.protobuf.Any pubkey = 6 [(cosmos_proto.accepts_interface) = "cosmos.crypto.PubKey"]; cosmos.base.v1beta1.Coin value = 7 [(gogoproto.nullable) = false]; - // The orchestrator field is a celes1... string (i.e. sdk.AccAddress) that - // references the key that is being delegated to. - string orchestrator = 8; // This is a hex encoded 0x EVM public key that will be used by this // validator on the target EVM chain. - string evm_address = 9; + string evm_address = 8; } // MsgCreateValidatorResponse defines the Msg/CreateValidator response type. @@ -91,8 +88,7 @@ message MsgEditValidator { [(cosmos_proto.scalar) = "cosmos.Dec", (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec"]; string min_self_delegation = 4 [(cosmos_proto.scalar) = "cosmos.Int", (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int"]; - string orchestrator = 5; - string evm_address = 6; + string evm_address = 5; } // MsgEditValidatorResponse defines the Msg/EditValidator response type. diff --git a/simapp/simd/cmd/testnet.go b/simapp/simd/cmd/testnet.go index 610d572eafc..19c88684c4e 100644 --- a/simapp/simd/cmd/testnet.go +++ b/simapp/simd/cmd/testnet.go @@ -289,8 +289,6 @@ func initTestnetFiles( genBalances = append(genBalances, banktypes.Balance{Address: addr.String(), Coins: coins.Sort()}) genAccounts = append(genAccounts, authtypes.NewBaseAccount(addr, nil, 0, 0)) - orchAddress := sdk.AccAddress(valPubKeys[i].Address()) - evmAddress, err := teststaking.RandomEVMAddress() if err != nil { return err @@ -303,7 +301,7 @@ func initTestnetFiles( sdk.NewCoin(sdk.DefaultBondDenom, valTokens), stakingtypes.NewDescription(nodeDirName, "", "", "", ""), stakingtypes.NewCommissionRates(sdk.OneDec(), sdk.OneDec(), sdk.OneDec()), - sdk.OneInt(), orchAddress, *evmAddress, + sdk.OneInt(), *evmAddress, ) if err != nil { return err diff --git a/testutil/network/network.go b/testutil/network/network.go index c1d540150be..7560e542130 100644 --- a/testutil/network/network.go +++ b/testutil/network/network.go @@ -175,8 +175,6 @@ type ( EVMPrivateKey *ecdsa.PrivateKey EVMAddr common.Address - - OrchestratorAddr sdk.AccAddress } ) @@ -423,7 +421,6 @@ func New(l Logger, baseDir string, cfg Config) (*Network, error) { stakingtypes.NewDescription(nodeDirName, "", "", "", ""), stakingtypes.NewCommissionRates(commission, sdk.OneDec(), sdk.OneDec()), sdk.OneInt(), - addr, evmAddr, ) if err != nil { @@ -481,21 +478,20 @@ func New(l Logger, baseDir string, cfg Config) (*Network, error) { WithAccountRetriever(cfg.AccountRetriever) network.Validators[i] = &Validator{ - AppConfig: appCfg, - ClientCtx: clientCtx, - Ctx: ctx, - Dir: filepath.Join(network.BaseDir, nodeDirName), - NodeID: nodeID, - PubKey: pubKey, - Moniker: nodeDirName, - RPCAddress: tmCfg.RPC.ListenAddress, - P2PAddress: tmCfg.P2P.ListenAddress, - APIAddress: apiAddr, - Address: addr, - ValAddress: sdk.ValAddress(addr), - EVMPrivateKey: evmPrivateKey, - EVMAddr: evmAddr, - OrchestratorAddr: addr, + AppConfig: appCfg, + ClientCtx: clientCtx, + Ctx: ctx, + Dir: filepath.Join(network.BaseDir, nodeDirName), + NodeID: nodeID, + PubKey: pubKey, + Moniker: nodeDirName, + RPCAddress: tmCfg.RPC.ListenAddress, + P2PAddress: tmCfg.P2P.ListenAddress, + APIAddress: apiAddr, + Address: addr, + ValAddress: sdk.ValAddress(addr), + EVMPrivateKey: evmPrivateKey, + EVMAddr: evmAddr, } } diff --git a/x/auth/migrations/v043/store_test.go b/x/auth/migrations/v043/store_test.go index 17f6ef84904..096cd239dd1 100644 --- a/x/auth/migrations/v043/store_test.go +++ b/x/auth/migrations/v043/store_test.go @@ -665,7 +665,7 @@ func createValidator(t *testing.T, ctx sdk.Context, app *simapp.SimApp, powers i app.GetSubspace(stakingtypes.ModuleName), ) - val1, err := stakingtypes.NewValidator(valAddrs[0], pks[0], stakingtypes.Description{}, sdk.AccAddress(pks[0].Address()), *evmAddr) + val1, err := stakingtypes.NewValidator(valAddrs[0], pks[0], stakingtypes.Description{}, *evmAddr) require.NoError(t, err) app.StakingKeeper.SetValidator(ctx, val1) diff --git a/x/distribution/abci_test.go b/x/distribution/abci_test.go index a9f2185a89c..a821efe19bf 100644 --- a/x/distribution/abci_test.go +++ b/x/distribution/abci_test.go @@ -47,7 +47,7 @@ func TestVerifyProposerRewardAssignement(t *testing.T) { validators[i].votes = make([]abci.VoteInfo, totalValidators) randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - tstaking.CreateValidatorWithValPower(validators[i].addr, validators[i].pubkey, power, sdk.AccAddress(validators[i].addr), *randomEVMAddress, true) + tstaking.CreateValidatorWithValPower(validators[i].addr, validators[i].pubkey, power, *randomEVMAddress, true) } app.EndBlock(abci.RequestEndBlock{}) require.NotEmpty(t, app.Commit()) diff --git a/x/distribution/keeper/allocation_test.go b/x/distribution/keeper/allocation_test.go index 76d1013c58f..5050f86d513 100644 --- a/x/distribution/keeper/allocation_test.go +++ b/x/distribution/keeper/allocation_test.go @@ -28,7 +28,7 @@ func TestAllocateTokensToValidatorWithCommission(t *testing.T) { // create validator with 50% commission tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(5, 1), sdk.NewDec(0)) - tstaking.CreateValidator(sdk.ValAddress(addrs[0]), valConsPk1, sdk.NewInt(100), sdk.AccAddress(valConsPk1.Address()), *randomEVMAddress, true) + tstaking.CreateValidator(sdk.ValAddress(addrs[0]), valConsPk1, sdk.NewInt(100), *randomEVMAddress, true) val := app.StakingKeeper.Validator(ctx, valAddrs[0]) // allocate tokens @@ -62,13 +62,13 @@ func TestAllocateTokensToManyValidators(t *testing.T) { // create validator with 50% commission tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(5, 1), sdk.NewDec(0)) - tstaking.CreateValidator(valAddrs[0], valConsPk1, sdk.NewInt(100), sdk.AccAddress(valConsPk1.Address()), *randomEVMAddress, true) + tstaking.CreateValidator(valAddrs[0], valConsPk1, sdk.NewInt(100), *randomEVMAddress, true) // create second validator with 0% commission randomEVMAddress2, err := teststaking.RandomEVMAddress() require.NoError(t, err) tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDec(0), sdk.NewDec(0), sdk.NewDec(0)) - tstaking.CreateValidator(valAddrs[1], valConsPk2, sdk.NewInt(100), sdk.AccAddress(valConsPk2.Address()), *randomEVMAddress2, true) + tstaking.CreateValidator(valAddrs[1], valConsPk2, sdk.NewInt(100), *randomEVMAddress2, true) abciValA := abci.Validator{ Address: valConsPk1.Address(), @@ -140,19 +140,19 @@ func TestAllocateTokensTruncation(t *testing.T) { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(1, 1), sdk.NewDecWithPrec(1, 1), sdk.NewDec(0)) - tstaking.CreateValidator(valAddrs[0], valConsPk1, sdk.NewInt(110), sdk.AccAddress(valConsPk1.Address()), *randomEVMAddress, true) + tstaking.CreateValidator(valAddrs[0], valConsPk1, sdk.NewInt(110), *randomEVMAddress, true) // create second validator with 10% commission randomEVMAddress2, err := teststaking.RandomEVMAddress() require.NoError(t, err) tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(1, 1), sdk.NewDecWithPrec(1, 1), sdk.NewDec(0)) - tstaking.CreateValidator(valAddrs[1], valConsPk2, sdk.NewInt(100), sdk.AccAddress(valConsPk2.Address()), *randomEVMAddress2, true) + tstaking.CreateValidator(valAddrs[1], valConsPk2, sdk.NewInt(100), *randomEVMAddress2, true) // create third validator with 10% commission randomEVMAddress3, err := teststaking.RandomEVMAddress() require.NoError(t, err) tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(1, 1), sdk.NewDecWithPrec(1, 1), sdk.NewDec(0)) - tstaking.CreateValidator(valAddrs[2], valConsPk3, sdk.NewInt(100), sdk.AccAddress(valConsPk3.Address()), *randomEVMAddress3, true) + tstaking.CreateValidator(valAddrs[2], valConsPk3, sdk.NewInt(100), *randomEVMAddress3, true) abciValA := abci.Validator{ Address: valConsPk1.Address(), diff --git a/x/distribution/keeper/delegation_test.go b/x/distribution/keeper/delegation_test.go index 93fc45297e5..cb96232b0be 100644 --- a/x/distribution/keeper/delegation_test.go +++ b/x/distribution/keeper/delegation_test.go @@ -29,7 +29,7 @@ func TestCalculateRewardsBasic(t *testing.T) { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(5, 1), sdk.NewDec(0)) - tstaking.CreateValidator(valAddrs[0], valConsPk1, sdk.NewInt(100), sdk.AccAddress(valConsPk1.Address()), *randomEVMAddress, true) + tstaking.CreateValidator(valAddrs[0], valConsPk1, sdk.NewInt(100), *randomEVMAddress, true) // end block to bond validator and start new block staking.EndBlocker(ctx, app.StakingKeeper) @@ -86,7 +86,7 @@ func TestCalculateRewardsAfterSlash(t *testing.T) { valPower := int64(100) randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - tstaking.CreateValidatorWithValPower(valAddrs[0], valConsPk1, valPower, sdk.AccAddress(valConsPk1.Address()), *randomEVMAddress, true) + tstaking.CreateValidatorWithValPower(valAddrs[0], valConsPk1, valPower, *randomEVMAddress, true) // end block to bond validator staking.EndBlocker(ctx, app.StakingKeeper) @@ -151,7 +151,7 @@ func TestCalculateRewardsAfterManySlashes(t *testing.T) { require.NoError(t, err) valPower := int64(100) tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(5, 1), sdk.NewDec(0)) - tstaking.CreateValidatorWithValPower(valAddrs[0], valConsPk1, valPower, sdk.AccAddress(valConsPk1.Address()), *randomEVMAddress, true) + tstaking.CreateValidatorWithValPower(valAddrs[0], valConsPk1, valPower, *randomEVMAddress, true) // end block to bond validator staking.EndBlocker(ctx, app.StakingKeeper) @@ -227,7 +227,7 @@ func TestCalculateRewardsMultiDelegator(t *testing.T) { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(5, 1), sdk.NewDec(0)) - tstaking.CreateValidator(valAddrs[0], valConsPk1, sdk.NewInt(100), sdk.AccAddress(valConsPk1.Address()), *randomEVMAddress, true) + tstaking.CreateValidator(valAddrs[0], valConsPk1, sdk.NewInt(100), *randomEVMAddress, true) // end block to bond validator staking.EndBlocker(ctx, app.StakingKeeper) @@ -302,7 +302,7 @@ func TestWithdrawDelegationRewardsBasic(t *testing.T) { require.NoError(t, err) power := int64(100) tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(5, 1), sdk.NewDec(0)) - valTokens := tstaking.CreateValidatorWithValPower(valAddrs[0], valConsPk1, power, sdk.AccAddress(valConsPk1.Address()), *randomEVMAddress, true) + valTokens := tstaking.CreateValidatorWithValPower(valAddrs[0], valConsPk1, power, *randomEVMAddress, true) // assert correct initial balance expTokens := balanceTokens.Sub(valTokens) @@ -368,7 +368,7 @@ func TestCalculateRewardsAfterManySlashesInSameBlock(t *testing.T) { require.NoError(t, err) valPower := int64(100) tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(5, 1), sdk.NewDec(0)) - tstaking.CreateValidatorWithValPower(valAddrs[0], valConsPk1, valPower, sdk.AccAddress(valConsPk1.Address()), *randomEVMAddress, true) + tstaking.CreateValidatorWithValPower(valAddrs[0], valConsPk1, valPower, *randomEVMAddress, true) // end block to bond validator staking.EndBlocker(ctx, app.StakingKeeper) @@ -438,7 +438,7 @@ func TestCalculateRewardsMultiDelegatorMultiSlash(t *testing.T) { require.NoError(t, err) tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(5, 1), sdk.NewDec(0)) valPower := int64(100) - tstaking.CreateValidatorWithValPower(valAddrs[0], valConsPk1, valPower, sdk.AccAddress(valConsPk1.Address()), *randomEVMAddress, true) + tstaking.CreateValidatorWithValPower(valAddrs[0], valConsPk1, valPower, *randomEVMAddress, true) // end block to bond validator staking.EndBlocker(ctx, app.StakingKeeper) @@ -523,7 +523,7 @@ func TestCalculateRewardsMultiDelegatorMultWithdraw(t *testing.T) { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(5, 1), sdk.NewDec(0)) - tstaking.CreateValidator(valAddrs[0], valConsPk1, sdk.NewInt(100), sdk.AccAddress(valConsPk1.Address()), *randomEVMAddress, true) + tstaking.CreateValidator(valAddrs[0], valConsPk1, sdk.NewInt(100), *randomEVMAddress, true) // end block to bond validator staking.EndBlocker(ctx, app.StakingKeeper) @@ -672,7 +672,7 @@ func Test100PercentCommissionReward(t *testing.T) { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - tstaking.CreateValidator(valAddrs[0], valConsPk1, sdk.NewInt(100), sdk.AccAddress(valAddrs[0]), *randomEVMAddress, true) + tstaking.CreateValidator(valAddrs[0], valConsPk1, sdk.NewInt(100), *randomEVMAddress, true) app.StakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) // end block to bond validator diff --git a/x/distribution/keeper/grpc_query_test.go b/x/distribution/keeper/grpc_query_test.go index 2d7a0c26c3a..591664aa652 100644 --- a/x/distribution/keeper/grpc_query_test.go +++ b/x/distribution/keeper/grpc_query_test.go @@ -346,7 +346,7 @@ func (suite *KeeperTestSuite) TestGRPCDelegationRewards() { tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(5, 1), sdk.NewDec(0)) randomEVMAddress, err := teststaking.RandomEVMAddress() suite.NoError(err) - tstaking.CreateValidator(valAddrs[0], valConsPk1, sdk.NewInt(100), sdk.AccAddress(valConsPk1.Address()), *randomEVMAddress, true) + tstaking.CreateValidator(valAddrs[0], valConsPk1, sdk.NewInt(100), *randomEVMAddress, true) staking.EndBlocker(ctx, app.StakingKeeper) ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) diff --git a/x/distribution/keeper/querier_test.go b/x/distribution/keeper/querier_test.go index deedc8de799..fcc122cffae 100644 --- a/x/distribution/keeper/querier_test.go +++ b/x/distribution/keeper/querier_test.go @@ -177,7 +177,7 @@ func TestQueries(t *testing.T) { tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(5, 1), sdk.NewDec(0)) randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - tstaking.CreateValidator(valOpAddr1, valConsPk1, sdk.NewInt(100), sdk.AccAddress(valConsPk1.Address()), *randomEVMAddress, true) + tstaking.CreateValidator(valOpAddr1, valConsPk1, sdk.NewInt(100), *randomEVMAddress, true) staking.EndBlocker(ctx, app.StakingKeeper) diff --git a/x/distribution/simulation/operations_test.go b/x/distribution/simulation/operations_test.go index a76182b30f7..34fe6171f45 100644 --- a/x/distribution/simulation/operations_test.go +++ b/x/distribution/simulation/operations_test.go @@ -260,7 +260,7 @@ func (suite *SimTestSuite) getTestingValidator(accounts []simtypes.Account, comm randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(err) - validator, err := stakingtypes.NewValidator(valAddr, valPubKey, stakingtypes.Description{}, sdk.AccAddress(valPubKey.Address()), *randomEVMAddress) + validator, err := stakingtypes.NewValidator(valAddr, valPubKey, stakingtypes.Description{}, *randomEVMAddress) require.NoError(err) validator, err = validator.SetInitialCommission(commission) require.NoError(err) diff --git a/x/evidence/keeper/infraction_test.go b/x/evidence/keeper/infraction_test.go index 44190ac2895..a22b2f239e5 100644 --- a/x/evidence/keeper/infraction_test.go +++ b/x/evidence/keeper/infraction_test.go @@ -20,7 +20,7 @@ func (suite *KeeperTestSuite) TestHandleDoubleSign() { suite.NoError(err) tstaking := teststaking.NewHelper(suite.T(), ctx, suite.app.StakingKeeper) - selfDelegation := tstaking.CreateValidatorWithValPower(operatorAddr, val, power, sdk.AccAddress(val.Address()), *randomEVMAddress, true) + selfDelegation := tstaking.CreateValidatorWithValPower(operatorAddr, val, power, *randomEVMAddress, true) // execute end-blocker and verify validator attributes staking.EndBlocker(ctx, suite.app.StakingKeeper) @@ -88,7 +88,7 @@ func (suite *KeeperTestSuite) TestHandleDoubleSign_TooOld() { suite.NoError(err) tstaking := teststaking.NewHelper(suite.T(), ctx, suite.app.StakingKeeper) - amt := tstaking.CreateValidatorWithValPower(operatorAddr, val, power, sdk.AccAddress(val.Address()), *randomEVMAddress, true) + amt := tstaking.CreateValidatorWithValPower(operatorAddr, val, power, *randomEVMAddress, true) // execute end-blocker and verify validator attributes staking.EndBlocker(ctx, suite.app.StakingKeeper) diff --git a/x/genutil/client/cli/gentx.go b/x/genutil/client/cli/gentx.go index 9169a3cf5f3..06890976a88 100644 --- a/x/genutil/client/cli/gentx.go +++ b/x/genutil/client/cli/gentx.go @@ -52,7 +52,6 @@ $ %s gentx my-key-name 1000000stake --home=/path/to/home/dir --keyring-backend=o --details="..." \ --security-contact="..." \ --website="..." \ - --orchestrator-address="..." \ --evm-address="..." `, defaultsDesc, version.AppName, ), @@ -111,11 +110,6 @@ $ %s gentx my-key-name 1000000stake --home=/path/to/home/dir --keyring-backend=o moniker = m } - orchestratorAddress, err := cmd.Flags().GetString(flags.FlagOrchestratorAddress) - if err != nil { - return errors.Wrapf(err, "failed to get the orchestrator address") - } - evmAddress, err := cmd.Flags().GetString(flags.FlagEVMAddress) if err != nil { return errors.Wrapf(err, "failed to get the EVM address") @@ -125,7 +119,7 @@ $ %s gentx my-key-name 1000000stake --home=/path/to/home/dir --keyring-backend=o createValCfg, err := cli.PrepareConfigForTxCreateValidator( cmd.Flags(), moniker, nodeID, genDoc.ChainID, - valPubKey, orchestratorAddress, + valPubKey, evmAddress, ) if err != nil { diff --git a/x/genutil/client/testutil/suite.go b/x/genutil/client/testutil/suite.go index 3c798bb23e6..42458448e01 100644 --- a/x/genutil/client/testutil/suite.go +++ b/x/genutil/client/testutil/suite.go @@ -73,7 +73,6 @@ func (s *IntegrationTestSuite) TestGenTxCmd() { val.Moniker, amount.String(), fmt.Sprintf("--%s=%s", flags.FlagEVMAddress, val.EVMAddr.Hex()), - fmt.Sprintf("--%s=%s", flags.FlagOrchestratorAddress, val.OrchestratorAddr.String()), }, expError: false, }, @@ -95,7 +94,6 @@ func (s *IntegrationTestSuite) TestGenTxCmd() { val.Moniker, amount.String(), fmt.Sprintf("--%s=%s", flags.FlagEVMAddress, val.EVMAddr.Hex()), - fmt.Sprintf("--%s=%s", flags.FlagOrchestratorAddress, val.OrchestratorAddr.String()), }, expError: false, }, diff --git a/x/genutil/gentx_test.go b/x/genutil/gentx_test.go index 799c3efbd2b..ce4f62a66a4 100644 --- a/x/genutil/gentx_test.go +++ b/x/genutil/gentx_test.go @@ -62,13 +62,11 @@ func (suite *GenTxTestSuite) SetupTest() { one := sdk.OneInt() suite.msg1, err = stakingtypes.NewMsgCreateValidator( sdk.ValAddress(pk1.Address()), pk1, amount, desc, comm, one, - sdk.AccAddress(pk1.Address()), *evmAddr1, ) suite.NoError(err) suite.msg2, err = stakingtypes.NewMsgCreateValidator( sdk.ValAddress(pk2.Address()), pk1, amount, desc, comm, one, - sdk.AccAddress(pk2.Address()), *evmAddr2, ) suite.NoError(err) diff --git a/x/genutil/types/genesis_state_test.go b/x/genutil/types/genesis_state_test.go index 48510915f5c..76b8a24e5a2 100644 --- a/x/genutil/types/genesis_state_test.go +++ b/x/genutil/types/genesis_state_test.go @@ -44,14 +44,12 @@ func TestValidateGenesisMultipleMessages(t *testing.T) { msg1, err := stakingtypes.NewMsgCreateValidator(sdk.ValAddress(pk1.Address()), pk1, sdk.NewInt64Coin(sdk.DefaultBondDenom, 50), desc, comm, sdk.OneInt(), - sdk.AccAddress(pk1.Address()), *evmAddr1, ) require.NoError(t, err) msg2, err := stakingtypes.NewMsgCreateValidator(sdk.ValAddress(pk2.Address()), pk2, sdk.NewInt64Coin(sdk.DefaultBondDenom, 50), desc, comm, sdk.OneInt(), - sdk.AccAddress(pk2.Address()), *evmAddr2, ) require.NoError(t, err) @@ -70,7 +68,7 @@ func TestValidateGenesisMultipleMessages(t *testing.T) { func TestValidateGenesisBadMessage(t *testing.T) { desc := stakingtypes.NewDescription("testname", "", "", "", "") - msg1 := stakingtypes.NewMsgEditValidator(sdk.ValAddress(pk1.Address()), desc, nil, nil, nil, nil) + msg1 := stakingtypes.NewMsgEditValidator(sdk.ValAddress(pk1.Address()), desc, nil, nil, nil) txGen := simapp.MakeTestEncodingConfig().TxConfig txBuilder := txGen.NewTxBuilder() diff --git a/x/gov/abci_test.go b/x/gov/abci_test.go index f88d050bff5..eeb0e1d15bd 100644 --- a/x/gov/abci_test.go +++ b/x/gov/abci_test.go @@ -381,7 +381,7 @@ func createValidators(t *testing.T, stakingMsgSvr stakingtypes.MsgServer, ctx sd valCreateMsg, err := stakingtypes.NewMsgCreateValidator( addrs[i], pubkeys[i], sdk.NewCoin(sdk.DefaultBondDenom, valTokens), TestDescription, TestCommissionRates, sdk.OneInt(), - sdk.AccAddress(pubkeys[i].Address()), *randomEVMAddress, + *randomEVMAddress, ) require.NoError(t, err) res, err := stakingMsgSvr.CreateValidator(sdk.WrapSDKContext(ctx), valCreateMsg) diff --git a/x/gov/keeper/common_test.go b/x/gov/keeper/common_test.go index 1c2ff8411f5..591296db65f 100644 --- a/x/gov/keeper/common_test.go +++ b/x/gov/keeper/common_test.go @@ -54,17 +54,17 @@ func createValidators(t *testing.T, ctx sdk.Context, app *simapp.SimApp, powers randomEVMAddress1, err := teststaking.RandomEVMAddress() require.NoError(t, err) - val1, err := stakingtypes.NewValidator(valAddrs[0], pks[0], stakingtypes.Description{}, sdk.AccAddress(pks[0].Address()), *randomEVMAddress1) + val1, err := stakingtypes.NewValidator(valAddrs[0], pks[0], stakingtypes.Description{}, *randomEVMAddress1) require.NoError(t, err) randomEVMAddress2, err := teststaking.RandomEVMAddress() require.NoError(t, err) - val2, err := stakingtypes.NewValidator(valAddrs[1], pks[1], stakingtypes.Description{}, sdk.AccAddress(pks[1].Address()), *randomEVMAddress2) + val2, err := stakingtypes.NewValidator(valAddrs[1], pks[1], stakingtypes.Description{}, *randomEVMAddress2) require.NoError(t, err) randomEVMAddress3, err := teststaking.RandomEVMAddress() require.NoError(t, err) - val3, err := stakingtypes.NewValidator(valAddrs[2], pks[2], stakingtypes.Description{}, sdk.AccAddress(pks[2].Address()), *randomEVMAddress3) + val3, err := stakingtypes.NewValidator(valAddrs[2], pks[2], stakingtypes.Description{}, *randomEVMAddress3) require.NoError(t, err) app.StakingKeeper.SetValidator(ctx, val1) diff --git a/x/slashing/abci_test.go b/x/slashing/abci_test.go index 0b6a24d07cd..644c49ecd77 100644 --- a/x/slashing/abci_test.go +++ b/x/slashing/abci_test.go @@ -29,7 +29,7 @@ func TestBeginBlocker(t *testing.T) { power := int64(100) randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - amt := tstaking.CreateValidatorWithValPower(addr, pk, power, sdk.AccAddress(pk.Address()), *randomEVMAddress, true) + amt := tstaking.CreateValidatorWithValPower(addr, pk, power, *randomEVMAddress, true) staking.EndBlocker(ctx, app.StakingKeeper) require.Equal( t, app.BankKeeper.GetAllBalances(ctx, sdk.AccAddress(addr)), diff --git a/x/slashing/app_test.go b/x/slashing/app_test.go index cecca85c7be..f18706fe0c5 100644 --- a/x/slashing/app_test.go +++ b/x/slashing/app_test.go @@ -69,7 +69,7 @@ func TestSlashingMsgs(t *testing.T) { require.NoError(t, err) createValidatorMsg, err := stakingtypes.NewMsgCreateValidator( sdk.ValAddress(addr1), valKey.PubKey(), bondCoin, description, commission, sdk.OneInt(), - sdk.AccAddress(valKey.PubKey().Address()), *randomEVMAddress, + *randomEVMAddress, ) require.NoError(t, err) diff --git a/x/slashing/keeper/keeper_test.go b/x/slashing/keeper/keeper_test.go index 9bbc2fda874..acef0b2847f 100644 --- a/x/slashing/keeper/keeper_test.go +++ b/x/slashing/keeper/keeper_test.go @@ -33,7 +33,7 @@ func TestUnJailNotBonded(t *testing.T) { addr, val := valAddrs[i], pks[i] randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - tstaking.CreateValidatorWithValPower(addr, val, 100, sdk.AccAddress(val.Address()), *randomEVMAddress, true) + tstaking.CreateValidatorWithValPower(addr, val, 100, *randomEVMAddress, true) } staking.EndBlocker(ctx, app.StakingKeeper) @@ -44,7 +44,7 @@ func TestUnJailNotBonded(t *testing.T) { amt := app.StakingKeeper.TokensFromConsensusPower(ctx, 50) randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - msg := tstaking.CreateValidatorMsg(addr, val, amt, sdk.AccAddress(val.Address()), *randomEVMAddress) + msg := tstaking.CreateValidatorMsg(addr, val, amt, *randomEVMAddress) msg.MinSelfDelegation = amt res, err := tstaking.CreateValidatorWithMsg(sdk.WrapSDKContext(ctx), msg) require.NoError(t, err) @@ -99,7 +99,7 @@ func TestHandleNewValidator(t *testing.T) { require.NoError(t, err) // Validator created - amt := tstaking.CreateValidatorWithValPower(addr, val, 100, sdk.AccAddress(val.Address()), *randomEVMAddress, true) + amt := tstaking.CreateValidatorWithValPower(addr, val, 100, *randomEVMAddress, true) staking.EndBlocker(ctx, app.StakingKeeper) require.Equal( @@ -146,7 +146,7 @@ func TestHandleAlreadyJailed(t *testing.T) { require.NoError(t, err) tstaking := teststaking.NewHelper(t, ctx, app.StakingKeeper) - amt := tstaking.CreateValidatorWithValPower(addr, val, power, sdk.AccAddress(val.Address()), *randomEVMAddress, true) + amt := tstaking.CreateValidatorWithValPower(addr, val, power, *randomEVMAddress, true) staking.EndBlocker(ctx, app.StakingKeeper) @@ -208,7 +208,7 @@ func TestValidatorDippingInAndOut(t *testing.T) { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - tstaking.CreateValidatorWithValPower(valAddr, val, power, sdk.AccAddress(val.Address()), *randomEVMAddress, true) + tstaking.CreateValidatorWithValPower(valAddr, val, power, *randomEVMAddress, true) validatorUpdates := staking.EndBlocker(ctx, app.StakingKeeper) require.Equal(t, 2, len(validatorUpdates)) tstaking.CheckValidator(valAddr, stakingtypes.Bonded, false) @@ -223,7 +223,7 @@ func TestValidatorDippingInAndOut(t *testing.T) { // kick first validator out of validator set randomEVMAddress2, err := teststaking.RandomEVMAddress() require.NoError(t, err) - tstaking.CreateValidatorWithValPower(sdk.ValAddress(pks[1].Address()), pks[1], power+1, sdk.AccAddress(pks[1].Address()), *randomEVMAddress2, true) + tstaking.CreateValidatorWithValPower(sdk.ValAddress(pks[1].Address()), pks[1], power+1, *randomEVMAddress2, true) validatorUpdates = staking.EndBlocker(ctx, app.StakingKeeper) require.Equal(t, 2, len(validatorUpdates)) tstaking.CheckValidator(sdk.ValAddress(pks[1].Address()), stakingtypes.Bonded, false) diff --git a/x/slashing/simulation/operations_test.go b/x/slashing/simulation/operations_test.go index 30473291648..f8561ae5cd5 100644 --- a/x/slashing/simulation/operations_test.go +++ b/x/slashing/simulation/operations_test.go @@ -161,7 +161,7 @@ func getTestingValidator(t *testing.T, app *simapp.SimApp, ctx sdk.Context, acco valAddr := sdk.ValAddress(account.PubKey.Address().Bytes()) randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator, err := stakingtypes.NewValidator(valAddr, valPubKey, stakingtypes.Description{}, sdk.AccAddress(valPubKey.Address()), *randomEVMAddress) + validator, err := stakingtypes.NewValidator(valAddr, valPubKey, stakingtypes.Description{}, *randomEVMAddress) require.NoError(t, err) validator, err = validator.SetInitialCommission(commission) require.NoError(t, err) diff --git a/x/staking/app_test.go b/x/staking/app_test.go index 8651d0ea33c..2d05f1682d0 100644 --- a/x/staking/app_test.go +++ b/x/staking/app_test.go @@ -73,7 +73,7 @@ func TestStakingMsgs(t *testing.T) { // create validator description := types.NewDescription("foo_moniker", "", "", "", "") createValidatorMsg, err := types.NewMsgCreateValidator( - sdk.ValAddress(addr1), valKey.PubKey(), bondCoin, description, commissionRates, sdk.OneInt(), sdk.AccAddress(valKey.PubKey().Address()), evmAddr, + sdk.ValAddress(addr1), valKey.PubKey(), bondCoin, description, commissionRates, sdk.OneInt(), evmAddr, ) require.NoError(t, err) @@ -96,7 +96,7 @@ func TestStakingMsgs(t *testing.T) { // edit the validator description = types.NewDescription("bar_moniker", "", "", "", "") - editValidatorMsg := types.NewMsgEditValidator(sdk.ValAddress(addr1), description, nil, nil, nil, nil) + editValidatorMsg := types.NewMsgEditValidator(sdk.ValAddress(addr1), description, nil, nil, nil) header = tmproto.Header{Height: app.LastBlockHeight() + 1} _, _, err = simapp.SignCheckDeliver(t, txGen, app.BaseApp, header, []sdk.Msg{editValidatorMsg}, "", []uint64{0}, []uint64{1}, true, true, priv1) diff --git a/x/staking/bench_test.go b/x/staking/bench_test.go index 439bfba866f..0121e1b0928 100644 --- a/x/staking/bench_test.go +++ b/x/staking/bench_test.go @@ -32,7 +32,7 @@ func benchmarkValidateGenesis(b *testing.B, n int) { randomEVMAddr, err := teststaking.RandomEVMAddress() b.Error(err) - validator := teststaking.NewValidator(b, addr, pubKey, sdk.AccAddress(pubKey.Address()), *randomEVMAddr) + validator := teststaking.NewValidator(b, addr, pubKey, *randomEVMAddr) ni := int64(i + 1) validator.Tokens = sdk.NewInt(ni) validator.DelegatorShares = sdk.NewDec(ni) diff --git a/x/staking/client/cli/flags.go b/x/staking/client/cli/flags.go index cede36aaeb7..c419112c466 100644 --- a/x/staking/client/cli/flags.go +++ b/x/staking/client/cli/flags.go @@ -81,13 +81,6 @@ func FlagSetPublicKey() *flag.FlagSet { return fs } -// FlagSetOrchestratorAddress Returns the flagset for Orchestrator address related operations. -func FlagSetOrchestratorAddress() *flag.FlagSet { - fs := flag.NewFlagSet("", flag.ContinueOnError) - fs.String(flags.FlagOrchestratorAddress, "", "The Bech32 cosmos1 address of the orchestrator") - return fs -} - // FlagSetEVMAddress Returns the flagset for EVM address related operations. func FlagSetEVMAddress() *flag.FlagSet { fs := flag.NewFlagSet("", flag.ContinueOnError) diff --git a/x/staking/client/cli/tx.go b/x/staking/client/cli/tx.go index 9ddf18cacba..4644c183866 100644 --- a/x/staking/client/cli/tx.go +++ b/x/staking/client/cli/tx.go @@ -81,7 +81,6 @@ func NewCreateValidatorCmd() *cobra.Command { cmd.Flags().AddFlagSet(FlagSetCommissionCreate()) cmd.Flags().AddFlagSet(FlagSetMinSelfDelegation()) cmd.Flags().AddFlagSet(FlagSetEVMAddress()) - cmd.Flags().AddFlagSet(FlagSetOrchestratorAddress()) cmd.Flags().String(FlagIP, "", fmt.Sprintf("The node's public IP. It takes effect only when used in combination with --%s", flags.FlagGenerateOnly)) cmd.Flags().String(FlagNodeID, "", "The node's ID") @@ -92,7 +91,6 @@ func NewCreateValidatorCmd() *cobra.Command { _ = cmd.MarkFlagRequired(FlagPubKey) _ = cmd.MarkFlagRequired(FlagMoniker) _ = cmd.MarkFlagRequired(flags.FlagEVMAddress) - _ = cmd.MarkFlagRequired(flags.FlagOrchestratorAddress) return cmd } @@ -139,18 +137,8 @@ func NewEditValidatorCmd() *cobra.Command { newMinSelfDelegation = &msb } - orchAddrString, _ := cmd.Flags().GetString(flags.FlagOrchestratorAddress) evmAddrString, _ := cmd.Flags().GetString(flags.FlagEVMAddress) - var orchAddr *sdk.AccAddress - if orchAddrString != "" { - addr, err := sdk.AccAddressFromBech32(orchAddrString) - if err != nil { - return err - } - orchAddr = &addr - } - var evmAddr *common.Address if evmAddrString != "" { if !common.IsHexAddress(evmAddrString) { @@ -163,7 +151,7 @@ func NewEditValidatorCmd() *cobra.Command { msg := types.NewMsgEditValidator( sdk.ValAddress(valAddr), description, newRate, newMinSelfDelegation, - orchAddr, evmAddr, + evmAddr, ) return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) @@ -415,14 +403,8 @@ func newBuildCreateValidatorMsg(clientCtx client.Context, txf tx.Factory, fs *fl return txf, nil, sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "minimum self delegation must be a positive integer") } - orchAddrString, _ := fs.GetString(flags.FlagOrchestratorAddress) evmAddrString, _ := fs.GetString(flags.FlagEVMAddress) - orchAddr, err := sdk.AccAddressFromBech32(orchAddrString) - if err != nil { - return txf, nil, err - } - if !common.IsHexAddress(evmAddrString) { return txf, nil, types.ErrEVMAddressNotHex } @@ -432,7 +414,7 @@ func newBuildCreateValidatorMsg(clientCtx client.Context, txf tx.Factory, fs *fl sdk.ValAddress(valAddr), pk, amount, description, commissionRates, minSelfDelegation, - orchAddr, evmAddr, + evmAddr, ) if err != nil { return txf, nil, err @@ -470,7 +452,6 @@ func CreateValidatorMsgFlagSet(ipDefault string) (fs *flag.FlagSet, defaultsDesc fsCreateValidator.AddFlagSet(FlagSetAmount()) fsCreateValidator.AddFlagSet(FlagSetPublicKey()) fsCreateValidator.AddFlagSet(FlagSetEVMAddress()) - fsCreateValidator.AddFlagSet(FlagSetOrchestratorAddress()) defaultsDesc = fmt.Sprintf(` delegation amount: %s @@ -505,11 +486,10 @@ type TxCreateValidatorConfig struct { Details string Identity string - OrchestratorAddress string - EVMAddress string + EVMAddress string } -func PrepareConfigForTxCreateValidator(flagSet *flag.FlagSet, moniker, nodeID, chainID string, valPubKey cryptotypes.PubKey, orchAddr string, evmAddr string) (TxCreateValidatorConfig, error) { +func PrepareConfigForTxCreateValidator(flagSet *flag.FlagSet, moniker, nodeID, chainID string, valPubKey cryptotypes.PubKey, evmAddr string) (TxCreateValidatorConfig, error) { c := TxCreateValidatorConfig{} ip, err := flagSet.GetString(FlagIP) @@ -605,11 +585,6 @@ func PrepareConfigForTxCreateValidator(flagSet *flag.FlagSet, moniker, nodeID, c return c, err } - c.OrchestratorAddress, err = flagSet.GetString(flags.FlagOrchestratorAddress) - if err != nil { - return c, err - } - return c, nil } @@ -647,11 +622,6 @@ func BuildCreateValidatorMsg(clientCtx client.Context, config TxCreateValidatorC return txBldr, nil, sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "minimum self delegation must be a positive integer") } - orchAddr, err := sdk.AccAddressFromBech32(config.OrchestratorAddress) - if err != nil { - return txBldr, nil, sdkerrors.Wrap(err, "orchestrator address") - } - if !common.IsHexAddress(config.EVMAddress) { return txBldr, nil, types.ErrEVMAddressNotHex } @@ -661,7 +631,7 @@ func BuildCreateValidatorMsg(clientCtx client.Context, config TxCreateValidatorC sdk.ValAddress(valAddr), config.PubKey, amount, description, commissionRates, minSelfDelegation, - orchAddr, evmAddr, + evmAddr, ) if err != nil { return txBldr, msg, err diff --git a/x/staking/client/cli/tx_test.go b/x/staking/client/cli/tx_test.go index 8652251d6e0..395417310b8 100644 --- a/x/staking/client/cli/tx_test.go +++ b/x/staking/client/cli/tx_test.go @@ -17,9 +17,8 @@ func TestPrepareConfigForTxCreateValidator(t *testing.T) { privKey := ed25519.GenPrivKey() valPubKey := privKey.PubKey() moniker := "DefaultMoniker" - testOrchAddr := "cosmos1qktu8009djs6uym9uwj84ead24exkezsaqrmn5" testEVMAddr := "0x91DEd26b5f38B065FC0204c7929Da6b2A21277Cd" - mkTxValCfg := func(amount, commission, commissionMax, commissionMaxChange, minSelfDelegation string, orchAddr string, evmAddr string) TxCreateValidatorConfig { + mkTxValCfg := func(amount, commission, commissionMax, commissionMaxChange, minSelfDelegation string, evmAddr string) TxCreateValidatorConfig { return TxCreateValidatorConfig{ IP: ip, ChainID: chainID, @@ -31,7 +30,6 @@ func TestPrepareConfigForTxCreateValidator(t *testing.T) { CommissionMaxRate: commissionMax, CommissionMaxChangeRate: commissionMaxChange, MinSelfDelegation: minSelfDelegation, - OrchestratorAddress: orchAddr, EVMAddress: evmAddr, } } @@ -46,42 +44,42 @@ func TestPrepareConfigForTxCreateValidator(t *testing.T) { fsModify: func(fs *pflag.FlagSet) { return }, - expectedCfg: mkTxValCfg(defaultAmount, "0.1", "0.2", "0.01", "1", "", ""), + expectedCfg: mkTxValCfg(defaultAmount, "0.1", "0.2", "0.01", "1", ""), }, { name: "Custom amount", fsModify: func(fs *pflag.FlagSet) { fs.Set(FlagAmount, "2000stake") }, - expectedCfg: mkTxValCfg("2000stake", "0.1", "0.2", "0.01", "1", "", ""), + expectedCfg: mkTxValCfg("2000stake", "0.1", "0.2", "0.01", "1", ""), }, { name: "Custom commission rate", fsModify: func(fs *pflag.FlagSet) { fs.Set(FlagCommissionRate, "0.54") }, - expectedCfg: mkTxValCfg(defaultAmount, "0.54", "0.2", "0.01", "1", "", ""), + expectedCfg: mkTxValCfg(defaultAmount, "0.54", "0.2", "0.01", "1", ""), }, { name: "Custom commission max rate", fsModify: func(fs *pflag.FlagSet) { fs.Set(FlagCommissionMaxRate, "0.89") }, - expectedCfg: mkTxValCfg(defaultAmount, "0.1", "0.89", "0.01", "1", "", ""), + expectedCfg: mkTxValCfg(defaultAmount, "0.1", "0.89", "0.01", "1", ""), }, { name: "Custom commission max change rate", fsModify: func(fs *pflag.FlagSet) { fs.Set(FlagCommissionMaxChangeRate, "0.55") }, - expectedCfg: mkTxValCfg(defaultAmount, "0.1", "0.2", "0.55", "1", "", ""), + expectedCfg: mkTxValCfg(defaultAmount, "0.1", "0.2", "0.55", "1", ""), }, { name: "Custom min self delegations", fsModify: func(fs *pflag.FlagSet) { fs.Set(FlagMinSelfDelegation, "0.33") }, - expectedCfg: mkTxValCfg(defaultAmount, "0.1", "0.2", "0.01", "0.33", "", ""), + expectedCfg: mkTxValCfg(defaultAmount, "0.1", "0.2", "0.01", "0.33", ""), }, } @@ -93,7 +91,7 @@ func TestPrepareConfigForTxCreateValidator(t *testing.T) { tc.fsModify(fs) - cvCfg, err := PrepareConfigForTxCreateValidator(fs, moniker, nodeID, chainID, valPubKey, testOrchAddr, testEVMAddr) + cvCfg, err := PrepareConfigForTxCreateValidator(fs, moniker, nodeID, chainID, valPubKey, testEVMAddr) require.NoError(t, err) require.Equal(t, tc.expectedCfg, cvCfg) diff --git a/x/staking/client/testutil/suite.go b/x/staking/client/testutil/suite.go index 65b152166de..abb99548bde 100644 --- a/x/staking/client/testutil/suite.go +++ b/x/staking/client/testutil/suite.go @@ -210,7 +210,6 @@ func (s *IntegrationTestSuite) TestNewCreateValidatorCmd() { fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), fmt.Sprintf("--%s=%s", flags.FlagEVMAddress, randomEVMAddress.Hex()), - fmt.Sprintf("--%s=%s", flags.FlagOrchestratorAddress, newAddr.String()), }, false, 0, &sdk.TxResponse{}, }, diff --git a/x/staking/genesis_test.go b/x/staking/genesis_test.go index 684ceaf5e0d..14884ec6372 100644 --- a/x/staking/genesis_test.go +++ b/x/staking/genesis_test.go @@ -19,7 +19,7 @@ func TestValidateGenesis(t *testing.T) { pk := ed25519.GenPrivKey().PubKey() evmAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - genValidators1[0] = teststaking.NewValidator(t, sdk.ValAddress(pk.Address()), pk, sdk.AccAddress(pk.Address()), *evmAddress) + genValidators1[0] = teststaking.NewValidator(t, sdk.ValAddress(pk.Address()), pk, *evmAddress) genValidators1[0].Tokens = sdk.OneInt() genValidators1[0].DelegatorShares = sdk.OneDec() diff --git a/x/staking/keeper/delegation_test.go b/x/staking/keeper/delegation_test.go index 1bedc35d3b6..f9a0dd4c048 100644 --- a/x/staking/keeper/delegation_test.go +++ b/x/staking/keeper/delegation_test.go @@ -37,7 +37,7 @@ func TestDelegation(t *testing.T) { for i, amt := range amts { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validators[i] = teststaking.NewValidator(t, valAddrs[i], PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEVMAddress) + validators[i] = teststaking.NewValidator(t, valAddrs[i], PKs[i], *randomEVMAddress) validators[i], _ = validators[i].AddTokensFromDel(amt) } @@ -214,7 +214,7 @@ func TestUnbondDelegation(t *testing.T) { // note this validator starts not-bonded randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator := teststaking.NewValidator(t, valAddrs[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEVMAddress) + validator := teststaking.NewValidator(t, valAddrs[0], PKs[0], *randomEVMAddress) validator, issuedShares := validator.AddTokensFromDel(startTokens) require.Equal(t, startTokens, issuedShares.RoundInt()) @@ -256,7 +256,7 @@ func TestUnbondingDelegationsMaxEntries(t *testing.T) { // create a validator and a delegator to that validator randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEVMAddress) + validator := teststaking.NewValidator(t, addrVals[0], PKs[0], *randomEVMAddress) validator, issuedShares := validator.AddTokensFromDel(startTokens) require.Equal(t, startTokens, issuedShares.RoundInt()) @@ -334,7 +334,7 @@ func TestUndelegateSelfDelegationBelowMinSelfDelegation(t *testing.T) { // create a validator with a self-delegation randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEVMAddress) + validator := teststaking.NewValidator(t, addrVals[0], PKs[0], *randomEVMAddress) validator.MinSelfDelegation = delTokens validator, issuedShares := validator.AddTokensFromDel(delTokens) @@ -396,7 +396,7 @@ func TestUndelegateFromUnbondingValidator(t *testing.T) { // create a validator with a self-delegation randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEVMAddress) + validator := teststaking.NewValidator(t, addrVals[0], PKs[0], *randomEVMAddress) app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) validator, issuedShares := validator.AddTokensFromDel(delTokens) @@ -489,7 +489,7 @@ func TestUndelegateFromUnbondedValidator(t *testing.T) { // create a validator with a self-delegation randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEVMAddress) + validator := teststaking.NewValidator(t, addrVals[0], PKs[0], *randomEVMAddress) app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) valTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 10) @@ -572,7 +572,7 @@ func TestUnbondingAllDelegationFromValidator(t *testing.T) { // create a validator with a self-delegation randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEVMAddress) + validator := teststaking.NewValidator(t, addrVals[0], PKs[0], *randomEVMAddress) app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) valTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 10) @@ -738,7 +738,7 @@ func TestRedelegateToSameValidator(t *testing.T) { // create a validator with a self-delegation randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEVMAddress) + validator := teststaking.NewValidator(t, addrVals[0], PKs[0], *randomEVMAddress) validator, issuedShares := validator.AddTokensFromDel(valTokens) require.Equal(t, valTokens, issuedShares.RoundInt()) validator = keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validator, true) @@ -769,7 +769,7 @@ func TestRedelegationMaxEntries(t *testing.T) { // create a validator with a self-delegation randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEVMAddress) + validator := teststaking.NewValidator(t, addrVals[0], PKs[0], *randomEVMAddress) valTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 10) validator, issuedShares := validator.AddTokensFromDel(valTokens) require.Equal(t, valTokens, issuedShares.RoundInt()) @@ -781,7 +781,7 @@ func TestRedelegationMaxEntries(t *testing.T) { // create a second validator randomEVMAddress2, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator2 := teststaking.NewValidator(t, addrVals[1], PKs[1], sdk.AccAddress(PKs[0].Address()), *randomEVMAddress2) + validator2 := teststaking.NewValidator(t, addrVals[1], PKs[1], *randomEVMAddress2) validator2, issuedShares = validator2.AddTokensFromDel(valTokens) require.Equal(t, valTokens, issuedShares.RoundInt()) @@ -829,7 +829,7 @@ func TestRedelegateSelfDelegation(t *testing.T) { // create a validator with a self-delegation randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEVMAddress) + validator := teststaking.NewValidator(t, addrVals[0], PKs[0], *randomEVMAddress) app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) valTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 10) @@ -845,7 +845,7 @@ func TestRedelegateSelfDelegation(t *testing.T) { // create a second validator randomEVMAddress2, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator2 := teststaking.NewValidator(t, addrVals[1], PKs[1], sdk.AccAddress(PKs[1].Address()), *randomEVMAddress2) + validator2 := teststaking.NewValidator(t, addrVals[1], PKs[1], *randomEVMAddress2) validator2, issuedShares = validator2.AddTokensFromDel(valTokens) require.Equal(t, valTokens, issuedShares.RoundInt()) validator2 = keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validator2, true) @@ -889,7 +889,7 @@ func TestRedelegateFromUnbondingValidator(t *testing.T) { // create a validator with a self-delegation randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEVMAddress) + validator := teststaking.NewValidator(t, addrVals[0], PKs[0], *randomEVMAddress) app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) valTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 10) @@ -912,7 +912,7 @@ func TestRedelegateFromUnbondingValidator(t *testing.T) { // create a second validator randomEVMAddress2, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator2 := teststaking.NewValidator(t, addrVals[1], PKs[1], sdk.AccAddress(PKs[1].Address()), *randomEVMAddress2) + validator2 := teststaking.NewValidator(t, addrVals[1], PKs[1], *randomEVMAddress2) validator2, issuedShares = validator2.AddTokensFromDel(valTokens) require.Equal(t, valTokens, issuedShares.RoundInt()) validator2 = keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validator2, true) @@ -975,7 +975,7 @@ func TestRedelegateFromUnbondedValidator(t *testing.T) { // create a validator with a self-delegation randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEVMAddress) + validator := teststaking.NewValidator(t, addrVals[0], PKs[0], *randomEVMAddress) app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) valTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 10) @@ -998,7 +998,7 @@ func TestRedelegateFromUnbondedValidator(t *testing.T) { // create a second validator randomEVMAddress2, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator2 := teststaking.NewValidator(t, addrVals[1], PKs[1], sdk.AccAddress(PKs[1].Address()), *randomEVMAddress2) + validator2 := teststaking.NewValidator(t, addrVals[1], PKs[1], *randomEVMAddress2) validator2, issuedShares = validator2.AddTokensFromDel(valTokens) require.Equal(t, valTokens, issuedShares.RoundInt()) validator2 = keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validator2, true) diff --git a/x/staking/keeper/genesis_test.go b/x/staking/keeper/genesis_test.go index 58aad81df64..345097e8226 100644 --- a/x/staking/keeper/genesis_test.go +++ b/x/staking/keeper/genesis_test.go @@ -179,7 +179,6 @@ func TestInitGenesisLargeValidatorSet(t *testing.T) { sdk.ValAddress(addrs[i]), PKs[i], types.NewDescription(fmt.Sprintf("#%d", i), "", "", "", ""), - sdk.AccAddress(PKs[i].Address()), *randomEVMAddress, ) require.NoError(t, err) diff --git a/x/staking/keeper/grpc_query_test.go b/x/staking/keeper/grpc_query_test.go index 54e61fe92a0..c105c8734e9 100644 --- a/x/staking/keeper/grpc_query_test.go +++ b/x/staking/keeper/grpc_query_test.go @@ -800,11 +800,11 @@ func createValidators(t *testing.T, ctx sdk.Context, app *simapp.SimApp, powers randomEVMAddress1, err := teststaking.RandomEVMAddress() require.NoError(t, err) - val1 := teststaking.NewValidator(t, valAddrs[0], pks[0], sdk.AccAddress(PKs[0].Address()), *randomEVMAddress1) + val1 := teststaking.NewValidator(t, valAddrs[0], pks[0], *randomEVMAddress1) randomEVMAddress2, err := teststaking.RandomEVMAddress() require.NoError(t, err) - val2 := teststaking.NewValidator(t, valAddrs[1], pks[1], sdk.AccAddress(PKs[1].Address()), *randomEVMAddress2) + val2 := teststaking.NewValidator(t, valAddrs[1], pks[1], *randomEVMAddress2) vals := []types.Validator{val1, val2} app.StakingKeeper.SetValidator(ctx, val1) diff --git a/x/staking/keeper/historical_info_test.go b/x/staking/keeper/historical_info_test.go index 605fb705992..56b02bcc5f5 100644 --- a/x/staking/keeper/historical_info_test.go +++ b/x/staking/keeper/historical_info_test.go @@ -35,7 +35,7 @@ func TestHistoricalInfo(t *testing.T) { for i, valAddr := range addrVals { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validators[i] = teststaking.NewValidator(t, valAddr, PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEVMAddress) + validators[i] = teststaking.NewValidator(t, valAddr, PKs[i], *randomEVMAddress) } hi := types.NewHistoricalInfo(ctx.BlockHeader(), validators, app.StakingKeeper.PowerReduction(ctx)) @@ -80,8 +80,8 @@ func TestTrackHistoricalInfo(t *testing.T) { require.NoError(t, err) valSet := []types.Validator{ - teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEVMAddress1), - teststaking.NewValidator(t, addrVals[1], PKs[1], sdk.AccAddress(PKs[1].Address()), *randomEVMAddress2), + teststaking.NewValidator(t, addrVals[0], PKs[0], *randomEVMAddress1), + teststaking.NewValidator(t, addrVals[1], PKs[1], *randomEVMAddress2), } hi4 := types.NewHistoricalInfo(h4, valSet, app.StakingKeeper.PowerReduction(ctx)) @@ -102,14 +102,14 @@ func TestTrackHistoricalInfo(t *testing.T) { // Set bonded validators in keeper randomEVMAddress3, err := teststaking.RandomEVMAddress() require.NoError(t, err) - val1 := teststaking.NewValidator(t, addrVals[2], PKs[2], sdk.AccAddress(PKs[2].Address()), *randomEVMAddress3) + val1 := teststaking.NewValidator(t, addrVals[2], PKs[2], *randomEVMAddress3) val1.Status = types.Bonded // when not bonded, consensus power is Zero val1.Tokens = app.StakingKeeper.TokensFromConsensusPower(ctx, 10) app.StakingKeeper.SetValidator(ctx, val1) app.StakingKeeper.SetLastValidatorPower(ctx, val1.GetOperator(), 10) randomEVMAddress4, err := teststaking.RandomEVMAddress() require.NoError(t, err) - val2 := teststaking.NewValidator(t, addrVals[3], PKs[3], sdk.AccAddress(PKs[3].Address()), *randomEVMAddress4) + val2 := teststaking.NewValidator(t, addrVals[3], PKs[3], *randomEVMAddress4) val1.Status = types.Bonded val2.Tokens = app.StakingKeeper.TokensFromConsensusPower(ctx, 80) app.StakingKeeper.SetValidator(ctx, val2) @@ -161,8 +161,8 @@ func TestGetAllHistoricalInfo(t *testing.T) { require.NoError(t, err) valSet := []types.Validator{ - teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEVMAddress1), - teststaking.NewValidator(t, addrVals[1], PKs[1], sdk.AccAddress(PKs[1].Address()), *randomEVMAddress2), + teststaking.NewValidator(t, addrVals[0], PKs[0], *randomEVMAddress1), + teststaking.NewValidator(t, addrVals[1], PKs[1], *randomEVMAddress2), } header1 := tmproto.Header{ChainID: "HelloChain", Height: 10} diff --git a/x/staking/keeper/msg_server.go b/x/staking/keeper/msg_server.go index 9ac15a9e944..070ef2ebda2 100644 --- a/x/staking/keeper/msg_server.go +++ b/x/staking/keeper/msg_server.go @@ -86,17 +86,12 @@ func (k msgServer) CreateValidator(goCtx context.Context, msg *types.MsgCreateVa } } - orchAddr, err := k.validateOrchestratorAddress(ctx, msg.Orchestrator) - if err != nil { - return nil, err - } - evmAddr, err := k.validateEVMAddress(ctx, msg.EvmAddress) if err != nil { return nil, err } - validator, err := types.NewValidator(valAddr, pk, msg.Description, orchAddr, evmAddr) + validator, err := types.NewValidator(valAddr, pk, msg.Description, evmAddr) if err != nil { return nil, err } @@ -198,14 +193,6 @@ func (k msgServer) EditValidator(goCtx context.Context, msg *types.MsgEditValida validator.MinSelfDelegation = *msg.MinSelfDelegation } - if msg.Orchestrator != "" { - _, err := k.validateOrchestratorAddress(ctx, msg.Orchestrator) - if err != nil { - return nil, err - } - validator.Orchestrator = msg.Orchestrator - } - if msg.EvmAddress != "" { _, err := k.validateEVMAddress(ctx, msg.EvmAddress) if err != nil { @@ -431,18 +418,6 @@ func (k msgServer) validateEVMAddress(ctx sdk.Context, evmAddrHex string) (commo return evmAddr, nil } -func (k msgServer) validateOrchestratorAddress(ctx sdk.Context, orchAddr string) (sdk.AccAddress, error) { - addr, err := sdk.AccAddressFromBech32(orchAddr) - if err != nil { - return sdk.AccAddress{}, err - } - // FIXME should we add the zero accAddr check? - if _, found := k.GetValidatorByOrchestratorAddress(ctx, addr); found { - return sdk.AccAddress{}, types.ErrValidatorOrchestratorAddressExists - } - return addr, nil -} - // CancelUnbondingDelegation defines a method for canceling the unbonding delegation // and delegate back to the validator. func (k msgServer) CancelUnbondingDelegation(goCtx context.Context, msg *types.MsgCancelUnbondingDelegation) (*types.MsgCancelUnbondingDelegationResponse, error) { diff --git a/x/staking/keeper/querier_test.go b/x/staking/keeper/querier_test.go index f320f6e6e56..da981241c54 100644 --- a/x/staking/keeper/querier_test.go +++ b/x/staking/keeper/querier_test.go @@ -29,7 +29,7 @@ func TestNewQuerier(t *testing.T) { for i, amt := range amts { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEVMAddress) + validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], *randomEVMAddress) validators[i], _ = validators[i].AddTokensFromDel(amt) app.StakingKeeper.SetValidator(ctx, validators[i]) app.StakingKeeper.SetValidatorByPowerIndex(ctx, validators[i]) @@ -151,7 +151,7 @@ func TestQueryValidators(t *testing.T) { for i, amt := range amts { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEVMAddress) + validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], *randomEVMAddress) validators[i], _ = validators[i].AddTokensFromDel(amt) validators[i] = validators[i].UpdateStatus(status[i]) } @@ -221,13 +221,13 @@ func TestQueryDelegation(t *testing.T) { // Create Validators and Delegation randomEVMAddress1, err := teststaking.RandomEVMAddress() require.NoError(t, err) - val1 := teststaking.NewValidator(t, addrVal1, pk1, sdk.AccAddress(pk1.Address()), *randomEVMAddress1) + val1 := teststaking.NewValidator(t, addrVal1, pk1, *randomEVMAddress1) app.StakingKeeper.SetValidator(ctx, val1) app.StakingKeeper.SetValidatorByPowerIndex(ctx, val1) randomEVMAddress2, err := teststaking.RandomEVMAddress() require.NoError(t, err) - val2 := teststaking.NewValidator(t, addrVal2, pk2, sdk.AccAddress(pk2.Address()), *randomEVMAddress2) + val2 := teststaking.NewValidator(t, addrVal2, pk2, *randomEVMAddress2) app.StakingKeeper.SetValidator(ctx, val2) app.StakingKeeper.SetValidatorByPowerIndex(ctx, val2) @@ -472,7 +472,7 @@ func TestQueryValidatorDelegations_Pagination(t *testing.T) { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - val1 := teststaking.NewValidator(t, valAddress, pubKeys[0], sdk.AccAddress(pubKeys[0].Address()), *randomEVMAddress) + val1 := teststaking.NewValidator(t, valAddress, pubKeys[0], *randomEVMAddress) app.StakingKeeper.SetValidator(ctx, val1) app.StakingKeeper.SetValidatorByPowerIndex(ctx, val1) @@ -559,10 +559,10 @@ func TestQueryRedelegations(t *testing.T) { // Create Validators and Delegation randomEVMAddress1, err := teststaking.RandomEVMAddress() require.NoError(t, err) - val1 := teststaking.NewValidator(t, addrVal1, PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEVMAddress1) + val1 := teststaking.NewValidator(t, addrVal1, PKs[0], *randomEVMAddress1) randomEVMAddress2, err := teststaking.RandomEVMAddress() require.NoError(t, err) - val2 := teststaking.NewValidator(t, addrVal2, PKs[1], sdk.AccAddress(PKs[1].Address()), *randomEVMAddress2) + val2 := teststaking.NewValidator(t, addrVal2, PKs[1], *randomEVMAddress2) app.StakingKeeper.SetValidator(ctx, val1) app.StakingKeeper.SetValidator(ctx, val2) @@ -635,7 +635,7 @@ func TestQueryUnbondingDelegation(t *testing.T) { // Create Validators and Delegation randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - val1 := teststaking.NewValidator(t, addrVal1, PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEVMAddress) + val1 := teststaking.NewValidator(t, addrVal1, PKs[0], *randomEVMAddress) app.StakingKeeper.SetValidator(ctx, val1) // delegate @@ -733,10 +733,10 @@ func TestQueryHistoricalInfo(t *testing.T) { // Create Validators and Delegation randomEVMAddress1, err := teststaking.RandomEVMAddress() require.NoError(t, err) - val1 := teststaking.NewValidator(t, addrVal1, PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEVMAddress1) + val1 := teststaking.NewValidator(t, addrVal1, PKs[0], *randomEVMAddress1) randomEVMAddress2, err := teststaking.RandomEVMAddress() require.NoError(t, err) - val2 := teststaking.NewValidator(t, addrVal2, PKs[1], sdk.AccAddress(PKs[1].Address()), *randomEVMAddress2) + val2 := teststaking.NewValidator(t, addrVal2, PKs[1], *randomEVMAddress2) vals := []types.Validator{val1, val2} app.StakingKeeper.SetValidator(ctx, val1) app.StakingKeeper.SetValidator(ctx, val2) diff --git a/x/staking/keeper/slash_test.go b/x/staking/keeper/slash_test.go index 38cdc979721..fe65e633930 100644 --- a/x/staking/keeper/slash_test.go +++ b/x/staking/keeper/slash_test.go @@ -41,7 +41,7 @@ func bootstrapSlashTest(t *testing.T, power int64) (*simapp.SimApp, sdk.Context, for i := int64(0); i < numVals; i++ { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator := teststaking.NewValidator(t, addrVals[i], PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEVMAddress) + validator := teststaking.NewValidator(t, addrVals[i], PKs[i], *randomEVMAddress) validator, _ = validator.AddTokensFromDel(amt) validator = keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validator, true) app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) diff --git a/x/staking/keeper/validator.go b/x/staking/keeper/validator.go index fd499e94eee..6e61f56cc3b 100644 --- a/x/staking/keeper/validator.go +++ b/x/staking/keeper/validator.go @@ -25,19 +25,6 @@ func (k Keeper) GetValidator(ctx sdk.Context, addr sdk.ValAddress) (validator ty return validator, true } -// get a single validator by orchestrator address -func (k Keeper) GetValidatorByOrchestrator(ctx sdk.Context, addr sdk.AccAddress) (validator types.Validator, found bool) { - // TODO find a better way to iterate - // https://github.com/celestiaorg/cosmos-sdk/issues/129 - validators := k.GetAllValidators(ctx) - for _, validator := range validators { - if validator.Orchestrator == addr.String() { - return validator, true - } - } - return types.Validator{}, false -} - func (k Keeper) mustGetValidator(ctx sdk.Context, addr sdk.ValAddress) types.Validator { validator, found := k.GetValidator(ctx, addr) if !found { @@ -68,19 +55,6 @@ func (k Keeper) mustGetValidatorByConsAddr(ctx sdk.Context, consAddr sdk.ConsAdd return validator } -func (k Keeper) GetValidatorByOrchestratorAddress(ctx sdk.Context, orch sdk.AccAddress) (types.Validator, bool) { - // TODO optimise these queries and even add grpc queries for them. - // Issue: https://github.com/celestiaorg/cosmos-sdk/issues/129 - validators := k.GetAllValidators(ctx) - for _, val := range validators { - if val.Orchestrator == orch.String() { - return val, true - } - } - - return types.Validator{}, false -} - func (k Keeper) GetValidatorByEVMAddress(ctx sdk.Context, evm common.Address) (types.Validator, bool) { // TODO optimise these queries and even add grpc queries for them. // Issue: https://github.com/celestiaorg/cosmos-sdk/issues/129 diff --git a/x/staking/keeper/validator_test.go b/x/staking/keeper/validator_test.go index 198a6270fa2..f892bae849f 100644 --- a/x/staking/keeper/validator_test.go +++ b/x/staking/keeper/validator_test.go @@ -21,8 +21,8 @@ import ( "github.com/cosmos/cosmos-sdk/x/staking/types" ) -func newMonikerValidator(t testing.TB, operator sdk.ValAddress, pubKey cryptotypes.PubKey, moniker string, orchAddr sdk.AccAddress, evmAddr common.Address) types.Validator { - v, err := types.NewValidator(operator, pubKey, types.Description{Moniker: moniker}, orchAddr, evmAddr) +func newMonikerValidator(t testing.TB, operator sdk.ValAddress, pubKey cryptotypes.PubKey, moniker string, evmAddr common.Address) types.Validator { + v, err := types.NewValidator(operator, pubKey, types.Description{Moniker: moniker}, evmAddr) require.NoError(t, err) return v } @@ -63,7 +63,7 @@ func initValidators(t testing.TB, power int64, numAddrs int, powers []int64) (*s for i, power := range powers { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - vs[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), pks[i], sdk.AccAddress(pks[i].Address()), *randomEVMAddress) + vs[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), pks[i], *randomEVMAddress) tokens := app.StakingKeeper.TokensFromConsensusPower(ctx, power) vs[i], _ = vs[i].AddTokensFromDel(tokens) } @@ -80,7 +80,7 @@ func TestSetValidator(t *testing.T) { // test how the validator is set from a purely unbonbed pool randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator := teststaking.NewValidator(t, valAddr, valPubKey, sdk.AccAddress(valPubKey.Address()), *randomEVMAddress) + validator := teststaking.NewValidator(t, valAddr, valPubKey, *randomEVMAddress) validator, _ = validator.AddTokensFromDel(valTokens) require.Equal(t, types.Unbonded, validator.Status) assert.Equal(t, valTokens, validator.Tokens) @@ -138,7 +138,7 @@ func TestUpdateValidatorByPowerIndex(t *testing.T) { // add a validator randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEVMAddress) + validator := teststaking.NewValidator(t, addrVals[0], PKs[0], *randomEVMAddress) validator, delSharesCreated := validator.AddTokensFromDel(app.StakingKeeper.TokensFromConsensusPower(ctx, 100)) require.Equal(t, types.Unbonded, validator.Status) require.Equal(t, app.StakingKeeper.TokensFromConsensusPower(ctx, 100), validator.Tokens) @@ -191,7 +191,7 @@ func TestUpdateBondedValidatorsDecreaseCliff(t *testing.T) { moniker := fmt.Sprintf("val#%d", int64(i)) randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - val := newMonikerValidator(t, valAddrs[i], PKs[i], moniker, sdk.AccAddress(PKs[0].Address()), *randomEVMAddress) + val := newMonikerValidator(t, valAddrs[i], PKs[i], moniker, *randomEVMAddress) delTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, int64((i+1)*10)) val, _ = val.AddTokensFromDel(delTokens) @@ -234,7 +234,7 @@ func TestSlashToZeroPowerRemoved(t *testing.T) { // add a validator randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEVMAddress) + validator := teststaking.NewValidator(t, addrVals[0], PKs[0], *randomEVMAddress) valTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 100) bondedPool := app.StakingKeeper.GetBondedPool(ctx) @@ -269,7 +269,7 @@ func TestValidatorBasics(t *testing.T) { for i, power := range powers { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validators[i] = teststaking.NewValidator(t, addrVals[i], PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEVMAddress) + validators[i] = teststaking.NewValidator(t, addrVals[i], PKs[i], *randomEVMAddress) validators[i].Status = types.Unbonded validators[i].Tokens = sdk.ZeroInt() tokens := app.StakingKeeper.TokensFromConsensusPower(ctx, power) @@ -377,7 +377,7 @@ func TestGetValidatorSortingUnmixed(t *testing.T) { for i, amt := range amts { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEVMAddress) + validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], *randomEVMAddress) validators[i].Status = types.Bonded validators[i].Tokens = amt validators[i].DelegatorShares = sdk.NewDecFromInt(amt) @@ -473,7 +473,7 @@ func TestGetValidatorSortingMixed(t *testing.T) { for i, amt := range amts { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEVMAddress) + validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], *randomEVMAddress) validators[i].DelegatorShares = sdk.NewDecFromInt(amt) validators[i].Status = types.Bonded validators[i].Tokens = amt @@ -523,7 +523,7 @@ func TestGetValidatorsEdgeCases(t *testing.T) { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) moniker := fmt.Sprintf("val#%d", int64(i)) - validators[i] = newMonikerValidator(t, sdk.ValAddress(addrs[i]), PKs[i], moniker, sdk.AccAddress(PKs[i].Address()), *randomEVMAddress) + validators[i] = newMonikerValidator(t, sdk.ValAddress(addrs[i]), PKs[i], moniker, *randomEVMAddress) tokens := app.StakingKeeper.TokensFromConsensusPower(ctx, power) validators[i], _ = validators[i].AddTokensFromDel(tokens) @@ -638,9 +638,9 @@ func TestValidatorBondHeight(t *testing.T) { // initialize some validators into the state var validators [3]types.Validator - validators[0] = teststaking.NewValidator(t, sdk.ValAddress(PKs[0].Address().Bytes()), PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEVMAddress1) - validators[1] = teststaking.NewValidator(t, sdk.ValAddress(addrs[1]), PKs[1], sdk.AccAddress(PKs[1].Address()), *randomEVMAddress2) - validators[2] = teststaking.NewValidator(t, sdk.ValAddress(addrs[2]), PKs[2], sdk.AccAddress(PKs[2].Address()), *randomEVMAddress3) + validators[0] = teststaking.NewValidator(t, sdk.ValAddress(PKs[0].Address().Bytes()), PKs[0], *randomEVMAddress1) + validators[1] = teststaking.NewValidator(t, sdk.ValAddress(addrs[1]), PKs[1], *randomEVMAddress2) + validators[2] = teststaking.NewValidator(t, sdk.ValAddress(addrs[2]), PKs[2], *randomEVMAddress3) tokens0 := app.StakingKeeper.TokensFromConsensusPower(ctx, 200) tokens1 := app.StakingKeeper.TokensFromConsensusPower(ctx, 100) @@ -688,7 +688,7 @@ func TestFullValidatorSetPowerChange(t *testing.T) { for i, power := range powers { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEVMAddress) + validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], *randomEVMAddress) tokens := app.StakingKeeper.TokensFromConsensusPower(ctx, power) validators[i], _ = validators[i].AddTokensFromDel(tokens) keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validators[i], true) @@ -731,7 +731,7 @@ func TestApplyAndReturnValidatorSetUpdatesAllNone(t *testing.T) { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validators[i] = teststaking.NewValidator(t, valAddr, valPubKey, sdk.AccAddress(valPubKey.Address()), *randomEVMAddress) + validators[i] = teststaking.NewValidator(t, valAddr, valPubKey, *randomEVMAddress) tokens := app.StakingKeeper.TokensFromConsensusPower(ctx, power) validators[i], _ = validators[i].AddTokensFromDel(tokens) } @@ -759,7 +759,7 @@ func TestApplyAndReturnValidatorSetUpdatesIdentical(t *testing.T) { for i, power := range powers { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEVMAddress) + validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], *randomEVMAddress) tokens := app.StakingKeeper.TokensFromConsensusPower(ctx, power) validators[i], _ = validators[i].AddTokensFromDel(tokens) @@ -784,7 +784,7 @@ func TestApplyAndReturnValidatorSetUpdatesSingleValueChange(t *testing.T) { for i, power := range powers { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEVMAddress) + validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], *randomEVMAddress) tokens := app.StakingKeeper.TokensFromConsensusPower(ctx, power) validators[i], _ = validators[i].AddTokensFromDel(tokens) @@ -871,7 +871,7 @@ func TestApplyAndReturnValidatorSetUpdatesWithCliffValidator(t *testing.T) { for i, power := range powers { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEVMAddress) + validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], *randomEVMAddress) tokens := app.StakingKeeper.TokensFromConsensusPower(ctx, power) validators[i], _ = validators[i].AddTokensFromDel(tokens) } @@ -906,7 +906,7 @@ func TestApplyAndReturnValidatorSetUpdatesPowerDecrease(t *testing.T) { for i, power := range powers { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEVMAddress) + validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], *randomEVMAddress) tokens := app.StakingKeeper.TokensFromConsensusPower(ctx, power) validators[i], _ = validators[i].AddTokensFromDel(tokens) } @@ -954,7 +954,7 @@ func TestApplyAndReturnValidatorSetUpdatesNewValidator(t *testing.T) { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validators[i] = teststaking.NewValidator(t, valAddr, valPubKey, sdk.AccAddress(valPubKey.Address()), *randomEVMAddress) + validators[i] = teststaking.NewValidator(t, valAddr, valPubKey, *randomEVMAddress) tokens := app.StakingKeeper.TokensFromConsensusPower(ctx, power) validators[i], _ = validators[i].AddTokensFromDel(tokens) @@ -990,7 +990,7 @@ func TestApplyAndReturnValidatorSetUpdatesNewValidator(t *testing.T) { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator := teststaking.NewValidator(t, valAddr, valPubKey, sdk.AccAddress(valPubKey.Address()), *randomEVMAddress) + validator := teststaking.NewValidator(t, valAddr, valPubKey, *randomEVMAddress) validator, _ = validator.AddTokensFromDel(amt) app.StakingKeeper.SetValidator(ctx, validator) @@ -1005,7 +1005,7 @@ func TestApplyAndReturnValidatorSetUpdatesNewValidator(t *testing.T) { randomEVMAddress2, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator = teststaking.NewValidator(t, valAddr, valPubKey, sdk.AccAddress(valPubKey.Address()), *randomEVMAddress2) + validator = teststaking.NewValidator(t, valAddr, valPubKey, *randomEVMAddress2) tokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 500) validator, _ = validator.AddTokensFromDel(tokens) app.StakingKeeper.SetValidator(ctx, validator) @@ -1039,7 +1039,7 @@ func TestApplyAndReturnValidatorSetUpdatesBondTransition(t *testing.T) { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validators[i] = newMonikerValidator(t, valAddr, valPubKey, moniker, sdk.AccAddress(valPubKey.Address()), *randomEVMAddress) + validators[i] = newMonikerValidator(t, valAddr, valPubKey, moniker, *randomEVMAddress) tokens := app.StakingKeeper.TokensFromConsensusPower(ctx, power) validators[i], _ = validators[i].AddTokensFromDel(tokens) app.StakingKeeper.SetValidator(ctx, validators[i]) @@ -1117,8 +1117,8 @@ func TestUpdateValidatorCommission(t *testing.T) { randomEVMAddress2, err := teststaking.RandomEVMAddress() require.NoError(t, err) - val1 := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEVMAddress1) - val2 := teststaking.NewValidator(t, addrVals[1], PKs[1], sdk.AccAddress(PKs[1].Address()), *randomEVMAddress2) + val1 := teststaking.NewValidator(t, addrVals[0], PKs[0], *randomEVMAddress1) + val2 := teststaking.NewValidator(t, addrVals[1], PKs[1], *randomEVMAddress2) val1, _ = val1.SetInitialCommission(commission1) val2, _ = val2.SetInitialCommission(commission2) diff --git a/x/staking/migrations/v043/store_test.go b/x/staking/migrations/v043/store_test.go index 0f6b2b7f7f0..ce4649be009 100644 --- a/x/staking/migrations/v043/store_test.go +++ b/x/staking/migrations/v043/store_test.go @@ -26,7 +26,7 @@ func TestStoreMigration(t *testing.T) { valAddr1 := sdk.ValAddress(addr1) randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - val := teststaking.NewValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEVMAddress) + val := teststaking.NewValidator(t, valAddr1, pk1, *randomEVMAddress) _, pk1, addr2 := testdata.KeyTestPubAddr() valAddr2 := sdk.ValAddress(addr2) _, _, addr3 := testdata.KeyTestPubAddr() diff --git a/x/staking/simulation/decoder_test.go b/x/staking/simulation/decoder_test.go index 8b938484f93..a9f3400e88b 100644 --- a/x/staking/simulation/decoder_test.go +++ b/x/staking/simulation/decoder_test.go @@ -40,7 +40,7 @@ func TestDecodeStore(t *testing.T) { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - val, err := types.NewValidator(valAddr1, delPk1, types.NewDescription("test", "test", "test", "test", "test"), sdk.AccAddress(delPk1.Address()), *randomEVMAddress) + val, err := types.NewValidator(valAddr1, delPk1, types.NewDescription("test", "test", "test", "test", "test"), *randomEVMAddress) require.NoError(t, err) del := types.NewDelegation(delAddr1, valAddr1, sdk.OneDec()) ubd := types.NewUnbondingDelegation(delAddr1, valAddr1, 15, bondTime, sdk.OneInt()) diff --git a/x/staking/simulation/genesis.go b/x/staking/simulation/genesis.go index 4deab243331..7f2be24cfb3 100644 --- a/x/staking/simulation/genesis.go +++ b/x/staking/simulation/genesis.go @@ -86,10 +86,9 @@ func RandomizedGenState(simState *module.SimulationState) { simulation.RandomDecAmount(simState.Rand, maxCommission), ) - orchAddr, _ := sdk.AccAddressFromBech32("celes1qktu8009djs6uym9uwj84ead24exkezsaqrmn5") evmAddr := common.HexToAddress("0x91DEd26b5f38B065FC0204c7929Da6b2A21277Cd") - validator, err := types.NewValidator(valAddr, simState.Accounts[i].ConsKey.PubKey(), types.Description{}, orchAddr, evmAddr) + validator, err := types.NewValidator(valAddr, simState.Accounts[i].ConsKey.PubKey(), types.Description{}, evmAddr) if err != nil { panic(err) } diff --git a/x/staking/simulation/operations.go b/x/staking/simulation/operations.go index 278f11f646b..986f4a3568f 100644 --- a/x/staking/simulation/operations.go +++ b/x/staking/simulation/operations.go @@ -159,13 +159,12 @@ func SimulateMsgCreateValidator(ak types.AccountKeeper, bk types.BankKeeper, k k simtypes.RandomDecAmount(r, maxCommission), ) - orchAddr := simAccount.Address - // create an EVM address from the orchestrator address + // create an EVM address from the account address // this is mainly to have a deterministic way of generating an EVM address on every run // to have a long enough bytes array evmAddr := common.HexToAddress("0x" + fmt.Sprintf("%X", simAccount.Address.Bytes())) - msg, err := types.NewMsgCreateValidator(address, simAccount.ConsKey.PubKey(), selfDelegation, description, commission, sdk.OneInt(), orchAddr, evmAddr) + msg, err := types.NewMsgCreateValidator(address, simAccount.ConsKey.PubKey(), selfDelegation, description, commission, sdk.OneInt(), evmAddr) if err != nil { return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to create CreateValidator message"), nil, err } @@ -226,8 +225,8 @@ func SimulateMsgEditValidator(ak types.AccountKeeper, bk types.BankKeeper, k kee simtypes.RandStringOfLength(r, 10), ) - // TODO make the orch/eth addresses also random - msg := types.NewMsgEditValidator(address, description, &newCommissionRate, nil, nil, nil) + // TODO make the eth addresses also random + msg := types.NewMsgEditValidator(address, description, &newCommissionRate, nil, nil) txCtx := simulation.OperationInput{ R: r, diff --git a/x/staking/simulation/operations_test.go b/x/staking/simulation/operations_test.go index e28de212e7a..a610bb241b0 100644 --- a/x/staking/simulation/operations_test.go +++ b/x/staking/simulation/operations_test.go @@ -364,7 +364,7 @@ func getTestingValidator(t *testing.T, app *simapp.SimApp, ctx sdk.Context, acco valAddr := sdk.ValAddress(account.PubKey.Address().Bytes()) randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator := teststaking.NewValidator(t, valAddr, valPubKey, sdk.AccAddress(valPubKey.Address()), *randomEVMAddress) + validator := teststaking.NewValidator(t, valAddr, valPubKey, *randomEVMAddress) validator, err = validator.SetInitialCommission(commission) require.NoError(t, err) diff --git a/x/staking/teststaking/helper.go b/x/staking/teststaking/helper.go index 5069480c1a8..1084f87f4b1 100644 --- a/x/staking/teststaking/helper.go +++ b/x/staking/teststaking/helper.go @@ -35,24 +35,24 @@ func NewHelper(t *testing.T, ctx sdk.Context, k keeper.Keeper) *Helper { } // CreateValidator calls staking module `MsgServer/CreateValidator` to create a new validator -func (sh *Helper) CreateValidator(addr sdk.ValAddress, pk cryptotypes.PubKey, stakeAmount math.Int, orchAddress sdk.AccAddress, evmAddress common.Address, ok bool) { +func (sh *Helper) CreateValidator(addr sdk.ValAddress, pk cryptotypes.PubKey, stakeAmount math.Int, evmAddress common.Address, ok bool) { coin := sdk.NewCoin(sh.Denom, stakeAmount) - sh.createValidator(addr, pk, coin, orchAddress, evmAddress, ok) + sh.createValidator(addr, pk, coin, evmAddress, ok) } // CreateValidatorWithValPower calls staking module `MsgServer/CreateValidator` to create a new validator with zero // commission -func (sh *Helper) CreateValidatorWithValPower(addr sdk.ValAddress, pk cryptotypes.PubKey, valPower int64, orchAddress sdk.AccAddress, evmAddress common.Address, ok bool) math.Int { +func (sh *Helper) CreateValidatorWithValPower(addr sdk.ValAddress, pk cryptotypes.PubKey, valPower int64, evmAddress common.Address, ok bool) math.Int { amount := sh.k.TokensFromConsensusPower(sh.Ctx, valPower) coin := sdk.NewCoin(sh.Denom, amount) - sh.createValidator(addr, pk, coin, orchAddress, evmAddress, ok) + sh.createValidator(addr, pk, coin, evmAddress, ok) return amount } // CreateValidatorMsg returns a message used to create validator in this service. -func (sh *Helper) CreateValidatorMsg(addr sdk.ValAddress, pk cryptotypes.PubKey, stakeAmount math.Int, orchAddress sdk.AccAddress, evmAddress common.Address) *stakingtypes.MsgCreateValidator { +func (sh *Helper) CreateValidatorMsg(addr sdk.ValAddress, pk cryptotypes.PubKey, stakeAmount math.Int, evmAddress common.Address) *stakingtypes.MsgCreateValidator { coin := sdk.NewCoin(sh.Denom, stakeAmount) - msg, err := stakingtypes.NewMsgCreateValidator(addr, pk, coin, stakingtypes.Description{}, sh.Commission, sdk.OneInt(), orchAddress, evmAddress) + msg, err := stakingtypes.NewMsgCreateValidator(addr, pk, coin, stakingtypes.Description{}, sh.Commission, sdk.OneInt(), evmAddress) require.NoError(sh.t, err) return msg } @@ -62,8 +62,8 @@ func (sh *Helper) CreateValidatorWithMsg(ctx context.Context, msg *stakingtypes. return sh.msgSrvr.CreateValidator(ctx, msg) } -func (sh *Helper) createValidator(addr sdk.ValAddress, pk cryptotypes.PubKey, coin sdk.Coin, orchAddress sdk.AccAddress, evmAddress common.Address, ok bool) { - msg, err := stakingtypes.NewMsgCreateValidator(addr, pk, coin, stakingtypes.Description{}, sh.Commission, sdk.OneInt(), orchAddress, evmAddress) +func (sh *Helper) createValidator(addr sdk.ValAddress, pk cryptotypes.PubKey, coin sdk.Coin, evmAddress common.Address, ok bool) { + msg, err := stakingtypes.NewMsgCreateValidator(addr, pk, coin, stakingtypes.Description{}, sh.Commission, sdk.OneInt(), evmAddress) require.NoError(sh.t, err) res, err := sh.msgSrvr.CreateValidator(sdk.WrapSDKContext(sh.Ctx), msg) if ok { diff --git a/x/staking/teststaking/validator.go b/x/staking/teststaking/validator.go index 87fa8f2ed79..6f86f3405ec 100644 --- a/x/staking/teststaking/validator.go +++ b/x/staking/teststaking/validator.go @@ -15,8 +15,8 @@ import ( ) // NewValidator is a testing helper method to create validators in tests -func NewValidator(t testing.TB, operator sdk.ValAddress, pubKey cryptotypes.PubKey, orchAddr sdk.AccAddress, evmAddr common.Address) types.Validator { - v, err := types.NewValidator(operator, pubKey, types.Description{}, orchAddr, evmAddr) +func NewValidator(t testing.TB, operator sdk.ValAddress, pubKey cryptotypes.PubKey, evmAddr common.Address) types.Validator { + v, err := types.NewValidator(operator, pubKey, types.Description{}, evmAddr) require.NoError(t, err) return v } diff --git a/x/staking/types/errors.go b/x/staking/types/errors.go index d74a68415b5..fbaae7c65f7 100644 --- a/x/staking/types/errors.go +++ b/x/staking/types/errors.go @@ -11,47 +11,46 @@ import ( // // REF: https://github.com/cosmos/cosmos-sdk/issues/5450 var ( - ErrEmptyValidatorAddr = sdkerrors.Register(ModuleName, 2, "empty validator address") - ErrNoValidatorFound = sdkerrors.Register(ModuleName, 3, "validator does not exist") - ErrValidatorOwnerExists = sdkerrors.Register(ModuleName, 4, "validator already exist for this operator address; must use new validator operator address") - ErrValidatorPubKeyExists = sdkerrors.Register(ModuleName, 5, "validator already exist for this pubkey; must use new validator pubkey") - ErrValidatorPubKeyTypeNotSupported = sdkerrors.Register(ModuleName, 6, "validator pubkey type is not supported") - ErrValidatorJailed = sdkerrors.Register(ModuleName, 7, "validator for this address is currently jailed") - ErrBadRemoveValidator = sdkerrors.Register(ModuleName, 8, "failed to remove validator") - ErrCommissionNegative = sdkerrors.Register(ModuleName, 9, "commission must be positive") - ErrCommissionHuge = sdkerrors.Register(ModuleName, 10, "commission cannot be more than 100%") - ErrCommissionGTMaxRate = sdkerrors.Register(ModuleName, 11, "commission cannot be more than the max rate") - ErrCommissionUpdateTime = sdkerrors.Register(ModuleName, 12, "commission cannot be changed more than once in 24h") - ErrCommissionChangeRateNegative = sdkerrors.Register(ModuleName, 13, "commission change rate must be positive") - ErrCommissionChangeRateGTMaxRate = sdkerrors.Register(ModuleName, 14, "commission change rate cannot be more than the max rate") - ErrCommissionGTMaxChangeRate = sdkerrors.Register(ModuleName, 15, "commission cannot be changed more than max change rate") - ErrSelfDelegationBelowMinimum = sdkerrors.Register(ModuleName, 16, "validator's self delegation must be greater than their minimum self delegation") - ErrMinSelfDelegationDecreased = sdkerrors.Register(ModuleName, 17, "minimum self delegation cannot be decrease") - ErrEmptyDelegatorAddr = sdkerrors.Register(ModuleName, 18, "empty delegator address") - ErrNoDelegation = sdkerrors.Register(ModuleName, 19, "no delegation for (address, validator) tuple") - ErrBadDelegatorAddr = sdkerrors.Register(ModuleName, 20, "delegator does not exist with address") - ErrNoDelegatorForAddress = sdkerrors.Register(ModuleName, 21, "delegator does not contain delegation") - ErrInsufficientShares = sdkerrors.Register(ModuleName, 22, "insufficient delegation shares") - ErrDelegationValidatorEmpty = sdkerrors.Register(ModuleName, 23, "cannot delegate to an empty validator") - ErrNotEnoughDelegationShares = sdkerrors.Register(ModuleName, 24, "not enough delegation shares") - ErrNotMature = sdkerrors.Register(ModuleName, 25, "entry not mature") - ErrNoUnbondingDelegation = sdkerrors.Register(ModuleName, 26, "no unbonding delegation found") - ErrMaxUnbondingDelegationEntries = sdkerrors.Register(ModuleName, 27, "too many unbonding delegation entries for (delegator, validator) tuple") - ErrNoRedelegation = sdkerrors.Register(ModuleName, 28, "no redelegation found") - ErrSelfRedelegation = sdkerrors.Register(ModuleName, 29, "cannot redelegate to the same validator") - ErrTinyRedelegationAmount = sdkerrors.Register(ModuleName, 30, "too few tokens to redelegate (truncates to zero tokens)") - ErrBadRedelegationDst = sdkerrors.Register(ModuleName, 31, "redelegation destination validator not found") - ErrTransitiveRedelegation = sdkerrors.Register(ModuleName, 32, "redelegation to this validator already in progress; first redelegation to this validator must complete before next redelegation") - ErrMaxRedelegationEntries = sdkerrors.Register(ModuleName, 33, "too many redelegation entries for (delegator, src-validator, dst-validator) tuple") - ErrDelegatorShareExRateInvalid = sdkerrors.Register(ModuleName, 34, "cannot delegate to validators with invalid (zero) ex-rate") - ErrBothShareMsgsGiven = sdkerrors.Register(ModuleName, 35, "both shares amount and shares percent provided") - ErrNeitherShareMsgsGiven = sdkerrors.Register(ModuleName, 36, "neither shares amount nor shares percent provided") - ErrInvalidHistoricalInfo = sdkerrors.Register(ModuleName, 37, "invalid historical info") - ErrNoHistoricalInfo = sdkerrors.Register(ModuleName, 38, "no historical info found") - ErrEmptyValidatorPubKey = sdkerrors.Register(ModuleName, 39, "empty validator public key") - ErrCommissionLTMinRate = sdkerrors.Register(ModuleName, 40, "commission cannot be less than min rate") - ErrValidatorOrchestratorAddressExists = sdkerrors.Register(ModuleName, 41, "validator already exist for this orchestrator address; must use new validator orchestrator address") - ErrValidatorEVMAddressExists = sdkerrors.Register(ModuleName, 42, "validator already exist for this EVM address; must use new validator EVM address") - ErrValidatorEVMZeroAddress = sdkerrors.Register(ModuleName, 43, "cannot use zero address for EVM address; must use a non zero validator EVM address") - ErrEVMAddressNotHex = sdkerrors.Register(ModuleName, 44, "the provided eth address is not a valid hex address") + ErrEmptyValidatorAddr = sdkerrors.Register(ModuleName, 2, "empty validator address") + ErrNoValidatorFound = sdkerrors.Register(ModuleName, 3, "validator does not exist") + ErrValidatorOwnerExists = sdkerrors.Register(ModuleName, 4, "validator already exist for this operator address; must use new validator operator address") + ErrValidatorPubKeyExists = sdkerrors.Register(ModuleName, 5, "validator already exist for this pubkey; must use new validator pubkey") + ErrValidatorPubKeyTypeNotSupported = sdkerrors.Register(ModuleName, 6, "validator pubkey type is not supported") + ErrValidatorJailed = sdkerrors.Register(ModuleName, 7, "validator for this address is currently jailed") + ErrBadRemoveValidator = sdkerrors.Register(ModuleName, 8, "failed to remove validator") + ErrCommissionNegative = sdkerrors.Register(ModuleName, 9, "commission must be positive") + ErrCommissionHuge = sdkerrors.Register(ModuleName, 10, "commission cannot be more than 100%") + ErrCommissionGTMaxRate = sdkerrors.Register(ModuleName, 11, "commission cannot be more than the max rate") + ErrCommissionUpdateTime = sdkerrors.Register(ModuleName, 12, "commission cannot be changed more than once in 24h") + ErrCommissionChangeRateNegative = sdkerrors.Register(ModuleName, 13, "commission change rate must be positive") + ErrCommissionChangeRateGTMaxRate = sdkerrors.Register(ModuleName, 14, "commission change rate cannot be more than the max rate") + ErrCommissionGTMaxChangeRate = sdkerrors.Register(ModuleName, 15, "commission cannot be changed more than max change rate") + ErrSelfDelegationBelowMinimum = sdkerrors.Register(ModuleName, 16, "validator's self delegation must be greater than their minimum self delegation") + ErrMinSelfDelegationDecreased = sdkerrors.Register(ModuleName, 17, "minimum self delegation cannot be decrease") + ErrEmptyDelegatorAddr = sdkerrors.Register(ModuleName, 18, "empty delegator address") + ErrNoDelegation = sdkerrors.Register(ModuleName, 19, "no delegation for (address, validator) tuple") + ErrBadDelegatorAddr = sdkerrors.Register(ModuleName, 20, "delegator does not exist with address") + ErrNoDelegatorForAddress = sdkerrors.Register(ModuleName, 21, "delegator does not contain delegation") + ErrInsufficientShares = sdkerrors.Register(ModuleName, 22, "insufficient delegation shares") + ErrDelegationValidatorEmpty = sdkerrors.Register(ModuleName, 23, "cannot delegate to an empty validator") + ErrNotEnoughDelegationShares = sdkerrors.Register(ModuleName, 24, "not enough delegation shares") + ErrNotMature = sdkerrors.Register(ModuleName, 25, "entry not mature") + ErrNoUnbondingDelegation = sdkerrors.Register(ModuleName, 26, "no unbonding delegation found") + ErrMaxUnbondingDelegationEntries = sdkerrors.Register(ModuleName, 27, "too many unbonding delegation entries for (delegator, validator) tuple") + ErrNoRedelegation = sdkerrors.Register(ModuleName, 28, "no redelegation found") + ErrSelfRedelegation = sdkerrors.Register(ModuleName, 29, "cannot redelegate to the same validator") + ErrTinyRedelegationAmount = sdkerrors.Register(ModuleName, 30, "too few tokens to redelegate (truncates to zero tokens)") + ErrBadRedelegationDst = sdkerrors.Register(ModuleName, 31, "redelegation destination validator not found") + ErrTransitiveRedelegation = sdkerrors.Register(ModuleName, 32, "redelegation to this validator already in progress; first redelegation to this validator must complete before next redelegation") + ErrMaxRedelegationEntries = sdkerrors.Register(ModuleName, 33, "too many redelegation entries for (delegator, src-validator, dst-validator) tuple") + ErrDelegatorShareExRateInvalid = sdkerrors.Register(ModuleName, 34, "cannot delegate to validators with invalid (zero) ex-rate") + ErrBothShareMsgsGiven = sdkerrors.Register(ModuleName, 35, "both shares amount and shares percent provided") + ErrNeitherShareMsgsGiven = sdkerrors.Register(ModuleName, 36, "neither shares amount nor shares percent provided") + ErrInvalidHistoricalInfo = sdkerrors.Register(ModuleName, 37, "invalid historical info") + ErrNoHistoricalInfo = sdkerrors.Register(ModuleName, 38, "no historical info found") + ErrEmptyValidatorPubKey = sdkerrors.Register(ModuleName, 39, "empty validator public key") + ErrCommissionLTMinRate = sdkerrors.Register(ModuleName, 40, "commission cannot be less than min rate") + ErrValidatorEVMAddressExists = sdkerrors.Register(ModuleName, 41, "validator already exist for this EVM address; must use new validator EVM address") + ErrValidatorEVMZeroAddress = sdkerrors.Register(ModuleName, 42, "cannot use zero address for EVM address; must use a non zero validator EVM address") + ErrEVMAddressNotHex = sdkerrors.Register(ModuleName, 43, "the provided eth address is not a valid hex address") ) diff --git a/x/staking/types/historical_info_test.go b/x/staking/types/historical_info_test.go index 518548e3224..edef4caaa31 100644 --- a/x/staking/types/historical_info_test.go +++ b/x/staking/types/historical_info_test.go @@ -30,9 +30,9 @@ func createValidators(t *testing.T) []types.Validator { randomEVMAddress3, err := teststaking.RandomEVMAddress() require.NoError(t, err) return []types.Validator{ - newValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEVMAddress1), - newValidator(t, valAddr2, pk2, sdk.AccAddress(pk2.Address()), *randomEVMAddress2), - newValidator(t, valAddr3, pk3, sdk.AccAddress(pk3.Address()), *randomEVMAddress3), + newValidator(t, valAddr1, pk1, *randomEVMAddress1), + newValidator(t, valAddr2, pk2, *randomEVMAddress2), + newValidator(t, valAddr3, pk3, *randomEVMAddress3), } } diff --git a/x/staking/types/keys_test.go b/x/staking/types/keys_test.go index ed12498b675..a7b3e5c472b 100644 --- a/x/staking/types/keys_test.go +++ b/x/staking/types/keys_test.go @@ -31,7 +31,7 @@ func TestGetValidatorPowerRank(t *testing.T) { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - val1 := newValidator(t, valAddr1, keysPK1, sdk.AccAddress(keysPK1.Address()), *randomEVMAddress) + val1 := newValidator(t, valAddr1, keysPK1, *randomEVMAddress) val1.Tokens = sdk.ZeroInt() val2, val3, val4 := val1, val1, val1 val2.Tokens = sdk.TokensFromConsensusPower(1, sdk.DefaultPowerReduction) diff --git a/x/staking/types/msg.go b/x/staking/types/msg.go index 914be431ada..0a213676167 100644 --- a/x/staking/types/msg.go +++ b/x/staking/types/msg.go @@ -36,7 +36,7 @@ func NewMsgCreateValidator( valAddr sdk.ValAddress, pubKey cryptotypes.PubKey, //nolint:interfacer selfDelegation sdk.Coin, description Description, commission CommissionRates, minSelfDelegation math.Int, - orch sdk.AccAddress, eth common.Address, + eth common.Address, ) (*MsgCreateValidator, error) { var pkAny *codectypes.Any if pubKey != nil { @@ -53,7 +53,6 @@ func NewMsgCreateValidator( Value: selfDelegation, Commission: commission, MinSelfDelegation: minSelfDelegation, - Orchestrator: orch.String(), EvmAddress: eth.Hex(), }, nil } @@ -149,16 +148,9 @@ func (msg MsgCreateValidator) UnpackInterfaces(unpacker codectypes.AnyUnpacker) func NewMsgEditValidator( valAddr sdk.ValAddress, description Description, newRate *sdk.Dec, newMinSelfDelegation *math.Int, - newOrch *sdk.AccAddress, newEVMAddress *common.Address, + newEVMAddress *common.Address, ) *MsgEditValidator { - // TODO add test for Orchestrator and EVM addresses edit - var orch string - if newOrch != nil { - orch = newOrch.String() - } else { - orch = "" - } - + // TODO add test for EVM addresses edit var evmStringAddress string if newEVMAddress != nil { evmStringAddress = newEVMAddress.Hex() @@ -171,7 +163,6 @@ func NewMsgEditValidator( CommissionRate: newRate, ValidatorAddress: valAddr.String(), MinSelfDelegation: newMinSelfDelegation, - Orchestrator: orch, EvmAddress: evmStringAddress, } } diff --git a/x/staking/types/msg_test.go b/x/staking/types/msg_test.go index 6675571daf5..c1cba7441c8 100644 --- a/x/staking/types/msg_test.go +++ b/x/staking/types/msg_test.go @@ -42,7 +42,7 @@ func TestMsgDecode(t *testing.T) { // now let's try to serialize the whole message commission1 := types.NewCommissionRates(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()) - msg, err := types.NewMsgCreateValidator(valAddr1, pk1, coinPos, types.Description{}, commission1, sdk.OneInt(), sdk.AccAddress(pk1.Address()), *randomEVMAddress) + msg, err := types.NewMsgCreateValidator(valAddr1, pk1, coinPos, types.Description{}, commission1, sdk.OneInt(), *randomEVMAddress) require.NoError(t, err) msgSerialized, err := cdc.MarshalInterface(msg) require.NoError(t, err) @@ -86,7 +86,7 @@ func TestMsgCreateValidator(t *testing.T) { description := types.NewDescription(tc.moniker, tc.identity, tc.website, tc.securityContact, tc.details) randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - msg, err := types.NewMsgCreateValidator(tc.validatorAddr, tc.pubkey, tc.bond, description, tc.CommissionRates, tc.minSelfDelegation, sdk.AccAddress(pk1.Address()), *randomEVMAddress) + msg, err := types.NewMsgCreateValidator(tc.validatorAddr, tc.pubkey, tc.bond, description, tc.CommissionRates, tc.minSelfDelegation, *randomEVMAddress) require.NoError(t, err) if tc.expectPass { require.Nil(t, msg.ValidateBasic(), "test: %v", tc.name) @@ -114,7 +114,7 @@ func TestMsgEditValidator(t *testing.T) { for _, tc := range tests { description := types.NewDescription(tc.moniker, tc.identity, tc.website, tc.securityContact, tc.details) newRate := sdk.ZeroDec() - msg := types.NewMsgEditValidator(tc.validatorAddr, description, &newRate, &tc.minSelfDelegation, nil, nil) + msg := types.NewMsgEditValidator(tc.validatorAddr, description, &newRate, &tc.minSelfDelegation, nil) if tc.expectPass { require.Nil(t, msg.ValidateBasic(), "test: %v", tc.name) } else { diff --git a/x/staking/types/staking.pb.go b/x/staking/types/staking.pb.go index 3f1449f4832..7d70a88b349 100644 --- a/x/staking/types/staking.pb.go +++ b/x/staking/types/staking.pb.go @@ -336,12 +336,9 @@ type Validator struct { // // Since: cosmos-sdk 0.46 MinSelfDelegation github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,11,opt,name=min_self_delegation,json=minSelfDelegation,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"min_self_delegation"` - // The orchestrator field is a celes1... string (i.e. sdk.AccAddress) that - // references the key that is being delegated to - Orchestrator string `protobuf:"bytes,12,opt,name=orchestrator,proto3" json:"orchestrator,omitempty"` // This is a hex encoded 0x EVM public key that will be used by this // validator on the target EVM chain. - EvmAddress string `protobuf:"bytes,13,opt,name=evm_address,json=evmAddress,proto3" json:"evm_address,omitempty"` + EvmAddress string `protobuf:"bytes,12,opt,name=evm_address,json=evmAddress,proto3" json:"evm_address,omitempty"` } func (m *Validator) Reset() { *m = Validator{} } @@ -1148,114 +1145,113 @@ func init() { } var fileDescriptor_64c30c6cf92913c9 = []byte{ - // 1701 bytes of a gzipped FileDescriptorProto + // 1684 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x58, 0x4d, 0x6c, 0x63, 0x57, 0x15, 0xf6, 0x73, 0x5c, 0xc7, 0x39, 0x4e, 0xe2, 0xe4, 0x4e, 0x5a, 0x3c, 0x16, 0xd8, 0xc6, 0x94, 0x76, 0x8a, 0x3a, 0x0e, 0x13, 0xa4, 0x4a, 0x44, 0x48, 0x68, 0x1c, 0xbb, 0x4c, 0x98, 0x76, 0x70, 0xed, 0x4c, 0x10, 0x3f, 0xe2, 0xe9, 0xfa, 0xbd, 0x1b, 0xe7, 0x92, 0xf7, 0xee, 0xb3, 0xde, 0xbd, - 0x0e, 0xb1, 0x04, 0x12, 0x12, 0x9b, 0x32, 0x0b, 0xd4, 0x65, 0x37, 0x23, 0x8d, 0x54, 0x96, 0x5d, - 0x56, 0x6c, 0x58, 0xb0, 0xad, 0xba, 0x1a, 0x75, 0x45, 0x01, 0x05, 0x34, 0xb3, 0x41, 0xac, 0x50, - 0xf7, 0x20, 0x74, 0x7f, 0xde, 0x4f, 0xec, 0x24, 0x4d, 0xaa, 0x20, 0x55, 0x9a, 0x4d, 0xe2, 0x7b, - 0xef, 0x39, 0xdf, 0x3b, 0xe7, 0x3b, 0x3f, 0xef, 0xdc, 0x07, 0x2f, 0x3a, 0x01, 0xf7, 0x03, 0xbe, - 0xce, 0x05, 0x3e, 0xa0, 0x6c, 0xb8, 0x7e, 0x78, 0x6b, 0x40, 0x04, 0xbe, 0x15, 0xad, 0x9b, 0xa3, - 0x30, 0x10, 0x01, 0x7a, 0x41, 0x4b, 0x35, 0xa3, 0x5d, 0x23, 0x55, 0x59, 0x1b, 0x06, 0xc3, 0x40, - 0x89, 0xac, 0xcb, 0x5f, 0x5a, 0xba, 0x72, 0x7d, 0x18, 0x04, 0x43, 0x8f, 0xac, 0xab, 0xd5, 0x60, - 0xbc, 0xb7, 0x8e, 0xd9, 0xc4, 0x1c, 0x55, 0xa7, 0x8f, 0xdc, 0x71, 0x88, 0x05, 0x0d, 0x98, 0x39, - 0xaf, 0x4d, 0x9f, 0x0b, 0xea, 0x13, 0x2e, 0xb0, 0x3f, 0x8a, 0xb0, 0xb5, 0x25, 0xb6, 0x7e, 0xa8, - 0x31, 0xcb, 0x60, 0x1b, 0x57, 0x06, 0x98, 0x93, 0xd8, 0x0f, 0x27, 0xa0, 0x11, 0xf6, 0x97, 0x05, - 0x61, 0x2e, 0x09, 0x7d, 0xca, 0xc4, 0xba, 0x98, 0x8c, 0x08, 0xd7, 0x7f, 0xf5, 0x69, 0xe3, 0xb7, - 0x16, 0x2c, 0xdf, 0xa1, 0x5c, 0x04, 0x21, 0x75, 0xb0, 0xb7, 0xcd, 0xf6, 0x02, 0xf4, 0x1a, 0xe4, - 0xf7, 0x09, 0x76, 0x49, 0x58, 0xb6, 0xea, 0xd6, 0x8d, 0xe2, 0x46, 0xb9, 0x99, 0x20, 0x34, 0xb5, - 0xee, 0x1d, 0x75, 0xde, 0xca, 0x7d, 0x78, 0x5c, 0xcb, 0xf4, 0x8c, 0x34, 0xfa, 0x2e, 0xe4, 0x0f, - 0xb1, 0xc7, 0x89, 0x28, 0x67, 0xeb, 0x73, 0x37, 0x8a, 0x1b, 0x5f, 0x6d, 0x9e, 0x4e, 0x5f, 0x73, - 0x17, 0x7b, 0xd4, 0xc5, 0x22, 0x88, 0x01, 0xb4, 0x5a, 0xe3, 0xfd, 0x2c, 0x94, 0xb6, 0x02, 0xdf, - 0xa7, 0x9c, 0xd3, 0x80, 0xf5, 0xb0, 0x20, 0x1c, 0x75, 0x21, 0x17, 0x62, 0x41, 0x94, 0x29, 0x0b, - 0xad, 0xef, 0x48, 0xf9, 0xbf, 0x1c, 0xd7, 0x5e, 0x1a, 0x52, 0xb1, 0x3f, 0x1e, 0x34, 0x9d, 0xc0, - 0x37, 0x64, 0x98, 0x7f, 0x37, 0xb9, 0x7b, 0x60, 0xfc, 0x6b, 0x13, 0xe7, 0xe3, 0x0f, 0x6e, 0x82, - 0xb1, 0xa1, 0x4d, 0x9c, 0x9e, 0x42, 0x42, 0x3f, 0x84, 0x82, 0x8f, 0x8f, 0x6c, 0x85, 0x9a, 0xbd, - 0x02, 0xd4, 0x79, 0x1f, 0x1f, 0x49, 0x5b, 0x91, 0x0b, 0x25, 0x09, 0xec, 0xec, 0x63, 0x36, 0x24, - 0x1a, 0x7f, 0xee, 0x0a, 0xf0, 0x97, 0x7c, 0x7c, 0xb4, 0xa5, 0x30, 0xe5, 0x53, 0x36, 0x0b, 0xef, - 0x3e, 0xaa, 0x65, 0xfe, 0xf9, 0xa8, 0x66, 0x35, 0xfe, 0x68, 0x01, 0x24, 0x74, 0xa1, 0x9f, 0xc2, - 0x8a, 0x13, 0xaf, 0xd4, 0xe3, 0xb9, 0x09, 0xe0, 0xcb, 0x67, 0x05, 0x62, 0x8a, 0xec, 0x56, 0x41, - 0x1a, 0xfa, 0xf8, 0xb8, 0x66, 0xf5, 0x4a, 0xce, 0x54, 0x1c, 0x3a, 0x50, 0x1c, 0x8f, 0x5c, 0x2c, - 0x88, 0x2d, 0x53, 0x53, 0x11, 0x57, 0xdc, 0xa8, 0x34, 0x75, 0xde, 0x36, 0xa3, 0xbc, 0x6d, 0xee, - 0x44, 0x79, 0xab, 0xb1, 0xde, 0xf9, 0x7b, 0xcd, 0xea, 0x81, 0x56, 0x94, 0x47, 0x29, 0xeb, 0xdf, - 0xb7, 0xa0, 0xd8, 0x26, 0xdc, 0x09, 0xe9, 0x48, 0x16, 0x02, 0x2a, 0xc3, 0xbc, 0x1f, 0x30, 0x7a, - 0x60, 0xd2, 0x6e, 0xa1, 0x17, 0x2d, 0x51, 0x05, 0x0a, 0xd4, 0x25, 0x4c, 0x50, 0x31, 0xd1, 0x01, - 0xeb, 0xc5, 0x6b, 0xa9, 0xf5, 0x0b, 0x32, 0xe0, 0x34, 0xe2, 0xba, 0x17, 0x2d, 0xd1, 0x2b, 0xb0, - 0xc2, 0x89, 0x33, 0x0e, 0xa9, 0x98, 0xd8, 0x4e, 0xc0, 0x04, 0x76, 0x44, 0x39, 0xa7, 0x44, 0x4a, - 0xd1, 0xfe, 0x96, 0xde, 0x96, 0x20, 0x2e, 0x11, 0x98, 0x7a, 0xbc, 0xfc, 0x9c, 0x06, 0x31, 0xcb, - 0x94, 0xb9, 0xbf, 0x9b, 0x87, 0x85, 0x38, 0x6f, 0xd1, 0x16, 0xac, 0x04, 0x23, 0x12, 0xca, 0xdf, - 0x36, 0x76, 0xdd, 0x90, 0x70, 0x6e, 0x32, 0xb4, 0xfc, 0xf1, 0x07, 0x37, 0xd7, 0x0c, 0xdd, 0xb7, - 0xf5, 0x49, 0x5f, 0x84, 0x94, 0x0d, 0x7b, 0xa5, 0x48, 0xc3, 0x6c, 0xa3, 0x1f, 0xc9, 0x80, 0x31, - 0x4e, 0x18, 0x1f, 0x73, 0x7b, 0x34, 0x1e, 0x1c, 0x90, 0x89, 0xe1, 0x75, 0x6d, 0x86, 0xd7, 0xdb, - 0x6c, 0xd2, 0x2a, 0x7f, 0x94, 0x40, 0x3b, 0xe1, 0x64, 0x24, 0x82, 0x66, 0x77, 0x3c, 0xb8, 0x4b, - 0x26, 0x32, 0x5a, 0x06, 0xa7, 0xab, 0x60, 0xd0, 0x0b, 0x90, 0xff, 0x39, 0xa6, 0x1e, 0x71, 0x15, - 0x2b, 0x85, 0x9e, 0x59, 0xa1, 0x4d, 0xc8, 0x73, 0x81, 0xc5, 0x98, 0x2b, 0x2a, 0x96, 0x37, 0x1a, - 0x67, 0x65, 0x46, 0x2b, 0x60, 0x6e, 0x5f, 0x49, 0xf6, 0x8c, 0x06, 0xda, 0x81, 0xbc, 0x08, 0x0e, - 0x08, 0x33, 0x24, 0x5d, 0x2a, 0xab, 0xb7, 0x99, 0x48, 0x65, 0xf5, 0x36, 0x13, 0x3d, 0x83, 0x85, - 0x86, 0xb0, 0xe2, 0x12, 0x8f, 0x0c, 0x15, 0x95, 0x7c, 0x1f, 0x87, 0x84, 0x97, 0xf3, 0x57, 0x50, - 0x35, 0xa5, 0x18, 0xb5, 0xaf, 0x40, 0xd1, 0x5d, 0x28, 0xba, 0x49, 0xba, 0x95, 0xe7, 0x15, 0xd1, - 0x5f, 0x3b, 0xcb, 0xff, 0x54, 0x66, 0x9a, 0x26, 0x95, 0xd6, 0x96, 0xc9, 0x35, 0x66, 0x83, 0x80, - 0xb9, 0x94, 0x0d, 0xed, 0x7d, 0x42, 0x87, 0xfb, 0xa2, 0x5c, 0xa8, 0x5b, 0x37, 0xe6, 0x7a, 0xa5, - 0x78, 0xff, 0x8e, 0xda, 0x46, 0x77, 0x61, 0x39, 0x11, 0x55, 0xb5, 0xb3, 0x70, 0x89, 0xda, 0x59, - 0x8a, 0x75, 0xe5, 0x29, 0xba, 0x03, 0x90, 0x14, 0x66, 0x19, 0x14, 0x50, 0xe3, 0xb3, 0xab, 0xdb, - 0xb8, 0x90, 0xd2, 0x45, 0x1e, 0x5c, 0xf3, 0x29, 0xb3, 0x39, 0xf1, 0xf6, 0x6c, 0x43, 0x95, 0x84, - 0x2c, 0x5e, 0x41, 0x68, 0x57, 0x7d, 0xca, 0xfa, 0xc4, 0xdb, 0x6b, 0xc7, 0xb0, 0xa8, 0x01, 0x8b, - 0x41, 0xe8, 0xec, 0x13, 0x2e, 0x54, 0x05, 0x94, 0x17, 0x55, 0x99, 0x9d, 0xd8, 0x43, 0x35, 0x28, - 0x92, 0x43, 0x3f, 0x2e, 0xa7, 0x25, 0x25, 0x02, 0xe4, 0xd0, 0x37, 0xf5, 0xb2, 0xb9, 0xf8, 0xf6, - 0xa3, 0x5a, 0xc6, 0x14, 0x64, 0xa6, 0xd1, 0x85, 0xc5, 0x5d, 0xec, 0x99, 0x33, 0xc2, 0xd1, 0x6b, - 0xb0, 0x80, 0xa3, 0x45, 0xd9, 0xaa, 0xcf, 0x9d, 0x5b, 0x8b, 0x89, 0xa8, 0x2e, 0xf1, 0x5f, 0xff, - 0xad, 0x6e, 0x35, 0x7e, 0x6f, 0x41, 0xbe, 0xbd, 0xdb, 0xc5, 0x34, 0x44, 0x1d, 0x58, 0x4d, 0xb2, - 0xf2, 0xa2, 0x05, 0x9e, 0x24, 0x72, 0x54, 0xe1, 0x1d, 0x58, 0x3d, 0x8c, 0x7a, 0x46, 0x0c, 0x93, - 0xfd, 0x2c, 0x98, 0x58, 0xe5, 0x74, 0xc7, 0x3b, 0x30, 0xaf, 0xad, 0xe4, 0x68, 0x13, 0x9e, 0x1b, - 0xc9, 0x1f, 0xca, 0xdf, 0xe2, 0x46, 0xf5, 0xcc, 0x6c, 0x56, 0xf2, 0x26, 0x0b, 0xb4, 0x4a, 0xe3, - 0x3f, 0x16, 0x40, 0x7b, 0x77, 0x77, 0x27, 0xa4, 0x23, 0x8f, 0x88, 0xab, 0xf2, 0xf8, 0x0d, 0x78, - 0x3e, 0xf1, 0x98, 0x87, 0xce, 0x85, 0xbd, 0xbe, 0x16, 0xab, 0xf5, 0x43, 0xe7, 0x54, 0x34, 0x97, - 0x8b, 0x18, 0x6d, 0xee, 0xc2, 0x68, 0x6d, 0x2e, 0x4e, 0xa7, 0xb1, 0x0f, 0xc5, 0xc4, 0x7d, 0x8e, - 0xda, 0x50, 0x10, 0xe6, 0xb7, 0x61, 0xb3, 0x71, 0x36, 0x9b, 0x91, 0x9a, 0x61, 0x34, 0xd6, 0x6c, - 0xfc, 0x57, 0x92, 0x9a, 0xa4, 0xfd, 0x17, 0x2a, 0x8d, 0x64, 0x03, 0x37, 0x0d, 0xf6, 0x2a, 0xc6, - 0x12, 0x83, 0x35, 0xc5, 0xea, 0x6f, 0xb2, 0x70, 0xed, 0x7e, 0xd4, 0xb2, 0xbe, 0xb0, 0x4c, 0x74, - 0x61, 0x9e, 0x30, 0x11, 0x52, 0x45, 0x85, 0x8c, 0xf5, 0x37, 0xcf, 0x8a, 0xf5, 0x29, 0xbe, 0x74, - 0x98, 0x08, 0x27, 0x26, 0xf2, 0x11, 0xcc, 0x14, 0x0b, 0x7f, 0xcd, 0x42, 0xf9, 0x2c, 0x4d, 0xf4, - 0x32, 0x94, 0x9c, 0x90, 0xa8, 0x8d, 0xe8, 0xd5, 0x61, 0xa9, 0x57, 0xc7, 0x72, 0xb4, 0x6d, 0xde, - 0x1c, 0x6f, 0x82, 0x9c, 0xc2, 0x64, 0x62, 0x49, 0xd1, 0x4b, 0x8f, 0x5d, 0xcb, 0x89, 0xb2, 0x7a, - 0x77, 0x10, 0x28, 0x51, 0x46, 0x05, 0xc5, 0x9e, 0x3d, 0xc0, 0x1e, 0x66, 0xce, 0xe7, 0x19, 0x4f, - 0x67, 0xbb, 0xfd, 0xb2, 0x01, 0x6d, 0x69, 0x4c, 0xb4, 0x0b, 0xf3, 0x11, 0x7c, 0xee, 0x0a, 0xe0, - 0x23, 0xb0, 0xd4, 0x28, 0xf6, 0x49, 0x16, 0x56, 0x7b, 0xc4, 0x7d, 0xb6, 0x68, 0xfd, 0x09, 0x80, - 0x2e, 0x38, 0xd9, 0x07, 0x3f, 0x07, 0xb3, 0xb3, 0x05, 0xbc, 0xa0, 0xf1, 0xda, 0x5c, 0xa4, 0xb8, - 0xfd, 0x28, 0x0b, 0x8b, 0x69, 0x6e, 0x9f, 0x81, 0xf7, 0x02, 0xda, 0x4e, 0xba, 0x41, 0x4e, 0x75, - 0x83, 0x57, 0xce, 0xea, 0x06, 0x33, 0x59, 0x77, 0x7e, 0x1b, 0xf8, 0x34, 0x0b, 0xf9, 0x2e, 0x0e, - 0xb1, 0xcf, 0xd1, 0xf7, 0x67, 0xa6, 0x40, 0x7d, 0x35, 0xbb, 0x3e, 0x93, 0x73, 0x6d, 0xf3, 0x65, - 0x40, 0xa7, 0xdc, 0xbb, 0xa7, 0x0c, 0x81, 0x5f, 0x87, 0x65, 0x79, 0xcf, 0x8c, 0x5d, 0xd1, 0x24, - 0x2e, 0xa9, 0x8b, 0x62, 0x7c, 0x45, 0xe1, 0x72, 0x9e, 0x92, 0x62, 0x49, 0xa3, 0x93, 0x32, 0xe0, - 0xe3, 0xa3, 0x8e, 0xde, 0x41, 0x37, 0x01, 0xed, 0xc7, 0x37, 0x7f, 0x3b, 0xa1, 0x40, 0xca, 0xad, - 0x26, 0x27, 0x91, 0xf8, 0x57, 0x00, 0xa4, 0x15, 0xb6, 0x4b, 0x58, 0xe0, 0x9b, 0x8b, 0xd2, 0x82, - 0xdc, 0x69, 0xcb, 0x0d, 0xf4, 0x4b, 0x3d, 0x50, 0x4e, 0x5d, 0x41, 0xcd, 0x2c, 0xff, 0xc6, 0xe5, - 0x32, 0xf5, 0xd3, 0xe3, 0x5a, 0x65, 0x82, 0x7d, 0x6f, 0xb3, 0x71, 0x0a, 0x64, 0x43, 0x0d, 0x98, - 0x27, 0xaf, 0xae, 0xa9, 0x0c, 0x7e, 0xcf, 0x02, 0x94, 0xb4, 0xdc, 0x1e, 0xe1, 0x23, 0x79, 0x37, - 0x92, 0x93, 0x73, 0x6a, 0xcc, 0xb5, 0xce, 0x9f, 0x9c, 0x13, 0xfd, 0x68, 0x72, 0x4e, 0x55, 0xc4, - 0xb7, 0x93, 0x06, 0x97, 0x35, 0x31, 0x34, 0x30, 0x03, 0xcc, 0x49, 0x6a, 0xfa, 0xa6, 0x91, 0xf6, - 0x4c, 0x0f, 0xcb, 0x34, 0x3e, 0xb1, 0xe0, 0xfa, 0x4c, 0x36, 0xc5, 0xc6, 0xfe, 0x0c, 0x50, 0x98, - 0x3a, 0x54, 0xb1, 0x99, 0x18, 0xa3, 0x2f, 0x9d, 0x9c, 0xab, 0xe1, 0x4c, 0xaf, 0xfc, 0x7f, 0xf5, - 0xe8, 0x9c, 0x8a, 0xc0, 0x9f, 0x2c, 0x58, 0x4b, 0x1b, 0x13, 0xbb, 0x75, 0x0f, 0x16, 0xd3, 0xb6, - 0x18, 0x87, 0x5e, 0xbc, 0x88, 0x43, 0xc6, 0x97, 0x13, 0xfa, 0xe8, 0xad, 0xa4, 0x70, 0xf5, 0x17, - 0xa7, 0x5b, 0x17, 0xe6, 0x26, 0xb2, 0x69, 0xba, 0x80, 0x73, 0xd1, 0x14, 0x93, 0xeb, 0x06, 0x81, - 0x87, 0x7e, 0x05, 0xab, 0x2c, 0x10, 0xb6, 0xcc, 0x72, 0xe2, 0xda, 0xe6, 0xfa, 0xab, 0xbb, 0xdf, - 0x5b, 0x97, 0xa3, 0xec, 0x5f, 0xc7, 0xb5, 0x59, 0xa8, 0x29, 0x1e, 0x4b, 0x2c, 0x10, 0x2d, 0x75, - 0xbe, 0xa3, 0x2f, 0xc7, 0x21, 0x2c, 0x9d, 0x7c, 0xb4, 0xee, 0x96, 0x6f, 0x5e, 0xfa, 0xd1, 0x4b, - 0xe7, 0x3d, 0x76, 0x71, 0x90, 0x7a, 0xe6, 0x66, 0x41, 0xc6, 0xf0, 0xdf, 0x8f, 0x6a, 0xd6, 0x37, - 0xfe, 0x60, 0x01, 0x24, 0xdf, 0x01, 0xd0, 0xab, 0xf0, 0xa5, 0xd6, 0x0f, 0xee, 0xb5, 0xed, 0xfe, - 0xce, 0xed, 0x9d, 0xfb, 0x7d, 0xfb, 0xfe, 0xbd, 0x7e, 0xb7, 0xb3, 0xb5, 0xfd, 0xfa, 0x76, 0xa7, - 0xbd, 0x92, 0xa9, 0x94, 0x1e, 0x3c, 0xac, 0x17, 0xef, 0x33, 0x3e, 0x22, 0x0e, 0xdd, 0xa3, 0xc4, - 0x45, 0x2f, 0xc1, 0xda, 0x49, 0x69, 0xb9, 0xea, 0xb4, 0x57, 0xac, 0xca, 0xe2, 0x83, 0x87, 0xf5, - 0x82, 0x9e, 0x8e, 0x88, 0x8b, 0x6e, 0xc0, 0xf3, 0xb3, 0x72, 0xdb, 0xf7, 0xbe, 0xb7, 0x92, 0xad, - 0x2c, 0x3d, 0x78, 0x58, 0x5f, 0x88, 0xc7, 0x28, 0xd4, 0x00, 0x94, 0x96, 0x34, 0x78, 0x73, 0x15, - 0x78, 0xf0, 0xb0, 0x9e, 0xd7, 0xb4, 0x55, 0x72, 0x6f, 0xbf, 0x57, 0xcd, 0xb4, 0x5e, 0xff, 0xf0, - 0x49, 0xd5, 0x7a, 0xfc, 0xa4, 0x6a, 0xfd, 0xe3, 0x49, 0xd5, 0x7a, 0xe7, 0x69, 0x35, 0xf3, 0xf8, - 0x69, 0x35, 0xf3, 0xe7, 0xa7, 0xd5, 0xcc, 0x8f, 0x5f, 0x3d, 0x97, 0xb1, 0xa3, 0xf8, 0x73, 0xb0, - 0xe2, 0x6e, 0x90, 0x57, 0x4d, 0xf9, 0x5b, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0xbc, 0xc2, 0xf5, - 0xb3, 0x2d, 0x16, 0x00, 0x00, + 0x0e, 0xb1, 0x04, 0x12, 0x12, 0x9b, 0x32, 0xab, 0x2e, 0xbb, 0x19, 0x69, 0xa4, 0xb2, 0xec, 0xb2, + 0x62, 0xc3, 0x82, 0x6d, 0xd5, 0xd5, 0xa8, 0x2b, 0x0a, 0x28, 0xa0, 0x99, 0x0d, 0xea, 0x0a, 0x75, + 0x0f, 0x42, 0xf7, 0xe7, 0xfd, 0xc4, 0x4e, 0xd2, 0xa4, 0x0a, 0x52, 0xa5, 0xd9, 0x24, 0xef, 0xde, + 0x7b, 0xce, 0xf7, 0xce, 0xf9, 0xce, 0xcf, 0x3b, 0xd7, 0xf0, 0xa2, 0x13, 0x70, 0x3f, 0xe0, 0xeb, + 0x5c, 0xe0, 0x03, 0xca, 0x86, 0xeb, 0x87, 0xb7, 0x06, 0x44, 0xe0, 0x5b, 0xd1, 0xba, 0x39, 0x0a, + 0x03, 0x11, 0xa0, 0x17, 0xb4, 0x54, 0x33, 0xda, 0x35, 0x52, 0x95, 0xb5, 0x61, 0x30, 0x0c, 0x94, + 0xc8, 0xba, 0x7c, 0xd2, 0xd2, 0x95, 0xeb, 0xc3, 0x20, 0x18, 0x7a, 0x64, 0x5d, 0xad, 0x06, 0xe3, + 0xbd, 0x75, 0xcc, 0x26, 0xe6, 0xa8, 0x3a, 0x7d, 0xe4, 0x8e, 0x43, 0x2c, 0x68, 0xc0, 0xcc, 0x79, + 0x6d, 0xfa, 0x5c, 0x50, 0x9f, 0x70, 0x81, 0xfd, 0x51, 0x84, 0xad, 0x2d, 0xb1, 0xf5, 0x4b, 0x8d, + 0x59, 0x06, 0xdb, 0xb8, 0x32, 0xc0, 0x9c, 0xc4, 0x7e, 0x38, 0x01, 0x8d, 0xb0, 0xbf, 0x2a, 0x08, + 0x73, 0x49, 0xe8, 0x53, 0x26, 0xd6, 0xc5, 0x64, 0x44, 0xb8, 0xfe, 0xab, 0x4f, 0x1b, 0xbf, 0xb7, + 0x60, 0xf9, 0x0e, 0xe5, 0x22, 0x08, 0xa9, 0x83, 0xbd, 0x6d, 0xb6, 0x17, 0xa0, 0xd7, 0x20, 0xbf, + 0x4f, 0xb0, 0x4b, 0xc2, 0xb2, 0x55, 0xb7, 0x6e, 0x14, 0x37, 0xca, 0xcd, 0x04, 0xa1, 0xa9, 0x75, + 0xef, 0xa8, 0xf3, 0x56, 0xee, 0xc3, 0xe3, 0x5a, 0xa6, 0x67, 0xa4, 0xd1, 0xf7, 0x21, 0x7f, 0x88, + 0x3d, 0x4e, 0x44, 0x39, 0x5b, 0x9f, 0xbb, 0x51, 0xdc, 0xf8, 0x7a, 0xf3, 0x74, 0xfa, 0x9a, 0xbb, + 0xd8, 0xa3, 0x2e, 0x16, 0x41, 0x0c, 0xa0, 0xd5, 0x1a, 0xef, 0x67, 0xa1, 0xb4, 0x15, 0xf8, 0x3e, + 0xe5, 0x9c, 0x06, 0xac, 0x87, 0x05, 0xe1, 0xa8, 0x0b, 0xb9, 0x10, 0x0b, 0xa2, 0x4c, 0x59, 0x68, + 0x7d, 0x4f, 0xca, 0xff, 0xf5, 0xb8, 0xf6, 0xd2, 0x90, 0x8a, 0xfd, 0xf1, 0xa0, 0xe9, 0x04, 0xbe, + 0x21, 0xc3, 0xfc, 0xbb, 0xc9, 0xdd, 0x03, 0xe3, 0x5f, 0x9b, 0x38, 0x1f, 0x7f, 0x70, 0x13, 0x8c, + 0x0d, 0x6d, 0xe2, 0xf4, 0x14, 0x12, 0xfa, 0x31, 0x14, 0x7c, 0x7c, 0x64, 0x2b, 0xd4, 0xec, 0x15, + 0xa0, 0xce, 0xfb, 0xf8, 0x48, 0xda, 0x8a, 0x5c, 0x28, 0x49, 0x60, 0x67, 0x1f, 0xb3, 0x21, 0xd1, + 0xf8, 0x73, 0x57, 0x80, 0xbf, 0xe4, 0xe3, 0xa3, 0x2d, 0x85, 0x29, 0xdf, 0xb2, 0x59, 0x78, 0xf7, + 0x51, 0x2d, 0xf3, 0xaf, 0x47, 0x35, 0xab, 0xf1, 0x27, 0x0b, 0x20, 0xa1, 0x0b, 0xfd, 0x1c, 0x56, + 0x9c, 0x78, 0xa5, 0x5e, 0xcf, 0x4d, 0x00, 0x5f, 0x3e, 0x2b, 0x10, 0x53, 0x64, 0xb7, 0x0a, 0xd2, + 0xd0, 0xc7, 0xc7, 0x35, 0xab, 0x57, 0x72, 0xa6, 0xe2, 0xd0, 0x81, 0xe2, 0x78, 0xe4, 0x62, 0x41, + 0x6c, 0x99, 0x9a, 0x8a, 0xb8, 0xe2, 0x46, 0xa5, 0xa9, 0xf3, 0xb6, 0x19, 0xe5, 0x6d, 0x73, 0x27, + 0xca, 0x5b, 0x8d, 0xf5, 0xce, 0x3f, 0x6a, 0x56, 0x0f, 0xb4, 0xa2, 0x3c, 0x4a, 0x59, 0xff, 0xbe, + 0x05, 0xc5, 0x36, 0xe1, 0x4e, 0x48, 0x47, 0xb2, 0x10, 0x50, 0x19, 0xe6, 0xfd, 0x80, 0xd1, 0x03, + 0x93, 0x76, 0x0b, 0xbd, 0x68, 0x89, 0x2a, 0x50, 0xa0, 0x2e, 0x61, 0x82, 0x8a, 0x89, 0x0e, 0x58, + 0x2f, 0x5e, 0x4b, 0xad, 0x5f, 0x91, 0x01, 0xa7, 0x11, 0xd7, 0xbd, 0x68, 0x89, 0x5e, 0x81, 0x15, + 0x4e, 0x9c, 0x71, 0x48, 0xc5, 0xc4, 0x76, 0x02, 0x26, 0xb0, 0x23, 0xca, 0x39, 0x25, 0x52, 0x8a, + 0xf6, 0xb7, 0xf4, 0xb6, 0x04, 0x71, 0x89, 0xc0, 0xd4, 0xe3, 0xe5, 0xe7, 0x34, 0x88, 0x59, 0xa6, + 0xcc, 0xfd, 0x34, 0x0f, 0x0b, 0x71, 0xde, 0xa2, 0x2d, 0x58, 0x09, 0x46, 0x24, 0x94, 0xcf, 0x36, + 0x76, 0xdd, 0x90, 0x70, 0x6e, 0x32, 0xb4, 0xfc, 0xf1, 0x07, 0x37, 0xd7, 0x0c, 0xdd, 0xb7, 0xf5, + 0x49, 0x5f, 0x84, 0x94, 0x0d, 0x7b, 0xa5, 0x48, 0xc3, 0x6c, 0xa3, 0x9f, 0xc8, 0x80, 0x31, 0x4e, + 0x18, 0x1f, 0x73, 0x7b, 0x34, 0x1e, 0x1c, 0x90, 0x89, 0xe1, 0x75, 0x6d, 0x86, 0xd7, 0xdb, 0x6c, + 0xd2, 0x2a, 0x7f, 0x94, 0x40, 0x3b, 0xe1, 0x64, 0x24, 0x82, 0x66, 0x77, 0x3c, 0xb8, 0x4b, 0x26, + 0x32, 0x5a, 0x06, 0xa7, 0xab, 0x60, 0xd0, 0x0b, 0x90, 0xff, 0x25, 0xa6, 0x1e, 0x71, 0x15, 0x2b, + 0x85, 0x9e, 0x59, 0xa1, 0x4d, 0xc8, 0x73, 0x81, 0xc5, 0x98, 0x2b, 0x2a, 0x96, 0x37, 0x1a, 0x67, + 0x65, 0x46, 0x2b, 0x60, 0x6e, 0x5f, 0x49, 0xf6, 0x8c, 0x06, 0xda, 0x81, 0xbc, 0x08, 0x0e, 0x08, + 0x33, 0x24, 0x5d, 0x2a, 0xab, 0xb7, 0x99, 0x48, 0x65, 0xf5, 0x36, 0x13, 0x3d, 0x83, 0x85, 0x86, + 0xb0, 0xe2, 0x12, 0x8f, 0x0c, 0x15, 0x95, 0x7c, 0x1f, 0x87, 0x84, 0x97, 0xf3, 0x57, 0x50, 0x35, + 0xa5, 0x18, 0xb5, 0xaf, 0x40, 0xd1, 0x5d, 0x28, 0xba, 0x49, 0xba, 0x95, 0xe7, 0x15, 0xd1, 0xdf, + 0x38, 0xcb, 0xff, 0x54, 0x66, 0x9a, 0x26, 0x95, 0xd6, 0x96, 0xc9, 0x35, 0x66, 0x83, 0x80, 0xb9, + 0x94, 0x0d, 0xed, 0x7d, 0x42, 0x87, 0xfb, 0xa2, 0x5c, 0xa8, 0x5b, 0x37, 0xe6, 0x7a, 0xa5, 0x78, + 0xff, 0x8e, 0xda, 0x46, 0x77, 0x61, 0x39, 0x11, 0x55, 0xb5, 0xb3, 0x70, 0x89, 0xda, 0x59, 0x8a, + 0x75, 0xe5, 0x29, 0xba, 0x03, 0x90, 0x14, 0x66, 0x19, 0x14, 0x50, 0xe3, 0xf3, 0xab, 0xdb, 0xb8, + 0x90, 0xd2, 0x45, 0x1e, 0x5c, 0xf3, 0x29, 0xb3, 0x39, 0xf1, 0xf6, 0x6c, 0x43, 0x95, 0x84, 0x2c, + 0x5e, 0x41, 0x68, 0x57, 0x7d, 0xca, 0xfa, 0xc4, 0xdb, 0x6b, 0xc7, 0xb0, 0xa8, 0x06, 0x45, 0x72, + 0xe8, 0xc7, 0xa5, 0xb2, 0xa8, 0xaa, 0x0c, 0xc8, 0xa1, 0x6f, 0x6a, 0x61, 0x73, 0xf1, 0xed, 0x47, + 0xb5, 0x8c, 0x29, 0xb6, 0x4c, 0xa3, 0x0b, 0x8b, 0xbb, 0xd8, 0x33, 0x67, 0x84, 0xa3, 0xd7, 0x60, + 0x01, 0x47, 0x8b, 0xb2, 0x55, 0x9f, 0x3b, 0xb7, 0xce, 0x12, 0x51, 0x5d, 0xbe, 0xbf, 0xfd, 0x7b, + 0xdd, 0x6a, 0xfc, 0xc1, 0x82, 0x7c, 0x7b, 0xb7, 0x8b, 0x69, 0x88, 0x3a, 0xb0, 0x9a, 0x64, 0xdc, + 0x45, 0x8b, 0x37, 0x49, 0xd2, 0xa8, 0x7a, 0x3b, 0xb0, 0x7a, 0x18, 0xf5, 0x83, 0x18, 0x26, 0xfb, + 0x79, 0x30, 0xb1, 0xca, 0xe9, 0x8e, 0x77, 0x60, 0x5e, 0x5b, 0xc9, 0xd1, 0x26, 0x3c, 0x37, 0x92, + 0x0f, 0xca, 0xdf, 0xe2, 0x46, 0xf5, 0xcc, 0x4c, 0x55, 0xf2, 0x26, 0xc2, 0x5a, 0xa5, 0xf1, 0x1f, + 0x0b, 0xa0, 0xbd, 0xbb, 0xbb, 0x13, 0xd2, 0x91, 0x47, 0xc4, 0x55, 0x79, 0xfc, 0x06, 0x3c, 0x9f, + 0x78, 0xcc, 0x43, 0xe7, 0xc2, 0x5e, 0x5f, 0x8b, 0xd5, 0xfa, 0xa1, 0x73, 0x2a, 0x9a, 0xcb, 0x45, + 0x8c, 0x36, 0x77, 0x61, 0xb4, 0x36, 0x17, 0xa7, 0xd3, 0xd8, 0x87, 0x62, 0xe2, 0x3e, 0x47, 0x6d, + 0x28, 0x08, 0xf3, 0x6c, 0xd8, 0x6c, 0x9c, 0xcd, 0x66, 0xa4, 0x66, 0x18, 0x8d, 0x35, 0x1b, 0xff, + 0x95, 0xa4, 0x26, 0x29, 0xfd, 0xa5, 0x4a, 0x23, 0xd9, 0x9c, 0x4d, 0xf3, 0xbc, 0x8a, 0x91, 0xc3, + 0x60, 0x4d, 0xb1, 0xfa, 0xbb, 0x2c, 0x5c, 0xbb, 0x1f, 0xb5, 0xa3, 0x2f, 0x2d, 0x13, 0x5d, 0x98, + 0x27, 0x4c, 0x84, 0x54, 0x51, 0x21, 0x63, 0xfd, 0xed, 0xb3, 0x62, 0x7d, 0x8a, 0x2f, 0x1d, 0x26, + 0xc2, 0x89, 0x89, 0x7c, 0x04, 0x33, 0xc5, 0xc2, 0xdf, 0xb2, 0x50, 0x3e, 0x4b, 0x13, 0xbd, 0x0c, + 0x25, 0x27, 0x24, 0x6a, 0x23, 0xfa, 0x2c, 0x58, 0xea, 0xb3, 0xb0, 0x1c, 0x6d, 0x9b, 0xaf, 0xc2, + 0x9b, 0x20, 0x27, 0x2c, 0x99, 0x58, 0x52, 0xf4, 0xd2, 0x23, 0xd5, 0x72, 0xa2, 0xac, 0xbe, 0x0b, + 0x04, 0x4a, 0x94, 0x51, 0x41, 0xb1, 0x67, 0x0f, 0xb0, 0x87, 0x99, 0xf3, 0x45, 0x46, 0xcf, 0xd9, + 0x4e, 0xbe, 0x6c, 0x40, 0x5b, 0x1a, 0x13, 0xed, 0xc2, 0x7c, 0x04, 0x9f, 0xbb, 0x02, 0xf8, 0x08, + 0x2c, 0x35, 0x66, 0x7d, 0x92, 0x85, 0xd5, 0x1e, 0x71, 0x9f, 0x2d, 0x5a, 0x7f, 0x06, 0xa0, 0x0b, + 0x4e, 0xf6, 0xc1, 0x2f, 0xc0, 0xec, 0x6c, 0x01, 0x2f, 0x68, 0xbc, 0x36, 0x17, 0x29, 0x6e, 0x3f, + 0xca, 0xc2, 0x62, 0x9a, 0xdb, 0x67, 0xe0, 0xbb, 0x80, 0xb6, 0x93, 0x6e, 0x90, 0x53, 0xdd, 0xe0, + 0x95, 0xb3, 0xba, 0xc1, 0x4c, 0xd6, 0x9d, 0xdf, 0x06, 0x3e, 0xcb, 0x42, 0xbe, 0x8b, 0x43, 0xec, + 0x73, 0xf4, 0xc3, 0x99, 0x09, 0x4f, 0x5f, 0xbb, 0xae, 0xcf, 0xe4, 0x5c, 0xdb, 0xdc, 0xfa, 0x75, + 0xca, 0xbd, 0x7b, 0xca, 0x80, 0xf7, 0x4d, 0x58, 0x96, 0x77, 0xc8, 0xd8, 0x15, 0x4d, 0xe2, 0x92, + 0xba, 0x04, 0xc6, 0xd7, 0x0f, 0x2e, 0xe7, 0x29, 0x29, 0x96, 0x34, 0x3a, 0x29, 0x03, 0x3e, 0x3e, + 0xea, 0xe8, 0x1d, 0x74, 0x13, 0xd0, 0x7e, 0x7c, 0xab, 0xb7, 0x13, 0x0a, 0xa4, 0xdc, 0x6a, 0x72, + 0x12, 0x89, 0x7f, 0x0d, 0x40, 0x5a, 0x61, 0xbb, 0x84, 0x05, 0xbe, 0xb9, 0x04, 0x2d, 0xc8, 0x9d, + 0xb6, 0xdc, 0x40, 0xbf, 0xd6, 0xc3, 0xe2, 0xd4, 0xf5, 0xd2, 0xcc, 0xe9, 0x6f, 0x5c, 0x2e, 0x53, + 0x3f, 0x3b, 0xae, 0x55, 0x26, 0xd8, 0xf7, 0x36, 0x1b, 0xa7, 0x40, 0x36, 0xd4, 0xf0, 0x78, 0xf2, + 0x5a, 0x9a, 0xca, 0xe0, 0xf7, 0x2c, 0x40, 0x49, 0xcb, 0xed, 0x11, 0x3e, 0x92, 0xf7, 0x1e, 0x39, + 0x15, 0xa7, 0x46, 0x58, 0xeb, 0xfc, 0xa9, 0x38, 0xd1, 0x8f, 0xa6, 0xe2, 0x54, 0x45, 0x7c, 0x37, + 0x69, 0x70, 0x59, 0x13, 0x43, 0x03, 0x33, 0xc0, 0x9c, 0xa4, 0x26, 0x6b, 0x1a, 0x69, 0xcf, 0xf4, + 0xb0, 0x4c, 0xe3, 0x13, 0x0b, 0xae, 0xcf, 0x64, 0x53, 0x6c, 0xec, 0x2f, 0x00, 0x85, 0xa9, 0x43, + 0x15, 0x9b, 0x89, 0x31, 0xfa, 0xd2, 0xc9, 0xb9, 0x1a, 0xce, 0xf4, 0xca, 0xff, 0x57, 0x8f, 0xce, + 0xa9, 0x08, 0xfc, 0xd9, 0x82, 0xb5, 0xb4, 0x31, 0xb1, 0x5b, 0xf7, 0x60, 0x31, 0x6d, 0x8b, 0x71, + 0xe8, 0xc5, 0x8b, 0x38, 0x64, 0x7c, 0x39, 0xa1, 0x8f, 0xde, 0x4a, 0x0a, 0x57, 0xff, 0x9a, 0x74, + 0xeb, 0xc2, 0xdc, 0x44, 0x36, 0x4d, 0x17, 0x70, 0x2e, 0x9a, 0x62, 0x72, 0xdd, 0x20, 0xf0, 0xd0, + 0x6f, 0x60, 0x95, 0x05, 0xc2, 0x96, 0x59, 0x4e, 0x5c, 0xdb, 0x5c, 0x6d, 0x75, 0xf7, 0x7b, 0xeb, + 0x72, 0x94, 0x7d, 0x7a, 0x5c, 0x9b, 0x85, 0x9a, 0xe2, 0xb1, 0xc4, 0x02, 0xd1, 0x52, 0xe7, 0x3b, + 0xfa, 0xe2, 0x1b, 0xc2, 0xd2, 0xc9, 0x57, 0xeb, 0x6e, 0xf9, 0xe6, 0xa5, 0x5f, 0xbd, 0x74, 0xde, + 0x6b, 0x17, 0x07, 0xa9, 0x77, 0x6e, 0x16, 0x64, 0x0c, 0xff, 0xfd, 0xa8, 0x66, 0x7d, 0xeb, 0x8f, + 0x16, 0x40, 0x72, 0xc7, 0x47, 0xaf, 0xc2, 0x57, 0x5a, 0x3f, 0xba, 0xd7, 0xb6, 0xfb, 0x3b, 0xb7, + 0x77, 0xee, 0xf7, 0xed, 0xfb, 0xf7, 0xfa, 0xdd, 0xce, 0xd6, 0xf6, 0xeb, 0xdb, 0x9d, 0xf6, 0x4a, + 0xa6, 0x52, 0x7a, 0xf0, 0xb0, 0x5e, 0xbc, 0xcf, 0xf8, 0x88, 0x38, 0x74, 0x8f, 0x12, 0x17, 0xbd, + 0x04, 0x6b, 0x27, 0xa5, 0xe5, 0xaa, 0xd3, 0x5e, 0xb1, 0x2a, 0x8b, 0x0f, 0x1e, 0xd6, 0x0b, 0x7a, + 0x3a, 0x22, 0x2e, 0xba, 0x01, 0xcf, 0xcf, 0xca, 0x6d, 0xdf, 0xfb, 0xc1, 0x4a, 0xb6, 0xb2, 0xf4, + 0xe0, 0x61, 0x7d, 0x21, 0x1e, 0xa3, 0x50, 0x03, 0x50, 0x5a, 0xd2, 0xe0, 0xcd, 0x55, 0xe0, 0xc1, + 0xc3, 0x7a, 0x5e, 0xd3, 0x56, 0xc9, 0xbd, 0xfd, 0x5e, 0x35, 0xd3, 0x7a, 0xfd, 0xc3, 0x27, 0x55, + 0xeb, 0xf1, 0x93, 0xaa, 0xf5, 0xcf, 0x27, 0x55, 0xeb, 0x9d, 0xa7, 0xd5, 0xcc, 0xe3, 0xa7, 0xd5, + 0xcc, 0x5f, 0x9e, 0x56, 0x33, 0x3f, 0x7d, 0xf5, 0x5c, 0xc6, 0x8e, 0xe2, 0x9f, 0x7a, 0x15, 0x77, + 0x83, 0xbc, 0x6a, 0xca, 0xdf, 0xf9, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xad, 0x58, 0x00, 0x45, + 0x09, 0x16, 0x00, 0x00, } func (this *Pool) Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { @@ -1264,509 +1260,508 @@ 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{ - // 8024 bytes of a gzipped FileDescriptorSet + // 8007 bytes of a gzipped FileDescriptorSet 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7d, 0x7b, 0x70, 0x64, 0xd9, - 0x79, 0x97, 0xfa, 0xa1, 0x7e, 0x7c, 0xdd, 0x6a, 0x5d, 0x1d, 0x69, 0x66, 0x7a, 0xb4, 0xbb, 0x92, - 0xb6, 0xf7, 0x35, 0xfb, 0xd2, 0xec, 0xce, 0xee, 0xcc, 0xee, 0xf4, 0xd8, 0x5e, 0xb7, 0xd4, 0x3d, + 0x79, 0x97, 0xfa, 0xa9, 0xee, 0xaf, 0x5b, 0xad, 0xab, 0x23, 0xcd, 0x4c, 0x8f, 0x76, 0x57, 0xd2, + 0xb6, 0xf7, 0x31, 0xfb, 0xd2, 0xec, 0xce, 0xee, 0xcc, 0xec, 0xf4, 0xd8, 0x5e, 0xb7, 0xd4, 0x3d, 0x1a, 0xcd, 0xe8, 0xd1, 0x7b, 0x5b, 0x9a, 0x7d, 0x04, 0xb8, 0x5c, 0xdd, 0x3e, 0x6a, 0xdd, 0xd5, - 0xed, 0x7b, 0xaf, 0xef, 0xbd, 0xad, 0x91, 0xb6, 0x02, 0xb5, 0x2e, 0xf3, 0xb0, 0x87, 0x22, 0x38, - 0x84, 0x22, 0x8e, 0xe3, 0x31, 0xbb, 0x71, 0xc0, 0xc1, 0x38, 0x90, 0xc4, 0xc6, 0x10, 0x52, 0x80, - 0x81, 0x02, 0x8c, 0xab, 0xa0, 0x9c, 0xfc, 0x41, 0x12, 0x08, 0x4b, 0x58, 0xbb, 0xc0, 0x18, 0x07, - 0x8c, 0x59, 0xaa, 0xa0, 0x5c, 0xa1, 0xa8, 0xf3, 0xba, 0x8f, 0x7e, 0xa8, 0x5b, 0x9b, 0x59, 0x27, - 0x55, 0xfe, 0x6b, 0x74, 0xbe, 0xf3, 0x7d, 0xbf, 0x7b, 0xce, 0x77, 0xbe, 0xd7, 0x39, 0xe7, 0xde, - 0x1e, 0xf8, 0x67, 0x57, 0x60, 0xa1, 0x65, 0x59, 0x2d, 0x03, 0x9f, 0xb7, 0x1d, 0xcb, 0xb3, 0x76, - 0x3a, 0xbb, 0xe7, 0x9b, 0xd8, 0xd5, 0x1c, 0xdd, 0xf6, 0x2c, 0x67, 0x91, 0xd2, 0xd0, 0x24, 0xe3, - 0x58, 0x14, 0x1c, 0xa5, 0x75, 0x98, 0xba, 0xaa, 0x1b, 0xb8, 0xea, 0x33, 0x36, 0xb0, 0x87, 0x9e, - 0x87, 0xe4, 0xae, 0x6e, 0xe0, 0x62, 0x6c, 0x21, 0x71, 0x2e, 0x77, 0xe1, 0xc1, 0xc5, 0x2e, 0xa1, - 0xc5, 0xa8, 0x44, 0x9d, 0x90, 0x65, 0x2a, 0x51, 0xfa, 0x56, 0x12, 0xa6, 0xfb, 0xf4, 0x22, 0x04, - 0x49, 0x53, 0x6d, 0x13, 0xc4, 0xd8, 0xb9, 0xac, 0x4c, 0xff, 0x46, 0x45, 0x48, 0xdb, 0xaa, 0xb6, - 0xaf, 0xb6, 0x70, 0x31, 0x4e, 0xc9, 0xa2, 0x89, 0xe6, 0x00, 0x9a, 0xd8, 0xc6, 0x66, 0x13, 0x9b, - 0xda, 0x51, 0x31, 0xb1, 0x90, 0x38, 0x97, 0x95, 0x43, 0x14, 0xf4, 0x38, 0x4c, 0xd9, 0x9d, 0x1d, - 0x43, 0xd7, 0x94, 0x10, 0x1b, 0x2c, 0x24, 0xce, 0x8d, 0xcb, 0x12, 0xeb, 0xa8, 0x06, 0xcc, 0x8f, - 0xc0, 0xe4, 0x2d, 0xac, 0xee, 0x87, 0x59, 0x73, 0x94, 0xb5, 0x40, 0xc8, 0x21, 0xc6, 0x65, 0xc8, - 0xb7, 0xb1, 0xeb, 0xaa, 0x2d, 0xac, 0x78, 0x47, 0x36, 0x2e, 0x26, 0xe9, 0xec, 0x17, 0x7a, 0x66, - 0xdf, 0x3d, 0xf3, 0x1c, 0x97, 0xda, 0x3a, 0xb2, 0x31, 0xaa, 0x40, 0x16, 0x9b, 0x9d, 0x36, 0x43, - 0x18, 0x1f, 0xa0, 0xbf, 0x9a, 0xd9, 0x69, 0x77, 0xa3, 0x64, 0x88, 0x18, 0x87, 0x48, 0xbb, 0xd8, - 0x39, 0xd0, 0x35, 0x5c, 0x4c, 0x51, 0x80, 0x47, 0x7a, 0x00, 0x1a, 0xac, 0xbf, 0x1b, 0x43, 0xc8, - 0xa1, 0x65, 0xc8, 0xe2, 0x43, 0x0f, 0x9b, 0xae, 0x6e, 0x99, 0xc5, 0x34, 0x05, 0x79, 0xa8, 0xcf, - 0x2a, 0x62, 0xa3, 0xd9, 0x0d, 0x11, 0xc8, 0xa1, 0x4b, 0x90, 0xb6, 0x6c, 0x4f, 0xb7, 0x4c, 0xb7, - 0x98, 0x59, 0x88, 0x9d, 0xcb, 0x5d, 0xb8, 0xb7, 0xaf, 0x21, 0x6c, 0x32, 0x1e, 0x59, 0x30, 0xa3, - 0x55, 0x90, 0x5c, 0xab, 0xe3, 0x68, 0x58, 0xd1, 0xac, 0x26, 0x56, 0x74, 0x73, 0xd7, 0x2a, 0x66, - 0x29, 0xc0, 0x7c, 0xef, 0x44, 0x28, 0xe3, 0xb2, 0xd5, 0xc4, 0xab, 0xe6, 0xae, 0x25, 0x17, 0xdc, - 0x48, 0x1b, 0x9d, 0x86, 0x94, 0x7b, 0x64, 0x7a, 0xea, 0x61, 0x31, 0x4f, 0x2d, 0x84, 0xb7, 0x4a, - 0xbf, 0x9a, 0x82, 0xc9, 0x51, 0x4c, 0xec, 0x0a, 0x8c, 0xef, 0x92, 0x59, 0x16, 0xe3, 0x27, 0xd1, - 0x01, 0x93, 0x89, 0x2a, 0x31, 0xf5, 0x1e, 0x95, 0x58, 0x81, 0x9c, 0x89, 0x5d, 0x0f, 0x37, 0x99, - 0x45, 0x24, 0x46, 0xb4, 0x29, 0x60, 0x42, 0xbd, 0x26, 0x95, 0x7c, 0x4f, 0x26, 0xf5, 0x32, 0x4c, - 0xfa, 0x43, 0x52, 0x1c, 0xd5, 0x6c, 0x09, 0xdb, 0x3c, 0x3f, 0x6c, 0x24, 0x8b, 0x35, 0x21, 0x27, - 0x13, 0x31, 0xb9, 0x80, 0x23, 0x6d, 0x54, 0x05, 0xb0, 0x4c, 0x6c, 0xed, 0x2a, 0x4d, 0xac, 0x19, - 0xc5, 0xcc, 0x00, 0x2d, 0x6d, 0x12, 0x96, 0x1e, 0x2d, 0x59, 0x8c, 0xaa, 0x19, 0xe8, 0x72, 0x60, - 0x6a, 0xe9, 0x01, 0x96, 0xb2, 0xce, 0x9c, 0xac, 0xc7, 0xda, 0xb6, 0xa1, 0xe0, 0x60, 0x62, 0xf7, - 0xb8, 0xc9, 0x67, 0x96, 0xa5, 0x83, 0x58, 0x1c, 0x3a, 0x33, 0x99, 0x8b, 0xb1, 0x89, 0x4d, 0x38, - 0xe1, 0x26, 0x7a, 0x00, 0x7c, 0x82, 0x42, 0xcd, 0x0a, 0x68, 0x14, 0xca, 0x0b, 0xe2, 0x86, 0xda, - 0xc6, 0xb3, 0xaf, 0x43, 0x21, 0xaa, 0x1e, 0x34, 0x03, 0xe3, 0xae, 0xa7, 0x3a, 0x1e, 0xb5, 0xc2, - 0x71, 0x99, 0x35, 0x90, 0x04, 0x09, 0x6c, 0x36, 0x69, 0x94, 0x1b, 0x97, 0xc9, 0x9f, 0xe8, 0xc3, - 0xc1, 0x84, 0x13, 0x74, 0xc2, 0x0f, 0xf7, 0xae, 0x68, 0x04, 0xb9, 0x7b, 0xde, 0xb3, 0xcf, 0xc1, - 0x44, 0x64, 0x02, 0xa3, 0x3e, 0xba, 0xf4, 0xe3, 0x70, 0xaa, 0x2f, 0x34, 0x7a, 0x19, 0x66, 0x3a, - 0xa6, 0x6e, 0x7a, 0xd8, 0xb1, 0x1d, 0x4c, 0x2c, 0x96, 0x3d, 0xaa, 0xf8, 0x5f, 0xd2, 0x03, 0x6c, - 0x6e, 0x3b, 0xcc, 0xcd, 0x50, 0xe4, 0xe9, 0x4e, 0x2f, 0xf1, 0xb1, 0x6c, 0xe6, 0xdb, 0x69, 0xe9, - 0x8d, 0x37, 0xde, 0x78, 0x23, 0x5e, 0xfa, 0x27, 0x29, 0x98, 0xe9, 0xe7, 0x33, 0x7d, 0xdd, 0xf7, - 0x34, 0xa4, 0xcc, 0x4e, 0x7b, 0x07, 0x3b, 0x54, 0x49, 0xe3, 0x32, 0x6f, 0xa1, 0x0a, 0x8c, 0x1b, - 0xea, 0x0e, 0x36, 0x8a, 0xc9, 0x85, 0xd8, 0xb9, 0xc2, 0x85, 0xc7, 0x47, 0xf2, 0xca, 0xc5, 0x35, - 0x22, 0x22, 0x33, 0x49, 0xf4, 0x21, 0x48, 0xf2, 0x10, 0x4d, 0x10, 0x1e, 0x1b, 0x0d, 0x81, 0xf8, - 0x92, 0x4c, 0xe5, 0xd0, 0x3d, 0x90, 0x25, 0xff, 0x32, 0xdb, 0x48, 0xd1, 0x31, 0x67, 0x08, 0x81, - 0xd8, 0x05, 0x9a, 0x85, 0x0c, 0x75, 0x93, 0x26, 0x16, 0xa9, 0xcd, 0x6f, 0x13, 0xc3, 0x6a, 0xe2, - 0x5d, 0xb5, 0x63, 0x78, 0xca, 0x81, 0x6a, 0x74, 0x30, 0x35, 0xf8, 0xac, 0x9c, 0xe7, 0xc4, 0x9b, - 0x84, 0x86, 0xe6, 0x21, 0xc7, 0xbc, 0x4a, 0x37, 0x9b, 0xf8, 0x90, 0x46, 0xcf, 0x71, 0x99, 0x39, - 0xda, 0x2a, 0xa1, 0x90, 0xc7, 0xbf, 0xe6, 0x5a, 0xa6, 0x30, 0x4d, 0xfa, 0x08, 0x42, 0xa0, 0x8f, - 0x7f, 0xae, 0x3b, 0x70, 0xdf, 0xd7, 0x7f, 0x7a, 0x3d, 0xbe, 0xf4, 0x08, 0x4c, 0x52, 0x8e, 0x67, - 0xf8, 0xd2, 0xab, 0x46, 0x71, 0x6a, 0x21, 0x76, 0x2e, 0x23, 0x17, 0x18, 0x79, 0x93, 0x53, 0x4b, - 0x5f, 0x89, 0x43, 0x92, 0x06, 0x96, 0x49, 0xc8, 0x6d, 0xbd, 0x52, 0xaf, 0x29, 0xd5, 0xcd, 0xed, - 0xa5, 0xb5, 0x9a, 0x14, 0x43, 0x05, 0x00, 0x4a, 0xb8, 0xba, 0xb6, 0x59, 0xd9, 0x92, 0xe2, 0x7e, - 0x7b, 0x75, 0x63, 0xeb, 0xd2, 0xb3, 0x52, 0xc2, 0x17, 0xd8, 0x66, 0x84, 0x64, 0x98, 0xe1, 0x99, - 0x0b, 0xd2, 0x38, 0x92, 0x20, 0xcf, 0x00, 0x56, 0x5f, 0xae, 0x55, 0x2f, 0x3d, 0x2b, 0xa5, 0xa2, - 0x94, 0x67, 0x2e, 0x48, 0x69, 0x34, 0x01, 0x59, 0x4a, 0x59, 0xda, 0xdc, 0x5c, 0x93, 0x32, 0x3e, - 0x66, 0x63, 0x4b, 0x5e, 0xdd, 0x58, 0x91, 0xb2, 0x3e, 0xe6, 0x8a, 0xbc, 0xb9, 0x5d, 0x97, 0xc0, - 0x47, 0x58, 0xaf, 0x35, 0x1a, 0x95, 0x95, 0x9a, 0x94, 0xf3, 0x39, 0x96, 0x5e, 0xd9, 0xaa, 0x35, - 0xa4, 0x7c, 0x64, 0x58, 0xcf, 0x5c, 0x90, 0x26, 0xfc, 0x47, 0xd4, 0x36, 0xb6, 0xd7, 0xa5, 0x02, - 0x9a, 0x82, 0x09, 0xf6, 0x08, 0x31, 0x88, 0xc9, 0x2e, 0xd2, 0xa5, 0x67, 0x25, 0x29, 0x18, 0x08, - 0x43, 0x99, 0x8a, 0x10, 0x2e, 0x3d, 0x2b, 0xa1, 0xd2, 0x32, 0x8c, 0x53, 0x33, 0x44, 0x08, 0x0a, - 0x6b, 0x95, 0xa5, 0xda, 0x9a, 0xb2, 0x59, 0xdf, 0x5a, 0xdd, 0xdc, 0xa8, 0xac, 0x49, 0xb1, 0x80, - 0x26, 0xd7, 0x5e, 0xdc, 0x5e, 0x95, 0x6b, 0x55, 0x29, 0x1e, 0xa6, 0xd5, 0x6b, 0x95, 0xad, 0x5a, - 0x55, 0x4a, 0x94, 0x34, 0x98, 0xe9, 0x17, 0x50, 0xfb, 0xba, 0x50, 0xc8, 0x16, 0xe2, 0x03, 0x6c, - 0x81, 0x62, 0x75, 0xdb, 0x42, 0xe9, 0x9b, 0x71, 0x98, 0xee, 0x93, 0x54, 0xfa, 0x3e, 0xe4, 0x05, - 0x18, 0x67, 0xb6, 0xcc, 0xd2, 0xec, 0xa3, 0x7d, 0xb3, 0x13, 0xb5, 0xec, 0x9e, 0x54, 0x4b, 0xe5, - 0xc2, 0xa5, 0x46, 0x62, 0x40, 0xa9, 0x41, 0x20, 0x7a, 0x0c, 0xf6, 0x8f, 0xf7, 0x04, 0x7f, 0x96, - 0x1f, 0x2f, 0x8d, 0x92, 0x1f, 0x29, 0xed, 0x64, 0x49, 0x60, 0xbc, 0x4f, 0x12, 0xb8, 0x02, 0x53, - 0x3d, 0x40, 0x23, 0x07, 0xe3, 0x8f, 0xc5, 0xa0, 0x38, 0x48, 0x39, 0x43, 0x42, 0x62, 0x3c, 0x12, - 0x12, 0xaf, 0x74, 0x6b, 0xf0, 0xfe, 0xc1, 0x8b, 0xd0, 0xb3, 0xd6, 0x9f, 0x8f, 0xc1, 0xe9, 0xfe, - 0x25, 0x65, 0xdf, 0x31, 0x7c, 0x08, 0x52, 0x6d, 0xec, 0xed, 0x59, 0xa2, 0xac, 0x7a, 0xb8, 0x4f, - 0xb2, 0x26, 0xdd, 0xdd, 0x8b, 0xcd, 0xa5, 0xc2, 0xd9, 0x3e, 0x31, 0xa8, 0x2e, 0x64, 0xa3, 0xe9, - 0x19, 0xe9, 0x27, 0xe2, 0x70, 0xaa, 0x2f, 0x78, 0xdf, 0x81, 0xde, 0x07, 0xa0, 0x9b, 0x76, 0xc7, - 0x63, 0xa5, 0x13, 0x8b, 0xc4, 0x59, 0x4a, 0xa1, 0xc1, 0x8b, 0x44, 0xd9, 0x8e, 0xe7, 0xf7, 0x27, - 0x68, 0x3f, 0x30, 0x12, 0x65, 0x78, 0x3e, 0x18, 0x68, 0x92, 0x0e, 0x74, 0x6e, 0xc0, 0x4c, 0x7b, - 0x0c, 0xf3, 0x29, 0x90, 0x34, 0x43, 0xc7, 0xa6, 0xa7, 0xb8, 0x9e, 0x83, 0xd5, 0xb6, 0x6e, 0xb6, - 0x68, 0xaa, 0xc9, 0x94, 0xc7, 0x77, 0x55, 0xc3, 0xc5, 0xf2, 0x24, 0xeb, 0x6e, 0x88, 0x5e, 0x22, - 0x41, 0x0d, 0xc8, 0x09, 0x49, 0xa4, 0x22, 0x12, 0xac, 0xdb, 0x97, 0x28, 0xfd, 0x64, 0x16, 0x72, - 0xa1, 0x02, 0x1c, 0xdd, 0x0f, 0xf9, 0xd7, 0xd4, 0x03, 0x55, 0x11, 0x9b, 0x2a, 0xa6, 0x89, 0x1c, - 0xa1, 0xd5, 0xf9, 0xc6, 0xea, 0x29, 0x98, 0xa1, 0x2c, 0x56, 0xc7, 0xc3, 0x8e, 0xa2, 0x19, 0xaa, - 0xeb, 0x52, 0xa5, 0x65, 0x28, 0x2b, 0x22, 0x7d, 0x9b, 0xa4, 0x6b, 0x59, 0xf4, 0xa0, 0x8b, 0x30, - 0x4d, 0x25, 0xda, 0x1d, 0xc3, 0xd3, 0x6d, 0x03, 0x2b, 0x64, 0x9b, 0xe7, 0xd2, 0x94, 0xe3, 0x8f, - 0x6c, 0x8a, 0x70, 0xac, 0x73, 0x06, 0x32, 0x22, 0x17, 0x55, 0xe1, 0x3e, 0x2a, 0xd6, 0xc2, 0x26, - 0x76, 0x54, 0x0f, 0x2b, 0xf8, 0x23, 0x1d, 0xd5, 0x70, 0x15, 0xd5, 0x6c, 0x2a, 0x7b, 0xaa, 0xbb, - 0x57, 0x9c, 0x21, 0x00, 0x4b, 0xf1, 0x62, 0x4c, 0x3e, 0x4b, 0x18, 0x57, 0x38, 0x5f, 0x8d, 0xb2, - 0x55, 0xcc, 0xe6, 0x35, 0xd5, 0xdd, 0x43, 0x65, 0x38, 0x4d, 0x51, 0x5c, 0xcf, 0xd1, 0xcd, 0x96, - 0xa2, 0xed, 0x61, 0x6d, 0x5f, 0xe9, 0x78, 0xbb, 0xcf, 0x17, 0xef, 0x09, 0x3f, 0x9f, 0x8e, 0xb0, - 0x41, 0x79, 0x96, 0x09, 0xcb, 0xb6, 0xb7, 0xfb, 0x3c, 0x6a, 0x40, 0x9e, 0x2c, 0x46, 0x5b, 0x7f, - 0x1d, 0x2b, 0xbb, 0x96, 0x43, 0x73, 0x68, 0xa1, 0x4f, 0x68, 0x0a, 0x69, 0x70, 0x71, 0x93, 0x0b, - 0xac, 0x5b, 0x4d, 0x5c, 0x1e, 0x6f, 0xd4, 0x6b, 0xb5, 0xaa, 0x9c, 0x13, 0x28, 0x57, 0x2d, 0x87, - 0x18, 0x54, 0xcb, 0xf2, 0x15, 0x9c, 0x63, 0x06, 0xd5, 0xb2, 0x84, 0x7a, 0x2f, 0xc2, 0xb4, 0xa6, - 0xb1, 0x39, 0xeb, 0x9a, 0xc2, 0x37, 0x63, 0x6e, 0x51, 0x8a, 0x28, 0x4b, 0xd3, 0x56, 0x18, 0x03, - 0xb7, 0x71, 0x17, 0x5d, 0x86, 0x53, 0x81, 0xb2, 0xc2, 0x82, 0x53, 0x3d, 0xb3, 0xec, 0x16, 0xbd, - 0x08, 0xd3, 0xf6, 0x51, 0xaf, 0x20, 0x8a, 0x3c, 0xd1, 0x3e, 0xea, 0x16, 0x7b, 0x0e, 0x66, 0xec, - 0x3d, 0xbb, 0x57, 0xee, 0xb1, 0xb0, 0x1c, 0xb2, 0xf7, 0xec, 0x6e, 0xc1, 0x87, 0xe8, 0xce, 0xdc, - 0xc1, 0x9a, 0xea, 0xe1, 0x66, 0xf1, 0x4c, 0x98, 0x3d, 0xd4, 0x81, 0x16, 0x41, 0xd2, 0x34, 0x05, - 0x9b, 0xea, 0x8e, 0x81, 0x15, 0xd5, 0xc1, 0xa6, 0xea, 0x16, 0xe7, 0x29, 0x73, 0xd2, 0x73, 0x3a, - 0x58, 0x2e, 0x68, 0x5a, 0x8d, 0x76, 0x56, 0x68, 0x1f, 0x7a, 0x0c, 0xa6, 0xac, 0x9d, 0xd7, 0x34, - 0x66, 0x91, 0x8a, 0xed, 0xe0, 0x5d, 0xfd, 0xb0, 0xf8, 0x20, 0x55, 0xef, 0x24, 0xe9, 0xa0, 0xf6, - 0x58, 0xa7, 0x64, 0xf4, 0x28, 0x48, 0x9a, 0xbb, 0xa7, 0x3a, 0x36, 0x0d, 0xc9, 0xae, 0xad, 0x6a, - 0xb8, 0xf8, 0x10, 0x63, 0x65, 0xf4, 0x0d, 0x41, 0x26, 0x1e, 0xe1, 0xde, 0xd2, 0x77, 0x3d, 0x81, - 0xf8, 0x08, 0xf3, 0x08, 0x4a, 0xe3, 0x68, 0xe7, 0x40, 0x22, 0x9a, 0x88, 0x3c, 0xf8, 0x1c, 0x65, - 0x2b, 0xd8, 0x7b, 0x76, 0xf8, 0xb9, 0x0f, 0xc0, 0x04, 0xe1, 0x0c, 0x1e, 0xfa, 0x28, 0x2b, 0xdc, - 0xec, 0xbd, 0xd0, 0x13, 0x9f, 0x85, 0xd3, 0x84, 0xa9, 0x8d, 0x3d, 0xb5, 0xa9, 0x7a, 0x6a, 0x88, - 0xfb, 0x09, 0xca, 0x4d, 0xd4, 0xbe, 0xce, 0x3b, 0x23, 0xe3, 0x74, 0x3a, 0x3b, 0x47, 0xbe, 0x61, - 0x3d, 0xc9, 0xc6, 0x49, 0x68, 0xc2, 0xb4, 0xde, 0xb7, 0xe2, 0xbc, 0x54, 0x86, 0x7c, 0xd8, 0xee, - 0x51, 0x16, 0x98, 0xe5, 0x4b, 0x31, 0x52, 0x04, 0x2d, 0x6f, 0x56, 0x49, 0xf9, 0xf2, 0x6a, 0x4d, - 0x8a, 0x93, 0x32, 0x6a, 0x6d, 0x75, 0xab, 0xa6, 0xc8, 0xdb, 0x1b, 0x5b, 0xab, 0xeb, 0x35, 0x29, - 0x11, 0x2a, 0xec, 0xaf, 0x27, 0x33, 0x0f, 0x4b, 0x8f, 0x90, 0xaa, 0xa1, 0x10, 0xdd, 0xa9, 0xa1, - 0x0f, 0xc0, 0x19, 0x71, 0xac, 0xe2, 0x62, 0x4f, 0xb9, 0xa5, 0x3b, 0xd4, 0x21, 0xdb, 0x2a, 0x4b, - 0x8e, 0xbe, 0xfd, 0xcc, 0x70, 0xae, 0x06, 0xf6, 0x5e, 0xd2, 0x1d, 0xe2, 0x6e, 0x6d, 0xd5, 0x43, - 0x6b, 0x30, 0x6f, 0x5a, 0x8a, 0xeb, 0xa9, 0x66, 0x53, 0x75, 0x9a, 0x4a, 0x70, 0xa0, 0xa5, 0xa8, - 0x9a, 0x86, 0x5d, 0xd7, 0x62, 0x89, 0xd0, 0x47, 0xb9, 0xd7, 0xb4, 0x1a, 0x9c, 0x39, 0xc8, 0x10, - 0x15, 0xce, 0xda, 0x65, 0xbe, 0x89, 0x41, 0xe6, 0x7b, 0x0f, 0x64, 0xdb, 0xaa, 0xad, 0x60, 0xd3, - 0x73, 0x8e, 0x68, 0x7d, 0x9e, 0x91, 0x33, 0x6d, 0xd5, 0xae, 0x91, 0xf6, 0x0f, 0x65, 0x9b, 0x74, - 0x3d, 0x99, 0x49, 0x4a, 0xe3, 0xd7, 0x93, 0x99, 0x71, 0x29, 0x75, 0x3d, 0x99, 0x49, 0x49, 0xe9, - 0xeb, 0xc9, 0x4c, 0x46, 0xca, 0x5e, 0x4f, 0x66, 0xb2, 0x12, 0x94, 0xde, 0x49, 0x40, 0x3e, 0x5c, - 0xc1, 0x93, 0x0d, 0x91, 0x46, 0x73, 0x58, 0x8c, 0x46, 0xb9, 0x07, 0x8e, 0xad, 0xf7, 0x17, 0x97, - 0x49, 0x72, 0x2b, 0xa7, 0x58, 0xb9, 0x2c, 0x33, 0x49, 0x52, 0x58, 0x10, 0xf3, 0xc3, 0xac, 0x3c, - 0xc9, 0xc8, 0xbc, 0x85, 0x56, 0x20, 0xf5, 0x9a, 0x4b, 0xb1, 0x53, 0x14, 0xfb, 0xc1, 0xe3, 0xb1, - 0xaf, 0x37, 0x28, 0x78, 0xf6, 0x7a, 0x43, 0xd9, 0xd8, 0x94, 0xd7, 0x2b, 0x6b, 0x32, 0x17, 0x47, - 0x67, 0x21, 0x69, 0xa8, 0xaf, 0x1f, 0x45, 0xd3, 0x20, 0x25, 0x8d, 0xba, 0x2c, 0x67, 0x21, 0x79, - 0x0b, 0xab, 0xfb, 0xd1, 0xe4, 0x43, 0x49, 0xef, 0xa3, 0x7b, 0x9c, 0x87, 0x71, 0xaa, 0x2f, 0x04, - 0xc0, 0x35, 0x26, 0x8d, 0xa1, 0x0c, 0x24, 0x97, 0x37, 0x65, 0xe2, 0x22, 0x12, 0xe4, 0x19, 0x55, - 0xa9, 0xaf, 0xd6, 0x96, 0x6b, 0x52, 0xbc, 0x74, 0x11, 0x52, 0x4c, 0x09, 0xc4, 0x7d, 0x7c, 0x35, - 0x48, 0x63, 0xbc, 0xc9, 0x31, 0x62, 0xa2, 0x77, 0x7b, 0x7d, 0xa9, 0x26, 0x4b, 0xf1, 0x9e, 0xc5, - 0x2f, 0xb9, 0x90, 0x0f, 0x57, 0xe6, 0x3f, 0x9c, 0xed, 0xf9, 0x57, 0x63, 0x90, 0x0b, 0x55, 0xda, - 0xa4, 0x44, 0x52, 0x0d, 0xc3, 0xba, 0xa5, 0xa8, 0x86, 0xae, 0xba, 0xdc, 0x34, 0x80, 0x92, 0x2a, - 0x84, 0x32, 0xea, 0xd2, 0xfd, 0x90, 0x9c, 0x66, 0x5c, 0x4a, 0x95, 0x3e, 0x1b, 0x03, 0xa9, 0xbb, - 0xd4, 0xed, 0x1a, 0x66, 0xec, 0x0f, 0x73, 0x98, 0xa5, 0xcf, 0xc4, 0xa0, 0x10, 0xad, 0x6f, 0xbb, - 0x86, 0x77, 0xff, 0x1f, 0xea, 0xf0, 0x7e, 0x37, 0x0e, 0x13, 0x91, 0xaa, 0x76, 0xd4, 0xd1, 0x7d, - 0x04, 0xa6, 0xf4, 0x26, 0x6e, 0xdb, 0x96, 0x87, 0x4d, 0xed, 0x48, 0x31, 0xf0, 0x01, 0x36, 0x8a, - 0x25, 0x1a, 0x34, 0xce, 0x1f, 0x5f, 0x37, 0x2f, 0xae, 0x06, 0x72, 0x6b, 0x44, 0xac, 0x3c, 0xbd, - 0x5a, 0xad, 0xad, 0xd7, 0x37, 0xb7, 0x6a, 0x1b, 0xcb, 0xaf, 0x28, 0xdb, 0x1b, 0x37, 0x36, 0x36, - 0x5f, 0xda, 0x90, 0x25, 0xbd, 0x8b, 0xed, 0x7d, 0x74, 0xfb, 0x3a, 0x48, 0xdd, 0x83, 0x42, 0x67, - 0xa0, 0xdf, 0xb0, 0xa4, 0x31, 0x34, 0x0d, 0x93, 0x1b, 0x9b, 0x4a, 0x63, 0xb5, 0x5a, 0x53, 0x6a, - 0x57, 0xaf, 0xd6, 0x96, 0xb7, 0x1a, 0xec, 0x24, 0xc4, 0xe7, 0xde, 0x8a, 0x38, 0x78, 0xe9, 0xd3, - 0x09, 0x98, 0xee, 0x33, 0x12, 0x54, 0xe1, 0x7b, 0x18, 0xb6, 0xad, 0x7a, 0x72, 0x94, 0xd1, 0x2f, - 0x92, 0x2a, 0xa2, 0xae, 0x3a, 0x1e, 0xdf, 0xf2, 0x3c, 0x0a, 0x44, 0x4b, 0xa6, 0xa7, 0xef, 0xea, - 0xd8, 0xe1, 0x27, 0x4c, 0x6c, 0x63, 0x33, 0x19, 0xd0, 0xd9, 0x21, 0xd3, 0x13, 0x80, 0x6c, 0xcb, - 0xd5, 0x3d, 0xfd, 0x00, 0x2b, 0xba, 0x29, 0x8e, 0xa3, 0xc8, 0x46, 0x27, 0x29, 0x4b, 0xa2, 0x67, - 0xd5, 0xf4, 0x7c, 0x6e, 0x13, 0xb7, 0xd4, 0x2e, 0x6e, 0x12, 0xcc, 0x13, 0xb2, 0x24, 0x7a, 0x7c, - 0xee, 0xfb, 0x21, 0xdf, 0xb4, 0x3a, 0xa4, 0xfa, 0x63, 0x7c, 0x24, 0x77, 0xc4, 0xe4, 0x1c, 0xa3, - 0xf9, 0x2c, 0xbc, 0xae, 0x0f, 0xce, 0xc1, 0xf2, 0x72, 0x8e, 0xd1, 0x18, 0xcb, 0x23, 0x30, 0xa9, - 0xb6, 0x5a, 0x0e, 0x01, 0x17, 0x40, 0x6c, 0xa7, 0x52, 0xf0, 0xc9, 0x94, 0x71, 0xf6, 0x3a, 0x64, - 0x84, 0x1e, 0x48, 0xf2, 0x26, 0x9a, 0x50, 0x6c, 0xb6, 0xfd, 0x8e, 0x9f, 0xcb, 0xca, 0x19, 0x53, - 0x74, 0xde, 0x0f, 0x79, 0xdd, 0x55, 0x82, 0x63, 0xfd, 0xf8, 0x42, 0xfc, 0x5c, 0x46, 0xce, 0xe9, - 0xae, 0x7f, 0x24, 0x5a, 0xfa, 0x7c, 0x1c, 0x0a, 0xd1, 0x6b, 0x09, 0x54, 0x85, 0x8c, 0x61, 0x69, - 0x2a, 0x35, 0x2d, 0x76, 0x27, 0x76, 0x6e, 0xc8, 0x4d, 0xc6, 0xe2, 0x1a, 0xe7, 0x97, 0x7d, 0xc9, - 0xd9, 0x7f, 0x13, 0x83, 0x8c, 0x20, 0xa3, 0xd3, 0x90, 0xb4, 0x55, 0x6f, 0x8f, 0xc2, 0x8d, 0x2f, - 0xc5, 0xa5, 0x98, 0x4c, 0xdb, 0x84, 0xee, 0xda, 0xaa, 0x49, 0x4d, 0x80, 0xd3, 0x49, 0x9b, 0xac, - 0xab, 0x81, 0xd5, 0x26, 0xdd, 0x06, 0x59, 0xed, 0x36, 0x36, 0x3d, 0x57, 0xac, 0x2b, 0xa7, 0x2f, - 0x73, 0x32, 0x7a, 0x1c, 0xa6, 0x3c, 0x47, 0xd5, 0x8d, 0x08, 0x6f, 0x92, 0xf2, 0x4a, 0xa2, 0xc3, - 0x67, 0x2e, 0xc3, 0x59, 0x81, 0xdb, 0xc4, 0x9e, 0xaa, 0xed, 0xe1, 0x66, 0x20, 0x94, 0xa2, 0xc7, - 0x1d, 0x67, 0x38, 0x43, 0x95, 0xf7, 0x0b, 0xd9, 0xd2, 0xaf, 0xc7, 0x60, 0x4a, 0x6c, 0xdc, 0x9a, - 0xbe, 0xb2, 0xd6, 0x01, 0x54, 0xd3, 0xb4, 0xbc, 0xb0, 0xba, 0x7a, 0x4d, 0xb9, 0x47, 0x6e, 0xb1, - 0xe2, 0x0b, 0xc9, 0x21, 0x80, 0xd9, 0x36, 0x40, 0xd0, 0x33, 0x50, 0x6d, 0xf3, 0x90, 0xe3, 0x77, - 0x4e, 0xf4, 0xe2, 0x92, 0x6d, 0xf5, 0x81, 0x91, 0xc8, 0x0e, 0x0f, 0xcd, 0xc0, 0xf8, 0x0e, 0x6e, - 0xe9, 0x26, 0x3f, 0x49, 0x66, 0x0d, 0x71, 0x20, 0x93, 0xf4, 0x0f, 0x64, 0x96, 0xfe, 0x34, 0x4c, - 0x6b, 0x56, 0xbb, 0x7b, 0xb8, 0x4b, 0x52, 0xd7, 0x71, 0x83, 0x7b, 0x2d, 0xf6, 0xea, 0x93, 0x9c, - 0xa9, 0x65, 0x19, 0xaa, 0xd9, 0x5a, 0xb4, 0x9c, 0x56, 0x70, 0xf1, 0x4a, 0x2a, 0x1e, 0x37, 0x74, - 0xfd, 0x6a, 0xef, 0xfc, 0x9f, 0x58, 0xec, 0xe7, 0xe2, 0x89, 0x95, 0xfa, 0xd2, 0x17, 0xe2, 0xb3, - 0x2b, 0x4c, 0xb0, 0x2e, 0x94, 0x21, 0xe3, 0x5d, 0x03, 0x6b, 0x64, 0x82, 0xf0, 0x7b, 0x8f, 0xc3, - 0x4c, 0xcb, 0x6a, 0x59, 0x14, 0xe9, 0x3c, 0xf9, 0x8b, 0xdf, 0xdc, 0x66, 0x7d, 0xea, 0xec, 0xd0, - 0x6b, 0xde, 0xf2, 0x06, 0x4c, 0x73, 0x66, 0x85, 0x5e, 0x1d, 0xb1, 0x8d, 0x0d, 0x3a, 0xf6, 0x54, - 0xad, 0xf8, 0xcb, 0xdf, 0xa2, 0xe9, 0x5b, 0x9e, 0xe2, 0xa2, 0xa4, 0x8f, 0xed, 0x7d, 0xca, 0x32, - 0x9c, 0x8a, 0xe0, 0x31, 0x27, 0xc5, 0xce, 0x10, 0xc4, 0x7f, 0xce, 0x11, 0xa7, 0x43, 0x88, 0x0d, - 0x2e, 0x5a, 0x5e, 0x86, 0x89, 0x93, 0x60, 0xfd, 0x0b, 0x8e, 0x95, 0xc7, 0x61, 0x90, 0x15, 0x98, - 0xa4, 0x20, 0x5a, 0xc7, 0xf5, 0xac, 0x36, 0x8d, 0x80, 0xc7, 0xc3, 0xfc, 0xcb, 0x6f, 0x31, 0xaf, - 0x29, 0x10, 0xb1, 0x65, 0x5f, 0xaa, 0x5c, 0x06, 0x7a, 0x5b, 0xd6, 0xc4, 0x9a, 0x31, 0x04, 0xe1, - 0x6b, 0x7c, 0x20, 0x3e, 0x7f, 0xf9, 0x26, 0xcc, 0x90, 0xbf, 0x69, 0x80, 0x0a, 0x8f, 0x64, 0xf8, - 0x11, 0x5c, 0xf1, 0xd7, 0x3f, 0xc6, 0x1c, 0x73, 0xda, 0x07, 0x08, 0x8d, 0x29, 0xb4, 0x8a, 0x2d, - 0xec, 0x79, 0xd8, 0x71, 0x15, 0xd5, 0xe8, 0x37, 0xbc, 0xd0, 0x19, 0x46, 0xf1, 0x67, 0xbe, 0x1b, - 0x5d, 0xc5, 0x15, 0x26, 0x59, 0x31, 0x8c, 0xf2, 0x36, 0x9c, 0xe9, 0x63, 0x15, 0x23, 0x60, 0x7e, - 0x9a, 0x63, 0xce, 0xf4, 0x58, 0x06, 0x81, 0xad, 0x83, 0xa0, 0xfb, 0x6b, 0x39, 0x02, 0xe6, 0xcf, - 0x72, 0x4c, 0xc4, 0x65, 0xc5, 0x92, 0x12, 0xc4, 0xeb, 0x30, 0x75, 0x80, 0x9d, 0x1d, 0xcb, 0xe5, - 0xe7, 0x46, 0x23, 0xc0, 0x7d, 0x86, 0xc3, 0x4d, 0x72, 0x41, 0x7a, 0x90, 0x44, 0xb0, 0x2e, 0x43, - 0x66, 0x57, 0xd5, 0xf0, 0x08, 0x10, 0x77, 0x38, 0x44, 0x9a, 0xf0, 0x13, 0xd1, 0x0a, 0xe4, 0x5b, - 0x16, 0xcf, 0x51, 0xc3, 0xc5, 0x3f, 0xcb, 0xc5, 0x73, 0x42, 0x86, 0x43, 0xd8, 0x96, 0xdd, 0x31, - 0x48, 0x02, 0x1b, 0x0e, 0xf1, 0xd7, 0x04, 0x84, 0x90, 0xe1, 0x10, 0x27, 0x50, 0xeb, 0x9b, 0x02, - 0xc2, 0x0d, 0xe9, 0xf3, 0x05, 0xc8, 0x59, 0xa6, 0x71, 0x64, 0x99, 0xa3, 0x0c, 0xe2, 0x2d, 0x8e, - 0x00, 0x5c, 0x84, 0x00, 0x5c, 0x81, 0xec, 0xa8, 0x0b, 0xf1, 0xd7, 0xbf, 0x2b, 0xdc, 0x43, 0xac, - 0xc0, 0x0a, 0x4c, 0x8a, 0x00, 0xa5, 0x5b, 0xe6, 0x08, 0x10, 0x7f, 0x83, 0x43, 0x14, 0x42, 0x62, - 0x7c, 0x1a, 0x1e, 0x76, 0xbd, 0x16, 0x1e, 0x05, 0xe4, 0xf3, 0x62, 0x1a, 0x5c, 0x84, 0xab, 0x72, - 0x07, 0x9b, 0xda, 0xde, 0x68, 0x08, 0xbf, 0x20, 0x54, 0x29, 0x64, 0x08, 0xc4, 0x32, 0x4c, 0xb4, - 0x55, 0xc7, 0xdd, 0x53, 0x8d, 0x91, 0x96, 0xe3, 0x6f, 0x72, 0x8c, 0xbc, 0x2f, 0xc4, 0x35, 0xd2, - 0x31, 0x4f, 0x02, 0xf3, 0x05, 0xa1, 0x91, 0x90, 0x18, 0x77, 0x3d, 0xd7, 0xa3, 0x87, 0x6c, 0x27, - 0x41, 0xfb, 0x5b, 0xc2, 0xf5, 0x98, 0xec, 0x7a, 0x18, 0xf1, 0x0a, 0x64, 0x5d, 0xfd, 0xf5, 0x91, - 0x60, 0xbe, 0x28, 0x56, 0x9a, 0x0a, 0x10, 0xe1, 0x57, 0xe0, 0x6c, 0xdf, 0x34, 0x31, 0x02, 0xd8, - 0x2f, 0x72, 0xb0, 0xd3, 0x7d, 0x52, 0x05, 0x0f, 0x09, 0x27, 0x85, 0xfc, 0xdb, 0x22, 0x24, 0xe0, - 0x2e, 0xac, 0x3a, 0xd9, 0x35, 0xb8, 0xea, 0xee, 0xc9, 0xb4, 0xf6, 0x77, 0x84, 0xd6, 0x98, 0x6c, - 0x44, 0x6b, 0x5b, 0x70, 0x9a, 0x23, 0x9e, 0x6c, 0x5d, 0x7f, 0x49, 0x04, 0x56, 0x26, 0xbd, 0x1d, - 0x5d, 0xdd, 0x1f, 0x83, 0x59, 0x5f, 0x9d, 0xa2, 0x3c, 0x75, 0x95, 0xb6, 0x6a, 0x8f, 0x80, 0xfc, - 0xcb, 0x1c, 0x59, 0x44, 0x7c, 0xbf, 0xbe, 0x75, 0xd7, 0x55, 0x9b, 0x80, 0xbf, 0x0c, 0x45, 0x01, - 0xde, 0x31, 0x1d, 0xac, 0x59, 0x2d, 0x53, 0x7f, 0x1d, 0x37, 0x47, 0x80, 0xfe, 0x95, 0xae, 0xa5, - 0xda, 0x0e, 0x89, 0x13, 0xe4, 0x55, 0x90, 0xfc, 0x5a, 0x45, 0xd1, 0xdb, 0xb6, 0xe5, 0x78, 0x43, - 0x10, 0xbf, 0x24, 0x56, 0xca, 0x97, 0x5b, 0xa5, 0x62, 0xe5, 0x1a, 0xb0, 0x9b, 0xe7, 0x51, 0x4d, - 0xf2, 0xcb, 0x1c, 0x68, 0x22, 0x90, 0xe2, 0x81, 0x43, 0xb3, 0xda, 0xb6, 0xea, 0x8c, 0x12, 0xff, - 0xfe, 0xae, 0x08, 0x1c, 0x5c, 0x84, 0x07, 0x0e, 0x52, 0xd1, 0x91, 0x6c, 0x3f, 0x02, 0xc2, 0x57, - 0x44, 0xe0, 0x10, 0x32, 0x1c, 0x42, 0x14, 0x0c, 0x23, 0x40, 0xfc, 0x3d, 0x01, 0x21, 0x64, 0x08, - 0xc4, 0x8b, 0x41, 0xa2, 0x75, 0x70, 0x4b, 0x77, 0x3d, 0x87, 0x15, 0xc5, 0xc7, 0x43, 0xfd, 0xfd, - 0xef, 0x46, 0x8b, 0x30, 0x39, 0x24, 0x4a, 0x22, 0x11, 0x3f, 0x76, 0xa5, 0x7b, 0xa6, 0xe1, 0x03, - 0xfb, 0x55, 0x11, 0x89, 0x42, 0x62, 0x64, 0x6c, 0xa1, 0x0a, 0x91, 0xa8, 0x5d, 0x23, 0x3b, 0x85, - 0x11, 0xe0, 0xfe, 0x41, 0xd7, 0xe0, 0x1a, 0x42, 0x96, 0x60, 0x86, 0xea, 0x9f, 0x8e, 0xb9, 0x8f, - 0x8f, 0x46, 0xb2, 0xce, 0x5f, 0xeb, 0xaa, 0x7f, 0xb6, 0x99, 0x24, 0x8b, 0x21, 0x93, 0x5d, 0xf5, - 0x14, 0x1a, 0xf6, 0x9e, 0x51, 0xf1, 0xa3, 0xef, 0xf2, 0xf9, 0x46, 0xcb, 0xa9, 0xf2, 0x1a, 0x31, - 0xf2, 0x68, 0xd1, 0x33, 0x1c, 0xec, 0x63, 0xef, 0xfa, 0x76, 0x1e, 0xa9, 0x79, 0xca, 0x57, 0x61, - 0x22, 0x52, 0xf0, 0x0c, 0x87, 0xfa, 0x33, 0x1c, 0x2a, 0x1f, 0xae, 0x77, 0xca, 0x17, 0x21, 0x49, - 0x8a, 0x97, 0xe1, 0xe2, 0x7f, 0x96, 0x8b, 0x53, 0xf6, 0xf2, 0x07, 0x21, 0x23, 0x8a, 0x96, 0xe1, - 0xa2, 0x7f, 0x8e, 0x8b, 0xfa, 0x22, 0x44, 0x5c, 0x14, 0x2c, 0xc3, 0xc5, 0xff, 0xbc, 0x10, 0x17, - 0x22, 0x44, 0x7c, 0x74, 0x15, 0x7e, 0xf5, 0x2f, 0x24, 0x79, 0xd2, 0x11, 0xba, 0xbb, 0x02, 0x69, - 0x5e, 0xa9, 0x0c, 0x97, 0xfe, 0x04, 0x7f, 0xb8, 0x90, 0x28, 0x3f, 0x07, 0xe3, 0x23, 0x2a, 0xfc, - 0x2f, 0x72, 0x51, 0xc6, 0x5f, 0x5e, 0x86, 0x5c, 0xa8, 0x3a, 0x19, 0x2e, 0xfe, 0x13, 0x5c, 0x3c, - 0x2c, 0x45, 0x86, 0xce, 0xab, 0x93, 0xe1, 0x00, 0x7f, 0x49, 0x0c, 0x9d, 0x4b, 0x10, 0xb5, 0x89, - 0xc2, 0x64, 0xb8, 0xf4, 0x27, 0x85, 0xd6, 0x85, 0x48, 0xf9, 0x05, 0xc8, 0xfa, 0xc9, 0x66, 0xb8, - 0xfc, 0x4f, 0x72, 0xf9, 0x40, 0x86, 0x68, 0x20, 0x94, 0xec, 0x86, 0x43, 0xfc, 0x65, 0xa1, 0x81, - 0x90, 0x14, 0x71, 0xa3, 0xee, 0x02, 0x66, 0x38, 0xd2, 0x4f, 0x09, 0x37, 0xea, 0xaa, 0x5f, 0xc8, - 0x6a, 0xd2, 0x98, 0x3f, 0x1c, 0xe2, 0xaf, 0x88, 0xd5, 0xa4, 0xfc, 0x64, 0x18, 0xdd, 0x15, 0xc1, - 0x70, 0x8c, 0x9f, 0x16, 0xc3, 0xe8, 0x2a, 0x08, 0xca, 0x75, 0x40, 0xbd, 0xd5, 0xc0, 0x70, 0xbc, - 0x4f, 0x71, 0xbc, 0xa9, 0x9e, 0x62, 0xa0, 0xfc, 0x12, 0x9c, 0xee, 0x5f, 0x09, 0x0c, 0x47, 0xfd, - 0x99, 0x77, 0xbb, 0xf6, 0x6e, 0xe1, 0x42, 0xa0, 0xbc, 0x15, 0xa4, 0x94, 0x70, 0x15, 0x30, 0x1c, - 0xf6, 0xd3, 0xef, 0x46, 0x03, 0x77, 0xb8, 0x08, 0x28, 0x57, 0x00, 0x82, 0x04, 0x3c, 0x1c, 0xeb, - 0x33, 0x1c, 0x2b, 0x24, 0x44, 0x5c, 0x83, 0xe7, 0xdf, 0xe1, 0xf2, 0x77, 0x84, 0x6b, 0x70, 0x09, - 0xe2, 0x1a, 0x22, 0xf5, 0x0e, 0x97, 0xfe, 0xac, 0x70, 0x0d, 0x21, 0x42, 0x2c, 0x3b, 0x94, 0xdd, - 0x86, 0x23, 0xbc, 0x25, 0x2c, 0x3b, 0x24, 0x55, 0xde, 0x80, 0xa9, 0x9e, 0x84, 0x38, 0x1c, 0xea, - 0xe7, 0x38, 0x94, 0xd4, 0x9d, 0x0f, 0xc3, 0xc9, 0x8b, 0x27, 0xc3, 0xe1, 0x68, 0x9f, 0xeb, 0x4a, - 0x5e, 0x3c, 0x17, 0x96, 0xaf, 0x40, 0xc6, 0xec, 0x18, 0x06, 0x71, 0x1e, 0x74, 0xfc, 0xbb, 0x81, - 0xc5, 0xff, 0xfa, 0x03, 0xae, 0x1d, 0x21, 0x50, 0xbe, 0x08, 0xe3, 0xb8, 0xbd, 0x83, 0x9b, 0xc3, - 0x24, 0xbf, 0xf3, 0x03, 0x11, 0x30, 0x09, 0x77, 0xf9, 0x05, 0x00, 0x76, 0x34, 0x42, 0x2f, 0x03, - 0x87, 0xc8, 0xfe, 0xb7, 0x1f, 0xf0, 0x97, 0x71, 0x02, 0x91, 0x00, 0x80, 0xbd, 0xda, 0x73, 0x3c, - 0xc0, 0x77, 0xa3, 0x00, 0x74, 0x45, 0x2e, 0x43, 0xfa, 0x35, 0xd7, 0x32, 0x3d, 0xb5, 0x35, 0x4c, - 0xfa, 0xf7, 0xb8, 0xb4, 0xe0, 0x27, 0x0a, 0x6b, 0x5b, 0x0e, 0xf6, 0xd4, 0x96, 0x3b, 0x4c, 0xf6, - 0xbf, 0x73, 0x59, 0x5f, 0x80, 0x08, 0x6b, 0xaa, 0xeb, 0x8d, 0x32, 0xef, 0xff, 0x21, 0x84, 0x85, - 0x00, 0x19, 0x34, 0xf9, 0x7b, 0x1f, 0x1f, 0x0d, 0x93, 0xfd, 0x9e, 0x18, 0x34, 0xe7, 0x2f, 0x7f, - 0x10, 0xb2, 0xe4, 0x4f, 0xf6, 0x86, 0xdd, 0x10, 0xe1, 0xff, 0xc9, 0x85, 0x03, 0x09, 0xf2, 0x64, - 0xd7, 0x6b, 0x7a, 0xfa, 0x70, 0x65, 0x7f, 0x9f, 0xaf, 0xb4, 0xe0, 0x2f, 0x57, 0x20, 0xe7, 0x7a, - 0xcd, 0x66, 0x87, 0xd7, 0xa7, 0x43, 0xc4, 0xff, 0xd7, 0x0f, 0xfc, 0x23, 0x0b, 0x5f, 0x86, 0xac, - 0xf6, 0xad, 0x7d, 0xcf, 0xb6, 0xe8, 0x85, 0xc7, 0x30, 0x84, 0x77, 0x39, 0x42, 0x48, 0xa4, 0xbc, - 0x0c, 0x79, 0x32, 0x17, 0x07, 0xdb, 0x98, 0xde, 0x4e, 0x0d, 0x81, 0xf8, 0xdf, 0x5c, 0x01, 0x11, - 0xa1, 0xa5, 0x3f, 0xf9, 0xb5, 0x77, 0xe6, 0x62, 0xdf, 0x78, 0x67, 0x2e, 0xf6, 0xbb, 0xef, 0xcc, - 0xc5, 0x3e, 0xf9, 0xcd, 0xb9, 0xb1, 0x6f, 0x7c, 0x73, 0x6e, 0xec, 0xb7, 0xbe, 0x39, 0x37, 0xd6, - 0xff, 0x94, 0x18, 0x56, 0xac, 0x15, 0x8b, 0x9d, 0x0f, 0xbf, 0xfa, 0x50, 0x4b, 0xf7, 0xf6, 0x3a, - 0x3b, 0x8b, 0x9a, 0xd5, 0x3e, 0xaf, 0x59, 0x6e, 0xdb, 0x72, 0xcf, 0x47, 0xcf, 0x75, 0xe9, 0x5f, - 0xf0, 0xd1, 0x38, 0xd9, 0x33, 0x47, 0x8f, 0x73, 0x55, 0xf3, 0x68, 0xc0, 0xe7, 0x3a, 0xb3, 0x7d, - 0xcf, 0x86, 0x4b, 0xd7, 0x20, 0x51, 0x31, 0x8f, 0xd0, 0x59, 0x16, 0xf6, 0x94, 0x8e, 0x63, 0xf0, - 0x97, 0xbf, 0xd2, 0xa4, 0xbd, 0xed, 0x18, 0x68, 0x26, 0x78, 0x43, 0x33, 0x76, 0x2e, 0xcf, 0x5f, - 0xbb, 0x2c, 0x4b, 0x9f, 0x7a, 0x73, 0x7e, 0xec, 0x97, 0xde, 0x9c, 0x1f, 0xfb, 0xde, 0x5b, 0xf3, - 0x63, 0x6f, 0xfc, 0xce, 0xc2, 0xd8, 0xd2, 0x7e, 0xf7, 0x84, 0xbf, 0x3a, 0x74, 0xd2, 0x99, 0x8a, - 0x79, 0x44, 0xe7, 0x5c, 0x8f, 0xbd, 0x3a, 0x4e, 0xcf, 0xbd, 0xc5, 0x39, 0xf7, 0x5c, 0xf7, 0x39, - 0xf7, 0x4b, 0xd8, 0x30, 0x6e, 0x98, 0xd6, 0x2d, 0x73, 0x8b, 0xb0, 0xed, 0xa4, 0xd8, 0x5b, 0xc5, - 0xf0, 0x53, 0x71, 0x98, 0xeb, 0x39, 0xd2, 0xe6, 0x86, 0x30, 0xe8, 0xbb, 0xa5, 0x32, 0x64, 0xaa, - 0xc2, 0xbe, 0x8a, 0x90, 0x76, 0xb1, 0x66, 0x99, 0x4d, 0x97, 0x4e, 0x3b, 0x21, 0x8b, 0x26, 0x99, - 0xb6, 0xa9, 0x9a, 0x96, 0xcb, 0x5f, 0x96, 0x64, 0x8d, 0xa5, 0x9f, 0x8d, 0x9d, 0x6c, 0x59, 0x27, - 0xc4, 0x93, 0xc4, 0x34, 0x9f, 0x1e, 0x7a, 0xf2, 0xbf, 0x4f, 0x66, 0xe9, 0x4f, 0x22, 0x72, 0xfa, - 0x3f, 0xaa, 0x56, 0x7e, 0x3a, 0x0e, 0xf3, 0xdd, 0x5a, 0x21, 0xde, 0xe5, 0x7a, 0x6a, 0xdb, 0x1e, - 0xa4, 0x96, 0x2b, 0x90, 0xdd, 0x12, 0x3c, 0x27, 0xd6, 0xcb, 0x9d, 0x13, 0xea, 0xa5, 0xe0, 0x3f, - 0x4a, 0x28, 0xe6, 0xc2, 0x88, 0x8a, 0xf1, 0xe7, 0xf1, 0x9e, 0x34, 0xf3, 0x7f, 0x53, 0x70, 0x96, - 0xb9, 0x94, 0xc2, 0x5c, 0x81, 0x35, 0xb8, 0x4e, 0xf2, 0xe1, 0xae, 0xe1, 0x77, 0x25, 0xa5, 0x1b, - 0x30, 0xbd, 0x4a, 0x22, 0x06, 0xd9, 0x09, 0x05, 0xb7, 0x3c, 0x7d, 0xdf, 0x27, 0x5d, 0x88, 0x14, - 0xfd, 0xfc, 0x96, 0x29, 0x4c, 0x2a, 0x7d, 0x34, 0x06, 0x52, 0x43, 0x53, 0x0d, 0xd5, 0xf9, 0x83, - 0x42, 0xa1, 0xe7, 0x00, 0xe8, 0x77, 0x48, 0xc1, 0x87, 0x43, 0x85, 0x0b, 0xc5, 0xc5, 0xf0, 0xe4, - 0x16, 0xd9, 0x93, 0xe8, 0x57, 0x09, 0x59, 0xca, 0x4b, 0xfe, 0x7c, 0xec, 0x65, 0x80, 0xa0, 0x03, - 0xdd, 0x03, 0x67, 0x1a, 0xcb, 0x95, 0xb5, 0x8a, 0xac, 0xb0, 0x17, 0xdc, 0x37, 0x1a, 0xf5, 0xda, - 0xf2, 0xea, 0xd5, 0xd5, 0x5a, 0x55, 0x1a, 0x43, 0xa7, 0x01, 0x85, 0x3b, 0xfd, 0x77, 0x53, 0x4e, - 0xc1, 0x54, 0x98, 0xce, 0xde, 0x92, 0x8f, 0x93, 0x6a, 0x51, 0x6f, 0xdb, 0x06, 0xa6, 0xd7, 0x7f, - 0x8a, 0x2e, 0xb4, 0x36, 0xbc, 0x10, 0xf9, 0x57, 0xff, 0x96, 0xbd, 0x39, 0x3d, 0x1d, 0x88, 0xfb, - 0x3a, 0x2f, 0xaf, 0xc1, 0x94, 0xaa, 0x69, 0xd8, 0x8e, 0x40, 0x0e, 0x09, 0xd7, 0x04, 0x90, 0x5e, - 0x68, 0x72, 0xc9, 0x00, 0xed, 0x39, 0x48, 0xb9, 0x74, 0xf6, 0xc3, 0x20, 0xbe, 0xce, 0x21, 0x38, - 0x7b, 0xd9, 0x84, 0x29, 0x52, 0xfd, 0xa9, 0x0e, 0x0e, 0x0d, 0xe3, 0xf8, 0xb3, 0x86, 0x7f, 0xf8, - 0xa5, 0xa7, 0xe8, 0xf5, 0xe6, 0xfd, 0xd1, 0x65, 0xe9, 0x63, 0x4e, 0xb2, 0xc4, 0xb1, 0x83, 0x81, - 0x62, 0x28, 0x88, 0xe7, 0xf1, 0x01, 0x1f, 0xff, 0xb0, 0x7f, 0xc4, 0x1f, 0x36, 0xd7, 0xcf, 0x06, - 0x42, 0x4f, 0x9a, 0xe0, 0xa8, 0xac, 0x63, 0xa9, 0x36, 0xc8, 0xa7, 0x5f, 0x7d, 0xbc, 0x37, 0x43, - 0xb1, 0x7f, 0x9e, 0xa4, 0xc8, 0x57, 0xc2, 0x8f, 0xf1, 0x7d, 0xef, 0x37, 0x13, 0x30, 0xc7, 0x99, - 0x77, 0x54, 0x17, 0x9f, 0x3f, 0x78, 0x7a, 0x07, 0x7b, 0xea, 0xd3, 0xe7, 0x35, 0x4b, 0x17, 0xb1, - 0x7a, 0x9a, 0xbb, 0x23, 0xe9, 0x5f, 0xe4, 0xfd, 0xfd, 0x13, 0xd7, 0xec, 0x60, 0x37, 0x2e, 0x6d, - 0x43, 0x72, 0xd9, 0xd2, 0x4d, 0x12, 0xaa, 0x9a, 0xd8, 0xb4, 0xda, 0xdc, 0x7b, 0x58, 0x03, 0x3d, - 0x0d, 0x29, 0xb5, 0x6d, 0x75, 0x4c, 0x8f, 0x79, 0xce, 0xd2, 0xd9, 0xaf, 0xbd, 0x3d, 0x3f, 0xf6, - 0xef, 0xde, 0x9e, 0x4f, 0xac, 0x9a, 0xde, 0x6f, 0x7c, 0xf9, 0x49, 0xe0, 0x50, 0xab, 0xa6, 0x27, - 0x73, 0xc6, 0x72, 0xf2, 0xdb, 0x6f, 0xce, 0xc7, 0x4a, 0x2f, 0x43, 0xba, 0x8a, 0xb5, 0xf7, 0x82, - 0x5c, 0xc5, 0x5a, 0x08, 0xb9, 0x8a, 0xb5, 0x2e, 0xe4, 0xe7, 0x20, 0xb3, 0x6a, 0x7a, 0xec, 0x65, - 0xf4, 0xc7, 0x21, 0xa1, 0x9b, 0xec, 0xfd, 0xc6, 0x63, 0xc7, 0x46, 0xb8, 0x88, 0x60, 0x15, 0x6b, - 0xbe, 0x60, 0x13, 0x6b, 0xdd, 0x82, 0xbd, 0x8f, 0x26, 0x5c, 0x4b, 0xd5, 0xdf, 0xfa, 0x4f, 0x73, - 0x63, 0x6f, 0xbc, 0x33, 0x37, 0x36, 0x70, 0x89, 0x4b, 0x03, 0x97, 0xd8, 0x6d, 0xee, 0xb3, 0x88, - 0xec, 0xaf, 0xec, 0x17, 0x92, 0x70, 0x1f, 0xfd, 0x46, 0xc9, 0x69, 0xeb, 0xa6, 0x77, 0x5e, 0x73, - 0x8e, 0x6c, 0xcf, 0x22, 0x71, 0xd3, 0xda, 0xe5, 0x0b, 0x3b, 0x15, 0x74, 0x2f, 0xb2, 0xee, 0x01, - 0xf5, 0xc8, 0x2e, 0x8c, 0xd7, 0x89, 0x1c, 0x51, 0xb1, 0x67, 0x79, 0xaa, 0xc1, 0xf3, 0x0f, 0x6b, - 0x10, 0x2a, 0xfb, 0xae, 0x29, 0xce, 0xa8, 0xba, 0xf8, 0xa4, 0xc9, 0xc0, 0xea, 0x2e, 0x7b, 0x3d, - 0x3c, 0x41, 0xcb, 0x94, 0x0c, 0x21, 0xd0, 0x37, 0xc1, 0x67, 0x60, 0x5c, 0xed, 0xb0, 0xf7, 0x18, - 0x12, 0xa4, 0x7e, 0xa1, 0x8d, 0xd2, 0x0d, 0x48, 0xf3, 0xdb, 0x54, 0x24, 0x41, 0x62, 0x1f, 0x1f, - 0xd1, 0xe7, 0xe4, 0x65, 0xf2, 0x27, 0x5a, 0x84, 0x71, 0x3a, 0x78, 0xfe, 0xdd, 0x4b, 0x71, 0xb1, - 0x67, 0xf4, 0x8b, 0x74, 0x90, 0x32, 0x63, 0x2b, 0x5d, 0x87, 0x4c, 0xd5, 0x6a, 0xeb, 0xa6, 0x15, - 0x45, 0xcb, 0x32, 0x34, 0x3a, 0x66, 0xbb, 0xc3, 0xad, 0x42, 0x66, 0x0d, 0x74, 0x1a, 0x52, 0xec, - 0x73, 0x01, 0xfe, 0x2e, 0x06, 0x6f, 0x95, 0x96, 0x21, 0x4d, 0xb1, 0x37, 0x6d, 0x12, 0xfc, 0xfd, - 0x37, 0x33, 0xb3, 0xfc, 0xe3, 0x31, 0x0e, 0x1f, 0x0f, 0x06, 0x8b, 0x20, 0xd9, 0x54, 0x3d, 0x95, - 0xcf, 0x9b, 0xfe, 0x5d, 0xfa, 0x10, 0x64, 0x38, 0x88, 0x8b, 0x2e, 0x40, 0xc2, 0xb2, 0x5d, 0xfe, - 0x36, 0xc5, 0xec, 0xa0, 0xa9, 0x6c, 0xda, 0x4b, 0x49, 0x62, 0x33, 0x32, 0x61, 0x5e, 0x92, 0x07, - 0x9a, 0xc5, 0xf3, 0x21, 0xb3, 0x08, 0x2d, 0x79, 0xe8, 0x4f, 0xb6, 0xa4, 0x3d, 0xe6, 0xe0, 0x1b, - 0xcb, 0x5b, 0x71, 0x98, 0x0b, 0xf5, 0x1e, 0x60, 0xc7, 0xd5, 0x2d, 0x93, 0x59, 0x14, 0xb7, 0x16, - 0x14, 0x1a, 0x24, 0xef, 0x1f, 0x60, 0x2e, 0x1f, 0x84, 0x44, 0xc5, 0xb6, 0xd1, 0x2c, 0x64, 0x68, - 0x5b, 0xb3, 0x98, 0xbd, 0x24, 0x65, 0xbf, 0x4d, 0xfa, 0x5c, 0x6b, 0xd7, 0xbb, 0xa5, 0x3a, 0xfe, - 0x17, 0x75, 0xa2, 0x5d, 0xba, 0x0c, 0xd9, 0x65, 0xcb, 0x74, 0xb1, 0xe9, 0x76, 0x68, 0x65, 0xb3, - 0x63, 0x58, 0xda, 0x3e, 0x47, 0x60, 0x0d, 0xa2, 0x70, 0xd5, 0xb6, 0xa9, 0x64, 0x52, 0x26, 0x7f, - 0x32, 0x9f, 0x5d, 0x6a, 0x0c, 0x54, 0xd1, 0xe5, 0x93, 0xab, 0x88, 0x4f, 0xd2, 0xd7, 0xd1, 0xef, - 0xc7, 0xe0, 0xde, 0x5e, 0x87, 0xda, 0xc7, 0x47, 0xee, 0x49, 0xfd, 0xe9, 0x65, 0xc8, 0xd6, 0xe9, - 0x67, 0xed, 0x37, 0xf0, 0x11, 0x9a, 0x85, 0x34, 0x6e, 0x5e, 0xb8, 0x78, 0xf1, 0xe9, 0xcb, 0xcc, - 0xda, 0xaf, 0x8d, 0xc9, 0x82, 0x80, 0xe6, 0x20, 0xeb, 0x62, 0xcd, 0xbe, 0x70, 0xf1, 0xd2, 0xfe, - 0xd3, 0xcc, 0xbc, 0xae, 0x8d, 0xc9, 0x01, 0xa9, 0x9c, 0x21, 0xb3, 0xfe, 0xf6, 0x5b, 0xf3, 0xb1, - 0xa5, 0x71, 0x48, 0xb8, 0x9d, 0xf6, 0xfb, 0x6a, 0x23, 0x9f, 0x1e, 0x87, 0x85, 0xb0, 0x24, 0xad, - 0xff, 0x0e, 0x54, 0x43, 0x6f, 0xaa, 0xc1, 0x0f, 0x12, 0x48, 0x21, 0x1d, 0x50, 0x8e, 0x01, 0x99, - 0xe2, 0x58, 0x4d, 0x96, 0x7e, 0x25, 0x06, 0xf9, 0x9b, 0x02, 0xb9, 0x81, 0x3d, 0x74, 0x05, 0xc0, - 0x7f, 0x92, 0x70, 0x9b, 0x7b, 0x16, 0xbb, 0x9f, 0xb5, 0xe8, 0xcb, 0xc8, 0x21, 0x76, 0xf4, 0x1c, - 0x35, 0x44, 0xdb, 0x72, 0xf9, 0x57, 0x56, 0x43, 0x44, 0x7d, 0x66, 0xf4, 0x04, 0x20, 0x1a, 0xe1, - 0x94, 0x03, 0xcb, 0xd3, 0xcd, 0x96, 0x62, 0x5b, 0xb7, 0xf8, 0xb7, 0xab, 0x09, 0x59, 0xa2, 0x3d, - 0x37, 0x69, 0x47, 0x9d, 0xd0, 0xc9, 0xa0, 0xb3, 0x3e, 0x0a, 0x29, 0xd6, 0xd5, 0x66, 0xd3, 0xc1, - 0xae, 0xcb, 0x83, 0x98, 0x68, 0xa2, 0x2b, 0x90, 0xb6, 0x3b, 0x3b, 0x8a, 0x88, 0x18, 0xb9, 0x0b, - 0xf7, 0xf6, 0xf3, 0x7f, 0x61, 0x1f, 0x3c, 0x02, 0xa4, 0xec, 0xce, 0x0e, 0xb1, 0x96, 0xfb, 0x21, - 0xdf, 0x67, 0x30, 0xb9, 0x83, 0x60, 0x1c, 0xf4, 0xd7, 0x14, 0xf8, 0x0c, 0x14, 0xdb, 0xd1, 0x2d, - 0x47, 0xf7, 0x8e, 0xe8, 0x2b, 0x51, 0x09, 0x59, 0x12, 0x1d, 0x75, 0x4e, 0x2f, 0xed, 0xc3, 0x64, - 0x83, 0x16, 0x71, 0xc1, 0xc8, 0x2f, 0x06, 0xe3, 0x8b, 0x0d, 0x1f, 0xdf, 0xc0, 0x91, 0xc5, 0x7b, - 0x46, 0xb6, 0xf4, 0xe2, 0x40, 0xeb, 0x7c, 0xee, 0xe4, 0xd6, 0x19, 0xcd, 0x76, 0xdf, 0x79, 0x28, - 0xe2, 0x9c, 0xcc, 0x38, 0xc3, 0xe1, 0x6b, 0x54, 0xc3, 0x1c, 0xb6, 0x47, 0x9b, 0x3d, 0x3e, 0xa9, - 0xce, 0x0e, 0x09, 0xa3, 0xb3, 0x43, 0x5d, 0xa8, 0x74, 0x19, 0x26, 0xea, 0xaa, 0xe3, 0x35, 0xb0, - 0x77, 0x0d, 0xab, 0x4d, 0xec, 0x44, 0xb3, 0xee, 0x84, 0xc8, 0xba, 0x08, 0x92, 0x34, 0xb5, 0xb2, - 0xac, 0x43, 0xff, 0x2e, 0xed, 0x41, 0x92, 0xbe, 0x16, 0xe9, 0x67, 0x64, 0x2e, 0xc1, 0x32, 0x32, - 0x89, 0xa5, 0x47, 0x1e, 0x76, 0xc5, 0xa1, 0x01, 0x6d, 0xa0, 0x67, 0x45, 0x5e, 0x4d, 0x1c, 0x9f, - 0x57, 0xb9, 0x21, 0xf2, 0xec, 0x6a, 0x40, 0x7a, 0x89, 0x84, 0xe2, 0xd5, 0xaa, 0x3f, 0x90, 0x58, - 0x30, 0x10, 0xb4, 0x0e, 0x93, 0xb6, 0xea, 0x78, 0xf4, 0x0b, 0x91, 0x3d, 0x3a, 0x0b, 0x6e, 0xeb, - 0xf3, 0xbd, 0x9e, 0x17, 0x99, 0x2c, 0x7f, 0xca, 0x84, 0x1d, 0x26, 0x96, 0xfe, 0x73, 0x12, 0x52, - 0x5c, 0x19, 0x1f, 0x84, 0x34, 0x57, 0x2b, 0xb7, 0xce, 0xfb, 0x16, 0x7b, 0x13, 0xd3, 0xa2, 0x9f, - 0x40, 0x38, 0x9e, 0x90, 0x41, 0x0f, 0x43, 0x46, 0xdb, 0x53, 0x75, 0x53, 0xd1, 0x9b, 0xbc, 0x20, - 0xcc, 0xbd, 0xf3, 0xf6, 0x7c, 0x7a, 0x99, 0xd0, 0x56, 0xab, 0x72, 0x9a, 0x76, 0xae, 0x36, 0x49, - 0x25, 0xb0, 0x87, 0xf5, 0xd6, 0x9e, 0xc7, 0x3d, 0x8c, 0xb7, 0xd0, 0xf3, 0x90, 0x24, 0x06, 0xc1, - 0xbf, 0x1f, 0x9c, 0xed, 0xa9, 0xf0, 0xfd, 0x2d, 0xf4, 0x52, 0x86, 0x3c, 0xf8, 0x93, 0xff, 0x71, - 0x3e, 0x26, 0x53, 0x09, 0xb4, 0x0c, 0x13, 0x86, 0xea, 0x7a, 0x0a, 0xcd, 0x60, 0xe4, 0xf1, 0xe3, - 0x14, 0xe2, 0x6c, 0xaf, 0x42, 0xb8, 0x62, 0xf9, 0xd0, 0x73, 0x44, 0x8a, 0x91, 0x9a, 0xe8, 0x1c, - 0x48, 0x14, 0x44, 0xb3, 0xda, 0x6d, 0xdd, 0x63, 0xb5, 0x55, 0x8a, 0xea, 0xbd, 0x40, 0xe8, 0xcb, - 0x94, 0x4c, 0x2b, 0xac, 0x7b, 0x20, 0x4b, 0xbf, 0x58, 0xa2, 0x2c, 0xec, 0x5d, 0xdc, 0x0c, 0x21, - 0xd0, 0xce, 0x47, 0x60, 0x32, 0x88, 0x8f, 0x8c, 0x25, 0xc3, 0x50, 0x02, 0x32, 0x65, 0x7c, 0x0a, - 0x66, 0x4c, 0x7c, 0x48, 0xdf, 0x0e, 0x8e, 0x70, 0x67, 0x29, 0x37, 0x22, 0x7d, 0x37, 0xa3, 0x12, - 0x0f, 0x41, 0x41, 0x13, 0xca, 0x67, 0xbc, 0x40, 0x79, 0x27, 0x7c, 0x2a, 0x65, 0x3b, 0x0b, 0x19, - 0xd5, 0xb6, 0x19, 0x43, 0x8e, 0xc7, 0x47, 0xdb, 0xa6, 0x5d, 0x8f, 0xc1, 0x14, 0x9d, 0xa3, 0x83, - 0xdd, 0x8e, 0xe1, 0x71, 0x90, 0x3c, 0xe5, 0x99, 0x24, 0x1d, 0x32, 0xa3, 0x53, 0xde, 0x07, 0x60, - 0x02, 0x1f, 0xe8, 0x4d, 0x6c, 0x6a, 0x98, 0xf1, 0x4d, 0x50, 0xbe, 0xbc, 0x20, 0x52, 0xa6, 0x47, - 0xc1, 0x8f, 0x7b, 0x8a, 0x88, 0xc9, 0x05, 0x86, 0x27, 0xe8, 0x15, 0x46, 0x2e, 0xbd, 0x1d, 0x83, - 0x64, 0x55, 0xf5, 0x54, 0x52, 0x61, 0x78, 0x87, 0x2c, 0xd3, 0xe4, 0x65, 0xf2, 0x27, 0xfa, 0x30, - 0x64, 0x04, 0x2a, 0x77, 0x95, 0xb9, 0xde, 0xa5, 0xab, 0x71, 0x8e, 0x35, 0xdd, 0xf5, 0xf8, 0xfa, - 0xf9, 0x52, 0xe8, 0x03, 0x90, 0xe1, 0x37, 0x0a, 0xae, 0x6f, 0x3f, 0x3d, 0x08, 0x7c, 0xa7, 0x2d, - 0x0c, 0xd7, 0x97, 0x20, 0x4b, 0x61, 0x39, 0x7a, 0x4b, 0x37, 0x55, 0x43, 0x71, 0x3f, 0xd2, 0xa1, - 0xfb, 0x4c, 0xfd, 0x75, 0xf6, 0xca, 0x76, 0x52, 0x46, 0xa2, 0xaf, 0x41, 0xbb, 0x1a, 0xfa, 0xeb, - 0xd8, 0x77, 0xcc, 0x54, 0x28, 0x42, 0x7c, 0x32, 0x0e, 0xa7, 0xaa, 0x1d, 0xdb, 0xd0, 0x35, 0xd5, - 0xc3, 0x37, 0x2d, 0x0f, 0x8b, 0x11, 0xa3, 0x27, 0x21, 0x75, 0x60, 0x79, 0x58, 0x51, 0xb9, 0x5f, - 0x9d, 0xee, 0x93, 0x23, 0x2d, 0x0f, 0xcb, 0xe3, 0x84, 0xab, 0xe2, 0xb3, 0xef, 0x70, 0xc7, 0x3e, - 0x96, 0x7d, 0xe9, 0x64, 0xa9, 0x34, 0x62, 0x9f, 0x9c, 0x95, 0x25, 0xb0, 0xc0, 0x3e, 0x19, 0xe3, - 0x12, 0x64, 0xfd, 0xf8, 0xcc, 0x1d, 0x6a, 0x34, 0x9f, 0x0c, 0xc4, 0x4a, 0xff, 0x3a, 0x0e, 0x67, - 0xd7, 0x88, 0x73, 0x2f, 0xd3, 0x4f, 0x78, 0x2b, 0x9e, 0xa7, 0x6a, 0xfb, 0xbe, 0x5a, 0x56, 0x61, - 0x4a, 0xb3, 0xcc, 0x5d, 0x43, 0xd7, 0xe8, 0xb8, 0x83, 0x62, 0xb4, 0x2b, 0x2f, 0xb2, 0x29, 0x53, - 0x1c, 0xea, 0xac, 0xb2, 0x14, 0x12, 0xa3, 0x14, 0x62, 0xac, 0xc4, 0x6f, 0x2d, 0x53, 0xe1, 0xa1, - 0x85, 0xa5, 0xc8, 0x3c, 0x23, 0x5e, 0x63, 0x01, 0x66, 0x03, 0x66, 0x76, 0x8e, 0x5e, 0x57, 0x4d, - 0x4f, 0x37, 0x71, 0xc8, 0xed, 0xf8, 0x2f, 0xcd, 0x1c, 0x5b, 0xb8, 0x4c, 0xfb, 0x82, 0x81, 0x4f, - 0x0e, 0x50, 0x7c, 0x72, 0x80, 0xe2, 0xef, 0x86, 0x3e, 0xbf, 0x15, 0x83, 0x8c, 0xaf, 0x3e, 0x15, - 0xce, 0x34, 0x85, 0xb9, 0x29, 0xd4, 0x60, 0x7c, 0x27, 0x62, 0x4a, 0x7c, 0xa4, 0x77, 0x46, 0x7d, - 0xed, 0xf3, 0xda, 0x98, 0x7c, 0xaa, 0xd9, 0xd7, 0x70, 0x4d, 0xb8, 0xd7, 0x20, 0xaa, 0x53, 0xf8, - 0x17, 0xda, 0x2a, 0x5d, 0xc0, 0xe0, 0x39, 0xcc, 0x3e, 0x1f, 0x1f, 0xb0, 0x58, 0xfd, 0x16, 0xfd, - 0xda, 0x98, 0x7c, 0xd6, 0x18, 0xd4, 0xc9, 0x4b, 0xed, 0xd2, 0x1a, 0xe4, 0xc3, 0xde, 0x4e, 0xbc, - 0x3b, 0x34, 0xb5, 0x44, 0x7f, 0xef, 0xf6, 0x41, 0xba, 0x62, 0x03, 0xd9, 0xad, 0x0a, 0xcf, 0x47, - 0x1f, 0x82, 0x09, 0xe1, 0xf5, 0x8a, 0xa1, 0xbb, 0x1e, 0x87, 0x3b, 0x3b, 0x30, 0x58, 0xc8, 0xe2, - 0x87, 0xae, 0x5c, 0x32, 0x92, 0xd2, 0x87, 0x21, 0xcd, 0x3b, 0x48, 0x51, 0xe6, 0x7f, 0xb2, 0x4a, - 0x72, 0x0e, 0xcb, 0xd1, 0x39, 0x9f, 0xb6, 0xda, 0xf4, 0xb7, 0xaa, 0xf1, 0xd0, 0x56, 0xf5, 0x65, - 0x38, 0x4d, 0xa2, 0x60, 0xe5, 0x40, 0xd5, 0x0d, 0x75, 0x47, 0x37, 0x74, 0xef, 0x88, 0xa7, 0xdf, - 0x7b, 0x20, 0xeb, 0x58, 0xb7, 0x14, 0xc7, 0xb2, 0x3c, 0x11, 0x1d, 0x33, 0x8e, 0x75, 0x4b, 0x26, - 0x6d, 0xf2, 0x34, 0xcd, 0x32, 0x3a, 0x6d, 0x93, 0xf7, 0xc7, 0x69, 0x7f, 0x8e, 0xd1, 0x28, 0x4b, - 0xe9, 0xdb, 0x71, 0x48, 0x92, 0xd5, 0x43, 0xcf, 0x84, 0xf6, 0xd1, 0x85, 0x7e, 0x65, 0x41, 0x43, - 0x6f, 0x99, 0xb8, 0xb9, 0xee, 0xb6, 0x42, 0xbf, 0xd2, 0x12, 0x64, 0xe5, 0x78, 0x24, 0x2b, 0xcf, - 0xc0, 0xb8, 0x63, 0x75, 0xcc, 0xa6, 0xf8, 0x1a, 0x80, 0x36, 0x50, 0x0d, 0x32, 0x7e, 0xb2, 0x4d, - 0x0e, 0x4b, 0xb6, 0x93, 0x64, 0x41, 0x48, 0x29, 0xc0, 0x09, 0x72, 0x7a, 0x87, 0xe7, 0xdc, 0xbb, - 0xe0, 0x13, 0xa4, 0x26, 0x0f, 0x02, 0x9a, 0xc8, 0x41, 0x2c, 0x2e, 0x4b, 0x7e, 0x07, 0x4f, 0x42, - 0xd1, 0xe8, 0xc7, 0xea, 0xb8, 0x34, 0x9d, 0x57, 0x10, 0xfd, 0xd8, 0xaf, 0xc6, 0xdc, 0x0b, 0x59, - 0x57, 0x6f, 0x99, 0xaa, 0xd7, 0x71, 0x30, 0x4f, 0xe0, 0x01, 0xa1, 0xf4, 0xd5, 0x18, 0xa4, 0x58, + 0xed, 0x7b, 0xaf, 0xef, 0xbd, 0xad, 0x91, 0xb6, 0x02, 0xb5, 0x2e, 0xf3, 0xb0, 0x87, 0x02, 0x1c, + 0x42, 0x11, 0xc7, 0xf1, 0x98, 0xdd, 0x38, 0xe0, 0x60, 0x0c, 0x24, 0xb1, 0x31, 0x84, 0x14, 0x60, + 0xa0, 0x00, 0xe3, 0x2a, 0x28, 0x27, 0x7f, 0x90, 0x04, 0xc2, 0x12, 0xd6, 0x2e, 0x30, 0xc6, 0x01, + 0x63, 0x96, 0x2a, 0x28, 0x57, 0x28, 0xea, 0xbc, 0xee, 0xa3, 0x1f, 0xea, 0xd6, 0x66, 0xd6, 0x49, + 0x55, 0xfe, 0x1a, 0x9d, 0x73, 0xbe, 0xef, 0x77, 0xbf, 0xf3, 0x9d, 0xef, 0x75, 0xce, 0xb9, 0xb7, + 0x07, 0xfe, 0xd9, 0x55, 0x58, 0x68, 0x59, 0x56, 0xcb, 0xc0, 0xe7, 0x6d, 0xc7, 0xf2, 0xac, 0x9d, + 0xce, 0xee, 0xf9, 0x26, 0x76, 0x35, 0x47, 0xb7, 0x3d, 0xcb, 0x59, 0xa4, 0x7d, 0x68, 0x92, 0x51, + 0x2c, 0x0a, 0x8a, 0xd2, 0x3a, 0x4c, 0x5d, 0xd3, 0x0d, 0x5c, 0xf5, 0x09, 0x1b, 0xd8, 0x43, 0xcf, + 0x43, 0x72, 0x57, 0x37, 0x70, 0x31, 0xb6, 0x90, 0x38, 0x97, 0xbb, 0xf0, 0xd0, 0x62, 0x17, 0xd3, + 0x62, 0x94, 0xa3, 0x4e, 0xba, 0x65, 0xca, 0x51, 0xfa, 0x76, 0x12, 0xa6, 0xfb, 0x8c, 0x22, 0x04, + 0x49, 0x53, 0x6d, 0x13, 0xc4, 0xd8, 0xb9, 0xac, 0x4c, 0xff, 0x46, 0x45, 0x18, 0xb7, 0x55, 0x6d, + 0x5f, 0x6d, 0xe1, 0x62, 0x9c, 0x76, 0x8b, 0x26, 0x9a, 0x03, 0x68, 0x62, 0x1b, 0x9b, 0x4d, 0x6c, + 0x6a, 0x47, 0xc5, 0xc4, 0x42, 0xe2, 0x5c, 0x56, 0x0e, 0xf5, 0xa0, 0x27, 0x60, 0xca, 0xee, 0xec, + 0x18, 0xba, 0xa6, 0x84, 0xc8, 0x60, 0x21, 0x71, 0x2e, 0x25, 0x4b, 0x6c, 0xa0, 0x1a, 0x10, 0x3f, + 0x0a, 0x93, 0xb7, 0xb1, 0xba, 0x1f, 0x26, 0xcd, 0x51, 0xd2, 0x02, 0xe9, 0x0e, 0x11, 0x2e, 0x43, + 0xbe, 0x8d, 0x5d, 0x57, 0x6d, 0x61, 0xc5, 0x3b, 0xb2, 0x71, 0x31, 0x49, 0x67, 0xbf, 0xd0, 0x33, + 0xfb, 0xee, 0x99, 0xe7, 0x38, 0xd7, 0xd6, 0x91, 0x8d, 0x51, 0x05, 0xb2, 0xd8, 0xec, 0xb4, 0x19, + 0x42, 0x6a, 0x80, 0xfe, 0x6a, 0x66, 0xa7, 0xdd, 0x8d, 0x92, 0x21, 0x6c, 0x1c, 0x62, 0xdc, 0xc5, + 0xce, 0x81, 0xae, 0xe1, 0x62, 0x9a, 0x02, 0x3c, 0xda, 0x03, 0xd0, 0x60, 0xe3, 0xdd, 0x18, 0x82, + 0x0f, 0x2d, 0x43, 0x16, 0x1f, 0x7a, 0xd8, 0x74, 0x75, 0xcb, 0x2c, 0x8e, 0x53, 0x90, 0x87, 0xfb, + 0xac, 0x22, 0x36, 0x9a, 0xdd, 0x10, 0x01, 0x1f, 0xba, 0x04, 0xe3, 0x96, 0xed, 0xe9, 0x96, 0xe9, + 0x16, 0x33, 0x0b, 0xb1, 0x73, 0xb9, 0x0b, 0xf7, 0xf7, 0x35, 0x84, 0x4d, 0x46, 0x23, 0x0b, 0x62, + 0xb4, 0x0a, 0x92, 0x6b, 0x75, 0x1c, 0x0d, 0x2b, 0x9a, 0xd5, 0xc4, 0x8a, 0x6e, 0xee, 0x5a, 0xc5, + 0x2c, 0x05, 0x98, 0xef, 0x9d, 0x08, 0x25, 0x5c, 0xb6, 0x9a, 0x78, 0xd5, 0xdc, 0xb5, 0xe4, 0x82, + 0x1b, 0x69, 0xa3, 0xd3, 0x90, 0x76, 0x8f, 0x4c, 0x4f, 0x3d, 0x2c, 0xe6, 0xa9, 0x85, 0xf0, 0x56, + 0xe9, 0x97, 0xd3, 0x30, 0x39, 0x8a, 0x89, 0x5d, 0x85, 0xd4, 0x2e, 0x99, 0x65, 0x31, 0x7e, 0x12, + 0x1d, 0x30, 0x9e, 0xa8, 0x12, 0xd3, 0xef, 0x51, 0x89, 0x15, 0xc8, 0x99, 0xd8, 0xf5, 0x70, 0x93, + 0x59, 0x44, 0x62, 0x44, 0x9b, 0x02, 0xc6, 0xd4, 0x6b, 0x52, 0xc9, 0xf7, 0x64, 0x52, 0x2f, 0xc3, + 0xa4, 0x2f, 0x92, 0xe2, 0xa8, 0x66, 0x4b, 0xd8, 0xe6, 0xf9, 0x61, 0x92, 0x2c, 0xd6, 0x04, 0x9f, + 0x4c, 0xd8, 0xe4, 0x02, 0x8e, 0xb4, 0x51, 0x15, 0xc0, 0x32, 0xb1, 0xb5, 0xab, 0x34, 0xb1, 0x66, + 0x14, 0x33, 0x03, 0xb4, 0xb4, 0x49, 0x48, 0x7a, 0xb4, 0x64, 0xb1, 0x5e, 0xcd, 0x40, 0x57, 0x02, + 0x53, 0x1b, 0x1f, 0x60, 0x29, 0xeb, 0xcc, 0xc9, 0x7a, 0xac, 0x6d, 0x1b, 0x0a, 0x0e, 0x26, 0x76, + 0x8f, 0x9b, 0x7c, 0x66, 0x59, 0x2a, 0xc4, 0xe2, 0xd0, 0x99, 0xc9, 0x9c, 0x8d, 0x4d, 0x6c, 0xc2, + 0x09, 0x37, 0xd1, 0x07, 0xc0, 0xef, 0x50, 0xa8, 0x59, 0x01, 0x8d, 0x42, 0x79, 0xd1, 0xb9, 0xa1, + 0xb6, 0xf1, 0xec, 0xeb, 0x50, 0x88, 0xaa, 0x07, 0xcd, 0x40, 0xca, 0xf5, 0x54, 0xc7, 0xa3, 0x56, + 0x98, 0x92, 0x59, 0x03, 0x49, 0x90, 0xc0, 0x66, 0x93, 0x46, 0xb9, 0x94, 0x4c, 0xfe, 0x44, 0x1f, + 0x09, 0x26, 0x9c, 0xa0, 0x13, 0x7e, 0xa4, 0x77, 0x45, 0x23, 0xc8, 0xdd, 0xf3, 0x9e, 0xbd, 0x0c, + 0x13, 0x91, 0x09, 0x8c, 0xfa, 0xe8, 0xd2, 0x8f, 0xc3, 0xa9, 0xbe, 0xd0, 0xe8, 0x65, 0x98, 0xe9, + 0x98, 0xba, 0xe9, 0x61, 0xc7, 0x76, 0x30, 0xb1, 0x58, 0xf6, 0xa8, 0xe2, 0x7f, 0x19, 0x1f, 0x60, + 0x73, 0xdb, 0x61, 0x6a, 0x86, 0x22, 0x4f, 0x77, 0x7a, 0x3b, 0x1f, 0xcf, 0x66, 0xbe, 0x33, 0x2e, + 0xbd, 0xf1, 0xc6, 0x1b, 0x6f, 0xc4, 0x4b, 0xff, 0x24, 0x0d, 0x33, 0xfd, 0x7c, 0xa6, 0xaf, 0xfb, + 0x9e, 0x86, 0xb4, 0xd9, 0x69, 0xef, 0x60, 0x87, 0x2a, 0x29, 0x25, 0xf3, 0x16, 0xaa, 0x40, 0xca, + 0x50, 0x77, 0xb0, 0x51, 0x4c, 0x2e, 0xc4, 0xce, 0x15, 0x2e, 0x3c, 0x31, 0x92, 0x57, 0x2e, 0xae, + 0x11, 0x16, 0x99, 0x71, 0xa2, 0x0f, 0x43, 0x92, 0x87, 0x68, 0x82, 0xf0, 0xf8, 0x68, 0x08, 0xc4, + 0x97, 0x64, 0xca, 0x87, 0xee, 0x83, 0x2c, 0xf9, 0x97, 0xd9, 0x46, 0x9a, 0xca, 0x9c, 0x21, 0x1d, + 0xc4, 0x2e, 0xd0, 0x2c, 0x64, 0xa8, 0x9b, 0x34, 0xb1, 0x48, 0x6d, 0x7e, 0x9b, 0x18, 0x56, 0x13, + 0xef, 0xaa, 0x1d, 0xc3, 0x53, 0x0e, 0x54, 0xa3, 0x83, 0xa9, 0xc1, 0x67, 0xe5, 0x3c, 0xef, 0xbc, + 0x45, 0xfa, 0xd0, 0x3c, 0xe4, 0x98, 0x57, 0xe9, 0x66, 0x13, 0x1f, 0xd2, 0xe8, 0x99, 0x92, 0x99, + 0xa3, 0xad, 0x92, 0x1e, 0xf2, 0xf8, 0xd7, 0x5c, 0xcb, 0x14, 0xa6, 0x49, 0x1f, 0x41, 0x3a, 0xe8, + 0xe3, 0x2f, 0x77, 0x07, 0xee, 0x07, 0xfa, 0x4f, 0xaf, 0xc7, 0x97, 0x1e, 0x85, 0x49, 0x4a, 0xf1, + 0x2c, 0x5f, 0x7a, 0xd5, 0x28, 0x4e, 0x2d, 0xc4, 0xce, 0x65, 0xe4, 0x02, 0xeb, 0xde, 0xe4, 0xbd, + 0xa5, 0xaf, 0xc6, 0x21, 0x49, 0x03, 0xcb, 0x24, 0xe4, 0xb6, 0x5e, 0xa9, 0xd7, 0x94, 0xea, 0xe6, + 0xf6, 0xd2, 0x5a, 0x4d, 0x8a, 0xa1, 0x02, 0x00, 0xed, 0xb8, 0xb6, 0xb6, 0x59, 0xd9, 0x92, 0xe2, + 0x7e, 0x7b, 0x75, 0x63, 0xeb, 0xd2, 0x73, 0x52, 0xc2, 0x67, 0xd8, 0x66, 0x1d, 0xc9, 0x30, 0xc1, + 0xb3, 0x17, 0xa4, 0x14, 0x92, 0x20, 0xcf, 0x00, 0x56, 0x5f, 0xae, 0x55, 0x2f, 0x3d, 0x27, 0xa5, + 0xa3, 0x3d, 0xcf, 0x5e, 0x90, 0xc6, 0xd1, 0x04, 0x64, 0x69, 0xcf, 0xd2, 0xe6, 0xe6, 0x9a, 0x94, + 0xf1, 0x31, 0x1b, 0x5b, 0xf2, 0xea, 0xc6, 0x8a, 0x94, 0xf5, 0x31, 0x57, 0xe4, 0xcd, 0xed, 0xba, + 0x04, 0x3e, 0xc2, 0x7a, 0xad, 0xd1, 0xa8, 0xac, 0xd4, 0xa4, 0x9c, 0x4f, 0xb1, 0xf4, 0xca, 0x56, + 0xad, 0x21, 0xe5, 0x23, 0x62, 0x3d, 0x7b, 0x41, 0x9a, 0xf0, 0x1f, 0x51, 0xdb, 0xd8, 0x5e, 0x97, + 0x0a, 0x68, 0x0a, 0x26, 0xd8, 0x23, 0x84, 0x10, 0x93, 0x5d, 0x5d, 0x97, 0x9e, 0x93, 0xa4, 0x40, + 0x10, 0x86, 0x32, 0x15, 0xe9, 0xb8, 0xf4, 0x9c, 0x84, 0x4a, 0xcb, 0x90, 0xa2, 0x66, 0x88, 0x10, + 0x14, 0xd6, 0x2a, 0x4b, 0xb5, 0x35, 0x65, 0xb3, 0xbe, 0xb5, 0xba, 0xb9, 0x51, 0x59, 0x93, 0x62, + 0x41, 0x9f, 0x5c, 0x7b, 0x71, 0x7b, 0x55, 0xae, 0x55, 0xa5, 0x78, 0xb8, 0xaf, 0x5e, 0xab, 0x6c, + 0xd5, 0xaa, 0x52, 0xa2, 0xa4, 0xc1, 0x4c, 0xbf, 0x80, 0xda, 0xd7, 0x85, 0x42, 0xb6, 0x10, 0x1f, + 0x60, 0x0b, 0x14, 0xab, 0xdb, 0x16, 0x4a, 0xdf, 0x8a, 0xc3, 0x74, 0x9f, 0xa4, 0xd2, 0xf7, 0x21, + 0x2f, 0x40, 0x8a, 0xd9, 0x32, 0x4b, 0xb3, 0x8f, 0xf5, 0xcd, 0x4e, 0xd4, 0xb2, 0x7b, 0x52, 0x2d, + 0xe5, 0x0b, 0x97, 0x1a, 0x89, 0x01, 0xa5, 0x06, 0x81, 0xe8, 0x31, 0xd8, 0x3f, 0xda, 0x13, 0xfc, + 0x59, 0x7e, 0xbc, 0x34, 0x4a, 0x7e, 0xa4, 0x7d, 0x27, 0x4b, 0x02, 0xa9, 0x3e, 0x49, 0xe0, 0x2a, + 0x4c, 0xf5, 0x00, 0x8d, 0x1c, 0x8c, 0x3f, 0x1e, 0x83, 0xe2, 0x20, 0xe5, 0x0c, 0x09, 0x89, 0xf1, + 0x48, 0x48, 0xbc, 0xda, 0xad, 0xc1, 0x07, 0x07, 0x2f, 0x42, 0xcf, 0x5a, 0x7f, 0x21, 0x06, 0xa7, + 0xfb, 0x97, 0x94, 0x7d, 0x65, 0xf8, 0x30, 0xa4, 0xdb, 0xd8, 0xdb, 0xb3, 0x44, 0x59, 0xf5, 0x48, + 0x9f, 0x64, 0x4d, 0x86, 0xbb, 0x17, 0x9b, 0x73, 0x85, 0xb3, 0x7d, 0x62, 0x50, 0x5d, 0xc8, 0xa4, + 0xe9, 0x91, 0xf4, 0x93, 0x71, 0x38, 0xd5, 0x17, 0xbc, 0xaf, 0xa0, 0x0f, 0x00, 0xe8, 0xa6, 0xdd, + 0xf1, 0x58, 0xe9, 0xc4, 0x22, 0x71, 0x96, 0xf6, 0xd0, 0xe0, 0x45, 0xa2, 0x6c, 0xc7, 0xf3, 0xc7, + 0x13, 0x74, 0x1c, 0x58, 0x17, 0x25, 0x78, 0x3e, 0x10, 0x34, 0x49, 0x05, 0x9d, 0x1b, 0x30, 0xd3, + 0x1e, 0xc3, 0x7c, 0x1a, 0x24, 0xcd, 0xd0, 0xb1, 0xe9, 0x29, 0xae, 0xe7, 0x60, 0xb5, 0xad, 0x9b, + 0x2d, 0x9a, 0x6a, 0x32, 0xe5, 0xd4, 0xae, 0x6a, 0xb8, 0x58, 0x9e, 0x64, 0xc3, 0x0d, 0x31, 0x4a, + 0x38, 0xa8, 0x01, 0x39, 0x21, 0x8e, 0x74, 0x84, 0x83, 0x0d, 0xfb, 0x1c, 0xa5, 0x9f, 0xc8, 0x42, + 0x2e, 0x54, 0x80, 0xa3, 0x07, 0x21, 0xff, 0x9a, 0x7a, 0xa0, 0x2a, 0x62, 0x53, 0xc5, 0x34, 0x91, + 0x23, 0x7d, 0x75, 0xbe, 0xb1, 0x7a, 0x1a, 0x66, 0x28, 0x89, 0xd5, 0xf1, 0xb0, 0xa3, 0x68, 0x86, + 0xea, 0xba, 0x54, 0x69, 0x19, 0x4a, 0x8a, 0xc8, 0xd8, 0x26, 0x19, 0x5a, 0x16, 0x23, 0xe8, 0x22, + 0x4c, 0x53, 0x8e, 0x76, 0xc7, 0xf0, 0x74, 0xdb, 0xc0, 0x0a, 0xd9, 0xe6, 0xb9, 0x34, 0xe5, 0xf8, + 0x92, 0x4d, 0x11, 0x8a, 0x75, 0x4e, 0x40, 0x24, 0x72, 0x51, 0x15, 0x1e, 0xa0, 0x6c, 0x2d, 0x6c, + 0x62, 0x47, 0xf5, 0xb0, 0x82, 0x3f, 0xda, 0x51, 0x0d, 0x57, 0x51, 0xcd, 0xa6, 0xb2, 0xa7, 0xba, + 0x7b, 0xc5, 0x19, 0x02, 0xb0, 0x14, 0x2f, 0xc6, 0xe4, 0xb3, 0x84, 0x70, 0x85, 0xd3, 0xd5, 0x28, + 0x59, 0xc5, 0x6c, 0x5e, 0x57, 0xdd, 0x3d, 0x54, 0x86, 0xd3, 0x14, 0xc5, 0xf5, 0x1c, 0xdd, 0x6c, + 0x29, 0xda, 0x1e, 0xd6, 0xf6, 0x95, 0x8e, 0xb7, 0xfb, 0x7c, 0xf1, 0xbe, 0xf0, 0xf3, 0xa9, 0x84, + 0x0d, 0x4a, 0xb3, 0x4c, 0x48, 0xb6, 0xbd, 0xdd, 0xe7, 0x51, 0x03, 0xf2, 0x64, 0x31, 0xda, 0xfa, + 0xeb, 0x58, 0xd9, 0xb5, 0x1c, 0x9a, 0x43, 0x0b, 0x7d, 0x42, 0x53, 0x48, 0x83, 0x8b, 0x9b, 0x9c, + 0x61, 0xdd, 0x6a, 0xe2, 0x72, 0xaa, 0x51, 0xaf, 0xd5, 0xaa, 0x72, 0x4e, 0xa0, 0x5c, 0xb3, 0x1c, + 0x62, 0x50, 0x2d, 0xcb, 0x57, 0x70, 0x8e, 0x19, 0x54, 0xcb, 0x12, 0xea, 0xbd, 0x08, 0xd3, 0x9a, + 0xc6, 0xe6, 0xac, 0x6b, 0x0a, 0xdf, 0x8c, 0xb9, 0x45, 0x29, 0xa2, 0x2c, 0x4d, 0x5b, 0x61, 0x04, + 0xdc, 0xc6, 0x5d, 0x74, 0x05, 0x4e, 0x05, 0xca, 0x0a, 0x33, 0x4e, 0xf5, 0xcc, 0xb2, 0x9b, 0xf5, + 0x22, 0x4c, 0xdb, 0x47, 0xbd, 0x8c, 0x28, 0xf2, 0x44, 0xfb, 0xa8, 0x9b, 0xed, 0x32, 0xcc, 0xd8, + 0x7b, 0x76, 0x2f, 0xdf, 0xe3, 0x61, 0x3e, 0x64, 0xef, 0xd9, 0xdd, 0x8c, 0x0f, 0xd3, 0x9d, 0xb9, + 0x83, 0x35, 0xd5, 0xc3, 0xcd, 0xe2, 0x99, 0x30, 0x79, 0x68, 0x00, 0x2d, 0x82, 0xa4, 0x69, 0x0a, + 0x36, 0xd5, 0x1d, 0x03, 0x2b, 0xaa, 0x83, 0x4d, 0xd5, 0x2d, 0xce, 0x53, 0xe2, 0xa4, 0xe7, 0x74, + 0xb0, 0x5c, 0xd0, 0xb4, 0x1a, 0x1d, 0xac, 0xd0, 0x31, 0xf4, 0x38, 0x4c, 0x59, 0x3b, 0xaf, 0x69, + 0xcc, 0x22, 0x15, 0xdb, 0xc1, 0xbb, 0xfa, 0x61, 0xf1, 0x21, 0xaa, 0xde, 0x49, 0x32, 0x40, 0xed, + 0xb1, 0x4e, 0xbb, 0xd1, 0x63, 0x20, 0x69, 0xee, 0x9e, 0xea, 0xd8, 0x34, 0x24, 0xbb, 0xb6, 0xaa, + 0xe1, 0xe2, 0xc3, 0x8c, 0x94, 0xf5, 0x6f, 0x88, 0x6e, 0xe2, 0x11, 0xee, 0x6d, 0x7d, 0xd7, 0x13, + 0x88, 0x8f, 0x32, 0x8f, 0xa0, 0x7d, 0x1c, 0xed, 0x1c, 0x48, 0x44, 0x13, 0x91, 0x07, 0x9f, 0xa3, + 0x64, 0x05, 0x7b, 0xcf, 0x0e, 0x3f, 0xf7, 0x03, 0x30, 0x41, 0x28, 0x83, 0x87, 0x3e, 0xc6, 0x0a, + 0x37, 0x7b, 0x2f, 0xf4, 0xc4, 0xe7, 0xe0, 0x34, 0x21, 0x6a, 0x63, 0x4f, 0x6d, 0xaa, 0x9e, 0x1a, + 0xa2, 0x7e, 0x92, 0x52, 0x13, 0xb5, 0xaf, 0xf3, 0xc1, 0x88, 0x9c, 0x4e, 0x67, 0xe7, 0xc8, 0x37, + 0xac, 0xa7, 0x98, 0x9c, 0xa4, 0x4f, 0x98, 0xd6, 0xfb, 0x56, 0x9c, 0x97, 0xca, 0x90, 0x0f, 0xdb, + 0x3d, 0xca, 0x02, 0xb3, 0x7c, 0x29, 0x46, 0x8a, 0xa0, 0xe5, 0xcd, 0x2a, 0x29, 0x5f, 0x5e, 0xad, + 0x49, 0x71, 0x52, 0x46, 0xad, 0xad, 0x6e, 0xd5, 0x14, 0x79, 0x7b, 0x63, 0x6b, 0x75, 0xbd, 0x26, + 0x25, 0x42, 0x85, 0xfd, 0x8d, 0x64, 0xe6, 0x11, 0xe9, 0x51, 0x52, 0x35, 0x14, 0xa2, 0x3b, 0x35, + 0xf4, 0x41, 0x38, 0x23, 0x8e, 0x55, 0x5c, 0xec, 0x29, 0xb7, 0x75, 0x87, 0x3a, 0x64, 0x5b, 0x65, + 0xc9, 0xd1, 0xb7, 0x9f, 0x19, 0x4e, 0xd5, 0xc0, 0xde, 0x4b, 0xba, 0x43, 0xdc, 0xad, 0xad, 0x7a, + 0x68, 0x0d, 0xe6, 0x4d, 0x4b, 0x71, 0x3d, 0xd5, 0x6c, 0xaa, 0x4e, 0x53, 0x09, 0x0e, 0xb4, 0x14, + 0x55, 0xd3, 0xb0, 0xeb, 0x5a, 0x2c, 0x11, 0xfa, 0x28, 0xf7, 0x9b, 0x56, 0x83, 0x13, 0x07, 0x19, + 0xa2, 0xc2, 0x49, 0xbb, 0xcc, 0x37, 0x31, 0xc8, 0x7c, 0xef, 0x83, 0x6c, 0x5b, 0xb5, 0x15, 0x6c, + 0x7a, 0xce, 0x11, 0xad, 0xcf, 0x33, 0x72, 0xa6, 0xad, 0xda, 0x35, 0xd2, 0xfe, 0x91, 0x6c, 0x93, + 0x6e, 0x24, 0x33, 0x49, 0x29, 0x75, 0x23, 0x99, 0x49, 0x49, 0xe9, 0x1b, 0xc9, 0x4c, 0x5a, 0x1a, + 0xbf, 0x91, 0xcc, 0x64, 0xa4, 0xec, 0x8d, 0x64, 0x26, 0x2b, 0x41, 0xe9, 0x9d, 0x04, 0xe4, 0xc3, + 0x15, 0x3c, 0xd9, 0x10, 0x69, 0x34, 0x87, 0xc5, 0x68, 0x94, 0xfb, 0xc0, 0xb1, 0xf5, 0xfe, 0xe2, + 0x32, 0x49, 0x6e, 0xe5, 0x34, 0x2b, 0x97, 0x65, 0xc6, 0x49, 0x0a, 0x0b, 0x62, 0x7e, 0x98, 0x95, + 0x27, 0x19, 0x99, 0xb7, 0xd0, 0x0a, 0xa4, 0x5f, 0x73, 0x29, 0x76, 0x9a, 0x62, 0x3f, 0x74, 0x3c, + 0xf6, 0x8d, 0x06, 0x05, 0xcf, 0xde, 0x68, 0x28, 0x1b, 0x9b, 0xf2, 0x7a, 0x65, 0x4d, 0xe6, 0xec, + 0xe8, 0x2c, 0x24, 0x0d, 0xf5, 0xf5, 0xa3, 0x68, 0x1a, 0xa4, 0x5d, 0xa3, 0x2e, 0xcb, 0x59, 0x48, + 0xde, 0xc6, 0xea, 0x7e, 0x34, 0xf9, 0xd0, 0xae, 0xf7, 0xd1, 0x3d, 0xce, 0x43, 0x8a, 0xea, 0x0b, + 0x01, 0x70, 0x8d, 0x49, 0x63, 0x28, 0x03, 0xc9, 0xe5, 0x4d, 0x99, 0xb8, 0x88, 0x04, 0x79, 0xd6, + 0xab, 0xd4, 0x57, 0x6b, 0xcb, 0x35, 0x29, 0x5e, 0xba, 0x08, 0x69, 0xa6, 0x04, 0xe2, 0x3e, 0xbe, + 0x1a, 0xa4, 0x31, 0xde, 0xe4, 0x18, 0x31, 0x31, 0xba, 0xbd, 0xbe, 0x54, 0x93, 0xa5, 0x78, 0xcf, + 0xe2, 0x97, 0x5c, 0xc8, 0x87, 0x2b, 0xf3, 0x1f, 0xcd, 0xf6, 0xfc, 0x6b, 0x31, 0xc8, 0x85, 0x2a, + 0x6d, 0x52, 0x22, 0xa9, 0x86, 0x61, 0xdd, 0x56, 0x54, 0x43, 0x57, 0x5d, 0x6e, 0x1a, 0x40, 0xbb, + 0x2a, 0xa4, 0x67, 0xd4, 0xa5, 0xfb, 0x11, 0x39, 0x4d, 0x4a, 0x4a, 0x97, 0x3e, 0x17, 0x03, 0xa9, + 0xbb, 0xd4, 0xed, 0x12, 0x33, 0xf6, 0xfb, 0x29, 0x66, 0xe9, 0xb3, 0x31, 0x28, 0x44, 0xeb, 0xdb, + 0x2e, 0xf1, 0x1e, 0xfc, 0x7d, 0x15, 0xef, 0xb7, 0xe3, 0x30, 0x11, 0xa9, 0x6a, 0x47, 0x95, 0xee, + 0xa3, 0x30, 0xa5, 0x37, 0x71, 0xdb, 0xb6, 0x3c, 0x6c, 0x6a, 0x47, 0x8a, 0x81, 0x0f, 0xb0, 0x51, + 0x2c, 0xd1, 0xa0, 0x71, 0xfe, 0xf8, 0xba, 0x79, 0x71, 0x35, 0xe0, 0x5b, 0x23, 0x6c, 0xe5, 0xe9, + 0xd5, 0x6a, 0x6d, 0xbd, 0xbe, 0xb9, 0x55, 0xdb, 0x58, 0x7e, 0x45, 0xd9, 0xde, 0xb8, 0xb9, 0xb1, + 0xf9, 0xd2, 0x86, 0x2c, 0xe9, 0x5d, 0x64, 0xef, 0xa3, 0xdb, 0xd7, 0x41, 0xea, 0x16, 0x0a, 0x9d, + 0x81, 0x7e, 0x62, 0x49, 0x63, 0x68, 0x1a, 0x26, 0x37, 0x36, 0x95, 0xc6, 0x6a, 0xb5, 0xa6, 0xd4, + 0xae, 0x5d, 0xab, 0x2d, 0x6f, 0x35, 0xd8, 0x49, 0x88, 0x4f, 0xbd, 0x15, 0x71, 0xf0, 0xd2, 0x67, + 0x12, 0x30, 0xdd, 0x47, 0x12, 0x54, 0xe1, 0x7b, 0x18, 0xb6, 0xad, 0x7a, 0x6a, 0x14, 0xe9, 0x17, + 0x49, 0x15, 0x51, 0x57, 0x1d, 0x8f, 0x6f, 0x79, 0x1e, 0x03, 0xa2, 0x25, 0xd3, 0xd3, 0x77, 0x75, + 0xec, 0xf0, 0x13, 0x26, 0xb6, 0xb1, 0x99, 0x0c, 0xfa, 0xd9, 0x21, 0xd3, 0x93, 0x80, 0x6c, 0xcb, + 0xd5, 0x3d, 0xfd, 0x00, 0x2b, 0xba, 0x29, 0x8e, 0xa3, 0xc8, 0x46, 0x27, 0x29, 0x4b, 0x62, 0x64, + 0xd5, 0xf4, 0x7c, 0x6a, 0x13, 0xb7, 0xd4, 0x2e, 0x6a, 0x12, 0xcc, 0x13, 0xb2, 0x24, 0x46, 0x7c, + 0xea, 0x07, 0x21, 0xdf, 0xb4, 0x3a, 0xa4, 0xfa, 0x63, 0x74, 0x24, 0x77, 0xc4, 0xe4, 0x1c, 0xeb, + 0xf3, 0x49, 0x78, 0x5d, 0x1f, 0x9c, 0x83, 0xe5, 0xe5, 0x1c, 0xeb, 0x63, 0x24, 0x8f, 0xc2, 0xa4, + 0xda, 0x6a, 0x39, 0x04, 0x5c, 0x00, 0xb1, 0x9d, 0x4a, 0xc1, 0xef, 0xa6, 0x84, 0xb3, 0x37, 0x20, + 0x23, 0xf4, 0x40, 0x92, 0x37, 0xd1, 0x84, 0x62, 0xb3, 0xed, 0x77, 0xfc, 0x5c, 0x56, 0xce, 0x98, + 0x62, 0xf0, 0x41, 0xc8, 0xeb, 0xae, 0x12, 0x1c, 0xeb, 0xc7, 0x17, 0xe2, 0xe7, 0x32, 0x72, 0x4e, + 0x77, 0xfd, 0x23, 0xd1, 0xd2, 0x17, 0xe2, 0x50, 0x88, 0x5e, 0x4b, 0xa0, 0x2a, 0x64, 0x0c, 0x4b, + 0x53, 0xa9, 0x69, 0xb1, 0x3b, 0xb1, 0x73, 0x43, 0x6e, 0x32, 0x16, 0xd7, 0x38, 0xbd, 0xec, 0x73, + 0xce, 0xfe, 0x9b, 0x18, 0x64, 0x44, 0x37, 0x3a, 0x0d, 0x49, 0x5b, 0xf5, 0xf6, 0x28, 0x5c, 0x6a, + 0x29, 0x2e, 0xc5, 0x64, 0xda, 0x26, 0xfd, 0xae, 0xad, 0x9a, 0xd4, 0x04, 0x78, 0x3f, 0x69, 0x93, + 0x75, 0x35, 0xb0, 0xda, 0xa4, 0xdb, 0x20, 0xab, 0xdd, 0xc6, 0xa6, 0xe7, 0x8a, 0x75, 0xe5, 0xfd, + 0xcb, 0xbc, 0x1b, 0x3d, 0x01, 0x53, 0x9e, 0xa3, 0xea, 0x46, 0x84, 0x36, 0x49, 0x69, 0x25, 0x31, + 0xe0, 0x13, 0x97, 0xe1, 0xac, 0xc0, 0x6d, 0x62, 0x4f, 0xd5, 0xf6, 0x70, 0x33, 0x60, 0x4a, 0xd3, + 0xe3, 0x8e, 0x33, 0x9c, 0xa0, 0xca, 0xc7, 0x05, 0x6f, 0xe9, 0x57, 0x63, 0x30, 0x25, 0x36, 0x6e, + 0x4d, 0x5f, 0x59, 0xeb, 0x00, 0xaa, 0x69, 0x5a, 0x5e, 0x58, 0x5d, 0xbd, 0xa6, 0xdc, 0xc3, 0xb7, + 0x58, 0xf1, 0x99, 0xe4, 0x10, 0xc0, 0x6c, 0x1b, 0x20, 0x18, 0x19, 0xa8, 0xb6, 0x79, 0xc8, 0xf1, + 0x3b, 0x27, 0x7a, 0x71, 0xc9, 0xb6, 0xfa, 0xc0, 0xba, 0xc8, 0x0e, 0x0f, 0xcd, 0x40, 0x6a, 0x07, + 0xb7, 0x74, 0x93, 0x9f, 0x24, 0xb3, 0x86, 0x38, 0x90, 0x49, 0xfa, 0x07, 0x32, 0x4b, 0x7f, 0x12, + 0xa6, 0x35, 0xab, 0xdd, 0x2d, 0xee, 0x92, 0xd4, 0x75, 0xdc, 0xe0, 0x5e, 0x8f, 0xbd, 0xfa, 0x14, + 0x27, 0x6a, 0x59, 0x86, 0x6a, 0xb6, 0x16, 0x2d, 0xa7, 0x15, 0x5c, 0xbc, 0x92, 0x8a, 0xc7, 0x0d, + 0x5d, 0xbf, 0xda, 0x3b, 0xff, 0x27, 0x16, 0xfb, 0xd9, 0x78, 0x62, 0xa5, 0xbe, 0xf4, 0xc5, 0xf8, + 0xec, 0x0a, 0x63, 0xac, 0x0b, 0x65, 0xc8, 0x78, 0xd7, 0xc0, 0x1a, 0x99, 0x20, 0xfc, 0xce, 0x13, + 0x30, 0xd3, 0xb2, 0x5a, 0x16, 0x45, 0x3a, 0x4f, 0xfe, 0xe2, 0x37, 0xb7, 0x59, 0xbf, 0x77, 0x76, + 0xe8, 0x35, 0x6f, 0x79, 0x03, 0xa6, 0x39, 0xb1, 0x42, 0xaf, 0x8e, 0xd8, 0xc6, 0x06, 0x1d, 0x7b, + 0xaa, 0x56, 0xfc, 0xc5, 0x6f, 0xd3, 0xf4, 0x2d, 0x4f, 0x71, 0x56, 0x32, 0xc6, 0xf6, 0x3e, 0x65, + 0x19, 0x4e, 0x45, 0xf0, 0x98, 0x93, 0x62, 0x67, 0x08, 0xe2, 0x3f, 0xe7, 0x88, 0xd3, 0x21, 0xc4, + 0x06, 0x67, 0x2d, 0x2f, 0xc3, 0xc4, 0x49, 0xb0, 0xfe, 0x05, 0xc7, 0xca, 0xe3, 0x30, 0xc8, 0x0a, + 0x4c, 0x52, 0x10, 0xad, 0xe3, 0x7a, 0x56, 0x9b, 0x46, 0xc0, 0xe3, 0x61, 0xfe, 0xe5, 0xb7, 0x99, + 0xd7, 0x14, 0x08, 0xdb, 0xb2, 0xcf, 0x55, 0x2e, 0x03, 0xbd, 0x2d, 0x6b, 0x62, 0xcd, 0x18, 0x82, + 0xf0, 0x75, 0x2e, 0x88, 0x4f, 0x5f, 0xbe, 0x05, 0x33, 0xe4, 0x6f, 0x1a, 0xa0, 0xc2, 0x92, 0x0c, + 0x3f, 0x82, 0x2b, 0xfe, 0xea, 0xc7, 0x99, 0x63, 0x4e, 0xfb, 0x00, 0x21, 0x99, 0x42, 0xab, 0xd8, + 0xc2, 0x9e, 0x87, 0x1d, 0x57, 0x51, 0x8d, 0x7e, 0xe2, 0x85, 0xce, 0x30, 0x8a, 0x3f, 0xfd, 0xbd, + 0xe8, 0x2a, 0xae, 0x30, 0xce, 0x8a, 0x61, 0x94, 0xb7, 0xe1, 0x4c, 0x1f, 0xab, 0x18, 0x01, 0xf3, + 0x33, 0x1c, 0x73, 0xa6, 0xc7, 0x32, 0x08, 0x6c, 0x1d, 0x44, 0xbf, 0xbf, 0x96, 0x23, 0x60, 0xfe, + 0x0c, 0xc7, 0x44, 0x9c, 0x57, 0x2c, 0x29, 0x41, 0xbc, 0x01, 0x53, 0x07, 0xd8, 0xd9, 0xb1, 0x5c, + 0x7e, 0x6e, 0x34, 0x02, 0xdc, 0x67, 0x39, 0xdc, 0x24, 0x67, 0xa4, 0x07, 0x49, 0x04, 0xeb, 0x0a, + 0x64, 0x76, 0x55, 0x0d, 0x8f, 0x00, 0x71, 0x97, 0x43, 0x8c, 0x13, 0x7a, 0xc2, 0x5a, 0x81, 0x7c, + 0xcb, 0xe2, 0x39, 0x6a, 0x38, 0xfb, 0xe7, 0x38, 0x7b, 0x4e, 0xf0, 0x70, 0x08, 0xdb, 0xb2, 0x3b, + 0x06, 0x49, 0x60, 0xc3, 0x21, 0xfe, 0xaa, 0x80, 0x10, 0x3c, 0x1c, 0xe2, 0x04, 0x6a, 0x7d, 0x53, + 0x40, 0xb8, 0x21, 0x7d, 0xbe, 0x00, 0x39, 0xcb, 0x34, 0x8e, 0x2c, 0x73, 0x14, 0x21, 0xde, 0xe2, + 0x08, 0xc0, 0x59, 0x08, 0xc0, 0x55, 0xc8, 0x8e, 0xba, 0x10, 0x7f, 0xed, 0x7b, 0xc2, 0x3d, 0xc4, + 0x0a, 0xac, 0xc0, 0xa4, 0x08, 0x50, 0xba, 0x65, 0x8e, 0x00, 0xf1, 0xd7, 0x39, 0x44, 0x21, 0xc4, + 0xc6, 0xa7, 0xe1, 0x61, 0xd7, 0x6b, 0xe1, 0x51, 0x40, 0xbe, 0x20, 0xa6, 0xc1, 0x59, 0xb8, 0x2a, + 0x77, 0xb0, 0xa9, 0xed, 0x8d, 0x86, 0xf0, 0xf3, 0x42, 0x95, 0x82, 0x87, 0x40, 0x2c, 0xc3, 0x44, + 0x5b, 0x75, 0xdc, 0x3d, 0xd5, 0x18, 0x69, 0x39, 0xfe, 0x06, 0xc7, 0xc8, 0xfb, 0x4c, 0x5c, 0x23, + 0x1d, 0xf3, 0x24, 0x30, 0x5f, 0x14, 0x1a, 0x09, 0xb1, 0x71, 0xd7, 0x73, 0x3d, 0x7a, 0xc8, 0x76, + 0x12, 0xb4, 0xbf, 0x29, 0x5c, 0x8f, 0xf1, 0xae, 0x87, 0x11, 0xaf, 0x42, 0xd6, 0xd5, 0x5f, 0x1f, + 0x09, 0xe6, 0x4b, 0x62, 0xa5, 0x29, 0x03, 0x61, 0x7e, 0x05, 0xce, 0xf6, 0x4d, 0x13, 0x23, 0x80, + 0xfd, 0x2d, 0x0e, 0x76, 0xba, 0x4f, 0xaa, 0xe0, 0x21, 0xe1, 0xa4, 0x90, 0x7f, 0x5b, 0x84, 0x04, + 0xdc, 0x85, 0x55, 0x27, 0xbb, 0x06, 0x57, 0xdd, 0x3d, 0x99, 0xd6, 0xfe, 0x8e, 0xd0, 0x1a, 0xe3, + 0x8d, 0x68, 0x6d, 0x0b, 0x4e, 0x73, 0xc4, 0x93, 0xad, 0xeb, 0x2f, 0x88, 0xc0, 0xca, 0xb8, 0xb7, + 0xa3, 0xab, 0xfb, 0x63, 0x30, 0xeb, 0xab, 0x53, 0x94, 0xa7, 0xae, 0xd2, 0x56, 0xed, 0x11, 0x90, + 0x7f, 0x91, 0x23, 0x8b, 0x88, 0xef, 0xd7, 0xb7, 0xee, 0xba, 0x6a, 0x13, 0xf0, 0x97, 0xa1, 0x28, + 0xc0, 0x3b, 0xa6, 0x83, 0x35, 0xab, 0x65, 0xea, 0xaf, 0xe3, 0xe6, 0x08, 0xd0, 0xbf, 0xd4, 0xb5, + 0x54, 0xdb, 0x21, 0x76, 0x82, 0xbc, 0x0a, 0x92, 0x5f, 0xab, 0x28, 0x7a, 0xdb, 0xb6, 0x1c, 0x6f, + 0x08, 0xe2, 0x97, 0xc5, 0x4a, 0xf9, 0x7c, 0xab, 0x94, 0xad, 0x5c, 0x03, 0x76, 0xf3, 0x3c, 0xaa, + 0x49, 0x7e, 0x85, 0x03, 0x4d, 0x04, 0x5c, 0x3c, 0x70, 0x68, 0x56, 0xdb, 0x56, 0x9d, 0x51, 0xe2, + 0xdf, 0xdf, 0x15, 0x81, 0x83, 0xb3, 0xf0, 0xc0, 0x41, 0x2a, 0x3a, 0x92, 0xed, 0x47, 0x40, 0xf8, + 0xaa, 0x08, 0x1c, 0x82, 0x87, 0x43, 0x88, 0x82, 0x61, 0x04, 0x88, 0xbf, 0x27, 0x20, 0x04, 0x0f, + 0x81, 0x78, 0x31, 0x48, 0xb4, 0x0e, 0x6e, 0xe9, 0xae, 0xe7, 0xb0, 0xa2, 0xf8, 0x78, 0xa8, 0xbf, + 0xff, 0xbd, 0x68, 0x11, 0x26, 0x87, 0x58, 0x49, 0x24, 0xe2, 0xc7, 0xae, 0x74, 0xcf, 0x34, 0x5c, + 0xb0, 0x5f, 0x16, 0x91, 0x28, 0xc4, 0x46, 0x64, 0x0b, 0x55, 0x88, 0x44, 0xed, 0x1a, 0xd9, 0x29, + 0x8c, 0x00, 0xf7, 0x0f, 0xba, 0x84, 0x6b, 0x08, 0x5e, 0x82, 0x19, 0xaa, 0x7f, 0x3a, 0xe6, 0x3e, + 0x3e, 0x1a, 0xc9, 0x3a, 0x7f, 0xa5, 0xab, 0xfe, 0xd9, 0x66, 0x9c, 0x2c, 0x86, 0x4c, 0x76, 0xd5, + 0x53, 0x68, 0xd8, 0x7b, 0x46, 0xc5, 0x8f, 0xbd, 0xcb, 0xe7, 0x1b, 0x2d, 0xa7, 0xca, 0x6b, 0xc4, + 0xc8, 0xa3, 0x45, 0xcf, 0x70, 0xb0, 0x8f, 0xbf, 0xeb, 0xdb, 0x79, 0xa4, 0xe6, 0x29, 0x5f, 0x83, + 0x89, 0x48, 0xc1, 0x33, 0x1c, 0xea, 0x4f, 0x71, 0xa8, 0x7c, 0xb8, 0xde, 0x29, 0x5f, 0x84, 0x24, + 0x29, 0x5e, 0x86, 0xb3, 0xff, 0x69, 0xce, 0x4e, 0xc9, 0xcb, 0x1f, 0x82, 0x8c, 0x28, 0x5a, 0x86, + 0xb3, 0xfe, 0x19, 0xce, 0xea, 0xb3, 0x10, 0x76, 0x51, 0xb0, 0x0c, 0x67, 0xff, 0xb3, 0x82, 0x5d, + 0xb0, 0x10, 0xf6, 0xd1, 0x55, 0xf8, 0xb5, 0x3f, 0x97, 0xe4, 0x49, 0x47, 0xe8, 0xee, 0x2a, 0x8c, + 0xf3, 0x4a, 0x65, 0x38, 0xf7, 0x27, 0xf9, 0xc3, 0x05, 0x47, 0xf9, 0x32, 0xa4, 0x46, 0x54, 0xf8, + 0x9f, 0xe7, 0xac, 0x8c, 0xbe, 0xbc, 0x0c, 0xb9, 0x50, 0x75, 0x32, 0x9c, 0xfd, 0x2f, 0x70, 0xf6, + 0x30, 0x17, 0x11, 0x9d, 0x57, 0x27, 0xc3, 0x01, 0xfe, 0xa2, 0x10, 0x9d, 0x73, 0x10, 0xb5, 0x89, + 0xc2, 0x64, 0x38, 0xf7, 0xa7, 0x84, 0xd6, 0x05, 0x4b, 0xf9, 0x05, 0xc8, 0xfa, 0xc9, 0x66, 0x38, + 0xff, 0x4f, 0x70, 0xfe, 0x80, 0x87, 0x68, 0x20, 0x94, 0xec, 0x86, 0x43, 0xfc, 0x25, 0xa1, 0x81, + 0x10, 0x17, 0x71, 0xa3, 0xee, 0x02, 0x66, 0x38, 0xd2, 0x4f, 0x0a, 0x37, 0xea, 0xaa, 0x5f, 0xc8, + 0x6a, 0xd2, 0x98, 0x3f, 0x1c, 0xe2, 0x2f, 0x8b, 0xd5, 0xa4, 0xf4, 0x44, 0x8c, 0xee, 0x8a, 0x60, + 0x38, 0xc6, 0x4f, 0x09, 0x31, 0xba, 0x0a, 0x82, 0x72, 0x1d, 0x50, 0x6f, 0x35, 0x30, 0x1c, 0xef, + 0xd3, 0x1c, 0x6f, 0xaa, 0xa7, 0x18, 0x28, 0xbf, 0x04, 0xa7, 0xfb, 0x57, 0x02, 0xc3, 0x51, 0x7f, + 0xfa, 0xdd, 0xae, 0xbd, 0x5b, 0xb8, 0x10, 0x28, 0x6f, 0x05, 0x29, 0x25, 0x5c, 0x05, 0x0c, 0x87, + 0xfd, 0xcc, 0xbb, 0xd1, 0xc0, 0x1d, 0x2e, 0x02, 0xca, 0x15, 0x80, 0x20, 0x01, 0x0f, 0xc7, 0xfa, + 0x2c, 0xc7, 0x0a, 0x31, 0x11, 0xd7, 0xe0, 0xf9, 0x77, 0x38, 0xff, 0x5d, 0xe1, 0x1a, 0x9c, 0x83, + 0xb8, 0x86, 0x48, 0xbd, 0xc3, 0xb9, 0x3f, 0x27, 0x5c, 0x43, 0xb0, 0x10, 0xcb, 0x0e, 0x65, 0xb7, + 0xe1, 0x08, 0x6f, 0x09, 0xcb, 0x0e, 0x71, 0x95, 0x37, 0x60, 0xaa, 0x27, 0x21, 0x0e, 0x87, 0xfa, + 0x59, 0x0e, 0x25, 0x75, 0xe7, 0xc3, 0x70, 0xf2, 0xe2, 0xc9, 0x70, 0x38, 0xda, 0xe7, 0xbb, 0x92, + 0x17, 0xcf, 0x85, 0xe5, 0xab, 0x90, 0x31, 0x3b, 0x86, 0x41, 0x9c, 0x07, 0x1d, 0xff, 0x6e, 0x60, + 0xf1, 0xbf, 0xfe, 0x90, 0x6b, 0x47, 0x30, 0x94, 0x2f, 0x42, 0x0a, 0xb7, 0x77, 0x70, 0x73, 0x18, + 0xe7, 0x77, 0x7f, 0x28, 0x02, 0x26, 0xa1, 0x2e, 0xbf, 0x00, 0xc0, 0x8e, 0x46, 0xe8, 0x65, 0xe0, + 0x10, 0xde, 0xff, 0xf6, 0x43, 0xfe, 0x32, 0x4e, 0xc0, 0x12, 0x00, 0xb0, 0x57, 0x7b, 0x8e, 0x07, + 0xf8, 0x5e, 0x14, 0x80, 0xae, 0xc8, 0x15, 0x18, 0x7f, 0xcd, 0xb5, 0x4c, 0x4f, 0x6d, 0x0d, 0xe3, + 0xfe, 0x1d, 0xce, 0x2d, 0xe8, 0x89, 0xc2, 0xda, 0x96, 0x83, 0x3d, 0xb5, 0xe5, 0x0e, 0xe3, 0xfd, + 0xef, 0x9c, 0xd7, 0x67, 0x20, 0xcc, 0x9a, 0xea, 0x7a, 0xa3, 0xcc, 0xfb, 0x7f, 0x08, 0x66, 0xc1, + 0x40, 0x84, 0x26, 0x7f, 0xef, 0xe3, 0xa3, 0x61, 0xbc, 0xdf, 0x17, 0x42, 0x73, 0xfa, 0xf2, 0x87, + 0x20, 0x4b, 0xfe, 0x64, 0x6f, 0xd8, 0x0d, 0x61, 0xfe, 0x9f, 0x9c, 0x39, 0xe0, 0x20, 0x4f, 0x76, + 0xbd, 0xa6, 0xa7, 0x0f, 0x57, 0xf6, 0x0f, 0xf8, 0x4a, 0x0b, 0xfa, 0x72, 0x05, 0x72, 0xae, 0xd7, + 0x6c, 0x76, 0x78, 0x7d, 0x3a, 0x84, 0xfd, 0x7f, 0xfd, 0xd0, 0x3f, 0xb2, 0xf0, 0x79, 0xc8, 0x6a, + 0xdf, 0xde, 0xf7, 0x6c, 0x8b, 0x5e, 0x78, 0x0c, 0x43, 0x78, 0x97, 0x23, 0x84, 0x58, 0xca, 0xcb, + 0x90, 0x27, 0x73, 0x71, 0xb0, 0x8d, 0xe9, 0xed, 0xd4, 0x10, 0x88, 0xff, 0xcd, 0x15, 0x10, 0x61, + 0x5a, 0xfa, 0xe3, 0x5f, 0x7f, 0x67, 0x2e, 0xf6, 0xcd, 0x77, 0xe6, 0x62, 0xbf, 0xfd, 0xce, 0x5c, + 0xec, 0x53, 0xdf, 0x9a, 0x1b, 0xfb, 0xe6, 0xb7, 0xe6, 0xc6, 0x7e, 0xe3, 0x5b, 0x73, 0x63, 0xfd, + 0x4f, 0x89, 0x61, 0xc5, 0x5a, 0xb1, 0xd8, 0xf9, 0xf0, 0xab, 0x0f, 0xb7, 0x74, 0x6f, 0xaf, 0xb3, + 0xb3, 0xa8, 0x59, 0xed, 0xf3, 0x9a, 0xe5, 0xb6, 0x2d, 0xf7, 0x7c, 0xf4, 0x5c, 0x97, 0xfe, 0x05, + 0x1f, 0x8b, 0x93, 0x3d, 0x73, 0xf4, 0x38, 0x57, 0x35, 0x8f, 0x06, 0x7c, 0xae, 0x33, 0xdb, 0xf7, + 0x6c, 0xb8, 0x74, 0x1d, 0x12, 0x15, 0xf3, 0x08, 0x9d, 0x65, 0x61, 0x4f, 0xe9, 0x38, 0x06, 0x7f, + 0xf9, 0x6b, 0x9c, 0xb4, 0xb7, 0x1d, 0x03, 0xcd, 0x04, 0x6f, 0x68, 0xc6, 0xce, 0xe5, 0xf9, 0x6b, + 0x97, 0x65, 0xe9, 0xd3, 0x6f, 0xce, 0x8f, 0xfd, 0xc2, 0x9b, 0xf3, 0x63, 0xdf, 0x7f, 0x6b, 0x7e, + 0xec, 0x8d, 0xdf, 0x5a, 0x18, 0x5b, 0xda, 0xef, 0x9e, 0xf0, 0xd7, 0x86, 0x4e, 0x3a, 0x53, 0x31, + 0x8f, 0xe8, 0x9c, 0xeb, 0xb1, 0x57, 0x53, 0xf4, 0xdc, 0x5b, 0x9c, 0x73, 0xcf, 0x75, 0x9f, 0x73, + 0xbf, 0x84, 0x0d, 0xe3, 0xa6, 0x69, 0xdd, 0x36, 0xb7, 0x08, 0xd9, 0x4e, 0x9a, 0xbd, 0x55, 0x0c, + 0x3f, 0x19, 0x87, 0xb9, 0x9e, 0x23, 0x6d, 0x6e, 0x08, 0x83, 0xbe, 0x5b, 0x2a, 0x43, 0xa6, 0x2a, + 0xec, 0xab, 0x08, 0xe3, 0x2e, 0xd6, 0x2c, 0xb3, 0xe9, 0xd2, 0x69, 0x27, 0x64, 0xd1, 0x24, 0xd3, + 0x36, 0x55, 0xd3, 0x72, 0xf9, 0xcb, 0x92, 0xac, 0xb1, 0xf4, 0x33, 0xb1, 0x93, 0x2d, 0xeb, 0x84, + 0x78, 0x92, 0x98, 0xe6, 0x33, 0x43, 0x4f, 0xfe, 0xf7, 0xc9, 0x2c, 0xfd, 0x49, 0x44, 0x4e, 0xff, + 0x47, 0xd5, 0xca, 0x4f, 0xc5, 0x61, 0xbe, 0x5b, 0x2b, 0xc4, 0xbb, 0x5c, 0x4f, 0x6d, 0xdb, 0x83, + 0xd4, 0x72, 0x15, 0xb2, 0x5b, 0x82, 0xe6, 0xc4, 0x7a, 0xb9, 0x7b, 0x42, 0xbd, 0x14, 0xfc, 0x47, + 0x09, 0xc5, 0x5c, 0x18, 0x51, 0x31, 0xfe, 0x3c, 0xde, 0x93, 0x66, 0xfe, 0x6f, 0x1a, 0xce, 0x32, + 0x97, 0x52, 0x98, 0x2b, 0xb0, 0x06, 0xd7, 0x49, 0x3e, 0x3c, 0x34, 0xfc, 0xae, 0xa4, 0x74, 0x13, + 0xa6, 0x57, 0x49, 0xc4, 0x20, 0x3b, 0xa1, 0xe0, 0x96, 0xa7, 0xef, 0xfb, 0xa4, 0x0b, 0x91, 0xa2, + 0x9f, 0xdf, 0x32, 0x85, 0xbb, 0x4a, 0x1f, 0x8b, 0x81, 0xd4, 0xd0, 0x54, 0x43, 0x75, 0x7e, 0xaf, + 0x50, 0xe8, 0x32, 0x00, 0xfd, 0x0e, 0x29, 0xf8, 0x70, 0xa8, 0x70, 0xa1, 0xb8, 0x18, 0x9e, 0xdc, + 0x22, 0x7b, 0x12, 0xfd, 0x2a, 0x21, 0x4b, 0x69, 0xc9, 0x9f, 0x8f, 0xbf, 0x0c, 0x10, 0x0c, 0xa0, + 0xfb, 0xe0, 0x4c, 0x63, 0xb9, 0xb2, 0x56, 0x91, 0x15, 0xf6, 0x82, 0xfb, 0x46, 0xa3, 0x5e, 0x5b, + 0x5e, 0xbd, 0xb6, 0x5a, 0xab, 0x4a, 0x63, 0xe8, 0x34, 0xa0, 0xf0, 0xa0, 0xff, 0x6e, 0xca, 0x29, + 0x98, 0x0a, 0xf7, 0xb3, 0xb7, 0xe4, 0xe3, 0xa4, 0x5a, 0xd4, 0xdb, 0xb6, 0x81, 0xe9, 0xf5, 0x9f, + 0xa2, 0x0b, 0xad, 0x0d, 0x2f, 0x44, 0xfe, 0xd5, 0xbf, 0x65, 0x6f, 0x4e, 0x4f, 0x07, 0xec, 0xbe, + 0xce, 0xcb, 0x6b, 0x30, 0xa5, 0x6a, 0x1a, 0xb6, 0x23, 0x90, 0x43, 0xc2, 0x35, 0x01, 0xa4, 0x17, + 0x9a, 0x9c, 0x33, 0x40, 0xbb, 0x0c, 0x69, 0x97, 0xce, 0x7e, 0x18, 0xc4, 0x37, 0x38, 0x04, 0x27, + 0x2f, 0x9b, 0x30, 0x45, 0xaa, 0x3f, 0xd5, 0xc1, 0x21, 0x31, 0x8e, 0x3f, 0x6b, 0xf8, 0x87, 0x5f, + 0x7e, 0x9a, 0x5e, 0x6f, 0x3e, 0x18, 0x5d, 0x96, 0x3e, 0xe6, 0x24, 0x4b, 0x1c, 0x3b, 0x10, 0x14, + 0x43, 0x41, 0x3c, 0x8f, 0x0b, 0x7c, 0xfc, 0xc3, 0xfe, 0x11, 0x7f, 0xd8, 0x5c, 0x3f, 0x1b, 0x08, + 0x3d, 0x69, 0x82, 0xa3, 0xb2, 0x81, 0xa5, 0xda, 0x20, 0x9f, 0x7e, 0xf5, 0x89, 0xde, 0x0c, 0xc5, + 0xfe, 0x79, 0x8a, 0x22, 0x5f, 0x0d, 0x3f, 0xc6, 0xf7, 0xbd, 0x5f, 0x4f, 0xc0, 0x1c, 0x27, 0xde, + 0x51, 0x5d, 0x7c, 0xfe, 0xe0, 0x99, 0x1d, 0xec, 0xa9, 0xcf, 0x9c, 0xd7, 0x2c, 0x5d, 0xc4, 0xea, + 0x69, 0xee, 0x8e, 0x64, 0x7c, 0x91, 0x8f, 0xf7, 0x4f, 0x5c, 0xb3, 0x83, 0xdd, 0xb8, 0xb4, 0x0d, + 0xc9, 0x65, 0x4b, 0x37, 0x49, 0xa8, 0x6a, 0x62, 0xd3, 0x6a, 0x73, 0xef, 0x61, 0x0d, 0xf4, 0x0c, + 0xa4, 0xd5, 0xb6, 0xd5, 0x31, 0x3d, 0xe6, 0x39, 0x4b, 0x67, 0xbf, 0xfe, 0xf6, 0xfc, 0xd8, 0xbf, + 0x7b, 0x7b, 0x3e, 0xb1, 0x6a, 0x7a, 0xbf, 0xf6, 0x95, 0xa7, 0x80, 0x43, 0xad, 0x9a, 0x9e, 0xcc, + 0x09, 0xcb, 0xc9, 0xef, 0xbc, 0x39, 0x1f, 0x2b, 0xbd, 0x0c, 0xe3, 0x55, 0xac, 0xbd, 0x17, 0xe4, + 0x2a, 0xd6, 0x42, 0xc8, 0x55, 0xac, 0x75, 0x21, 0x5f, 0x86, 0xcc, 0xaa, 0xe9, 0xb1, 0x97, 0xd1, + 0x9f, 0x80, 0x84, 0x6e, 0xb2, 0xf7, 0x1b, 0x8f, 0x95, 0x8d, 0x50, 0x11, 0xc6, 0x2a, 0xd6, 0x7c, + 0xc6, 0x26, 0xd6, 0xba, 0x19, 0x7b, 0x1f, 0x4d, 0xa8, 0x96, 0xaa, 0xbf, 0xf1, 0x9f, 0xe6, 0xc6, + 0xde, 0x78, 0x67, 0x6e, 0x6c, 0xe0, 0x12, 0x97, 0x06, 0x2e, 0xb1, 0xdb, 0xdc, 0x67, 0x11, 0xd9, + 0x5f, 0xd9, 0x2f, 0x26, 0xe1, 0x01, 0xfa, 0x8d, 0x92, 0xd3, 0xd6, 0x4d, 0xef, 0xbc, 0xe6, 0x1c, + 0xd9, 0x9e, 0x45, 0xe2, 0xa6, 0xb5, 0xcb, 0x17, 0x76, 0x2a, 0x18, 0x5e, 0x64, 0xc3, 0x03, 0xea, + 0x91, 0x5d, 0x48, 0xd5, 0x09, 0x1f, 0x51, 0xb1, 0x67, 0x79, 0xaa, 0xc1, 0xf3, 0x0f, 0x6b, 0x90, + 0x5e, 0xf6, 0x5d, 0x53, 0x9c, 0xf5, 0xea, 0xe2, 0x93, 0x26, 0x03, 0xab, 0xbb, 0xec, 0xf5, 0xf0, + 0x04, 0x2d, 0x53, 0x32, 0xa4, 0x83, 0xbe, 0x09, 0x3e, 0x03, 0x29, 0xb5, 0xc3, 0xde, 0x63, 0x48, + 0x90, 0xfa, 0x85, 0x36, 0x4a, 0x37, 0x61, 0x9c, 0xdf, 0xa6, 0x22, 0x09, 0x12, 0xfb, 0xf8, 0x88, + 0x3e, 0x27, 0x2f, 0x93, 0x3f, 0xd1, 0x22, 0xa4, 0xa8, 0xf0, 0xfc, 0xbb, 0x97, 0xe2, 0x62, 0x8f, + 0xf4, 0x8b, 0x54, 0x48, 0x99, 0x91, 0x95, 0x6e, 0x40, 0xa6, 0x6a, 0xb5, 0x75, 0xd3, 0x8a, 0xa2, + 0x65, 0x19, 0x1a, 0x95, 0xd9, 0xee, 0x70, 0xab, 0x90, 0x59, 0x03, 0x9d, 0x86, 0x34, 0xfb, 0x5c, + 0x80, 0xbf, 0x8b, 0xc1, 0x5b, 0xa5, 0x65, 0x18, 0xa7, 0xd8, 0x9b, 0x36, 0x09, 0xfe, 0xfe, 0x9b, + 0x99, 0x59, 0xfe, 0xf1, 0x18, 0x87, 0x8f, 0x07, 0xc2, 0x22, 0x48, 0x36, 0x55, 0x4f, 0xe5, 0xf3, + 0xa6, 0x7f, 0x97, 0x3e, 0x0c, 0x19, 0x0e, 0xe2, 0xa2, 0x0b, 0x90, 0xb0, 0x6c, 0x97, 0xbf, 0x4d, + 0x31, 0x3b, 0x68, 0x2a, 0x9b, 0xf6, 0x52, 0x92, 0xd8, 0x8c, 0x4c, 0x88, 0x97, 0xe4, 0x81, 0x66, + 0xf1, 0x7c, 0xc8, 0x2c, 0x42, 0x4b, 0x1e, 0xfa, 0x93, 0x2d, 0x69, 0x8f, 0x39, 0xf8, 0xc6, 0xf2, + 0x56, 0x1c, 0xe6, 0x42, 0xa3, 0x07, 0xd8, 0x71, 0x75, 0xcb, 0x64, 0x16, 0xc5, 0xad, 0x05, 0x85, + 0x84, 0xe4, 0xe3, 0x03, 0xcc, 0xe5, 0x43, 0x90, 0xa8, 0xd8, 0x36, 0x9a, 0x85, 0x0c, 0x6d, 0x6b, + 0x16, 0xb3, 0x97, 0xa4, 0xec, 0xb7, 0xc9, 0x98, 0x6b, 0xed, 0x7a, 0xb7, 0x55, 0xc7, 0xff, 0xa2, + 0x4e, 0xb4, 0x4b, 0x57, 0x20, 0xbb, 0x6c, 0x99, 0x2e, 0x36, 0xdd, 0x0e, 0xad, 0x6c, 0x76, 0x0c, + 0x4b, 0xdb, 0xe7, 0x08, 0xac, 0x41, 0x14, 0xae, 0xda, 0x36, 0xe5, 0x4c, 0xca, 0xe4, 0x4f, 0xe6, + 0xb3, 0x4b, 0x8d, 0x81, 0x2a, 0xba, 0x72, 0x72, 0x15, 0xf1, 0x49, 0xfa, 0x3a, 0xfa, 0xdd, 0x18, + 0xdc, 0xdf, 0xeb, 0x50, 0xfb, 0xf8, 0xc8, 0x3d, 0xa9, 0x3f, 0xbd, 0x0c, 0xd9, 0x3a, 0xfd, 0xac, + 0xfd, 0x26, 0x3e, 0x42, 0xb3, 0x30, 0x8e, 0x9b, 0x17, 0x2e, 0x5e, 0x7c, 0xe6, 0x0a, 0xb3, 0xf6, + 0xeb, 0x63, 0xb2, 0xe8, 0x40, 0x73, 0x90, 0x75, 0xb1, 0x66, 0x5f, 0xb8, 0x78, 0x69, 0xff, 0x19, + 0x66, 0x5e, 0xd7, 0xc7, 0xe4, 0xa0, 0xab, 0x9c, 0x21, 0xb3, 0xfe, 0xce, 0x5b, 0xf3, 0xb1, 0xa5, + 0x14, 0x24, 0xdc, 0x4e, 0xfb, 0x7d, 0xb5, 0x91, 0xcf, 0xa4, 0x60, 0x21, 0xcc, 0x49, 0xeb, 0xbf, + 0x03, 0xd5, 0xd0, 0x9b, 0x6a, 0xf0, 0x83, 0x04, 0x52, 0x48, 0x07, 0x94, 0x62, 0x40, 0xa6, 0x38, + 0x56, 0x93, 0xa5, 0x5f, 0x8a, 0x41, 0xfe, 0x96, 0x40, 0x6e, 0x60, 0x0f, 0x5d, 0x05, 0xf0, 0x9f, + 0x24, 0xdc, 0xe6, 0xbe, 0xc5, 0xee, 0x67, 0x2d, 0xfa, 0x3c, 0x72, 0x88, 0x1c, 0x5d, 0xa6, 0x86, + 0x68, 0x5b, 0x2e, 0xff, 0xca, 0x6a, 0x08, 0xab, 0x4f, 0x8c, 0x9e, 0x04, 0x44, 0x23, 0x9c, 0x72, + 0x60, 0x79, 0xba, 0xd9, 0x52, 0x6c, 0xeb, 0x36, 0xff, 0x76, 0x35, 0x21, 0x4b, 0x74, 0xe4, 0x16, + 0x1d, 0xa8, 0x93, 0x7e, 0x22, 0x74, 0xd6, 0x47, 0x21, 0xc5, 0xba, 0xda, 0x6c, 0x3a, 0xd8, 0x75, + 0x79, 0x10, 0x13, 0x4d, 0x74, 0x15, 0xc6, 0xed, 0xce, 0x8e, 0x22, 0x22, 0x46, 0xee, 0xc2, 0xfd, + 0xfd, 0xfc, 0x5f, 0xd8, 0x07, 0x8f, 0x00, 0x69, 0xbb, 0xb3, 0x43, 0xac, 0xe5, 0x41, 0xc8, 0xf7, + 0x11, 0x26, 0x77, 0x10, 0xc8, 0x41, 0x7f, 0x4d, 0x81, 0xcf, 0x40, 0xb1, 0x1d, 0xdd, 0x72, 0x74, + 0xef, 0x88, 0xbe, 0x12, 0x95, 0x90, 0x25, 0x31, 0x50, 0xe7, 0xfd, 0xa5, 0x7d, 0x98, 0x6c, 0xd0, + 0x22, 0x2e, 0x90, 0xfc, 0x62, 0x20, 0x5f, 0x6c, 0xb8, 0x7c, 0x03, 0x25, 0x8b, 0xf7, 0x48, 0xb6, + 0xf4, 0xe2, 0x40, 0xeb, 0xbc, 0x7c, 0x72, 0xeb, 0x8c, 0x66, 0xbb, 0xef, 0x3e, 0x1c, 0x71, 0x4e, + 0x66, 0x9c, 0xe1, 0xf0, 0x35, 0xaa, 0x61, 0x0e, 0xdb, 0xa3, 0xcd, 0x1e, 0x9f, 0x54, 0x67, 0x87, + 0x84, 0xd1, 0xd9, 0xa1, 0x2e, 0x54, 0xba, 0x02, 0x13, 0x75, 0xd5, 0xf1, 0x1a, 0xd8, 0xbb, 0x8e, + 0xd5, 0x26, 0x76, 0xa2, 0x59, 0x77, 0x42, 0x64, 0x5d, 0x04, 0x49, 0x9a, 0x5a, 0x59, 0xd6, 0xa1, + 0x7f, 0x97, 0xf6, 0x20, 0x49, 0x5f, 0x8b, 0xf4, 0x33, 0x32, 0xe7, 0x60, 0x19, 0x99, 0xc4, 0xd2, + 0x23, 0x0f, 0xbb, 0xe2, 0xd0, 0x80, 0x36, 0xd0, 0x73, 0x22, 0xaf, 0x26, 0x8e, 0xcf, 0xab, 0xdc, + 0x10, 0x79, 0x76, 0x35, 0x60, 0x7c, 0x89, 0x84, 0xe2, 0xd5, 0xaa, 0x2f, 0x48, 0x2c, 0x10, 0x04, + 0xad, 0xc3, 0xa4, 0xad, 0x3a, 0x1e, 0xfd, 0x42, 0x64, 0x8f, 0xce, 0x82, 0xdb, 0xfa, 0x7c, 0xaf, + 0xe7, 0x45, 0x26, 0xcb, 0x9f, 0x32, 0x61, 0x87, 0x3b, 0x4b, 0xff, 0x39, 0x09, 0x69, 0xae, 0x8c, + 0x0f, 0xc1, 0x38, 0x57, 0x2b, 0xb7, 0xce, 0x07, 0x16, 0x7b, 0x13, 0xd3, 0xa2, 0x9f, 0x40, 0x38, + 0x9e, 0xe0, 0x41, 0x8f, 0x40, 0x46, 0xdb, 0x53, 0x75, 0x53, 0xd1, 0x9b, 0xbc, 0x20, 0xcc, 0xbd, + 0xf3, 0xf6, 0xfc, 0xf8, 0x32, 0xe9, 0x5b, 0xad, 0xca, 0xe3, 0x74, 0x70, 0xb5, 0x49, 0x2a, 0x81, + 0x3d, 0xac, 0xb7, 0xf6, 0x3c, 0xee, 0x61, 0xbc, 0x85, 0x9e, 0x87, 0x24, 0x31, 0x08, 0xfe, 0xfd, + 0xe0, 0x6c, 0x4f, 0x85, 0xef, 0x6f, 0xa1, 0x97, 0x32, 0xe4, 0xc1, 0x9f, 0xfa, 0x8f, 0xf3, 0x31, + 0x99, 0x72, 0xa0, 0x65, 0x98, 0x30, 0x54, 0xd7, 0x53, 0x68, 0x06, 0x23, 0x8f, 0x4f, 0x51, 0x88, + 0xb3, 0xbd, 0x0a, 0xe1, 0x8a, 0xe5, 0xa2, 0xe7, 0x08, 0x17, 0xeb, 0x6a, 0xa2, 0x73, 0x20, 0x51, + 0x10, 0xcd, 0x6a, 0xb7, 0x75, 0x8f, 0xd5, 0x56, 0x69, 0xaa, 0xf7, 0x02, 0xe9, 0x5f, 0xa6, 0xdd, + 0xb4, 0xc2, 0xba, 0x0f, 0xb2, 0xf4, 0x8b, 0x25, 0x4a, 0xc2, 0xde, 0xc5, 0xcd, 0x90, 0x0e, 0x3a, + 0xf8, 0x28, 0x4c, 0x06, 0xf1, 0x91, 0x91, 0x64, 0x18, 0x4a, 0xd0, 0x4d, 0x09, 0x9f, 0x86, 0x19, + 0x13, 0x1f, 0xd2, 0xb7, 0x83, 0x23, 0xd4, 0x59, 0x4a, 0x8d, 0xc8, 0xd8, 0xad, 0x28, 0xc7, 0xc3, + 0x50, 0xd0, 0x84, 0xf2, 0x19, 0x2d, 0x50, 0xda, 0x09, 0xbf, 0x97, 0x92, 0x9d, 0x85, 0x8c, 0x6a, + 0xdb, 0x8c, 0x20, 0xc7, 0xe3, 0xa3, 0x6d, 0xd3, 0xa1, 0xc7, 0x61, 0x8a, 0xce, 0xd1, 0xc1, 0x6e, + 0xc7, 0xf0, 0x38, 0x48, 0x9e, 0xd2, 0x4c, 0x92, 0x01, 0x99, 0xf5, 0x53, 0xda, 0x0f, 0xc0, 0x04, + 0x3e, 0xd0, 0x9b, 0xd8, 0xd4, 0x30, 0xa3, 0x9b, 0xa0, 0x74, 0x79, 0xd1, 0x49, 0x89, 0x1e, 0x03, + 0x3f, 0xee, 0x29, 0x22, 0x26, 0x17, 0x18, 0x9e, 0xe8, 0xaf, 0xb0, 0xee, 0xd2, 0xdb, 0x31, 0x48, + 0x56, 0x55, 0x4f, 0x25, 0x15, 0x86, 0x77, 0xc8, 0x32, 0x4d, 0x5e, 0x26, 0x7f, 0xa2, 0x8f, 0x40, + 0x46, 0xa0, 0x72, 0x57, 0x99, 0xeb, 0x5d, 0xba, 0x1a, 0xa7, 0x58, 0xd3, 0x5d, 0x8f, 0xaf, 0x9f, + 0xcf, 0x85, 0x3e, 0x08, 0x19, 0x7e, 0xa3, 0xe0, 0xfa, 0xf6, 0xd3, 0x83, 0xc0, 0x77, 0xda, 0xc2, + 0x70, 0x7d, 0x0e, 0xb2, 0x14, 0x96, 0xa3, 0xb7, 0x74, 0x53, 0x35, 0x14, 0xf7, 0xa3, 0x1d, 0xba, + 0xcf, 0xd4, 0x5f, 0x67, 0xaf, 0x6c, 0x27, 0x65, 0x24, 0xc6, 0x1a, 0x74, 0xa8, 0xa1, 0xbf, 0x8e, + 0x7d, 0xc7, 0x4c, 0x87, 0x22, 0xc4, 0xa7, 0xe2, 0x70, 0xaa, 0xda, 0xb1, 0x0d, 0x5d, 0x53, 0x3d, + 0x7c, 0xcb, 0xf2, 0xb0, 0x90, 0x18, 0x3d, 0x05, 0xe9, 0x03, 0xcb, 0xc3, 0x8a, 0xca, 0xfd, 0xea, + 0x74, 0x9f, 0x1c, 0x69, 0x79, 0x58, 0x4e, 0x11, 0xaa, 0x8a, 0x4f, 0xbe, 0xc3, 0x1d, 0xfb, 0x58, + 0xf2, 0xa5, 0x93, 0xa5, 0xd2, 0x88, 0x7d, 0x72, 0x52, 0x96, 0xc0, 0x02, 0xfb, 0x64, 0x84, 0x4b, + 0x90, 0xf5, 0xe3, 0x33, 0x77, 0xa8, 0xd1, 0x7c, 0x32, 0x60, 0x2b, 0xfd, 0xeb, 0x38, 0x9c, 0x5d, + 0x23, 0xce, 0xbd, 0x4c, 0x3f, 0xe1, 0xad, 0x78, 0x9e, 0xaa, 0xed, 0xfb, 0x6a, 0x59, 0x85, 0x29, + 0xcd, 0x32, 0x77, 0x0d, 0x5d, 0xa3, 0x72, 0x07, 0xc5, 0x68, 0x57, 0x5e, 0x64, 0x53, 0xa6, 0x38, + 0xd4, 0x59, 0x65, 0x29, 0xc4, 0x46, 0x7b, 0x88, 0xb1, 0x12, 0xbf, 0xb5, 0x4c, 0x85, 0x87, 0x16, + 0x96, 0x22, 0xf3, 0xac, 0xf3, 0x3a, 0x0b, 0x30, 0x1b, 0x30, 0xb3, 0x73, 0xf4, 0xba, 0x6a, 0x7a, + 0xba, 0x89, 0x43, 0x6e, 0xc7, 0x7f, 0x69, 0xe6, 0xd8, 0xc2, 0x65, 0xda, 0x67, 0x0c, 0x7c, 0x72, + 0x80, 0xe2, 0x93, 0x03, 0x14, 0x7f, 0x2f, 0xf4, 0xf9, 0xed, 0x18, 0x64, 0x7c, 0xf5, 0xa9, 0x70, + 0xa6, 0x29, 0xcc, 0x4d, 0xa1, 0x06, 0xe3, 0x3b, 0x11, 0x53, 0xe2, 0xa3, 0xbd, 0x33, 0xea, 0x6b, + 0x9f, 0xd7, 0xc7, 0xe4, 0x53, 0xcd, 0xbe, 0x86, 0x6b, 0xc2, 0xfd, 0x06, 0x51, 0x9d, 0xc2, 0xbf, + 0xd0, 0x56, 0xe9, 0x02, 0x06, 0xcf, 0x61, 0xf6, 0xf9, 0xc4, 0x80, 0xc5, 0xea, 0xb7, 0xe8, 0xd7, + 0xc7, 0xe4, 0xb3, 0xc6, 0xa0, 0x41, 0x5e, 0x6a, 0x97, 0xd6, 0x20, 0x1f, 0xf6, 0x76, 0xe2, 0xdd, + 0xa1, 0xa9, 0x25, 0xfa, 0x7b, 0xb7, 0x0f, 0xd2, 0x15, 0x1b, 0xc8, 0x6e, 0x55, 0x78, 0x3e, 0xfa, + 0x30, 0x4c, 0x08, 0xaf, 0x57, 0x0c, 0xdd, 0xf5, 0x38, 0xdc, 0xd9, 0x81, 0xc1, 0x42, 0x16, 0x3f, + 0x74, 0xe5, 0x12, 0x49, 0x4a, 0x1f, 0x81, 0x71, 0x3e, 0x40, 0x8a, 0x32, 0xff, 0x93, 0x55, 0x92, + 0x73, 0x58, 0x8e, 0xce, 0xf9, 0x7d, 0xab, 0x4d, 0x7f, 0xab, 0x1a, 0x0f, 0x6d, 0x55, 0x5f, 0x86, + 0xd3, 0x24, 0x0a, 0x56, 0x0e, 0x54, 0xdd, 0x50, 0x77, 0x74, 0x43, 0xf7, 0x8e, 0x78, 0xfa, 0xbd, + 0x0f, 0xb2, 0x8e, 0x75, 0x5b, 0x71, 0x2c, 0xcb, 0x13, 0xd1, 0x31, 0xe3, 0x58, 0xb7, 0x65, 0xd2, + 0x26, 0x4f, 0xd3, 0x2c, 0xa3, 0xd3, 0x36, 0xf9, 0x78, 0x9c, 0x8e, 0xe7, 0x58, 0x1f, 0x25, 0x29, + 0x7d, 0x27, 0x0e, 0x49, 0xb2, 0x7a, 0xe8, 0xd9, 0xd0, 0x3e, 0xba, 0xd0, 0xaf, 0x2c, 0x68, 0xe8, + 0x2d, 0x13, 0x37, 0xd7, 0xdd, 0x56, 0xe8, 0x57, 0x5a, 0x82, 0xac, 0x1c, 0x8f, 0x64, 0xe5, 0x19, + 0x48, 0x39, 0x56, 0xc7, 0x6c, 0x8a, 0xaf, 0x01, 0x68, 0x03, 0xd5, 0x20, 0xe3, 0x27, 0xdb, 0xe4, + 0xb0, 0x64, 0x3b, 0x49, 0x16, 0x84, 0x94, 0x02, 0xbc, 0x43, 0x1e, 0xdf, 0xe1, 0x39, 0xf7, 0x1e, + 0xf8, 0x04, 0xa9, 0xc9, 0x83, 0x80, 0x26, 0x72, 0x10, 0x8b, 0xcb, 0x92, 0x3f, 0xc0, 0x93, 0x50, + 0x34, 0xfa, 0xb1, 0x3a, 0x6e, 0x9c, 0xce, 0x2b, 0x88, 0x7e, 0xec, 0x57, 0x63, 0xee, 0x87, 0xac, + 0xab, 0xb7, 0x4c, 0xd5, 0xeb, 0x38, 0x98, 0x27, 0xf0, 0xa0, 0xa3, 0xf4, 0xb5, 0x18, 0xa4, 0x59, 0x41, 0x10, 0xd2, 0x5b, 0xac, 0xbf, 0xde, 0xe2, 0x83, 0xf4, 0x96, 0x78, 0xef, 0x7a, 0xab, 0x00, - 0xf8, 0x83, 0x71, 0xf9, 0x0f, 0x79, 0xf4, 0x89, 0x5f, 0x6c, 0x88, 0x0d, 0xbd, 0xc5, 0x7d, 0x22, - 0x24, 0x54, 0xfa, 0x0f, 0x31, 0xc8, 0xfa, 0xfd, 0xa8, 0x02, 0x13, 0x62, 0x5c, 0xca, 0xae, 0xa1, - 0xb6, 0xb8, 0xed, 0xdc, 0x37, 0x70, 0x70, 0x57, 0x0d, 0xb5, 0x25, 0xe7, 0xf8, 0x78, 0x48, 0xa3, - 0xff, 0x3a, 0xc4, 0x07, 0xac, 0x43, 0x64, 0xe1, 0x13, 0xef, 0x6d, 0xe1, 0x23, 0x4b, 0x94, 0xec, - 0x5e, 0xa2, 0x2f, 0xc5, 0xe9, 0x99, 0x90, 0x6d, 0xb9, 0xaa, 0xf1, 0xc3, 0xf0, 0x88, 0x7b, 0x20, - 0x6b, 0x5b, 0x86, 0xc2, 0x7a, 0xd8, 0x57, 0x32, 0x19, 0xdb, 0x32, 0xe4, 0x9e, 0x65, 0x1f, 0xbf, - 0x4b, 0xee, 0x92, 0xba, 0x0b, 0x5a, 0x4b, 0x77, 0x6b, 0xcd, 0x81, 0x3c, 0x53, 0x05, 0x8f, 0x49, - 0x4f, 0x11, 0x1d, 0xd0, 0x3d, 0x46, 0xac, 0x77, 0x0b, 0xc3, 0x86, 0xcd, 0x38, 0x65, 0xce, 0x47, - 0x24, 0x58, 0x05, 0xdd, 0xef, 0x30, 0x31, 0x6c, 0x96, 0x32, 0xe7, 0x2b, 0xfd, 0xd5, 0x18, 0x40, - 0x90, 0xdc, 0x49, 0x31, 0xef, 0xd2, 0x21, 0x28, 0x91, 0x27, 0xcf, 0x0d, 0x5a, 0x34, 0xfe, 0xfc, - 0xbc, 0x1b, 0x1e, 0xf7, 0x32, 0x4c, 0x04, 0xc6, 0xe8, 0x62, 0x31, 0x98, 0xb9, 0x63, 0x72, 0x7c, - 0x03, 0x7b, 0x72, 0xfe, 0x20, 0xd4, 0x2a, 0xfd, 0xd3, 0x18, 0x64, 0xe9, 0x98, 0xd6, 0xb1, 0xa7, - 0x46, 0xd6, 0x30, 0xf6, 0xde, 0xd7, 0xf0, 0x3e, 0x00, 0x06, 0x43, 0x2b, 0x4c, 0x66, 0x59, 0x59, - 0x4a, 0xa1, 0x85, 0xe5, 0x25, 0x5f, 0xe1, 0x89, 0xe3, 0x15, 0x2e, 0x0e, 0x2f, 0xb8, 0xda, 0xcf, - 0x40, 0x9a, 0xfe, 0xf0, 0xdd, 0xa1, 0xcb, 0x0b, 0x90, 0x94, 0xd9, 0x69, 0x6f, 0x1d, 0xba, 0x25, - 0x13, 0xd2, 0x5b, 0x87, 0xec, 0x88, 0xf9, 0xd8, 0x04, 0x13, 0xe4, 0xaa, 0x84, 0xc8, 0x55, 0xe8, - 0x02, 0xa4, 0xe8, 0x96, 0x54, 0x94, 0x48, 0x7d, 0xb2, 0xee, 0xc6, 0xfa, 0x16, 0x3b, 0x1a, 0xe6, - 0x9c, 0xa5, 0x15, 0xc8, 0xad, 0xab, 0x86, 0x41, 0x5f, 0x0a, 0xd8, 0xa2, 0x3f, 0x1a, 0xe1, 0x97, - 0xd6, 0xde, 0xa1, 0x12, 0xda, 0xcd, 0x16, 0x04, 0x7d, 0xeb, 0x90, 0x6e, 0x25, 0x0a, 0x10, 0xf7, - 0x0e, 0x79, 0xc0, 0x88, 0x7b, 0x87, 0x25, 0x0c, 0x19, 0x01, 0x3e, 0xf2, 0x6f, 0xc5, 0xcd, 0xc0, - 0xb8, 0x69, 0x35, 0x31, 0x1b, 0x6f, 0x5e, 0x66, 0x8d, 0xe8, 0x71, 0x79, 0x32, 0x7a, 0x5c, 0xfe, - 0xd8, 0x6f, 0xc6, 0x20, 0x17, 0x8a, 0x69, 0xe8, 0x69, 0x38, 0xb5, 0xb4, 0xb6, 0xb9, 0x7c, 0x43, - 0x59, 0xad, 0x2a, 0x57, 0xd7, 0x2a, 0x2b, 0xc1, 0xb7, 0xab, 0xb3, 0xa7, 0x6f, 0xdf, 0x59, 0x40, - 0x21, 0xde, 0x6d, 0x93, 0x5e, 0xd1, 0xa2, 0xf3, 0x30, 0x13, 0x15, 0xa9, 0x2c, 0x35, 0x6a, 0x1b, - 0x5b, 0x52, 0x6c, 0xf6, 0xd4, 0xed, 0x3b, 0x0b, 0x53, 0x21, 0x89, 0xca, 0x8e, 0x8b, 0x4d, 0xaf, - 0x57, 0x60, 0x79, 0x73, 0x7d, 0x7d, 0x75, 0x4b, 0x8a, 0xf7, 0x08, 0xf0, 0x24, 0xf3, 0x28, 0x4c, - 0x45, 0x05, 0x36, 0x56, 0xd7, 0xa4, 0xc4, 0x2c, 0xba, 0x7d, 0x67, 0xa1, 0x10, 0xe2, 0xde, 0xd0, - 0x8d, 0xd9, 0xcc, 0xc7, 0x3f, 0x37, 0x37, 0xf6, 0x0b, 0x3f, 0x3f, 0x17, 0x23, 0x33, 0x9b, 0x88, - 0xc4, 0x35, 0xf4, 0x04, 0x9c, 0x69, 0xac, 0xae, 0x6c, 0xd4, 0xaa, 0xca, 0x7a, 0x63, 0x45, 0x5c, - 0x72, 0x8a, 0xd9, 0x4d, 0xde, 0xbe, 0xb3, 0x90, 0xe3, 0x53, 0x1a, 0xc4, 0x5d, 0x97, 0x6b, 0x37, - 0x37, 0xb7, 0x6a, 0x52, 0x8c, 0x71, 0xd7, 0x1d, 0x4c, 0xea, 0x4e, 0xca, 0xfd, 0x14, 0x9c, 0xed, - 0xc3, 0xed, 0x4f, 0x6c, 0xea, 0xf6, 0x9d, 0x85, 0x89, 0xba, 0x83, 0x99, 0xcf, 0x53, 0x89, 0x45, - 0x28, 0xf6, 0x4a, 0x6c, 0xd6, 0x37, 0x1b, 0x95, 0x35, 0x69, 0x61, 0x56, 0xba, 0x7d, 0x67, 0x21, - 0x2f, 0x02, 0x38, 0xe1, 0x0f, 0x66, 0xf6, 0x7e, 0x1e, 0x76, 0xfd, 0xe2, 0x13, 0xf0, 0x20, 0xbf, - 0xfe, 0x71, 0x3d, 0x75, 0x5f, 0x37, 0x5b, 0xfe, 0xbd, 0x1d, 0x6f, 0xf3, 0x43, 0xaf, 0xd3, 0xfc, - 0x8a, 0x49, 0x50, 0x87, 0xdc, 0xde, 0x0d, 0x7c, 0x71, 0x65, 0x76, 0xc8, 0xfb, 0x1c, 0xc3, 0x4f, - 0xcd, 0x06, 0xdf, 0x0c, 0xce, 0x0e, 0xb9, 0x7f, 0x9c, 0x3d, 0xf6, 0x5c, 0xaf, 0xf4, 0x89, 0x18, - 0x14, 0xae, 0xe9, 0xae, 0x67, 0x39, 0xba, 0xa6, 0x1a, 0xf4, 0x8b, 0xd5, 0x4b, 0xa3, 0xe6, 0x83, - 0xae, 0xf0, 0xf4, 0x02, 0xa4, 0x0e, 0x54, 0x83, 0x05, 0xe2, 0xf0, 0x35, 0x70, 0xb7, 0xfa, 0x82, - 0x70, 0x2c, 0x00, 0x98, 0x58, 0xe9, 0x8b, 0x71, 0x98, 0xa4, 0xce, 0xe0, 0xb2, 0x1f, 0x63, 0xf4, - 0xb0, 0x8b, 0xea, 0x90, 0x74, 0x54, 0x8f, 0xdf, 0x17, 0x2d, 0x7d, 0x80, 0x5f, 0x01, 0x3e, 0x3c, - 0xfc, 0x22, 0x6f, 0xb1, 0xf7, 0x96, 0x90, 0x22, 0xa1, 0x97, 0x20, 0xd3, 0x56, 0x0f, 0x15, 0x8a, - 0x1a, 0xbf, 0x0b, 0xa8, 0xe9, 0xb6, 0x7a, 0x48, 0xc6, 0x8a, 0x9a, 0x30, 0x49, 0x80, 0xb5, 0x3d, - 0xd5, 0x6c, 0x61, 0x86, 0x9f, 0xb8, 0x0b, 0xf8, 0x13, 0x6d, 0xf5, 0x70, 0x99, 0x62, 0x92, 0xa7, - 0x94, 0x33, 0x9f, 0x7a, 0x73, 0x7e, 0x8c, 0xde, 0xb0, 0xfe, 0x5a, 0x0c, 0x20, 0x50, 0x17, 0xfa, - 0x63, 0x20, 0x69, 0x7e, 0x8b, 0x3e, 0xde, 0xf5, 0xf7, 0x88, 0x03, 0x16, 0xa2, 0x4b, 0xd9, 0xac, - 0x98, 0xf8, 0xc6, 0xdb, 0xf3, 0x31, 0x79, 0x52, 0xeb, 0x5a, 0x87, 0x1a, 0xe4, 0x3a, 0x76, 0x93, - 0xec, 0x42, 0xe9, 0xf9, 0x5d, 0xfc, 0x04, 0x85, 0x09, 0x30, 0x41, 0xd2, 0x15, 0x1a, 0xfd, 0x17, - 0x63, 0x90, 0xab, 0x86, 0xde, 0xef, 0x28, 0x42, 0xba, 0x6d, 0x99, 0xfa, 0x3e, 0x37, 0xbb, 0xac, - 0x2c, 0x9a, 0x68, 0x16, 0x32, 0xec, 0x5b, 0x7d, 0xef, 0x48, 0x5c, 0x76, 0x89, 0x36, 0x91, 0xba, - 0x85, 0x77, 0x5c, 0x5d, 0xe8, 0x5a, 0x16, 0x4d, 0xf4, 0x28, 0x48, 0x2e, 0xd6, 0x3a, 0x8e, 0xee, - 0x1d, 0x29, 0x9a, 0x65, 0x7a, 0xaa, 0xe6, 0xf1, 0xaf, 0xbe, 0x27, 0x05, 0x7d, 0x99, 0x91, 0x09, - 0x48, 0x13, 0x7b, 0xaa, 0x6e, 0xb8, 0x45, 0xf6, 0x0e, 0x84, 0x68, 0x86, 0x86, 0xfb, 0x13, 0xe9, - 0xf0, 0xed, 0xc4, 0x32, 0x48, 0x96, 0x8d, 0x9d, 0x48, 0x19, 0xcc, 0x2c, 0xb4, 0xf8, 0x1b, 0x5f, - 0x7e, 0x72, 0x86, 0xab, 0x9b, 0x17, 0xc2, 0xec, 0xb3, 0x06, 0x79, 0x52, 0x48, 0x88, 0xfa, 0xf8, - 0x15, 0xb2, 0x60, 0xe2, 0xa8, 0xcf, 0xee, 0xec, 0x04, 0x37, 0x1a, 0x33, 0x3d, 0x7a, 0xad, 0x98, - 0x47, 0x4b, 0xc5, 0xaf, 0x07, 0xd0, 0xc1, 0x35, 0xc2, 0x0d, 0x7c, 0x44, 0x56, 0x8b, 0xe3, 0xd4, - 0x29, 0x0c, 0x29, 0x6b, 0x5f, 0x53, 0x75, 0x43, 0xfc, 0x04, 0x89, 0xcc, 0x5b, 0xa8, 0x0c, 0x29, - 0xd7, 0x53, 0xbd, 0x8e, 0xcb, 0x7f, 0x2a, 0xb4, 0x34, 0xc8, 0x32, 0x96, 0x2c, 0xb3, 0xd9, 0xa0, - 0x9c, 0x32, 0x97, 0x40, 0x5b, 0x90, 0xf2, 0xac, 0x7d, 0x6c, 0x72, 0x25, 0x9d, 0xc8, 0xaa, 0xfb, - 0xbc, 0x86, 0xc0, 0xb0, 0x50, 0x0b, 0xa4, 0x26, 0x36, 0x70, 0x8b, 0x15, 0x71, 0x7b, 0x2a, 0xd9, - 0xeb, 0xa4, 0xee, 0x82, 0xd7, 0x4c, 0xfa, 0xa8, 0x0d, 0x0a, 0x8a, 0x6e, 0x44, 0xdf, 0x30, 0x62, - 0xbf, 0xab, 0xfb, 0xc0, 0xa0, 0xf9, 0x87, 0x2c, 0x53, 0x9c, 0x23, 0x87, 0x5f, 0x46, 0x7a, 0x14, - 0xa4, 0x8e, 0xb9, 0x63, 0x99, 0xf4, 0x87, 0x02, 0xf8, 0x06, 0x22, 0x43, 0x4b, 0xb2, 0x49, 0x9f, - 0xce, 0x0f, 0xa4, 0x6e, 0x40, 0x21, 0x60, 0xa5, 0xbe, 0x93, 0x3d, 0x81, 0xef, 0x4c, 0xf8, 0xb2, - 0xa4, 0x17, 0x5d, 0x03, 0x08, 0x1c, 0x93, 0x9e, 0x0c, 0xe7, 0x06, 0xaf, 0x61, 0xe0, 0xdd, 0x62, - 0x6b, 0x18, 0xc8, 0x22, 0x03, 0xa6, 0xdb, 0xba, 0xa9, 0xb8, 0xd8, 0xd8, 0x55, 0xb8, 0xaa, 0x08, - 0x64, 0xee, 0x2e, 0x2c, 0xed, 0x54, 0x5b, 0x37, 0x1b, 0xd8, 0xd8, 0xad, 0xfa, 0xb0, 0xa8, 0x04, - 0x79, 0xcb, 0xd1, 0xf6, 0x30, 0xfd, 0xd0, 0xca, 0x72, 0xf8, 0xcf, 0x57, 0x47, 0x68, 0x68, 0x1e, - 0x72, 0xf8, 0xa0, 0xed, 0xbb, 0xd3, 0x04, 0x7b, 0x61, 0x19, 0x1f, 0xb4, 0xb9, 0xbf, 0x94, 0xf3, - 0x1f, 0x7f, 0x73, 0x7e, 0x8c, 0x3b, 0xe4, 0x58, 0xa9, 0x4e, 0xaf, 0x38, 0x79, 0x1f, 0x76, 0xd1, - 0x25, 0xc8, 0xaa, 0xa2, 0x41, 0x0b, 0xdf, 0xe3, 0x7c, 0x31, 0x60, 0x65, 0x2e, 0xfe, 0xc6, 0xef, - 0x2c, 0xc4, 0x4a, 0x3f, 0x1f, 0x83, 0x54, 0xf5, 0x66, 0x5d, 0xd5, 0x1d, 0x54, 0x83, 0xa9, 0xc0, - 0x2a, 0x47, 0x75, 0xf0, 0xc0, 0x90, 0x85, 0x87, 0xd7, 0x06, 0x6d, 0x97, 0x8f, 0x85, 0xe9, 0xde, - 0x48, 0x77, 0x4d, 0xbc, 0x06, 0x69, 0x36, 0x4a, 0x17, 0x95, 0x61, 0xdc, 0x26, 0x7f, 0xf0, 0x13, - 0xae, 0xb9, 0x81, 0xd6, 0x4c, 0xf9, 0xfd, 0x1b, 0x28, 0x22, 0x52, 0xfa, 0xfd, 0x18, 0x40, 0xf5, - 0xe6, 0xcd, 0x2d, 0x47, 0xb7, 0x0d, 0xec, 0xdd, 0xad, 0x19, 0xaf, 0xc1, 0xa9, 0xd0, 0x9e, 0xcc, - 0xd1, 0x46, 0x9e, 0xf5, 0x74, 0xb0, 0x2b, 0x73, 0xb4, 0xbe, 0x68, 0x4d, 0xd7, 0xf3, 0xd1, 0x12, - 0x23, 0xa3, 0x55, 0x5d, 0xaf, 0xbf, 0x1a, 0x1b, 0x90, 0x0b, 0xa6, 0xef, 0xa2, 0x2a, 0x64, 0x3c, - 0xfe, 0x37, 0xd7, 0x66, 0x69, 0xb0, 0x36, 0x85, 0x98, 0x38, 0x86, 0x14, 0x92, 0xa5, 0xff, 0x47, - 0x94, 0x1a, 0x98, 0xfd, 0x1f, 0x29, 0x33, 0x22, 0x01, 0x9c, 0x07, 0xd8, 0xbb, 0x51, 0x96, 0x70, - 0xac, 0x2e, 0xad, 0x7e, 0x2c, 0x0e, 0xd3, 0xdb, 0x22, 0x64, 0xfd, 0x91, 0xd5, 0x44, 0x1d, 0xd2, - 0xd8, 0xf4, 0x1c, 0x1d, 0x8b, 0x4d, 0xef, 0x53, 0x83, 0xd6, 0xba, 0xcf, 0x5c, 0xe8, 0xcf, 0xde, - 0x89, 0x7b, 0x51, 0x0e, 0xd3, 0xa5, 0x85, 0x7f, 0x1f, 0x87, 0xe2, 0x20, 0x49, 0xf4, 0x08, 0x4c, - 0x6a, 0x0e, 0xa6, 0x04, 0x25, 0x72, 0xaa, 0x58, 0x10, 0x64, 0x9e, 0x39, 0xd6, 0x81, 0x54, 0x61, - 0xc4, 0xb0, 0x08, 0xeb, 0x89, 0xcb, 0xae, 0x42, 0x20, 0x4c, 0x73, 0x07, 0x86, 0x49, 0xdd, 0xd4, - 0x3d, 0x5d, 0x35, 0x94, 0x1d, 0xd5, 0x50, 0xc5, 0x3d, 0xdc, 0x1f, 0x34, 0xda, 0x17, 0x38, 0xe8, - 0x12, 0xc3, 0x44, 0x37, 0x21, 0x2d, 0xe0, 0x93, 0x77, 0x01, 0x5e, 0x80, 0x85, 0x4a, 0xb1, 0xdf, - 0x8e, 0xc3, 0x94, 0x8c, 0x9b, 0x3f, 0x5a, 0x6a, 0xfd, 0x31, 0x00, 0xe6, 0x70, 0x24, 0x0e, 0xbe, - 0x07, 0xcd, 0xf6, 0x3a, 0x70, 0x96, 0xe1, 0x55, 0x5d, 0x2f, 0xa4, 0xdb, 0xaf, 0xc7, 0x21, 0x1f, - 0xd6, 0xed, 0x8f, 0x40, 0x5e, 0x40, 0xab, 0x41, 0x34, 0x48, 0xf2, 0x1f, 0xec, 0x1e, 0x10, 0x0d, - 0x7a, 0xac, 0xee, 0xf8, 0x30, 0xf0, 0xfd, 0x38, 0xa4, 0xea, 0xaa, 0xa3, 0xb6, 0x5d, 0x74, 0xbd, - 0xa7, 0x0a, 0x14, 0xc7, 0x8b, 0x3d, 0xff, 0x2d, 0x03, 0x3f, 0x19, 0x60, 0x26, 0xf7, 0xa9, 0x3e, - 0x45, 0xe0, 0x43, 0x50, 0x20, 0xfb, 0xcc, 0xd0, 0xe5, 0x66, 0x9c, 0xbe, 0xa6, 0x42, 0x36, 0x8a, - 0xa1, 0x9b, 0xcb, 0x79, 0xc8, 0x11, 0xb6, 0x20, 0xd0, 0x11, 0x1e, 0x68, 0xab, 0x87, 0x35, 0x46, - 0x41, 0x4f, 0x02, 0xda, 0xf3, 0x77, 0xfe, 0x4a, 0xa0, 0x02, 0xc2, 0x37, 0x15, 0xf4, 0x08, 0xf6, - 0xfb, 0x00, 0xc8, 0x28, 0x14, 0xf6, 0x92, 0x30, 0xdb, 0x28, 0x65, 0x09, 0xa5, 0x4a, 0x5f, 0x14, - 0xfe, 0x71, 0x56, 0x50, 0x76, 0x6d, 0x41, 0x79, 0x2d, 0xbf, 0x76, 0x32, 0x4b, 0xfd, 0xfe, 0xdb, - 0xf3, 0xb3, 0x47, 0x6a, 0xdb, 0x28, 0x97, 0xfa, 0x40, 0x96, 0x68, 0x81, 0x19, 0xdd, 0xba, 0x86, - 0x2c, 0xf8, 0x73, 0x31, 0x40, 0x41, 0xc8, 0x95, 0xb1, 0x6b, 0x93, 0xbd, 0x11, 0xa9, 0x9c, 0x43, - 0x65, 0x6e, 0xec, 0xf8, 0xca, 0x39, 0x90, 0x17, 0x95, 0x73, 0xc8, 0x23, 0x2e, 0x07, 0x01, 0x2e, - 0xce, 0xd7, 0xb0, 0xcf, 0x1b, 0xde, 0x8b, 0xcb, 0x96, 0x2e, 0xa4, 0x7b, 0x62, 0xd8, 0x58, 0xe9, - 0xb7, 0x63, 0x70, 0xb6, 0xc7, 0x9a, 0xfc, 0xc1, 0xfe, 0x09, 0x40, 0x4e, 0xa8, 0x93, 0xff, 0xf2, - 0x2a, 0x1b, 0xf4, 0x89, 0x8d, 0x73, 0xca, 0xe9, 0x89, 0x95, 0xef, 0x57, 0x8c, 0x66, 0x6f, 0x7e, - 0xff, 0xe3, 0x18, 0xcc, 0x84, 0x07, 0xe3, 0x4f, 0x6b, 0x03, 0xf2, 0xe1, 0xb1, 0xf0, 0x09, 0x3d, - 0x38, 0xca, 0x84, 0xf8, 0x5c, 0x22, 0xf2, 0xe8, 0xc5, 0xc0, 0x71, 0xd9, 0x89, 0xd3, 0xd3, 0x23, - 0xeb, 0x46, 0x8c, 0xa9, 0xdb, 0x81, 0x93, 0xa2, 0x8a, 0x49, 0xd6, 0x2d, 0xcb, 0x40, 0x7f, 0x0a, - 0xa6, 0x4c, 0xcb, 0x53, 0x88, 0x95, 0xe3, 0xa6, 0xc2, 0xb7, 0xbf, 0x2c, 0xfa, 0xbd, 0x78, 0x32, - 0x95, 0x7d, 0xe7, 0xed, 0xf9, 0x5e, 0xa8, 0x2e, 0x3d, 0x4e, 0x9a, 0x96, 0xb7, 0x44, 0xfb, 0xb7, - 0xd8, 0xe6, 0xd8, 0x81, 0x89, 0xe8, 0xa3, 0x59, 0xb4, 0x5c, 0x3f, 0xf1, 0xa3, 0x27, 0x8e, 0x7b, - 0x6c, 0x7e, 0x27, 0xf4, 0x4c, 0xf6, 0x4e, 0xec, 0xf7, 0xde, 0x9c, 0x8f, 0x3d, 0xf6, 0x95, 0x18, - 0x40, 0x70, 0x0e, 0x80, 0x9e, 0x80, 0x33, 0x4b, 0x9b, 0x1b, 0x55, 0xa5, 0xb1, 0x55, 0xd9, 0xda, - 0x6e, 0x44, 0xbf, 0x9c, 0x11, 0x07, 0xcb, 0xae, 0x8d, 0x35, 0x7d, 0x57, 0xc7, 0x4d, 0xf4, 0x30, - 0xcc, 0x44, 0xb9, 0x49, 0xab, 0x56, 0x95, 0x62, 0xb3, 0xf9, 0xdb, 0x77, 0x16, 0x32, 0xac, 0x3a, - 0xc2, 0x4d, 0x74, 0x0e, 0x4e, 0xf5, 0xf2, 0xad, 0x6e, 0xac, 0x48, 0xf1, 0xd9, 0x89, 0xdb, 0x77, - 0x16, 0xb2, 0x7e, 0x19, 0x85, 0x4a, 0x80, 0xc2, 0x9c, 0x1c, 0x2f, 0x31, 0x0b, 0xb7, 0xef, 0x2c, - 0xa4, 0x98, 0xda, 0x66, 0x93, 0x1f, 0xff, 0xdc, 0xdc, 0xd8, 0xd2, 0xd5, 0x81, 0x47, 0xc7, 0x4f, - 0x1c, 0xab, 0xb1, 0x43, 0xff, 0x38, 0x38, 0x72, 0x5e, 0xfc, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, - 0x30, 0x11, 0xa8, 0x34, 0x4b, 0x6c, 0x00, 0x00, + 0xf8, 0xc2, 0xb8, 0xfc, 0x87, 0x3c, 0xfa, 0xc4, 0x2f, 0x26, 0x62, 0x43, 0x6f, 0x71, 0x9f, 0x08, + 0x31, 0x95, 0xfe, 0x43, 0x0c, 0xb2, 0xfe, 0x38, 0xaa, 0xc0, 0x84, 0x90, 0x4b, 0xd9, 0x35, 0xd4, + 0x16, 0xb7, 0x9d, 0x07, 0x06, 0x0a, 0x77, 0xcd, 0x50, 0x5b, 0x72, 0x8e, 0xcb, 0x43, 0x1a, 0xfd, + 0xd7, 0x21, 0x3e, 0x60, 0x1d, 0x22, 0x0b, 0x9f, 0x78, 0x6f, 0x0b, 0x1f, 0x59, 0xa2, 0x64, 0xf7, + 0x12, 0x7d, 0x39, 0x4e, 0xcf, 0x84, 0x6c, 0xcb, 0x55, 0x8d, 0x1f, 0x85, 0x47, 0xdc, 0x07, 0x59, + 0xdb, 0x32, 0x14, 0x36, 0xc2, 0xbe, 0x92, 0xc9, 0xd8, 0x96, 0x21, 0xf7, 0x2c, 0x7b, 0xea, 0x1e, + 0xb9, 0x4b, 0xfa, 0x1e, 0x68, 0x6d, 0xbc, 0x5b, 0x6b, 0x0e, 0xe4, 0x99, 0x2a, 0x78, 0x4c, 0x7a, + 0x9a, 0xe8, 0x80, 0xee, 0x31, 0x62, 0xbd, 0x5b, 0x18, 0x26, 0x36, 0xa3, 0x94, 0x39, 0x1d, 0xe1, + 0x60, 0x15, 0x74, 0xbf, 0xc3, 0xc4, 0xb0, 0x59, 0xca, 0x9c, 0xae, 0xf4, 0x57, 0x62, 0x00, 0x41, + 0x72, 0x27, 0xc5, 0xbc, 0x4b, 0x45, 0x50, 0x22, 0x4f, 0x9e, 0x1b, 0xb4, 0x68, 0xfc, 0xf9, 0x79, + 0x37, 0x2c, 0xf7, 0x32, 0x4c, 0x04, 0xc6, 0xe8, 0x62, 0x21, 0xcc, 0xdc, 0x31, 0x39, 0xbe, 0x81, + 0x3d, 0x39, 0x7f, 0x10, 0x6a, 0x95, 0xfe, 0x69, 0x0c, 0xb2, 0x54, 0xa6, 0x75, 0xec, 0xa9, 0x91, + 0x35, 0x8c, 0xbd, 0xf7, 0x35, 0x7c, 0x00, 0x80, 0xc1, 0xd0, 0x0a, 0x93, 0x59, 0x56, 0x96, 0xf6, + 0xd0, 0xc2, 0xf2, 0x92, 0xaf, 0xf0, 0xc4, 0xf1, 0x0a, 0x17, 0x87, 0x17, 0x5c, 0xed, 0x67, 0x60, + 0x9c, 0xfe, 0xf0, 0xdd, 0xa1, 0xcb, 0x0b, 0x90, 0xb4, 0xd9, 0x69, 0x6f, 0x1d, 0xba, 0x25, 0x13, + 0xc6, 0xb7, 0x0e, 0xd9, 0x11, 0xf3, 0xb1, 0x09, 0x26, 0xc8, 0x55, 0x09, 0x91, 0xab, 0xd0, 0x05, + 0x48, 0xd3, 0x2d, 0xa9, 0x28, 0x91, 0xfa, 0x64, 0xdd, 0x8d, 0xf5, 0x2d, 0x76, 0x34, 0xcc, 0x29, + 0x4b, 0x2b, 0x90, 0x5b, 0x57, 0x0d, 0x83, 0xbe, 0x14, 0xb0, 0x45, 0x7f, 0x34, 0xc2, 0x2f, 0xad, + 0xbd, 0x43, 0x25, 0xb4, 0x9b, 0x2d, 0x88, 0xfe, 0xad, 0x43, 0xba, 0x95, 0x28, 0x40, 0xdc, 0x3b, + 0xe4, 0x01, 0x23, 0xee, 0x1d, 0x96, 0x30, 0x64, 0x04, 0xf8, 0xc8, 0xbf, 0x15, 0x37, 0x03, 0x29, + 0xd3, 0x6a, 0x62, 0x26, 0x6f, 0x5e, 0x66, 0x8d, 0xe8, 0x71, 0x79, 0x32, 0x7a, 0x5c, 0xfe, 0xf8, + 0xaf, 0xc7, 0x20, 0x17, 0x8a, 0x69, 0xe8, 0x19, 0x38, 0xb5, 0xb4, 0xb6, 0xb9, 0x7c, 0x53, 0x59, + 0xad, 0x2a, 0xd7, 0xd6, 0x2a, 0x2b, 0xc1, 0xb7, 0xab, 0xb3, 0xa7, 0xef, 0xdc, 0x5d, 0x40, 0x21, + 0xda, 0x6d, 0x93, 0x5e, 0xd1, 0xa2, 0xf3, 0x30, 0x13, 0x65, 0xa9, 0x2c, 0x35, 0x6a, 0x1b, 0x5b, + 0x52, 0x6c, 0xf6, 0xd4, 0x9d, 0xbb, 0x0b, 0x53, 0x21, 0x8e, 0xca, 0x8e, 0x8b, 0x4d, 0xaf, 0x97, + 0x61, 0x79, 0x73, 0x7d, 0x7d, 0x75, 0x4b, 0x8a, 0xf7, 0x30, 0xf0, 0x24, 0xf3, 0x18, 0x4c, 0x45, + 0x19, 0x36, 0x56, 0xd7, 0xa4, 0xc4, 0x2c, 0xba, 0x73, 0x77, 0xa1, 0x10, 0xa2, 0xde, 0xd0, 0x8d, + 0xd9, 0xcc, 0x27, 0x3e, 0x3f, 0x37, 0xf6, 0xf3, 0x3f, 0x37, 0x17, 0x23, 0x33, 0x9b, 0x88, 0xc4, + 0x35, 0xf4, 0x24, 0x9c, 0x69, 0xac, 0xae, 0x6c, 0xd4, 0xaa, 0xca, 0x7a, 0x63, 0x45, 0x5c, 0x72, + 0x8a, 0xd9, 0x4d, 0xde, 0xb9, 0xbb, 0x90, 0xe3, 0x53, 0x1a, 0x44, 0x5d, 0x97, 0x6b, 0xb7, 0x36, + 0xb7, 0x6a, 0x52, 0x8c, 0x51, 0xd7, 0x1d, 0x4c, 0xea, 0x4e, 0x4a, 0xfd, 0x34, 0x9c, 0xed, 0x43, + 0xed, 0x4f, 0x6c, 0xea, 0xce, 0xdd, 0x85, 0x89, 0xba, 0x83, 0x99, 0xcf, 0x53, 0x8e, 0x45, 0x28, + 0xf6, 0x72, 0x6c, 0xd6, 0x37, 0x1b, 0x95, 0x35, 0x69, 0x61, 0x56, 0xba, 0x73, 0x77, 0x21, 0x2f, + 0x02, 0x38, 0xa1, 0x0f, 0x66, 0xf6, 0x7e, 0x1e, 0x76, 0x7d, 0xf2, 0x49, 0x78, 0x88, 0x5f, 0xff, + 0xb8, 0x9e, 0xba, 0xaf, 0x9b, 0x2d, 0xff, 0xde, 0x8e, 0xb7, 0xf9, 0xa1, 0xd7, 0x69, 0x7e, 0xc5, + 0x24, 0x7a, 0x87, 0xdc, 0xde, 0x0d, 0x7c, 0x71, 0x65, 0x76, 0xc8, 0xfb, 0x1c, 0xc3, 0x4f, 0xcd, + 0x06, 0xdf, 0x0c, 0xce, 0x0e, 0xb9, 0x7f, 0x9c, 0x3d, 0xf6, 0x5c, 0xaf, 0xf4, 0xc9, 0x18, 0x14, + 0xae, 0xeb, 0xae, 0x67, 0x39, 0xba, 0xa6, 0x1a, 0xf4, 0x8b, 0xd5, 0x4b, 0xa3, 0xe6, 0x83, 0xae, + 0xf0, 0xf4, 0x02, 0xa4, 0x0f, 0x54, 0x83, 0x05, 0xe2, 0xf0, 0x35, 0x70, 0xb7, 0xfa, 0x82, 0x70, + 0x2c, 0x00, 0x18, 0x5b, 0xe9, 0x4b, 0x71, 0x98, 0xa4, 0xce, 0xe0, 0xb2, 0x1f, 0x63, 0xf4, 0xb0, + 0x8b, 0xea, 0x90, 0x74, 0x54, 0x8f, 0xdf, 0x17, 0x2d, 0x7d, 0x90, 0x5f, 0x01, 0x3e, 0x32, 0xfc, + 0x22, 0x6f, 0xb1, 0xf7, 0x96, 0x90, 0x22, 0xa1, 0x97, 0x20, 0xd3, 0x56, 0x0f, 0x15, 0x8a, 0x1a, + 0xbf, 0x07, 0xa8, 0xe3, 0x6d, 0xf5, 0x90, 0xc8, 0x8a, 0x9a, 0x30, 0x49, 0x80, 0xb5, 0x3d, 0xd5, + 0x6c, 0x61, 0x86, 0x9f, 0xb8, 0x07, 0xf8, 0x13, 0x6d, 0xf5, 0x70, 0x99, 0x62, 0x92, 0xa7, 0x94, + 0x33, 0x9f, 0x7e, 0x73, 0x7e, 0x8c, 0xde, 0xb0, 0xfe, 0x4a, 0x0c, 0x20, 0x50, 0x17, 0xfa, 0x23, + 0x20, 0x69, 0x7e, 0x8b, 0x3e, 0xde, 0xf5, 0xf7, 0x88, 0x03, 0x16, 0xa2, 0x4b, 0xd9, 0xac, 0x98, + 0xf8, 0xe6, 0xdb, 0xf3, 0x31, 0x79, 0x52, 0xeb, 0x5a, 0x87, 0x1a, 0xe4, 0x3a, 0x76, 0x93, 0xec, + 0x42, 0xe9, 0xf9, 0x5d, 0xfc, 0x04, 0x85, 0x09, 0x30, 0x46, 0x32, 0x14, 0x92, 0xfe, 0x4b, 0x31, + 0xc8, 0x55, 0x43, 0xef, 0x77, 0x14, 0x61, 0xbc, 0x6d, 0x99, 0xfa, 0x3e, 0x37, 0xbb, 0xac, 0x2c, + 0x9a, 0x68, 0x16, 0x32, 0xec, 0x5b, 0x7d, 0xef, 0x48, 0x5c, 0x76, 0x89, 0x36, 0xe1, 0xba, 0x8d, + 0x77, 0x5c, 0x5d, 0xe8, 0x5a, 0x16, 0x4d, 0xf4, 0x18, 0x48, 0x2e, 0xd6, 0x3a, 0x8e, 0xee, 0x1d, + 0x29, 0x9a, 0x65, 0x7a, 0xaa, 0xe6, 0xf1, 0xaf, 0xbe, 0x27, 0x45, 0xff, 0x32, 0xeb, 0x26, 0x20, + 0x4d, 0xec, 0xa9, 0xba, 0xe1, 0x16, 0xd9, 0x3b, 0x10, 0xa2, 0x19, 0x12, 0xf7, 0xbb, 0xe9, 0xf0, + 0xed, 0xc4, 0x32, 0x48, 0x96, 0x8d, 0x9d, 0x48, 0x19, 0xcc, 0x2c, 0xb4, 0xf8, 0x6b, 0x5f, 0x79, + 0x6a, 0x86, 0xab, 0x9b, 0x17, 0xc2, 0xec, 0xb3, 0x06, 0x79, 0x52, 0x70, 0x88, 0xfa, 0xf8, 0x15, + 0xb2, 0x60, 0xe2, 0xa8, 0xcf, 0xee, 0xec, 0x04, 0x37, 0x1a, 0x33, 0x3d, 0x7a, 0xad, 0x98, 0x47, + 0x4b, 0xc5, 0x6f, 0x04, 0xd0, 0xc1, 0x35, 0xc2, 0x4d, 0x7c, 0x44, 0x56, 0x8b, 0xe3, 0xd4, 0x29, + 0x0c, 0x29, 0x6b, 0x5f, 0x53, 0x75, 0x43, 0xfc, 0x04, 0x89, 0xcc, 0x5b, 0xa8, 0x0c, 0x69, 0xd7, + 0x53, 0xbd, 0x8e, 0xcb, 0x7f, 0x2a, 0xb4, 0x34, 0xc8, 0x32, 0x96, 0x2c, 0xb3, 0xd9, 0xa0, 0x94, + 0x32, 0xe7, 0x40, 0x5b, 0x90, 0xf6, 0xac, 0x7d, 0x6c, 0x72, 0x25, 0x9d, 0xc8, 0xaa, 0xfb, 0xbc, + 0x86, 0xc0, 0xb0, 0x50, 0x0b, 0xa4, 0x26, 0x36, 0x70, 0x8b, 0x15, 0x71, 0x7b, 0x2a, 0xd9, 0xeb, + 0xa4, 0xef, 0x81, 0xd7, 0x4c, 0xfa, 0xa8, 0x0d, 0x0a, 0x8a, 0x6e, 0x46, 0xdf, 0x30, 0x62, 0xbf, + 0xab, 0xfb, 0x81, 0x41, 0xf3, 0x0f, 0x59, 0xa6, 0x38, 0x47, 0x0e, 0xbf, 0x8c, 0xf4, 0x18, 0x48, + 0x1d, 0x73, 0xc7, 0x32, 0xe9, 0x0f, 0x05, 0xf0, 0x0d, 0x44, 0x86, 0x96, 0x64, 0x93, 0x7e, 0x3f, + 0x3f, 0x90, 0xba, 0x09, 0x85, 0x80, 0x94, 0xfa, 0x4e, 0xf6, 0x04, 0xbe, 0x33, 0xe1, 0xf3, 0x92, + 0x51, 0x74, 0x1d, 0x20, 0x70, 0x4c, 0x7a, 0x32, 0x9c, 0x1b, 0xbc, 0x86, 0x81, 0x77, 0x8b, 0xad, + 0x61, 0xc0, 0x8b, 0x0c, 0x98, 0x6e, 0xeb, 0xa6, 0xe2, 0x62, 0x63, 0x57, 0xe1, 0xaa, 0x22, 0x90, + 0xb9, 0x7b, 0xb0, 0xb4, 0x53, 0x6d, 0xdd, 0x6c, 0x60, 0x63, 0xb7, 0xea, 0xc3, 0xa2, 0x79, 0xc8, + 0xe1, 0x83, 0xb6, 0xef, 0x2a, 0xec, 0xd7, 0xab, 0x01, 0x1f, 0xb4, 0xb9, 0x2f, 0x94, 0xf3, 0x9f, + 0x78, 0x73, 0x7e, 0x8c, 0x3b, 0xdb, 0x58, 0xa9, 0x4e, 0xaf, 0x2f, 0xf9, 0x18, 0x76, 0xd1, 0x25, + 0xc8, 0xaa, 0xa2, 0x41, 0x8b, 0xda, 0xe3, 0xfc, 0x2c, 0x20, 0x65, 0xee, 0xfb, 0xc6, 0x6f, 0x2d, + 0xc4, 0x4a, 0x3f, 0x17, 0x83, 0x74, 0xf5, 0x56, 0x5d, 0xd5, 0x1d, 0x54, 0x83, 0xa9, 0xc0, 0xe2, + 0x46, 0x75, 0xde, 0xc0, 0x48, 0x85, 0xf7, 0xd6, 0x06, 0x6d, 0x85, 0x8f, 0x85, 0xe9, 0xde, 0x24, + 0x77, 0x4d, 0xbc, 0x06, 0xe3, 0x4c, 0x4a, 0x17, 0x95, 0x21, 0x65, 0x93, 0x3f, 0xf8, 0xe9, 0xd5, + 0xdc, 0x40, 0x4b, 0xa5, 0xf4, 0xfe, 0xed, 0x12, 0x61, 0x29, 0xfd, 0x6e, 0x0c, 0xa0, 0x7a, 0xeb, + 0xd6, 0x96, 0xa3, 0xdb, 0x06, 0xf6, 0xee, 0xd5, 0x8c, 0xd7, 0xe0, 0x54, 0x68, 0xbf, 0xe5, 0x68, + 0x23, 0xcf, 0x7a, 0x3a, 0xd8, 0x71, 0x39, 0x5a, 0x5f, 0xb4, 0xa6, 0xeb, 0xf9, 0x68, 0x89, 0x91, + 0xd1, 0xaa, 0xae, 0xd7, 0x5f, 0x8d, 0x0d, 0xc8, 0x05, 0xd3, 0x77, 0x51, 0x15, 0x32, 0x1e, 0xff, + 0x9b, 0x6b, 0xb3, 0x34, 0x58, 0x9b, 0x82, 0x4d, 0x1c, 0x31, 0x0a, 0xce, 0xd2, 0xff, 0x23, 0x4a, + 0x0d, 0x4c, 0xfa, 0x0f, 0x94, 0x19, 0x91, 0xe0, 0xcc, 0x83, 0xe7, 0xbd, 0x28, 0x39, 0x38, 0x56, + 0x97, 0x56, 0x3f, 0x1e, 0x87, 0xe9, 0x6d, 0x11, 0x8e, 0xfe, 0xc0, 0x6a, 0xa2, 0x0e, 0xe3, 0xd8, + 0xf4, 0x1c, 0x1d, 0x8b, 0x0d, 0xed, 0xd3, 0x83, 0xd6, 0xba, 0xcf, 0x5c, 0xe8, 0x4f, 0xda, 0x89, + 0x3b, 0x4f, 0x0e, 0xd3, 0xa5, 0x85, 0x7f, 0x1f, 0x87, 0xe2, 0x20, 0x4e, 0xf4, 0x28, 0x4c, 0x6a, + 0x0e, 0xa6, 0x1d, 0x4a, 0xe4, 0xc4, 0xb0, 0x20, 0xba, 0x79, 0x56, 0x58, 0x07, 0x52, 0x61, 0x11, + 0xc3, 0x22, 0xa4, 0x27, 0x2e, 0xa9, 0x0a, 0x01, 0x33, 0xcd, 0x0b, 0x18, 0x26, 0x75, 0x53, 0xf7, + 0x74, 0xd5, 0x50, 0x76, 0x54, 0x43, 0x15, 0x77, 0x6c, 0xbf, 0xd7, 0x48, 0x5e, 0xe0, 0xa0, 0x4b, + 0x0c, 0x13, 0xdd, 0x82, 0x71, 0x01, 0x9f, 0xbc, 0x07, 0xf0, 0x02, 0x2c, 0x54, 0x66, 0xfd, 0x66, + 0x1c, 0xa6, 0x64, 0xdc, 0xfc, 0xc3, 0xa5, 0xd6, 0x1f, 0x03, 0x60, 0x0e, 0x47, 0xe2, 0xe0, 0x7b, + 0xd0, 0x6c, 0xaf, 0x03, 0x67, 0x19, 0x5e, 0xd5, 0xf5, 0x42, 0xba, 0xfd, 0x46, 0x1c, 0xf2, 0x61, + 0xdd, 0xfe, 0x21, 0xc8, 0x0b, 0x68, 0x35, 0x88, 0x06, 0x49, 0xfe, 0x63, 0xdc, 0x03, 0xa2, 0x41, + 0x8f, 0xd5, 0x1d, 0x1f, 0x06, 0x7e, 0x10, 0x87, 0x74, 0x5d, 0x75, 0xd4, 0xb6, 0x8b, 0x6e, 0xf4, + 0x54, 0x78, 0xe2, 0xe8, 0xb0, 0xe7, 0xbf, 0x5c, 0xe0, 0xbb, 0x7e, 0x66, 0x72, 0x9f, 0xee, 0x53, + 0xe0, 0x3d, 0x0c, 0x05, 0xb2, 0x87, 0x0c, 0x5d, 0x5c, 0xc6, 0xe9, 0x2b, 0x28, 0x64, 0x13, 0x18, + 0xba, 0x95, 0x9c, 0x87, 0x1c, 0x21, 0x0b, 0x02, 0x1d, 0xa1, 0x81, 0xb6, 0x7a, 0x58, 0x63, 0x3d, + 0xe8, 0x29, 0x40, 0x7b, 0xfe, 0xae, 0x5e, 0x09, 0x54, 0x40, 0xe8, 0xa6, 0x82, 0x11, 0x41, 0xfe, + 0x00, 0x00, 0x91, 0x42, 0x61, 0x2f, 0x00, 0xb3, 0x4d, 0x50, 0x96, 0xf4, 0x54, 0xe9, 0x4b, 0xc0, + 0x3f, 0xce, 0x8a, 0xc5, 0xae, 0xed, 0x25, 0xaf, 0xd3, 0xd7, 0x4e, 0x66, 0xa9, 0x3f, 0x78, 0x7b, + 0x7e, 0xf6, 0x48, 0x6d, 0x1b, 0xe5, 0x52, 0x1f, 0xc8, 0x12, 0x2d, 0x1e, 0xa3, 0xdb, 0xd2, 0x90, + 0x05, 0x7f, 0x3e, 0x06, 0x28, 0x08, 0xb9, 0x32, 0x76, 0x6d, 0xb2, 0xef, 0x21, 0x55, 0x71, 0xa8, + 0x84, 0x8d, 0x1d, 0x5f, 0x15, 0x07, 0xfc, 0xa2, 0x2a, 0x0e, 0x79, 0xc4, 0x95, 0x20, 0xc0, 0xc5, + 0xf9, 0x1a, 0xf6, 0x79, 0x7b, 0x7b, 0x71, 0xd9, 0xd2, 0x05, 0x77, 0x4f, 0x0c, 0x1b, 0x2b, 0xfd, + 0x66, 0x0c, 0xce, 0xf6, 0x58, 0x93, 0x2f, 0xec, 0x1f, 0x03, 0xe4, 0x84, 0x06, 0xf9, 0xaf, 0xaa, + 0x32, 0xa1, 0x4f, 0x6c, 0x9c, 0x53, 0x4e, 0x4f, 0xac, 0x7c, 0xbf, 0x62, 0x34, 0x7b, 0xab, 0xfb, + 0x1f, 0xc7, 0x60, 0x26, 0x2c, 0x8c, 0x3f, 0xad, 0x0d, 0xc8, 0x87, 0x65, 0xe1, 0x13, 0x7a, 0x68, + 0x94, 0x09, 0xf1, 0xb9, 0x44, 0xf8, 0xd1, 0x8b, 0x81, 0xe3, 0xb2, 0xd3, 0xa4, 0x67, 0x46, 0xd6, + 0x8d, 0x90, 0xa9, 0xdb, 0x81, 0x93, 0xa2, 0x8a, 0x49, 0xd6, 0x2d, 0xcb, 0x40, 0x7f, 0x02, 0xa6, + 0x4c, 0xcb, 0x53, 0x88, 0x95, 0xe3, 0xa6, 0xc2, 0xb7, 0xb6, 0x2c, 0xfa, 0xbd, 0x78, 0x32, 0x95, + 0x7d, 0xf7, 0xed, 0xf9, 0x5e, 0xa8, 0x2e, 0x3d, 0x4e, 0x9a, 0x96, 0xb7, 0x44, 0xc7, 0xb7, 0xd8, + 0xc6, 0xd7, 0x81, 0x89, 0xe8, 0xa3, 0x59, 0xb4, 0x5c, 0x3f, 0xf1, 0xa3, 0x27, 0x8e, 0x7b, 0x6c, + 0x7e, 0x27, 0xf4, 0x4c, 0xf6, 0xbe, 0xeb, 0xf7, 0xdf, 0x9c, 0x8f, 0x3d, 0xfe, 0xd5, 0x18, 0x40, + 0xb0, 0xc7, 0x47, 0x4f, 0xc2, 0x99, 0xa5, 0xcd, 0x8d, 0xaa, 0xd2, 0xd8, 0xaa, 0x6c, 0x6d, 0x37, + 0xa2, 0x5f, 0xc5, 0x88, 0x43, 0x63, 0xd7, 0xc6, 0x9a, 0xbe, 0xab, 0xe3, 0x26, 0x7a, 0x04, 0x66, + 0xa2, 0xd4, 0xa4, 0x55, 0xab, 0x4a, 0xb1, 0xd9, 0xfc, 0x9d, 0xbb, 0x0b, 0x19, 0x56, 0x1d, 0xe1, + 0x26, 0x3a, 0x07, 0xa7, 0x7a, 0xe9, 0x56, 0x37, 0x56, 0xa4, 0xf8, 0xec, 0xc4, 0x9d, 0xbb, 0x0b, + 0x59, 0xbf, 0x8c, 0x42, 0x25, 0x40, 0x61, 0x4a, 0x8e, 0x97, 0x98, 0x85, 0x3b, 0x77, 0x17, 0xd2, + 0x4c, 0x6d, 0xb3, 0xc9, 0x4f, 0x7c, 0x7e, 0x6e, 0x6c, 0xe9, 0xda, 0xc0, 0x63, 0xe1, 0x27, 0x8f, + 0xd5, 0xd8, 0xa1, 0x7f, 0xd4, 0x1b, 0x39, 0x0b, 0xfe, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xcf, + 0x4a, 0xb7, 0xed, 0x27, 0x6c, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) @@ -2258,13 +2253,6 @@ func (m *Validator) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.EvmAddress) i = encodeVarintStaking(dAtA, i, uint64(len(m.EvmAddress))) i-- - dAtA[i] = 0x6a - } - if len(m.Orchestrator) > 0 { - i -= len(m.Orchestrator) - copy(dAtA[i:], m.Orchestrator) - i = encodeVarintStaking(dAtA, i, uint64(len(m.Orchestrator))) - i-- dAtA[i] = 0x62 } { @@ -3181,10 +3169,6 @@ func (m *Validator) Size() (n int) { n += 1 + l + sovStaking(uint64(l)) l = m.MinSelfDelegation.Size() n += 1 + l + sovStaking(uint64(l)) - l = len(m.Orchestrator) - if l > 0 { - n += 1 + l + sovStaking(uint64(l)) - } l = len(m.EvmAddress) if l > 0 { n += 1 + l + sovStaking(uint64(l)) @@ -4438,38 +4422,6 @@ func (m *Validator) Unmarshal(dAtA []byte) error { } iNdEx = postIndex case 12: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Orchestrator", 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 - } - m.Orchestrator = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 13: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field EvmAddress", wireType) } diff --git a/x/staking/types/tx.pb.go b/x/staking/types/tx.pb.go index 11a2c89962c..e73d467092a 100644 --- a/x/staking/types/tx.pb.go +++ b/x/staking/types/tx.pb.go @@ -46,12 +46,9 @@ type MsgCreateValidator struct { ValidatorAddress string `protobuf:"bytes,5,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"` Pubkey *types.Any `protobuf:"bytes,6,opt,name=pubkey,proto3" json:"pubkey,omitempty"` Value types1.Coin `protobuf:"bytes,7,opt,name=value,proto3" json:"value"` - // The orchestrator field is a celes1... string (i.e. sdk.AccAddress) that - // references the key that is being delegated to. - Orchestrator string `protobuf:"bytes,8,opt,name=orchestrator,proto3" json:"orchestrator,omitempty"` // This is a hex encoded 0x EVM public key that will be used by this // validator on the target EVM chain. - EvmAddress string `protobuf:"bytes,9,opt,name=evm_address,json=evmAddress,proto3" json:"evm_address,omitempty"` + EvmAddress string `protobuf:"bytes,8,opt,name=evm_address,json=evmAddress,proto3" json:"evm_address,omitempty"` } func (m *MsgCreateValidator) Reset() { *m = MsgCreateValidator{} } @@ -134,8 +131,7 @@ type MsgEditValidator struct { // REF: #2373 CommissionRate *github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,3,opt,name=commission_rate,json=commissionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"commission_rate,omitempty"` MinSelfDelegation *github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,4,opt,name=min_self_delegation,json=minSelfDelegation,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"min_self_delegation,omitempty"` - Orchestrator string `protobuf:"bytes,5,opt,name=orchestrator,proto3" json:"orchestrator,omitempty"` - EvmAddress string `protobuf:"bytes,6,opt,name=evm_address,json=evmAddress,proto3" json:"evm_address,omitempty"` + EvmAddress string `protobuf:"bytes,5,opt,name=evm_address,json=evmAddress,proto3" json:"evm_address,omitempty"` } func (m *MsgEditValidator) Reset() { *m = MsgEditValidator{} } @@ -659,69 +655,67 @@ func init() { func init() { proto.RegisterFile("cosmos/staking/v1beta1/tx.proto", fileDescriptor_0926ef28816b35ab) } var fileDescriptor_0926ef28816b35ab = []byte{ - // 978 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x57, 0x4d, 0x6f, 0x1b, 0x45, - 0x18, 0xf6, 0xc6, 0xb1, 0x49, 0xdf, 0xd0, 0xa6, 0xdd, 0x24, 0xe0, 0xac, 0x2a, 0xbb, 0x72, 0x4b, - 0x1b, 0x15, 0xb2, 0xa6, 0xa1, 0x08, 0x54, 0xf5, 0x52, 0xd7, 0xad, 0xa8, 0x8a, 0x25, 0xb4, 0xa1, - 0x1c, 0x10, 0x92, 0xb5, 0x1f, 0x93, 0xf5, 0xca, 0xbb, 0x33, 0xee, 0xce, 0xd8, 0xaa, 0xaf, 0x9c, - 0xb8, 0xd1, 0x9f, 0xd0, 0x13, 0x07, 0xc4, 0x81, 0x43, 0x7f, 0x44, 0x85, 0x38, 0x54, 0x3d, 0x55, - 0x1c, 0x0a, 0x4a, 0x0e, 0x70, 0x44, 0xfc, 0x02, 0xb4, 0xb3, 0xb3, 0xe3, 0x8f, 0xb5, 0x37, 0x1b, - 0x94, 0x1e, 0x50, 0x4f, 0xb1, 0x66, 0x9e, 0xf7, 0x79, 0xdf, 0x79, 0xde, 0xaf, 0x0d, 0xd4, 0x6c, - 0x42, 0x03, 0x42, 0x1b, 0x94, 0x99, 0x3d, 0x0f, 0xbb, 0x8d, 0xe1, 0x35, 0x0b, 0x31, 0xf3, 0x5a, - 0x83, 0x3d, 0xd2, 0xfb, 0x21, 0x61, 0x44, 0x7d, 0x27, 0x06, 0xe8, 0x02, 0xa0, 0x0b, 0x80, 0xb6, - 0xe5, 0x12, 0xe2, 0xfa, 0xa8, 0xc1, 0x51, 0xd6, 0x60, 0xbf, 0x61, 0xe2, 0x51, 0x6c, 0xa2, 0xd5, - 0x66, 0xaf, 0x98, 0x17, 0x20, 0xca, 0xcc, 0xa0, 0x2f, 0x00, 0x1b, 0x2e, 0x71, 0x09, 0xff, 0xd9, - 0x88, 0x7e, 0x89, 0xd3, 0xad, 0xd8, 0x53, 0x27, 0xbe, 0x10, 0x6e, 0xe3, 0xab, 0xaa, 0x88, 0xd2, - 0x32, 0x29, 0x92, 0x21, 0xda, 0xc4, 0xc3, 0xe2, 0xfe, 0xd2, 0x82, 0x57, 0x24, 0x41, 0xc7, 0xa8, - 0x77, 0x05, 0x2a, 0xa0, 0x11, 0x22, 0xfa, 0x13, 0x5f, 0xd4, 0x7f, 0x28, 0x81, 0xda, 0xa6, 0xee, - 0xed, 0x10, 0x99, 0x0c, 0x7d, 0x65, 0xfa, 0x9e, 0x63, 0x32, 0x12, 0xaa, 0xf7, 0x61, 0xd5, 0x41, - 0xd4, 0x0e, 0xbd, 0x3e, 0xf3, 0x08, 0xae, 0x28, 0x17, 0x94, 0xed, 0xd5, 0xdd, 0x8b, 0xfa, 0x7c, - 0x41, 0xf4, 0xd6, 0x18, 0xda, 0x5c, 0x7e, 0xf6, 0xaa, 0x56, 0x30, 0x26, 0xad, 0xd5, 0x36, 0x80, - 0x4d, 0x82, 0xc0, 0xa3, 0x34, 0xe2, 0x5a, 0xe2, 0x5c, 0x57, 0x16, 0x71, 0xdd, 0x96, 0x48, 0xc3, - 0x64, 0x88, 0x0a, 0xbe, 0x09, 0x02, 0xd5, 0x87, 0xf5, 0xc0, 0xc3, 0x1d, 0x8a, 0xfc, 0xfd, 0x8e, - 0x83, 0x7c, 0xe4, 0x9a, 0x3c, 0xc6, 0xe2, 0x05, 0x65, 0xfb, 0x54, 0xf3, 0x66, 0x04, 0xff, 0xed, - 0x55, 0xed, 0xb2, 0xeb, 0xb1, 0xee, 0xc0, 0xd2, 0x6d, 0x12, 0x08, 0x3d, 0xc5, 0x9f, 0x1d, 0xea, - 0xf4, 0x1a, 0x6c, 0xd4, 0x47, 0x54, 0xbf, 0x87, 0xd9, 0x8b, 0xa7, 0x3b, 0x20, 0x02, 0xb9, 0x87, - 0x99, 0x71, 0x2e, 0xf0, 0xf0, 0x1e, 0xf2, 0xf7, 0x5b, 0x92, 0x56, 0xbd, 0x03, 0xe7, 0x84, 0x13, - 0x12, 0x76, 0x4c, 0xc7, 0x09, 0x11, 0xa5, 0x95, 0x65, 0xee, 0xab, 0xf2, 0xe2, 0xe9, 0xce, 0x86, - 0xb0, 0xbe, 0x15, 0xdf, 0xec, 0xb1, 0xd0, 0xc3, 0xae, 0x71, 0x56, 0x9a, 0x88, 0xf3, 0x88, 0x66, - 0x98, 0xa8, 0x2b, 0x69, 0x4a, 0x47, 0xd1, 0x48, 0x93, 0x84, 0xe6, 0x2e, 0x94, 0xfb, 0x03, 0xab, - 0x87, 0x46, 0x95, 0x32, 0x97, 0x71, 0x43, 0x8f, 0x0b, 0x4e, 0x4f, 0x0a, 0x4e, 0xbf, 0x85, 0x47, - 0xcd, 0xca, 0x2f, 0x63, 0x46, 0x3b, 0x1c, 0xf5, 0x19, 0xd1, 0xbf, 0x18, 0x58, 0xf7, 0xd1, 0xc8, - 0x10, 0xd6, 0xea, 0xc7, 0x50, 0x1a, 0x9a, 0xfe, 0x00, 0x55, 0xde, 0xe2, 0x34, 0x5b, 0x49, 0x36, - 0xa2, 0x2a, 0x9b, 0x48, 0x85, 0x97, 0xe4, 0x33, 0x46, 0xab, 0x75, 0x78, 0x9b, 0x84, 0x76, 0x17, - 0x51, 0x16, 0x46, 0x51, 0x55, 0x56, 0xa2, 0x07, 0x18, 0x53, 0x67, 0x6a, 0x0d, 0x56, 0xd1, 0x30, - 0x90, 0x6f, 0x3c, 0xc5, 0x21, 0x80, 0x86, 0x81, 0x78, 0xc3, 0x8d, 0xeb, 0xdf, 0x3d, 0xa9, 0x15, - 0xfe, 0x7a, 0x52, 0x2b, 0x7c, 0xfb, 0xe7, 0xcf, 0x57, 0xd3, 0xe2, 0xf2, 0xd3, 0x94, 0x56, 0xf5, - 0xf3, 0xa0, 0xa5, 0xeb, 0xd4, 0x40, 0xb4, 0x4f, 0x30, 0x45, 0xf5, 0x97, 0x45, 0x38, 0xdb, 0xa6, - 0xee, 0x1d, 0xc7, 0x63, 0xaf, 0xa9, 0x88, 0xe7, 0x26, 0x70, 0xe9, 0xd8, 0x09, 0x34, 0x61, 0x6d, - 0x5c, 0xca, 0x9d, 0xd0, 0x64, 0x48, 0x14, 0xee, 0xa7, 0x39, 0x8b, 0xb6, 0x85, 0xec, 0x89, 0xa2, - 0x6d, 0x21, 0xdb, 0x38, 0x63, 0x4f, 0xb5, 0x8c, 0xda, 0x9d, 0xdf, 0x1f, 0xcb, 0xc7, 0x72, 0x93, - 0xab, 0x37, 0x66, 0xcb, 0xa1, 0x74, 0x74, 0x39, 0x94, 0x53, 0xe5, 0x50, 0x9d, 0x2a, 0x87, 0x74, - 0xe2, 0x35, 0xa8, 0xcc, 0x66, 0x56, 0xa6, 0xfd, 0x6f, 0x05, 0x56, 0xdb, 0xd4, 0x15, 0x21, 0xa1, - 0xf9, 0xcd, 0xaa, 0x9c, 0x4c, 0xb3, 0x1e, 0x3f, 0xd7, 0x9f, 0x40, 0xd9, 0x0c, 0xc8, 0x00, 0x33, - 0x9e, 0xe2, 0x1c, 0x5d, 0x26, 0xe0, 0x37, 0xb4, 0xc5, 0xdd, 0x51, 0xdf, 0x84, 0xf5, 0x89, 0x17, - 0x4b, 0x25, 0x7e, 0x5d, 0xe2, 0x73, 0xbc, 0x89, 0x5c, 0x0f, 0x1b, 0xc8, 0x39, 0x61, 0x41, 0x3e, - 0x87, 0xcd, 0xb1, 0x20, 0x34, 0xb4, 0x73, 0x8b, 0xb2, 0x2e, 0xcd, 0xf6, 0x42, 0x7b, 0x2e, 0x9b, - 0x43, 0x99, 0x64, 0x2b, 0xe6, 0x66, 0x6b, 0x51, 0x96, 0x56, 0x79, 0xf9, 0xe4, 0x54, 0xee, 0xf1, - 0x69, 0x33, 0xa3, 0x66, 0x22, 0xb6, 0xda, 0xe6, 0x4d, 0xdc, 0xf7, 0x51, 0xd4, 0x05, 0x9d, 0x68, - 0xc5, 0x8b, 0xe1, 0xa2, 0xa5, 0xc6, 0xf1, 0x97, 0xc9, 0xfe, 0x6f, 0xae, 0x44, 0xce, 0x1f, 0xff, - 0x5e, 0x53, 0x78, 0xc3, 0x0a, 0xe3, 0xe8, 0xba, 0xfe, 0x8f, 0x02, 0xa7, 0xdb, 0xd4, 0x7d, 0x80, - 0x9d, 0x37, 0xa8, 0x8e, 0xf7, 0x61, 0x73, 0xea, 0xcd, 0xaf, 0x4b, 0xdc, 0x1f, 0x97, 0xe0, 0x7c, - 0xb4, 0x38, 0x4c, 0x6c, 0x23, 0xff, 0x01, 0xb6, 0x08, 0x76, 0x3c, 0xec, 0x1e, 0xb5, 0xe0, 0xff, - 0x77, 0x5a, 0xab, 0x57, 0x60, 0xcd, 0x8e, 0x96, 0x63, 0x24, 0x5a, 0x17, 0x79, 0x6e, 0x37, 0xee, - 0x87, 0xa2, 0x71, 0x26, 0x39, 0xfe, 0x8c, 0x9f, 0x66, 0x26, 0xe5, 0x32, 0x5c, 0xca, 0xd2, 0x2a, - 0xc9, 0xd1, 0xee, 0x4f, 0x25, 0x28, 0xb6, 0xa9, 0xab, 0x3e, 0x84, 0xb5, 0xd9, 0x2f, 0xc7, 0xab, - 0x8b, 0xf6, 0x6b, 0x7a, 0x7b, 0x6b, 0xbb, 0xf9, 0xb1, 0xb2, 0x3c, 0x7a, 0x70, 0x7a, 0x7a, 0xcb, - 0x6f, 0x67, 0x90, 0x4c, 0x21, 0xb5, 0x0f, 0xf3, 0x22, 0xa5, 0xb3, 0x6f, 0x60, 0x45, 0xee, 0x96, - 0x8b, 0x19, 0xd6, 0x09, 0x48, 0x7b, 0x3f, 0x07, 0x48, 0xb2, 0x3f, 0x84, 0xb5, 0xd9, 0x79, 0x9d, - 0xa5, 0xde, 0x0c, 0x36, 0x53, 0xbd, 0x45, 0x93, 0xcb, 0x02, 0x98, 0x18, 0x33, 0xef, 0x65, 0x30, - 0x8c, 0x61, 0xda, 0x4e, 0x2e, 0x98, 0xf4, 0xf1, 0xbd, 0x02, 0x5b, 0x8b, 0xdb, 0xed, 0x7a, 0x56, - 0xce, 0x17, 0x59, 0x69, 0x37, 0xff, 0x8b, 0x55, 0x12, 0x51, 0xf3, 0xee, 0xb3, 0x83, 0xaa, 0xf2, - 0xfc, 0xa0, 0xaa, 0xfc, 0x71, 0x50, 0x55, 0x1e, 0x1f, 0x56, 0x0b, 0xcf, 0x0f, 0xab, 0x85, 0x97, - 0x87, 0xd5, 0xc2, 0xd7, 0x1f, 0x64, 0x7e, 0x0a, 0x3d, 0x92, 0xff, 0x55, 0xf1, 0x8f, 0x22, 0xab, - 0xcc, 0x27, 0xcf, 0x47, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x2f, 0x13, 0xf7, 0x37, 0x3a, 0x0e, - 0x00, 0x00, + // 955 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x57, 0xcf, 0x6f, 0x1b, 0x45, + 0x14, 0xf6, 0xc6, 0x71, 0x08, 0x2f, 0x6a, 0xd3, 0x6e, 0x12, 0x70, 0x56, 0x95, 0x5d, 0xb9, 0xa5, + 0x8d, 0x0a, 0x59, 0xd3, 0x50, 0x04, 0xaa, 0x7a, 0xa9, 0xeb, 0x56, 0x54, 0xc5, 0x12, 0xda, 0x50, + 0x0e, 0x08, 0xc9, 0xda, 0x1f, 0x93, 0xf5, 0xc8, 0xbb, 0x33, 0xee, 0xce, 0xd8, 0xaa, 0xaf, 0x3d, + 0x71, 0xa3, 0x7f, 0x42, 0xcf, 0x88, 0x03, 0x87, 0xfc, 0x11, 0x15, 0xe2, 0x50, 0xf5, 0x84, 0x38, + 0x14, 0x94, 0x1c, 0xe0, 0x88, 0xf8, 0x0b, 0xd0, 0xce, 0xce, 0x8e, 0x7f, 0x6f, 0x37, 0x28, 0x3d, + 0x20, 0x4e, 0x5e, 0xcd, 0x7c, 0xef, 0x7b, 0x6f, 0xbf, 0xef, 0xcd, 0xbc, 0x35, 0x54, 0x5d, 0xca, + 0x42, 0xca, 0xea, 0x8c, 0xdb, 0x5d, 0x4c, 0xfc, 0xfa, 0xe0, 0xba, 0x83, 0xb8, 0x7d, 0xbd, 0xce, + 0x1f, 0x9b, 0xbd, 0x88, 0x72, 0xaa, 0xbf, 0x93, 0x00, 0x4c, 0x09, 0x30, 0x25, 0xc0, 0xd8, 0xf6, + 0x29, 0xf5, 0x03, 0x54, 0x17, 0x28, 0xa7, 0x7f, 0x50, 0xb7, 0xc9, 0x30, 0x09, 0x31, 0xaa, 0xd3, + 0x5b, 0x1c, 0x87, 0x88, 0x71, 0x3b, 0xec, 0x49, 0xc0, 0xa6, 0x4f, 0x7d, 0x2a, 0x1e, 0xeb, 0xf1, + 0x93, 0x5c, 0xdd, 0x4e, 0x32, 0xb5, 0x93, 0x0d, 0x99, 0x36, 0xd9, 0xaa, 0xc8, 0x2a, 0x1d, 0x9b, + 0x21, 0x55, 0xa2, 0x4b, 0x31, 0x91, 0xfb, 0x97, 0x17, 0xbc, 0x45, 0x5a, 0x74, 0x82, 0x7a, 0x57, + 0xa2, 0x42, 0x16, 0x23, 0xe2, 0x9f, 0x64, 0xa3, 0xf6, 0xa4, 0x04, 0x7a, 0x8b, 0xf9, 0x77, 0x22, + 0x64, 0x73, 0xf4, 0x95, 0x1d, 0x60, 0xcf, 0xe6, 0x34, 0xd2, 0x1f, 0xc0, 0x9a, 0x87, 0x98, 0x1b, + 0xe1, 0x1e, 0xc7, 0x94, 0x94, 0xb5, 0x8b, 0xda, 0xce, 0xda, 0xde, 0x25, 0x73, 0xbe, 0x20, 0x66, + 0x73, 0x04, 0x6d, 0x2c, 0x3f, 0x7f, 0x55, 0x2d, 0x58, 0xe3, 0xd1, 0x7a, 0x0b, 0xc0, 0xa5, 0x61, + 0x88, 0x19, 0x8b, 0xb9, 0x96, 0x04, 0xd7, 0xd5, 0x45, 0x5c, 0x77, 0x14, 0xd2, 0xb2, 0x39, 0x62, + 0x92, 0x6f, 0x8c, 0x40, 0x0f, 0x60, 0x23, 0xc4, 0xa4, 0xcd, 0x50, 0x70, 0xd0, 0xf6, 0x50, 0x80, + 0x7c, 0x5b, 0xd4, 0x58, 0xbc, 0xa8, 0xed, 0xbc, 0xdd, 0xb8, 0x15, 0xc3, 0x7f, 0x7d, 0x55, 0xbd, + 0xe2, 0x63, 0xde, 0xe9, 0x3b, 0xa6, 0x4b, 0x43, 0xa9, 0xa7, 0xfc, 0xd9, 0x65, 0x5e, 0xb7, 0xce, + 0x87, 0x3d, 0xc4, 0xcc, 0xfb, 0x84, 0xbf, 0x3c, 0xdc, 0x05, 0x59, 0xc8, 0x7d, 0xc2, 0xad, 0xf3, + 0x21, 0x26, 0xfb, 0x28, 0x38, 0x68, 0x2a, 0x5a, 0xfd, 0x2e, 0x9c, 0x97, 0x49, 0x68, 0xd4, 0xb6, + 0x3d, 0x2f, 0x42, 0x8c, 0x95, 0x97, 0x45, 0xae, 0xf2, 0xcb, 0xc3, 0xdd, 0x4d, 0x19, 0x7d, 0x3b, + 0xd9, 0xd9, 0xe7, 0x11, 0x26, 0xbe, 0x75, 0x4e, 0x85, 0xc8, 0xf5, 0x98, 0x66, 0x90, 0xaa, 0xab, + 0x68, 0x4a, 0xaf, 0xa3, 0x51, 0x21, 0x29, 0xcd, 0x3d, 0x58, 0xe9, 0xf5, 0x9d, 0x2e, 0x1a, 0x96, + 0x57, 0x84, 0x8c, 0x9b, 0x66, 0xd2, 0x70, 0x66, 0xda, 0x70, 0xe6, 0x6d, 0x32, 0x6c, 0x94, 0x7f, + 0x1a, 0x31, 0xba, 0xd1, 0xb0, 0xc7, 0xa9, 0xf9, 0x45, 0xdf, 0x79, 0x80, 0x86, 0x96, 0x8c, 0xd6, + 0x3f, 0x86, 0xd2, 0xc0, 0x0e, 0xfa, 0xa8, 0xfc, 0x96, 0xa0, 0xd9, 0x4e, 0xdd, 0x88, 0xbb, 0x6c, + 0xcc, 0x0a, 0x9c, 0xfa, 0x99, 0xa0, 0xf5, 0x2a, 0xac, 0xa1, 0x41, 0xa8, 0xea, 0x5f, 0x8d, 0xeb, + 0xb7, 0x00, 0x0d, 0x42, 0x59, 0xdf, 0xcd, 0x1b, 0xdf, 0x3e, 0xab, 0x16, 0xfe, 0x7c, 0x56, 0x2d, + 0x3c, 0xf9, 0xe3, 0xc7, 0x6b, 0xb3, 0xc2, 0x89, 0xd5, 0x19, 0x1d, 0x6a, 0x17, 0xc0, 0x98, 0xed, + 0x41, 0x0b, 0xb1, 0x1e, 0x25, 0x0c, 0xd5, 0x0e, 0x8b, 0x70, 0xae, 0xc5, 0xfc, 0xbb, 0x1e, 0xe6, + 0x6f, 0xa8, 0x41, 0xe7, 0x9a, 0xb3, 0x74, 0x62, 0x73, 0x6c, 0x58, 0x1f, 0xb5, 0x69, 0x3b, 0xb2, + 0x39, 0x92, 0x4d, 0xf9, 0x69, 0xce, 0x86, 0x6c, 0x22, 0x77, 0xac, 0x21, 0x9b, 0xc8, 0xb5, 0xce, + 0xba, 0x13, 0xc7, 0x41, 0xef, 0xcc, 0xef, 0xfd, 0xe5, 0x13, 0xa5, 0xc9, 0xd5, 0xf7, 0x53, 0x56, + 0x97, 0x66, 0xac, 0xae, 0x4c, 0x58, 0x3d, 0x6b, 0xaa, 0x01, 0xe5, 0x69, 0xd7, 0x94, 0xa5, 0x7f, + 0x69, 0xb0, 0xd6, 0x62, 0xbe, 0x4c, 0x87, 0xe6, 0x1f, 0x32, 0xed, 0x74, 0x0e, 0xd9, 0xc9, 0x7d, + 0xfc, 0x04, 0x56, 0xec, 0x90, 0xf6, 0x09, 0x17, 0xf6, 0xe5, 0x38, 0x1d, 0x12, 0x7e, 0xd3, 0x58, + 0xdc, 0xf9, 0xb5, 0x2d, 0xd8, 0x18, 0x7b, 0x63, 0xa5, 0xc4, 0xcf, 0x4b, 0xe2, 0xfe, 0x6d, 0x20, + 0x1f, 0x13, 0x0b, 0x79, 0xa7, 0x2c, 0xc8, 0xe7, 0xb0, 0x35, 0x12, 0x84, 0x45, 0x6e, 0x6e, 0x51, + 0x36, 0x54, 0xd8, 0x7e, 0xe4, 0xce, 0x65, 0xf3, 0x18, 0x57, 0x6c, 0xc5, 0xdc, 0x6c, 0x4d, 0xc6, + 0x67, 0x55, 0x5e, 0x3e, 0x3d, 0x95, 0xbb, 0xe2, 0x26, 0x99, 0x52, 0x33, 0x15, 0x5b, 0x6f, 0x89, + 0x03, 0xda, 0x0b, 0x50, 0xdc, 0xe1, 0xed, 0x78, 0x34, 0xcb, 0x8b, 0xc3, 0x98, 0xb9, 0x46, 0xbf, + 0x4c, 0xe7, 0x76, 0x63, 0x35, 0x4e, 0xfe, 0xf4, 0xb7, 0xaa, 0x26, 0x0e, 0xa3, 0x0c, 0x8e, 0xb7, + 0x6b, 0x7f, 0x6b, 0x70, 0xa6, 0xc5, 0xfc, 0x87, 0xc4, 0xfb, 0x1f, 0xf5, 0xf1, 0x01, 0x6c, 0x4d, + 0xbc, 0xf3, 0x9b, 0x12, 0xf7, 0xfb, 0x25, 0xb8, 0x10, 0x0f, 0x05, 0x9b, 0xb8, 0x28, 0x78, 0x48, + 0x1c, 0x4a, 0x3c, 0x4c, 0xfc, 0xd7, 0x0d, 0xe6, 0xff, 0x9c, 0xd6, 0xfa, 0x55, 0x58, 0x77, 0xe3, + 0xc1, 0x17, 0x8b, 0xd6, 0x41, 0xd8, 0xef, 0x24, 0xe7, 0xa1, 0x68, 0x9d, 0x4d, 0x97, 0x3f, 0x13, + 0xab, 0x99, 0xa6, 0x5c, 0x81, 0xcb, 0x59, 0x5a, 0xa5, 0x1e, 0xed, 0xfd, 0x50, 0x82, 0x62, 0x8b, + 0xf9, 0xfa, 0x23, 0x58, 0x9f, 0xfe, 0xe2, 0xbb, 0xb6, 0x68, 0x76, 0xce, 0x4e, 0x66, 0x63, 0x2f, + 0x3f, 0x56, 0xb5, 0x47, 0x17, 0xce, 0x4c, 0x4e, 0xf0, 0x9d, 0x0c, 0x92, 0x09, 0xa4, 0xf1, 0x61, + 0x5e, 0xa4, 0x4a, 0xf6, 0x0d, 0xac, 0xaa, 0xd9, 0x72, 0x29, 0x23, 0x3a, 0x05, 0x19, 0xef, 0xe7, + 0x00, 0x29, 0xf6, 0x47, 0xb0, 0x3e, 0x7d, 0x5f, 0x67, 0xa9, 0x37, 0x85, 0xcd, 0x54, 0x6f, 0xd1, + 0xcd, 0xe5, 0x00, 0x8c, 0x5d, 0x33, 0xef, 0x65, 0x30, 0x8c, 0x60, 0xc6, 0x6e, 0x2e, 0x98, 0xca, + 0xf1, 0x9d, 0x06, 0xdb, 0x8b, 0x8f, 0xdb, 0x8d, 0x2c, 0xcf, 0x17, 0x45, 0x19, 0xb7, 0xfe, 0x4d, + 0x54, 0x5a, 0x51, 0xe3, 0xde, 0xf3, 0xa3, 0x8a, 0xf6, 0xe2, 0xa8, 0xa2, 0xfd, 0x7e, 0x54, 0xd1, + 0x9e, 0x1e, 0x57, 0x0a, 0x2f, 0x8e, 0x2b, 0x85, 0x5f, 0x8e, 0x2b, 0x85, 0xaf, 0x3f, 0xc8, 0xfc, + 0xcc, 0x79, 0xac, 0xfe, 0x0d, 0x89, 0x0f, 0x1e, 0x67, 0x45, 0xdc, 0x3c, 0x1f, 0xfd, 0x13, 0x00, + 0x00, 0xff, 0xff, 0x9e, 0x10, 0xd4, 0xf8, 0xf2, 0x0d, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1033,13 +1027,6 @@ func (m *MsgCreateValidator) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.EvmAddress) i = encodeVarintTx(dAtA, i, uint64(len(m.EvmAddress))) i-- - dAtA[i] = 0x4a - } - if len(m.Orchestrator) > 0 { - i -= len(m.Orchestrator) - copy(dAtA[i:], m.Orchestrator) - i = encodeVarintTx(dAtA, i, uint64(len(m.Orchestrator))) - i-- dAtA[i] = 0x42 } { @@ -1159,13 +1146,6 @@ func (m *MsgEditValidator) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.EvmAddress) i = encodeVarintTx(dAtA, i, uint64(len(m.EvmAddress))) i-- - dAtA[i] = 0x32 - } - if len(m.Orchestrator) > 0 { - i -= len(m.Orchestrator) - copy(dAtA[i:], m.Orchestrator) - i = encodeVarintTx(dAtA, i, uint64(len(m.Orchestrator))) - i-- dAtA[i] = 0x2a } if m.MinSelfDelegation != nil { @@ -1580,10 +1560,6 @@ func (m *MsgCreateValidator) Size() (n int) { } l = m.Value.Size() n += 1 + l + sovTx(uint64(l)) - l = len(m.Orchestrator) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } l = len(m.EvmAddress) if l > 0 { n += 1 + l + sovTx(uint64(l)) @@ -1620,10 +1596,6 @@ func (m *MsgEditValidator) Size() (n int) { l = m.MinSelfDelegation.Size() n += 1 + l + sovTx(uint64(l)) } - l = len(m.Orchestrator) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } l = len(m.EvmAddress) if l > 0 { n += 1 + l + sovTx(uint64(l)) @@ -2032,38 +2004,6 @@ func (m *MsgCreateValidator) Unmarshal(dAtA []byte) error { } iNdEx = postIndex case 8: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Orchestrator", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Orchestrator = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 9: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field EvmAddress", wireType) } @@ -2333,38 +2273,6 @@ func (m *MsgEditValidator) Unmarshal(dAtA []byte) error { } iNdEx = postIndex case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Orchestrator", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Orchestrator = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 6: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field EvmAddress", wireType) } diff --git a/x/staking/types/validator.go b/x/staking/types/validator.go index b50d77c9b2d..c209fc5c62e 100644 --- a/x/staking/types/validator.go +++ b/x/staking/types/validator.go @@ -42,7 +42,7 @@ var _ ValidatorI = Validator{} // NewValidator constructs a new Validator // //nolint:interfacer -func NewValidator(operator sdk.ValAddress, pubKey cryptotypes.PubKey, description Description, orchAddr sdk.AccAddress, evmAddress common.Address) (Validator, error) { +func NewValidator(operator sdk.ValAddress, pubKey cryptotypes.PubKey, description Description, evmAddress common.Address) (Validator, error) { pkAny, err := codectypes.NewAnyWithValue(pubKey) if err != nil { return Validator{}, err @@ -60,7 +60,6 @@ func NewValidator(operator sdk.ValAddress, pubKey cryptotypes.PubKey, descriptio UnbondingTime: time.Unix(0, 0).UTC(), Commission: NewCommission(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()), MinSelfDelegation: sdk.OneInt(), - Orchestrator: orchAddr.String(), EvmAddress: evmAddress.Hex(), }, nil } diff --git a/x/staking/types/validator_test.go b/x/staking/types/validator_test.go index fab9cc7d173..d9a172cc3b4 100644 --- a/x/staking/types/validator_test.go +++ b/x/staking/types/validator_test.go @@ -22,13 +22,13 @@ import ( func TestValidatorTestEquivalent(t *testing.T) { randomEVMAddress1, err := teststaking.RandomEVMAddress() require.NoError(t, err) - val1 := newValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEVMAddress1) - val2 := newValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEVMAddress1) + val1 := newValidator(t, valAddr1, pk1, *randomEVMAddress1) + val2 := newValidator(t, valAddr1, pk1, *randomEVMAddress1) require.Equal(t, val1.String(), val2.String()) randomEVMAddress2, err := teststaking.RandomEVMAddress() require.NoError(t, err) - val2 = newValidator(t, valAddr2, pk2, sdk.AccAddress(pk2.Address()), *randomEVMAddress2) + val2 = newValidator(t, valAddr2, pk2, *randomEVMAddress2) require.NotEqual(t, val1.String(), val2.String()) } @@ -64,7 +64,7 @@ func TestUpdateDescription(t *testing.T) { func TestABCIValidatorUpdate(t *testing.T) { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator := newValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEVMAddress) + validator := newValidator(t, valAddr1, pk1, *randomEVMAddress) abciVal := validator.ABCIValidatorUpdate(sdk.DefaultPowerReduction) pk, err := validator.TmConsPublicKey() require.NoError(t, err) @@ -75,7 +75,7 @@ func TestABCIValidatorUpdate(t *testing.T) { func TestABCIValidatorUpdateZero(t *testing.T) { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator := newValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEVMAddress) + validator := newValidator(t, valAddr1, pk1, *randomEVMAddress) abciVal := validator.ABCIValidatorUpdateZero() pk, err := validator.TmConsPublicKey() require.NoError(t, err) @@ -111,7 +111,7 @@ func TestRemoveTokens(t *testing.T) { func TestAddTokensValidatorBonded(t *testing.T) { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator := newValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEVMAddress) + validator := newValidator(t, valAddr1, pk1, *randomEVMAddress) validator = validator.UpdateStatus(types.Bonded) validator, delShares := validator.AddTokensFromDel(sdk.NewInt(10)) @@ -123,7 +123,7 @@ func TestAddTokensValidatorBonded(t *testing.T) { func TestAddTokensValidatorUnbonding(t *testing.T) { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator := newValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEVMAddress) + validator := newValidator(t, valAddr1, pk1, *randomEVMAddress) validator = validator.UpdateStatus(types.Unbonding) validator, delShares := validator.AddTokensFromDel(sdk.NewInt(10)) @@ -136,7 +136,7 @@ func TestAddTokensValidatorUnbonding(t *testing.T) { func TestAddTokensValidatorUnbonded(t *testing.T) { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator := newValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEVMAddress) + validator := newValidator(t, valAddr1, pk1, *randomEVMAddress) validator = validator.UpdateStatus(types.Unbonded) validator, delShares := validator.AddTokensFromDel(sdk.NewInt(10)) @@ -172,7 +172,7 @@ func TestRemoveDelShares(t *testing.T) { func TestAddTokensFromDel(t *testing.T) { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator := newValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEVMAddress) + validator := newValidator(t, valAddr1, pk1, *randomEVMAddress) validator, shares := validator.AddTokensFromDel(sdk.NewInt(6)) require.True(sdk.DecEq(t, sdk.NewDec(6), shares)) @@ -188,7 +188,7 @@ func TestAddTokensFromDel(t *testing.T) { func TestUpdateStatus(t *testing.T) { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator := newValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEVMAddress) + validator := newValidator(t, valAddr1, pk1, *randomEVMAddress) validator, _ = validator.AddTokensFromDel(sdk.NewInt(100)) require.Equal(t, types.Unbonded, validator.Status) require.Equal(t, int64(100), validator.Tokens.Int64()) @@ -218,7 +218,7 @@ func TestPossibleOverflow(t *testing.T) { func TestValidatorMarshalUnmarshalJSON(t *testing.T) { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - validator := newValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEVMAddress) + validator := newValidator(t, valAddr1, pk1, *randomEVMAddress) js, err := legacy.Cdc.MarshalJSON(validator) require.NoError(t, err) require.NotEmpty(t, js) @@ -232,7 +232,7 @@ func TestValidatorMarshalUnmarshalJSON(t *testing.T) { func TestValidatorSetInitialCommission(t *testing.T) { randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - val := newValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEVMAddress) + val := newValidator(t, valAddr1, pk1, *randomEVMAddress) testCases := []struct { validator types.Validator commission types.Commission @@ -275,7 +275,7 @@ func TestValidatorsSortDeterminism(t *testing.T) { pk := ed25519.GenPrivKey().PubKey() randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - vals[i] = newValidator(t, sdk.ValAddress(pk.Address()), pk, sdk.AccAddress(pk.Address()), *randomEVMAddress) + vals[i] = newValidator(t, sdk.ValAddress(pk.Address()), pk, *randomEVMAddress) } // Save sorted copy @@ -304,7 +304,7 @@ func TestValidatorsSortTendermint(t *testing.T) { pk2 := ed25519.GenPrivKey().PubKey() randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - vals[i] = newValidator(t, sdk.ValAddress(pk2.Address()), pk, sdk.AccAddress(pk.Address()), *randomEVMAddress) + vals[i] = newValidator(t, sdk.ValAddress(pk2.Address()), pk, *randomEVMAddress) vals[i].Status = types.Bonded vals[i].Tokens = sdk.NewInt(rand.Int63()) } @@ -338,7 +338,7 @@ func TestValidatorToTm(t *testing.T) { pk := ed25519.GenPrivKey().PubKey() randomEVMAddress, err := teststaking.RandomEVMAddress() require.NoError(t, err) - val := newValidator(t, sdk.ValAddress(pk.Address()), pk, sdk.AccAddress(pk.Address()), *randomEVMAddress) + val := newValidator(t, sdk.ValAddress(pk.Address()), pk, *randomEVMAddress) val.Status = types.Bonded val.Tokens = sdk.NewInt(rand.Int63()) vals[i] = val @@ -373,8 +373,8 @@ func mkValidator(tokens int64, shares sdk.Dec) types.Validator { } // Creates a new validators and asserts the error check. -func newValidator(t *testing.T, operator sdk.ValAddress, pubKey cryptotypes.PubKey, orchAddr sdk.AccAddress, evmAddr common.Address) types.Validator { - v, err := types.NewValidator(operator, pubKey, types.Description{}, orchAddr, evmAddr) +func newValidator(t *testing.T, operator sdk.ValAddress, pubKey cryptotypes.PubKey, evmAddr common.Address) types.Validator { + v, err := types.NewValidator(operator, pubKey, types.Description{}, evmAddr) require.NoError(t, err) return v }