diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 24ca58bfb2a4..0c647a48e8ad 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -434,14 +434,6 @@ jobs: run: | cd simapp go test -mod=readonly -timeout 30m -tags='app_v1 norace ledger test_ledger_mock rocksdb_build' ./... - - name: sonarcloud - if: ${{ env.GIT_DIFF && !github.event.pull_request.draft && env.SONAR_TOKEN != null }} - uses: SonarSource/sonarcloud-github-action@master - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - with: - projectBaseDir: simapp/ test-collections: runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index e74d19bc514e..38af247d82cb 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ *.swm *.swn *.pyc +*.fail # private files private[.-]* diff --git a/CHANGELOG.md b/CHANGELOG.md index 7235d0e59f78..eaed80a2fe97 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,7 +38,45 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## [Unreleased] +## [v0.50.8-lsm](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.50.8)-lsm + +This is a special cosmos-sdk release with support LSM and some backports. + +Previous version: [v0.47.16-ics-lsm](https://github.com/cosmos/cosmos-sdk/tree/v0.47.16-ics-lsm) +Previous feature branch: [feature/v0.47.x-ics-lsm](https://github.com/cosmos/cosmos-sdk/tree/feature/v0.47.x-ics-lsm). +Initial v0.47.x LSM update PR: [#18694](https://github.com/cosmos/cosmos-sdk/pull/18694) + +## Features +* (x/staking) [#20975](https://github.com/cosmos/cosmos-sdk/pull/20975) Port x/staking LSM changes + +## Improvements +Backported PRs from main that were included on [feature/v0.47.x-ics-lsm](https://github.com/cosmos/cosmos-sdk/tree/feature/v0.47.x-ics-lsm) +* https://github.com/cosmos/cosmos-sdk/pull/19056 +* https://github.com/cosmos/cosmos-sdk/pull/19076 +* https://github.com/cosmos/cosmos-sdk/pull/19491 +* https://github.com/cosmos/cosmos-sdk/pull/19614 +* https://github.com/cosmos/cosmos-sdk/pull/20444 + + +## [v0.50.8](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.50.8) - 2024-07-15 + +## Features + +* (client) [#20690](https://github.com/cosmos/cosmos-sdk/pull/20690) Import mnemonic from file + +## Improvements + +* (x/authz,x/feegrant) [#20590](https://github.com/cosmos/cosmos-sdk/pull/20590) Provide updated keeper in depinject for authz and feegrant modules. +* [#20631](https://github.com/cosmos/cosmos-sdk/pull/20631) Fix json parsing in the wait-tx command. +* (x/auth) [#20438](https://github.com/cosmos/cosmos-sdk/pull/20438) Add `--skip-signature-verification` flag to multisign command to allow nested multisigs. + +## Bug Fixes + +* (simulation) [#17911](https://github.com/cosmos/cosmos-sdk/pull/17911) Fix all problems with executing command `make test-sim-custom-genesis-fast` for simulation test. +* (simulation) [#18196](https://github.com/cosmos/cosmos-sdk/pull/18196) Fix the problem of `validator set is empty after InitGenesis` in simulation test. + ## [v0.50.7](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.50.7) - 2024-06-04 +* (x/authz) [#513](https://github.com/osmosis-labs/cosmos-sdk/pull/513) Limit expired authz grant pruning to 200 per block. ### Improvements @@ -131,6 +169,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Improvements +* (x/staking) [#20444](https://github.com/cosmos/cosmos-sdk/pull/20444) Disable tokenization of shares from redelegations. * (x/bank) [#18956](https://github.com/cosmos/cosmos-sdk/pull/18956) Introduced a new `DenomOwnersByQuery` query method for `DenomOwners`, which accepts the denom value as a query string parameter, resolving issues with denoms containing slashes. * (x/gov) [#18707](https://github.com/cosmos/cosmos-sdk/pull/18707) Improve genesis validation. * (x/auth/tx) [#18772](https://github.com/cosmos/cosmos-sdk/pull/18772) Remove misleading gas wanted from tx simulation failure log. @@ -283,6 +322,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### State Machine Breaking +* (x/staking) [#19614](https://github.com/cosmos/cosmos-sdk/pull/19614) Facilitate the tokenization of vested delegation in the LSM module. * (x/gov) [#18146](https://github.com/cosmos/cosmos-sdk/pull/18146) Add denom check to reject denoms outside of those listed in `MinDeposit`. A new `MinDepositRatio` param is added (with a default value of `0.001`) and now deposits are required to be at least `MinDepositRatio*MinDeposit` to be accepted. * (x/group,x/gov) [#16235](https://github.com/cosmos/cosmos-sdk/pull/16235) A group and gov proposal is rejected if the proposal metadata title and summary do not match the proposal title and summary. * (baseapp) [#15930](https://github.com/cosmos/cosmos-sdk/pull/15930) change vote info provided by prepare and process proposal to the one in the block. diff --git a/Makefile b/Makefile index aebce021c8ea..f6f8b4f4f54d 100644 --- a/Makefile +++ b/Makefile @@ -277,9 +277,9 @@ test-sim-nondeterminism-streaming: test-sim-custom-genesis-fast: @echo "Running custom genesis simulation..." - @echo "By default, ${HOME}/.gaiad/config/genesis.json will be used." - @cd ${CURRENT_DIR}/simapp && go test -mod=readonly -run TestFullAppSimulation -Genesis=${HOME}/.gaiad/config/genesis.json \ - -Enabled=true -NumBlocks=100 -BlockSize=200 -Commit=true -Seed=99 -Period=5 -v -timeout 24h + @echo "By default, ${HOME}/.simapp/config/genesis.json will be used." + @cd ${CURRENT_DIR}/simapp && go test -mod=readonly -run TestFullAppSimulation -Genesis=${HOME}/.simapp/config/genesis.json \ + -Enabled=true -NumBlocks=100 -BlockSize=200 -Commit=true -Seed=99 -Period=5 -SigverifyTx=false -v -timeout 24h test-sim-import-export: runsim @echo "Running application import/export simulation. This may take several minutes..." @@ -291,8 +291,8 @@ test-sim-after-import: runsim test-sim-custom-genesis-multi-seed: runsim @echo "Running multi-seed custom genesis simulation..." - @echo "By default, ${HOME}/.gaiad/config/genesis.json will be used." - @cd ${CURRENT_DIR}/simapp && $(BINDIR)/runsim -Genesis=${HOME}/.gaiad/config/genesis.json -SimAppPkg=. -ExitOnFail 400 5 TestFullAppSimulation + @echo "By default, ${HOME}/.simapp/config/genesis.json will be used." + @cd ${CURRENT_DIR}/simapp && $(BINDIR)/runsim -Genesis=${HOME}/.simapp/config/genesis.json -SigverifyTx=false -SimAppPkg=. -ExitOnFail 400 5 TestFullAppSimulation test-sim-multi-seed-long: runsim @echo "Running long multi-seed application simulation. This may take awhile!" diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index de11d596e1cf..b012393a4b2b 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,4 +1,4 @@ -# Cosmos SDK v0.50.7 Release Notes +# Cosmos SDK v0.50.8 Release Notes 💬 [**Release Discussion**](https://github.com/orgs/cosmos/discussions/58) @@ -8,14 +8,12 @@ For this month patch release of the v0.50.x line, a few improvements were added Notably, we added and fixed the following: -* Add extra checks in x/consensus `MsgUpdateParams` to prevent footguns when updating the consensus parameters. - * Forgetting a field in a x/consensus parameter change gov proposal could lead to a chain halt. - * The fix is in theory consensus breaking, but in practice, it is only a footgun prevention (the path only triggers if the proposal was executed and was invalid). Please ensure that all validators are on v0.50.7 before the execution of a `x/consensus` params update proposal. -* Remove txs from the mempool when they fail in RecheckTX +* Allow to import private key from mnemonic file using ` keys add testing --recover --source ./mnemonic.txt` +* Fixed the json parsing in `simd q wait-tx` ## 📝 Changelog -Check out the [changelog](https://github.com/cosmos/cosmos-sdk/blob/v0.50.7/CHANGELOG.md) for an exhaustive list of changes, or [compare changes](https://github.com/cosmos/cosmos-sdk/compare/release/v0.50.6...v0.50.7) from the last release. +Check out the [changelog](https://github.com/cosmos/cosmos-sdk/blob/v0.50.8/CHANGELOG.md) for an exhaustive list of changes, or [compare changes](https://github.com/cosmos/cosmos-sdk/compare/v0.50.7...v0.50.8) from the last release. Refer to the [upgrading guide](https://github.com/cosmos/cosmos-sdk/blob/release/v0.50.x/UPGRADING.md) when migrating from `v0.47.x` to `v0.50.1`. Note, that the next SDK release, v0.51, will not include `x/params` migration, when migrating from < v0.47, v0.50.x **or** v0.47.x, is a mandatory migration. diff --git a/api/cosmos/distribution/v1beta1/distribution.pulsar.go b/api/cosmos/distribution/v1beta1/distribution.pulsar.go index 9248ffdf2e64..a1a3ae953ce4 100644 --- a/api/cosmos/distribution/v1beta1/distribution.pulsar.go +++ b/api/cosmos/distribution/v1beta1/distribution.pulsar.go @@ -4146,6 +4146,548 @@ func (x *fastReflection_FeePool) ProtoMethods() *protoiface.Methods { } } +var _ protoreflect.List = (*_TokenizeShareRecordReward_2_list)(nil) + +type _TokenizeShareRecordReward_2_list struct { + list *[]*v1beta1.DecCoin +} + +func (x *_TokenizeShareRecordReward_2_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_TokenizeShareRecordReward_2_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_TokenizeShareRecordReward_2_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*v1beta1.DecCoin) + (*x.list)[i] = concreteValue +} + +func (x *_TokenizeShareRecordReward_2_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*v1beta1.DecCoin) + *x.list = append(*x.list, concreteValue) +} + +func (x *_TokenizeShareRecordReward_2_list) AppendMutable() protoreflect.Value { + v := new(v1beta1.DecCoin) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_TokenizeShareRecordReward_2_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_TokenizeShareRecordReward_2_list) NewElement() protoreflect.Value { + v := new(v1beta1.DecCoin) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_TokenizeShareRecordReward_2_list) IsValid() bool { + return x.list != nil +} + +var ( + md_TokenizeShareRecordReward protoreflect.MessageDescriptor + fd_TokenizeShareRecordReward_record_id protoreflect.FieldDescriptor + fd_TokenizeShareRecordReward_reward protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_distribution_v1beta1_distribution_proto_init() + md_TokenizeShareRecordReward = File_cosmos_distribution_v1beta1_distribution_proto.Messages().ByName("TokenizeShareRecordReward") + fd_TokenizeShareRecordReward_record_id = md_TokenizeShareRecordReward.Fields().ByName("record_id") + fd_TokenizeShareRecordReward_reward = md_TokenizeShareRecordReward.Fields().ByName("reward") +} + +var _ protoreflect.Message = (*fastReflection_TokenizeShareRecordReward)(nil) + +type fastReflection_TokenizeShareRecordReward TokenizeShareRecordReward + +func (x *TokenizeShareRecordReward) ProtoReflect() protoreflect.Message { + return (*fastReflection_TokenizeShareRecordReward)(x) +} + +func (x *TokenizeShareRecordReward) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_distribution_v1beta1_distribution_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_TokenizeShareRecordReward_messageType fastReflection_TokenizeShareRecordReward_messageType +var _ protoreflect.MessageType = fastReflection_TokenizeShareRecordReward_messageType{} + +type fastReflection_TokenizeShareRecordReward_messageType struct{} + +func (x fastReflection_TokenizeShareRecordReward_messageType) Zero() protoreflect.Message { + return (*fastReflection_TokenizeShareRecordReward)(nil) +} +func (x fastReflection_TokenizeShareRecordReward_messageType) New() protoreflect.Message { + return new(fastReflection_TokenizeShareRecordReward) +} +func (x fastReflection_TokenizeShareRecordReward_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_TokenizeShareRecordReward +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_TokenizeShareRecordReward) Descriptor() protoreflect.MessageDescriptor { + return md_TokenizeShareRecordReward +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_TokenizeShareRecordReward) Type() protoreflect.MessageType { + return _fastReflection_TokenizeShareRecordReward_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_TokenizeShareRecordReward) New() protoreflect.Message { + return new(fastReflection_TokenizeShareRecordReward) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_TokenizeShareRecordReward) Interface() protoreflect.ProtoMessage { + return (*TokenizeShareRecordReward)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_TokenizeShareRecordReward) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.RecordId != uint64(0) { + value := protoreflect.ValueOfUint64(x.RecordId) + if !f(fd_TokenizeShareRecordReward_record_id, value) { + return + } + } + if len(x.Reward) != 0 { + value := protoreflect.ValueOfList(&_TokenizeShareRecordReward_2_list{list: &x.Reward}) + if !f(fd_TokenizeShareRecordReward_reward, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_TokenizeShareRecordReward) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.distribution.v1beta1.TokenizeShareRecordReward.record_id": + return x.RecordId != uint64(0) + case "cosmos.distribution.v1beta1.TokenizeShareRecordReward.reward": + return len(x.Reward) != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.TokenizeShareRecordReward")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.TokenizeShareRecordReward does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_TokenizeShareRecordReward) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.distribution.v1beta1.TokenizeShareRecordReward.record_id": + x.RecordId = uint64(0) + case "cosmos.distribution.v1beta1.TokenizeShareRecordReward.reward": + x.Reward = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.TokenizeShareRecordReward")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.TokenizeShareRecordReward does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_TokenizeShareRecordReward) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.distribution.v1beta1.TokenizeShareRecordReward.record_id": + value := x.RecordId + return protoreflect.ValueOfUint64(value) + case "cosmos.distribution.v1beta1.TokenizeShareRecordReward.reward": + if len(x.Reward) == 0 { + return protoreflect.ValueOfList(&_TokenizeShareRecordReward_2_list{}) + } + listValue := &_TokenizeShareRecordReward_2_list{list: &x.Reward} + return protoreflect.ValueOfList(listValue) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.TokenizeShareRecordReward")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.TokenizeShareRecordReward does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_TokenizeShareRecordReward) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.distribution.v1beta1.TokenizeShareRecordReward.record_id": + x.RecordId = value.Uint() + case "cosmos.distribution.v1beta1.TokenizeShareRecordReward.reward": + lv := value.List() + clv := lv.(*_TokenizeShareRecordReward_2_list) + x.Reward = *clv.list + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.TokenizeShareRecordReward")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.TokenizeShareRecordReward does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_TokenizeShareRecordReward) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.distribution.v1beta1.TokenizeShareRecordReward.reward": + if x.Reward == nil { + x.Reward = []*v1beta1.DecCoin{} + } + value := &_TokenizeShareRecordReward_2_list{list: &x.Reward} + return protoreflect.ValueOfList(value) + case "cosmos.distribution.v1beta1.TokenizeShareRecordReward.record_id": + panic(fmt.Errorf("field record_id of message cosmos.distribution.v1beta1.TokenizeShareRecordReward is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.TokenizeShareRecordReward")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.TokenizeShareRecordReward does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_TokenizeShareRecordReward) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.distribution.v1beta1.TokenizeShareRecordReward.record_id": + return protoreflect.ValueOfUint64(uint64(0)) + case "cosmos.distribution.v1beta1.TokenizeShareRecordReward.reward": + list := []*v1beta1.DecCoin{} + return protoreflect.ValueOfList(&_TokenizeShareRecordReward_2_list{list: &list}) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.TokenizeShareRecordReward")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.TokenizeShareRecordReward does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_TokenizeShareRecordReward) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.distribution.v1beta1.TokenizeShareRecordReward", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_TokenizeShareRecordReward) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_TokenizeShareRecordReward) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_TokenizeShareRecordReward) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_TokenizeShareRecordReward) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*TokenizeShareRecordReward) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.RecordId != 0 { + n += 1 + runtime.Sov(uint64(x.RecordId)) + } + if len(x.Reward) > 0 { + for _, e := range x.Reward { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*TokenizeShareRecordReward) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Reward) > 0 { + for iNdEx := len(x.Reward) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.Reward[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + } + if x.RecordId != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.RecordId)) + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*TokenizeShareRecordReward) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: TokenizeShareRecordReward: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: TokenizeShareRecordReward: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field RecordId", wireType) + } + x.RecordId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.RecordId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Reward", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Reward = append(x.Reward, &v1beta1.DecCoin{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Reward[len(x.Reward)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + var _ protoreflect.List = (*_CommunityPoolSpendProposal_4_list)(nil) type _CommunityPoolSpendProposal_4_list struct { @@ -4223,7 +4765,7 @@ func (x *CommunityPoolSpendProposal) ProtoReflect() protoreflect.Message { } func (x *CommunityPoolSpendProposal) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_distribution_v1beta1_distribution_proto_msgTypes[8] + mi := &file_cosmos_distribution_v1beta1_distribution_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4856,7 +5398,7 @@ func (x *DelegatorStartingInfo) ProtoReflect() protoreflect.Message { } func (x *DelegatorStartingInfo) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_distribution_v1beta1_distribution_proto_msgTypes[9] + mi := &file_cosmos_distribution_v1beta1_distribution_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5421,7 +5963,7 @@ func (x *DelegationDelegatorReward) ProtoReflect() protoreflect.Message { } func (x *DelegationDelegatorReward) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_distribution_v1beta1_distribution_proto_msgTypes[10] + mi := &file_cosmos_distribution_v1beta1_distribution_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5934,7 +6476,7 @@ func (x *CommunityPoolSpendProposalWithDeposit) ProtoReflect() protoreflect.Mess } func (x *CommunityPoolSpendProposalWithDeposit) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_distribution_v1beta1_distribution_proto_msgTypes[11] + mi := &file_cosmos_distribution_v1beta1_distribution_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6960,6 +7502,50 @@ func (x *FeePool) GetCommunityPool() []*v1beta1.DecCoin { return nil } +// TokenizeShareRecordReward represents the properties of tokenize share +type TokenizeShareRecordReward struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RecordId uint64 `protobuf:"varint,1,opt,name=record_id,json=recordId,proto3" json:"record_id,omitempty"` + Reward []*v1beta1.DecCoin `protobuf:"bytes,2,rep,name=reward,proto3" json:"reward,omitempty"` +} + +func (x *TokenizeShareRecordReward) Reset() { + *x = TokenizeShareRecordReward{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_distribution_v1beta1_distribution_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TokenizeShareRecordReward) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TokenizeShareRecordReward) ProtoMessage() {} + +// Deprecated: Use TokenizeShareRecordReward.ProtoReflect.Descriptor instead. +func (*TokenizeShareRecordReward) Descriptor() ([]byte, []int) { + return file_cosmos_distribution_v1beta1_distribution_proto_rawDescGZIP(), []int{8} +} + +func (x *TokenizeShareRecordReward) GetRecordId() uint64 { + if x != nil { + return x.RecordId + } + return 0 +} + +func (x *TokenizeShareRecordReward) GetReward() []*v1beta1.DecCoin { + if x != nil { + return x.Reward + } + return nil +} + // CommunityPoolSpendProposal details a proposal for use of community funds, // together with how many coins are proposed to be spent, and to which // recipient account. @@ -6984,7 +7570,7 @@ type CommunityPoolSpendProposal struct { func (x *CommunityPoolSpendProposal) Reset() { *x = CommunityPoolSpendProposal{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_distribution_v1beta1_distribution_proto_msgTypes[8] + mi := &file_cosmos_distribution_v1beta1_distribution_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6998,7 +7584,7 @@ func (*CommunityPoolSpendProposal) ProtoMessage() {} // Deprecated: Use CommunityPoolSpendProposal.ProtoReflect.Descriptor instead. func (*CommunityPoolSpendProposal) Descriptor() ([]byte, []int) { - return file_cosmos_distribution_v1beta1_distribution_proto_rawDescGZIP(), []int{8} + return file_cosmos_distribution_v1beta1_distribution_proto_rawDescGZIP(), []int{9} } func (x *CommunityPoolSpendProposal) GetTitle() string { @@ -7048,7 +7634,7 @@ type DelegatorStartingInfo struct { func (x *DelegatorStartingInfo) Reset() { *x = DelegatorStartingInfo{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_distribution_v1beta1_distribution_proto_msgTypes[9] + mi := &file_cosmos_distribution_v1beta1_distribution_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7062,7 +7648,7 @@ func (*DelegatorStartingInfo) ProtoMessage() {} // Deprecated: Use DelegatorStartingInfo.ProtoReflect.Descriptor instead. func (*DelegatorStartingInfo) Descriptor() ([]byte, []int) { - return file_cosmos_distribution_v1beta1_distribution_proto_rawDescGZIP(), []int{9} + return file_cosmos_distribution_v1beta1_distribution_proto_rawDescGZIP(), []int{10} } func (x *DelegatorStartingInfo) GetPreviousPeriod() uint64 { @@ -7100,7 +7686,7 @@ type DelegationDelegatorReward struct { func (x *DelegationDelegatorReward) Reset() { *x = DelegationDelegatorReward{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_distribution_v1beta1_distribution_proto_msgTypes[10] + mi := &file_cosmos_distribution_v1beta1_distribution_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7114,7 +7700,7 @@ func (*DelegationDelegatorReward) ProtoMessage() {} // Deprecated: Use DelegationDelegatorReward.ProtoReflect.Descriptor instead. func (*DelegationDelegatorReward) Descriptor() ([]byte, []int) { - return file_cosmos_distribution_v1beta1_distribution_proto_rawDescGZIP(), []int{10} + return file_cosmos_distribution_v1beta1_distribution_proto_rawDescGZIP(), []int{11} } func (x *DelegationDelegatorReward) GetValidatorAddress() string { @@ -7148,7 +7734,7 @@ type CommunityPoolSpendProposalWithDeposit struct { func (x *CommunityPoolSpendProposalWithDeposit) Reset() { *x = CommunityPoolSpendProposalWithDeposit{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_distribution_v1beta1_distribution_proto_msgTypes[11] + mi := &file_cosmos_distribution_v1beta1_distribution_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7162,7 +7748,7 @@ func (*CommunityPoolSpendProposalWithDeposit) ProtoMessage() {} // Deprecated: Use CommunityPoolSpendProposalWithDeposit.ProtoReflect.Descriptor instead. func (*CommunityPoolSpendProposalWithDeposit) Descriptor() ([]byte, []int) { - return file_cosmos_distribution_v1beta1_distribution_proto_rawDescGZIP(), []int{11} + return file_cosmos_distribution_v1beta1_distribution_proto_rawDescGZIP(), []int{12} } func (x *CommunityPoolSpendProposalWithDeposit) GetTitle() string { @@ -7309,7 +7895,18 @@ var file_cosmos_distribution_v1beta1_distribution_proto_rawDesc = []byte{ 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, - 0x6f, 0x6f, 0x6c, 0x22, 0x97, 0x02, 0x0a, 0x1a, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, + 0x6f, 0x6f, 0x6c, 0x22, 0xad, 0x01, 0x0a, 0x19, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, + 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x64, 0x12, 0x69, + 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x63, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x33, 0xc8, 0xde, + 0x1f, 0x00, 0xaa, 0xdf, 0x1f, 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, + 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x43, 0x6f, 0x69, 0x6e, + 0x73, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x3a, 0x08, 0x88, 0xa0, 0x1f, 0x00, 0x98, + 0xa0, 0x1f, 0x01, 0x22, 0x97, 0x02, 0x0a, 0x1a, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, @@ -7400,7 +7997,7 @@ func file_cosmos_distribution_v1beta1_distribution_proto_rawDescGZIP() []byte { return file_cosmos_distribution_v1beta1_distribution_proto_rawDescData } -var file_cosmos_distribution_v1beta1_distribution_proto_msgTypes = make([]protoimpl.MessageInfo, 12) +var file_cosmos_distribution_v1beta1_distribution_proto_msgTypes = make([]protoimpl.MessageInfo, 13) var file_cosmos_distribution_v1beta1_distribution_proto_goTypes = []interface{}{ (*Params)(nil), // 0: cosmos.distribution.v1beta1.Params (*ValidatorHistoricalRewards)(nil), // 1: cosmos.distribution.v1beta1.ValidatorHistoricalRewards @@ -7410,27 +8007,29 @@ var file_cosmos_distribution_v1beta1_distribution_proto_goTypes = []interface{}{ (*ValidatorSlashEvent)(nil), // 5: cosmos.distribution.v1beta1.ValidatorSlashEvent (*ValidatorSlashEvents)(nil), // 6: cosmos.distribution.v1beta1.ValidatorSlashEvents (*FeePool)(nil), // 7: cosmos.distribution.v1beta1.FeePool - (*CommunityPoolSpendProposal)(nil), // 8: cosmos.distribution.v1beta1.CommunityPoolSpendProposal - (*DelegatorStartingInfo)(nil), // 9: cosmos.distribution.v1beta1.DelegatorStartingInfo - (*DelegationDelegatorReward)(nil), // 10: cosmos.distribution.v1beta1.DelegationDelegatorReward - (*CommunityPoolSpendProposalWithDeposit)(nil), // 11: cosmos.distribution.v1beta1.CommunityPoolSpendProposalWithDeposit - (*v1beta1.DecCoin)(nil), // 12: cosmos.base.v1beta1.DecCoin - (*v1beta1.Coin)(nil), // 13: cosmos.base.v1beta1.Coin + (*TokenizeShareRecordReward)(nil), // 8: cosmos.distribution.v1beta1.TokenizeShareRecordReward + (*CommunityPoolSpendProposal)(nil), // 9: cosmos.distribution.v1beta1.CommunityPoolSpendProposal + (*DelegatorStartingInfo)(nil), // 10: cosmos.distribution.v1beta1.DelegatorStartingInfo + (*DelegationDelegatorReward)(nil), // 11: cosmos.distribution.v1beta1.DelegationDelegatorReward + (*CommunityPoolSpendProposalWithDeposit)(nil), // 12: cosmos.distribution.v1beta1.CommunityPoolSpendProposalWithDeposit + (*v1beta1.DecCoin)(nil), // 13: cosmos.base.v1beta1.DecCoin + (*v1beta1.Coin)(nil), // 14: cosmos.base.v1beta1.Coin } var file_cosmos_distribution_v1beta1_distribution_proto_depIdxs = []int32{ - 12, // 0: cosmos.distribution.v1beta1.ValidatorHistoricalRewards.cumulative_reward_ratio:type_name -> cosmos.base.v1beta1.DecCoin - 12, // 1: cosmos.distribution.v1beta1.ValidatorCurrentRewards.rewards:type_name -> cosmos.base.v1beta1.DecCoin - 12, // 2: cosmos.distribution.v1beta1.ValidatorAccumulatedCommission.commission:type_name -> cosmos.base.v1beta1.DecCoin - 12, // 3: cosmos.distribution.v1beta1.ValidatorOutstandingRewards.rewards:type_name -> cosmos.base.v1beta1.DecCoin + 13, // 0: cosmos.distribution.v1beta1.ValidatorHistoricalRewards.cumulative_reward_ratio:type_name -> cosmos.base.v1beta1.DecCoin + 13, // 1: cosmos.distribution.v1beta1.ValidatorCurrentRewards.rewards:type_name -> cosmos.base.v1beta1.DecCoin + 13, // 2: cosmos.distribution.v1beta1.ValidatorAccumulatedCommission.commission:type_name -> cosmos.base.v1beta1.DecCoin + 13, // 3: cosmos.distribution.v1beta1.ValidatorOutstandingRewards.rewards:type_name -> cosmos.base.v1beta1.DecCoin 5, // 4: cosmos.distribution.v1beta1.ValidatorSlashEvents.validator_slash_events:type_name -> cosmos.distribution.v1beta1.ValidatorSlashEvent - 12, // 5: cosmos.distribution.v1beta1.FeePool.community_pool:type_name -> cosmos.base.v1beta1.DecCoin - 13, // 6: cosmos.distribution.v1beta1.CommunityPoolSpendProposal.amount:type_name -> cosmos.base.v1beta1.Coin - 12, // 7: cosmos.distribution.v1beta1.DelegationDelegatorReward.reward:type_name -> cosmos.base.v1beta1.DecCoin - 8, // [8:8] is the sub-list for method output_type - 8, // [8:8] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name + 13, // 5: cosmos.distribution.v1beta1.FeePool.community_pool:type_name -> cosmos.base.v1beta1.DecCoin + 13, // 6: cosmos.distribution.v1beta1.TokenizeShareRecordReward.reward:type_name -> cosmos.base.v1beta1.DecCoin + 14, // 7: cosmos.distribution.v1beta1.CommunityPoolSpendProposal.amount:type_name -> cosmos.base.v1beta1.Coin + 13, // 8: cosmos.distribution.v1beta1.DelegationDelegatorReward.reward:type_name -> cosmos.base.v1beta1.DecCoin + 9, // [9:9] is the sub-list for method output_type + 9, // [9:9] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name } func init() { file_cosmos_distribution_v1beta1_distribution_proto_init() } @@ -7536,7 +8135,7 @@ func file_cosmos_distribution_v1beta1_distribution_proto_init() { } } file_cosmos_distribution_v1beta1_distribution_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommunityPoolSpendProposal); i { + switch v := v.(*TokenizeShareRecordReward); i { case 0: return &v.state case 1: @@ -7548,7 +8147,7 @@ func file_cosmos_distribution_v1beta1_distribution_proto_init() { } } file_cosmos_distribution_v1beta1_distribution_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DelegatorStartingInfo); i { + switch v := v.(*CommunityPoolSpendProposal); i { case 0: return &v.state case 1: @@ -7560,7 +8159,7 @@ func file_cosmos_distribution_v1beta1_distribution_proto_init() { } } file_cosmos_distribution_v1beta1_distribution_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DelegationDelegatorReward); i { + switch v := v.(*DelegatorStartingInfo); i { case 0: return &v.state case 1: @@ -7572,6 +8171,18 @@ func file_cosmos_distribution_v1beta1_distribution_proto_init() { } } file_cosmos_distribution_v1beta1_distribution_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DelegationDelegatorReward); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_distribution_v1beta1_distribution_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CommunityPoolSpendProposalWithDeposit); i { case 0: return &v.state @@ -7590,7 +8201,7 @@ func file_cosmos_distribution_v1beta1_distribution_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_cosmos_distribution_v1beta1_distribution_proto_rawDesc, NumEnums: 0, - NumMessages: 12, + NumMessages: 13, NumExtensions: 0, NumServices: 0, }, diff --git a/api/cosmos/distribution/v1beta1/query.pulsar.go b/api/cosmos/distribution/v1beta1/query.pulsar.go index ee8495bfe86e..8d17b6deb738 100644 --- a/api/cosmos/distribution/v1beta1/query.pulsar.go +++ b/api/cosmos/distribution/v1beta1/query.pulsar.go @@ -9423,6 +9423,1058 @@ func (x *fastReflection_QueryCommunityPoolResponse) ProtoMethods() *protoiface.M } } +var ( + md_QueryTokenizeShareRecordRewardRequest protoreflect.MessageDescriptor + fd_QueryTokenizeShareRecordRewardRequest_owner_address protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_distribution_v1beta1_query_proto_init() + md_QueryTokenizeShareRecordRewardRequest = File_cosmos_distribution_v1beta1_query_proto.Messages().ByName("QueryTokenizeShareRecordRewardRequest") + fd_QueryTokenizeShareRecordRewardRequest_owner_address = md_QueryTokenizeShareRecordRewardRequest.Fields().ByName("owner_address") +} + +var _ protoreflect.Message = (*fastReflection_QueryTokenizeShareRecordRewardRequest)(nil) + +type fastReflection_QueryTokenizeShareRecordRewardRequest QueryTokenizeShareRecordRewardRequest + +func (x *QueryTokenizeShareRecordRewardRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryTokenizeShareRecordRewardRequest)(x) +} + +func (x *QueryTokenizeShareRecordRewardRequest) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_distribution_v1beta1_query_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryTokenizeShareRecordRewardRequest_messageType fastReflection_QueryTokenizeShareRecordRewardRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryTokenizeShareRecordRewardRequest_messageType{} + +type fastReflection_QueryTokenizeShareRecordRewardRequest_messageType struct{} + +func (x fastReflection_QueryTokenizeShareRecordRewardRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryTokenizeShareRecordRewardRequest)(nil) +} +func (x fastReflection_QueryTokenizeShareRecordRewardRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryTokenizeShareRecordRewardRequest) +} +func (x fastReflection_QueryTokenizeShareRecordRewardRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenizeShareRecordRewardRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryTokenizeShareRecordRewardRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenizeShareRecordRewardRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryTokenizeShareRecordRewardRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryTokenizeShareRecordRewardRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryTokenizeShareRecordRewardRequest) New() protoreflect.Message { + return new(fastReflection_QueryTokenizeShareRecordRewardRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryTokenizeShareRecordRewardRequest) Interface() protoreflect.ProtoMessage { + return (*QueryTokenizeShareRecordRewardRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryTokenizeShareRecordRewardRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.OwnerAddress != "" { + value := protoreflect.ValueOfString(x.OwnerAddress) + if !f(fd_QueryTokenizeShareRecordRewardRequest_owner_address, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryTokenizeShareRecordRewardRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardRequest.owner_address": + return x.OwnerAddress != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardRequest")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordRewardRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardRequest.owner_address": + x.OwnerAddress = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardRequest")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryTokenizeShareRecordRewardRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardRequest.owner_address": + value := x.OwnerAddress + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardRequest")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordRewardRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardRequest.owner_address": + x.OwnerAddress = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardRequest")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordRewardRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardRequest.owner_address": + panic(fmt.Errorf("field owner_address of message cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardRequest is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardRequest")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryTokenizeShareRecordRewardRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardRequest.owner_address": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardRequest")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryTokenizeShareRecordRewardRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryTokenizeShareRecordRewardRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordRewardRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryTokenizeShareRecordRewardRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryTokenizeShareRecordRewardRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryTokenizeShareRecordRewardRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.OwnerAddress) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenizeShareRecordRewardRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.OwnerAddress) > 0 { + i -= len(x.OwnerAddress) + copy(dAtA[i:], x.OwnerAddress) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.OwnerAddress))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenizeShareRecordRewardRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenizeShareRecordRewardRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenizeShareRecordRewardRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field OwnerAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.OwnerAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var _ protoreflect.List = (*_QueryTokenizeShareRecordRewardResponse_1_list)(nil) + +type _QueryTokenizeShareRecordRewardResponse_1_list struct { + list *[]*TokenizeShareRecordReward +} + +func (x *_QueryTokenizeShareRecordRewardResponse_1_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_QueryTokenizeShareRecordRewardResponse_1_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_QueryTokenizeShareRecordRewardResponse_1_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*TokenizeShareRecordReward) + (*x.list)[i] = concreteValue +} + +func (x *_QueryTokenizeShareRecordRewardResponse_1_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*TokenizeShareRecordReward) + *x.list = append(*x.list, concreteValue) +} + +func (x *_QueryTokenizeShareRecordRewardResponse_1_list) AppendMutable() protoreflect.Value { + v := new(TokenizeShareRecordReward) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryTokenizeShareRecordRewardResponse_1_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_QueryTokenizeShareRecordRewardResponse_1_list) NewElement() protoreflect.Value { + v := new(TokenizeShareRecordReward) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryTokenizeShareRecordRewardResponse_1_list) IsValid() bool { + return x.list != nil +} + +var _ protoreflect.List = (*_QueryTokenizeShareRecordRewardResponse_2_list)(nil) + +type _QueryTokenizeShareRecordRewardResponse_2_list struct { + list *[]*v1beta1.DecCoin +} + +func (x *_QueryTokenizeShareRecordRewardResponse_2_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_QueryTokenizeShareRecordRewardResponse_2_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_QueryTokenizeShareRecordRewardResponse_2_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*v1beta1.DecCoin) + (*x.list)[i] = concreteValue +} + +func (x *_QueryTokenizeShareRecordRewardResponse_2_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*v1beta1.DecCoin) + *x.list = append(*x.list, concreteValue) +} + +func (x *_QueryTokenizeShareRecordRewardResponse_2_list) AppendMutable() protoreflect.Value { + v := new(v1beta1.DecCoin) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryTokenizeShareRecordRewardResponse_2_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_QueryTokenizeShareRecordRewardResponse_2_list) NewElement() protoreflect.Value { + v := new(v1beta1.DecCoin) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryTokenizeShareRecordRewardResponse_2_list) IsValid() bool { + return x.list != nil +} + +var ( + md_QueryTokenizeShareRecordRewardResponse protoreflect.MessageDescriptor + fd_QueryTokenizeShareRecordRewardResponse_rewards protoreflect.FieldDescriptor + fd_QueryTokenizeShareRecordRewardResponse_total protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_distribution_v1beta1_query_proto_init() + md_QueryTokenizeShareRecordRewardResponse = File_cosmos_distribution_v1beta1_query_proto.Messages().ByName("QueryTokenizeShareRecordRewardResponse") + fd_QueryTokenizeShareRecordRewardResponse_rewards = md_QueryTokenizeShareRecordRewardResponse.Fields().ByName("rewards") + fd_QueryTokenizeShareRecordRewardResponse_total = md_QueryTokenizeShareRecordRewardResponse.Fields().ByName("total") +} + +var _ protoreflect.Message = (*fastReflection_QueryTokenizeShareRecordRewardResponse)(nil) + +type fastReflection_QueryTokenizeShareRecordRewardResponse QueryTokenizeShareRecordRewardResponse + +func (x *QueryTokenizeShareRecordRewardResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryTokenizeShareRecordRewardResponse)(x) +} + +func (x *QueryTokenizeShareRecordRewardResponse) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_distribution_v1beta1_query_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryTokenizeShareRecordRewardResponse_messageType fastReflection_QueryTokenizeShareRecordRewardResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryTokenizeShareRecordRewardResponse_messageType{} + +type fastReflection_QueryTokenizeShareRecordRewardResponse_messageType struct{} + +func (x fastReflection_QueryTokenizeShareRecordRewardResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryTokenizeShareRecordRewardResponse)(nil) +} +func (x fastReflection_QueryTokenizeShareRecordRewardResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryTokenizeShareRecordRewardResponse) +} +func (x fastReflection_QueryTokenizeShareRecordRewardResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenizeShareRecordRewardResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryTokenizeShareRecordRewardResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenizeShareRecordRewardResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryTokenizeShareRecordRewardResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryTokenizeShareRecordRewardResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryTokenizeShareRecordRewardResponse) New() protoreflect.Message { + return new(fastReflection_QueryTokenizeShareRecordRewardResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryTokenizeShareRecordRewardResponse) Interface() protoreflect.ProtoMessage { + return (*QueryTokenizeShareRecordRewardResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryTokenizeShareRecordRewardResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if len(x.Rewards) != 0 { + value := protoreflect.ValueOfList(&_QueryTokenizeShareRecordRewardResponse_1_list{list: &x.Rewards}) + if !f(fd_QueryTokenizeShareRecordRewardResponse_rewards, value) { + return + } + } + if len(x.Total) != 0 { + value := protoreflect.ValueOfList(&_QueryTokenizeShareRecordRewardResponse_2_list{list: &x.Total}) + if !f(fd_QueryTokenizeShareRecordRewardResponse_total, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryTokenizeShareRecordRewardResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse.rewards": + return len(x.Rewards) != 0 + case "cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse.total": + return len(x.Total) != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordRewardResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse.rewards": + x.Rewards = nil + case "cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse.total": + x.Total = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryTokenizeShareRecordRewardResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse.rewards": + if len(x.Rewards) == 0 { + return protoreflect.ValueOfList(&_QueryTokenizeShareRecordRewardResponse_1_list{}) + } + listValue := &_QueryTokenizeShareRecordRewardResponse_1_list{list: &x.Rewards} + return protoreflect.ValueOfList(listValue) + case "cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse.total": + if len(x.Total) == 0 { + return protoreflect.ValueOfList(&_QueryTokenizeShareRecordRewardResponse_2_list{}) + } + listValue := &_QueryTokenizeShareRecordRewardResponse_2_list{list: &x.Total} + return protoreflect.ValueOfList(listValue) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordRewardResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse.rewards": + lv := value.List() + clv := lv.(*_QueryTokenizeShareRecordRewardResponse_1_list) + x.Rewards = *clv.list + case "cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse.total": + lv := value.List() + clv := lv.(*_QueryTokenizeShareRecordRewardResponse_2_list) + x.Total = *clv.list + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordRewardResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse.rewards": + if x.Rewards == nil { + x.Rewards = []*TokenizeShareRecordReward{} + } + value := &_QueryTokenizeShareRecordRewardResponse_1_list{list: &x.Rewards} + return protoreflect.ValueOfList(value) + case "cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse.total": + if x.Total == nil { + x.Total = []*v1beta1.DecCoin{} + } + value := &_QueryTokenizeShareRecordRewardResponse_2_list{list: &x.Total} + return protoreflect.ValueOfList(value) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryTokenizeShareRecordRewardResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse.rewards": + list := []*TokenizeShareRecordReward{} + return protoreflect.ValueOfList(&_QueryTokenizeShareRecordRewardResponse_1_list{list: &list}) + case "cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse.total": + list := []*v1beta1.DecCoin{} + return protoreflect.ValueOfList(&_QueryTokenizeShareRecordRewardResponse_2_list{list: &list}) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryTokenizeShareRecordRewardResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryTokenizeShareRecordRewardResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordRewardResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryTokenizeShareRecordRewardResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryTokenizeShareRecordRewardResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryTokenizeShareRecordRewardResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if len(x.Rewards) > 0 { + for _, e := range x.Rewards { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if len(x.Total) > 0 { + for _, e := range x.Total { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenizeShareRecordRewardResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Total) > 0 { + for iNdEx := len(x.Total) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.Total[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + } + if len(x.Rewards) > 0 { + for iNdEx := len(x.Rewards) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.Rewards[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenizeShareRecordRewardResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenizeShareRecordRewardResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenizeShareRecordRewardResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Rewards", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Rewards = append(x.Rewards, &TokenizeShareRecordReward{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Rewards[len(x.Rewards)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Total", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Total = append(x.Total, &v1beta1.DecCoin{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Total[len(x.Total)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.27.0 @@ -10243,6 +11295,90 @@ func (x *QueryCommunityPoolResponse) GetPool() []*v1beta1.DecCoin { return nil } +// QueryTokenizeShareRecordRewardRequest is the request type for the Query/TokenizeShareRecordReward RPC +// method. +type QueryTokenizeShareRecordRewardRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OwnerAddress string `protobuf:"bytes,1,opt,name=owner_address,json=ownerAddress,proto3" json:"owner_address,omitempty"` +} + +func (x *QueryTokenizeShareRecordRewardRequest) Reset() { + *x = QueryTokenizeShareRecordRewardRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_distribution_v1beta1_query_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryTokenizeShareRecordRewardRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryTokenizeShareRecordRewardRequest) ProtoMessage() {} + +// Deprecated: Use QueryTokenizeShareRecordRewardRequest.ProtoReflect.Descriptor instead. +func (*QueryTokenizeShareRecordRewardRequest) Descriptor() ([]byte, []int) { + return file_cosmos_distribution_v1beta1_query_proto_rawDescGZIP(), []int{20} +} + +func (x *QueryTokenizeShareRecordRewardRequest) GetOwnerAddress() string { + if x != nil { + return x.OwnerAddress + } + return "" +} + +// QueryTokenizeShareRecordRewardResponse is the response type for the Query/TokenizeShareRecordReward +// RPC method. +type QueryTokenizeShareRecordRewardResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // rewards defines all the rewards accrued by a delegator. + Rewards []*TokenizeShareRecordReward `protobuf:"bytes,1,rep,name=rewards,proto3" json:"rewards,omitempty"` + // total defines the sum of all the rewards. + Total []*v1beta1.DecCoin `protobuf:"bytes,2,rep,name=total,proto3" json:"total,omitempty"` +} + +func (x *QueryTokenizeShareRecordRewardResponse) Reset() { + *x = QueryTokenizeShareRecordRewardResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_distribution_v1beta1_query_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryTokenizeShareRecordRewardResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryTokenizeShareRecordRewardResponse) ProtoMessage() {} + +// Deprecated: Use QueryTokenizeShareRecordRewardResponse.ProtoReflect.Descriptor instead. +func (*QueryTokenizeShareRecordRewardResponse) Descriptor() ([]byte, []int) { + return file_cosmos_distribution_v1beta1_query_proto_rawDescGZIP(), []int{21} +} + +func (x *QueryTokenizeShareRecordRewardResponse) GetRewards() []*TokenizeShareRecordReward { + if x != nil { + return x.Rewards + } + return nil +} + +func (x *QueryTokenizeShareRecordRewardResponse) GetTotal() []*v1beta1.DecCoin { + if x != nil { + return x.Total + } + return nil +} + var File_cosmos_distribution_v1beta1_query_proto protoreflect.FileDescriptor var file_cosmos_distribution_v1beta1_query_proto_rawDesc = []byte{ @@ -10445,164 +11581,201 @@ var file_cosmos_distribution_v1beta1_query_proto_rawDesc = []byte{ 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, - 0x52, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x32, 0xc4, 0x11, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x12, 0x98, 0x01, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2f, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, - 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0xe9, 0x01, 0x0a, 0x19, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x42, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x52, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x22, 0x70, 0x0a, 0x25, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x3d, 0x0a, 0x0d, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xf2, 0xde, 0x1f, 0x14, 0x79, 0x61, 0x6d, 0x6c, + 0x3a, 0x22, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, + 0x52, 0x0c, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x08, + 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0xe9, 0x01, 0x0a, 0x26, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, + 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, + 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x42, 0x04, 0xc8, 0xde, + 0x1f, 0x00, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x67, 0x0a, 0x05, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x44, 0x65, 0x63, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x33, 0xc8, 0xde, 0x1f, 0x00, 0xaa, 0xdf, + 0x1f, 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x52, 0x05, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x32, 0xbf, 0x13, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x98, + 0x01, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2f, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b, 0x2f, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x12, 0x83, 0x02, 0x0a, 0x1b, 0x56, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x6f, 0x72, 0x4f, 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x44, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x64, 0x69, + 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0xe9, 0x01, 0x0a, 0x19, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x42, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x4f, 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x45, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x4f, 0x75, 0x74, 0x73, 0x74, 0x61, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x57, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x51, 0x12, 0x4f, 0x2f, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x2f, 0x6f, 0x75, 0x74, 0x73, 0x74, 0x61, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0xe2, 0x01, - 0x0a, 0x13, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, + 0x61, 0x74, 0x6f, 0x72, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x73, 0x2f, 0x7b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x7d, 0x12, 0x83, 0x02, 0x0a, 0x1b, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x4f, 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x44, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, - 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x4e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x12, 0x46, 0x2f, 0x63, 0x6f, 0x73, + 0x6f, 0x72, 0x4f, 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x45, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x4f, 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x57, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x51, 0x12, 0x4f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0xd6, 0x01, 0x0a, 0x10, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, - 0x53, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x39, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, - 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x12, 0x43, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, - 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, - 0x7b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x7d, 0x2f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0xed, 0x01, 0x0a, 0x11, - 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x73, 0x12, 0x3a, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x2f, 0x6f, 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0xe2, 0x01, 0x0a, 0x13, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x3d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x59, 0x12, 0x57, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x64, 0x69, 0x73, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x6c, - 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x2f, - 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x12, 0xe8, 0x01, 0x0a, 0x16, - 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x3f, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x45, 0x12, 0x43, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x64, 0x69, 0x73, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, - 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x6c, 0x65, - 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x2f, 0x72, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0xe2, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x3c, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x63, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, + 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x4e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x12, 0x46, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x73, 0x2f, 0x7b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x7d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0xd6, 0x01, 0x0a, 0x10, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x6c, + 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x39, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, + 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x3a, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x6c, 0x61, + 0x73, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x45, 0x12, 0x43, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x64, 0x69, + 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x7d, 0x2f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0xed, 0x01, 0x0a, 0x11, 0x44, 0x65, + 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, + 0x3a, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x59, + 0x12, 0x57, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x64, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x2f, 0x72, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x12, 0xe8, 0x01, 0x0a, 0x16, 0x44, 0x65, + 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x12, 0x3f, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, + 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, + 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x12, + 0x43, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x64, 0x65, + 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, + 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x2f, 0x72, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x12, 0xe2, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, + 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x3c, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x48, 0x12, 0x46, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x64, 0x69, 0x73, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x64, 0x65, - 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, - 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0xf7, 0x01, 0x0a, 0x18, - 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, - 0x77, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x41, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, - 0x67, 0x61, 0x74, 0x6f, 0x72, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, - 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4e, 0x12, 0x4c, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x73, - 0x2f, 0x7b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x7d, 0x2f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x5f, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0xb5, 0x01, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, - 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x36, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x75, - 0x6e, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x37, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, - 0x12, 0x2b, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, - 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x42, 0xfd, 0x01, - 0x0a, 0x1f, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x42, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, - 0x40, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x64, 0x69, - 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0xa2, 0x02, 0x03, 0x43, 0x44, 0x58, 0xaa, 0x02, 0x1b, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x1b, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x44, - 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0xe2, 0x02, 0x27, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x44, 0x69, 0x73, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1d, - 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, + 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x48, 0x12, 0x46, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x64, 0x69, 0x73, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, + 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x6c, 0x65, + 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x2f, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0xf7, 0x01, 0x0a, 0x18, 0x44, 0x65, + 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x41, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, + 0x74, 0x6f, 0x72, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6c, + 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x54, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x4e, 0x12, 0x4c, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x64, + 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7b, + 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x7d, 0x2f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0xb5, 0x01, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, + 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x36, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, + 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, + 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x12, 0xf8, 0x01, 0x0a, 0x19, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x42, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x52, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x12, 0x4a, 0x2f, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, + 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x72, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x42, 0xfd, 0x01, 0x0a, 0x1f, 0x63, 0x6f, 0x6d, 0x2e, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0a, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x40, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x44, 0x58, + 0xaa, 0x02, 0x1b, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, + 0x1b, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x27, 0x43, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1d, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, + 0x3a, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x3a, 0x56, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -10617,7 +11790,7 @@ func file_cosmos_distribution_v1beta1_query_proto_rawDescGZIP() []byte { return file_cosmos_distribution_v1beta1_query_proto_rawDescData } -var file_cosmos_distribution_v1beta1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 20) +var file_cosmos_distribution_v1beta1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 22) var file_cosmos_distribution_v1beta1_query_proto_goTypes = []interface{}{ (*QueryParamsRequest)(nil), // 0: cosmos.distribution.v1beta1.QueryParamsRequest (*QueryParamsResponse)(nil), // 1: cosmos.distribution.v1beta1.QueryParamsResponse @@ -10639,53 +11812,60 @@ var file_cosmos_distribution_v1beta1_query_proto_goTypes = []interface{}{ (*QueryDelegatorWithdrawAddressResponse)(nil), // 17: cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressResponse (*QueryCommunityPoolRequest)(nil), // 18: cosmos.distribution.v1beta1.QueryCommunityPoolRequest (*QueryCommunityPoolResponse)(nil), // 19: cosmos.distribution.v1beta1.QueryCommunityPoolResponse - (*Params)(nil), // 20: cosmos.distribution.v1beta1.Params - (*v1beta1.DecCoin)(nil), // 21: cosmos.base.v1beta1.DecCoin - (*ValidatorOutstandingRewards)(nil), // 22: cosmos.distribution.v1beta1.ValidatorOutstandingRewards - (*ValidatorAccumulatedCommission)(nil), // 23: cosmos.distribution.v1beta1.ValidatorAccumulatedCommission - (*v1beta11.PageRequest)(nil), // 24: cosmos.base.query.v1beta1.PageRequest - (*ValidatorSlashEvent)(nil), // 25: cosmos.distribution.v1beta1.ValidatorSlashEvent - (*v1beta11.PageResponse)(nil), // 26: cosmos.base.query.v1beta1.PageResponse - (*DelegationDelegatorReward)(nil), // 27: cosmos.distribution.v1beta1.DelegationDelegatorReward + (*QueryTokenizeShareRecordRewardRequest)(nil), // 20: cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardRequest + (*QueryTokenizeShareRecordRewardResponse)(nil), // 21: cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse + (*Params)(nil), // 22: cosmos.distribution.v1beta1.Params + (*v1beta1.DecCoin)(nil), // 23: cosmos.base.v1beta1.DecCoin + (*ValidatorOutstandingRewards)(nil), // 24: cosmos.distribution.v1beta1.ValidatorOutstandingRewards + (*ValidatorAccumulatedCommission)(nil), // 25: cosmos.distribution.v1beta1.ValidatorAccumulatedCommission + (*v1beta11.PageRequest)(nil), // 26: cosmos.base.query.v1beta1.PageRequest + (*ValidatorSlashEvent)(nil), // 27: cosmos.distribution.v1beta1.ValidatorSlashEvent + (*v1beta11.PageResponse)(nil), // 28: cosmos.base.query.v1beta1.PageResponse + (*DelegationDelegatorReward)(nil), // 29: cosmos.distribution.v1beta1.DelegationDelegatorReward + (*TokenizeShareRecordReward)(nil), // 30: cosmos.distribution.v1beta1.TokenizeShareRecordReward } var file_cosmos_distribution_v1beta1_query_proto_depIdxs = []int32{ - 20, // 0: cosmos.distribution.v1beta1.QueryParamsResponse.params:type_name -> cosmos.distribution.v1beta1.Params - 21, // 1: cosmos.distribution.v1beta1.QueryValidatorDistributionInfoResponse.self_bond_rewards:type_name -> cosmos.base.v1beta1.DecCoin - 21, // 2: cosmos.distribution.v1beta1.QueryValidatorDistributionInfoResponse.commission:type_name -> cosmos.base.v1beta1.DecCoin - 22, // 3: cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsResponse.rewards:type_name -> cosmos.distribution.v1beta1.ValidatorOutstandingRewards - 23, // 4: cosmos.distribution.v1beta1.QueryValidatorCommissionResponse.commission:type_name -> cosmos.distribution.v1beta1.ValidatorAccumulatedCommission - 24, // 5: cosmos.distribution.v1beta1.QueryValidatorSlashesRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest - 25, // 6: cosmos.distribution.v1beta1.QueryValidatorSlashesResponse.slashes:type_name -> cosmos.distribution.v1beta1.ValidatorSlashEvent - 26, // 7: cosmos.distribution.v1beta1.QueryValidatorSlashesResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse - 21, // 8: cosmos.distribution.v1beta1.QueryDelegationRewardsResponse.rewards:type_name -> cosmos.base.v1beta1.DecCoin - 27, // 9: cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse.rewards:type_name -> cosmos.distribution.v1beta1.DelegationDelegatorReward - 21, // 10: cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse.total:type_name -> cosmos.base.v1beta1.DecCoin - 21, // 11: cosmos.distribution.v1beta1.QueryCommunityPoolResponse.pool:type_name -> cosmos.base.v1beta1.DecCoin - 0, // 12: cosmos.distribution.v1beta1.Query.Params:input_type -> cosmos.distribution.v1beta1.QueryParamsRequest - 2, // 13: cosmos.distribution.v1beta1.Query.ValidatorDistributionInfo:input_type -> cosmos.distribution.v1beta1.QueryValidatorDistributionInfoRequest - 4, // 14: cosmos.distribution.v1beta1.Query.ValidatorOutstandingRewards:input_type -> cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsRequest - 6, // 15: cosmos.distribution.v1beta1.Query.ValidatorCommission:input_type -> cosmos.distribution.v1beta1.QueryValidatorCommissionRequest - 8, // 16: cosmos.distribution.v1beta1.Query.ValidatorSlashes:input_type -> cosmos.distribution.v1beta1.QueryValidatorSlashesRequest - 10, // 17: cosmos.distribution.v1beta1.Query.DelegationRewards:input_type -> cosmos.distribution.v1beta1.QueryDelegationRewardsRequest - 12, // 18: cosmos.distribution.v1beta1.Query.DelegationTotalRewards:input_type -> cosmos.distribution.v1beta1.QueryDelegationTotalRewardsRequest - 14, // 19: cosmos.distribution.v1beta1.Query.DelegatorValidators:input_type -> cosmos.distribution.v1beta1.QueryDelegatorValidatorsRequest - 16, // 20: cosmos.distribution.v1beta1.Query.DelegatorWithdrawAddress:input_type -> cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressRequest - 18, // 21: cosmos.distribution.v1beta1.Query.CommunityPool:input_type -> cosmos.distribution.v1beta1.QueryCommunityPoolRequest - 1, // 22: cosmos.distribution.v1beta1.Query.Params:output_type -> cosmos.distribution.v1beta1.QueryParamsResponse - 3, // 23: cosmos.distribution.v1beta1.Query.ValidatorDistributionInfo:output_type -> cosmos.distribution.v1beta1.QueryValidatorDistributionInfoResponse - 5, // 24: cosmos.distribution.v1beta1.Query.ValidatorOutstandingRewards:output_type -> cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsResponse - 7, // 25: cosmos.distribution.v1beta1.Query.ValidatorCommission:output_type -> cosmos.distribution.v1beta1.QueryValidatorCommissionResponse - 9, // 26: cosmos.distribution.v1beta1.Query.ValidatorSlashes:output_type -> cosmos.distribution.v1beta1.QueryValidatorSlashesResponse - 11, // 27: cosmos.distribution.v1beta1.Query.DelegationRewards:output_type -> cosmos.distribution.v1beta1.QueryDelegationRewardsResponse - 13, // 28: cosmos.distribution.v1beta1.Query.DelegationTotalRewards:output_type -> cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse - 15, // 29: cosmos.distribution.v1beta1.Query.DelegatorValidators:output_type -> cosmos.distribution.v1beta1.QueryDelegatorValidatorsResponse - 17, // 30: cosmos.distribution.v1beta1.Query.DelegatorWithdrawAddress:output_type -> cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressResponse - 19, // 31: cosmos.distribution.v1beta1.Query.CommunityPool:output_type -> cosmos.distribution.v1beta1.QueryCommunityPoolResponse - 22, // [22:32] is the sub-list for method output_type - 12, // [12:22] is the sub-list for method input_type - 12, // [12:12] is the sub-list for extension type_name - 12, // [12:12] is the sub-list for extension extendee - 0, // [0:12] is the sub-list for field type_name + 22, // 0: cosmos.distribution.v1beta1.QueryParamsResponse.params:type_name -> cosmos.distribution.v1beta1.Params + 23, // 1: cosmos.distribution.v1beta1.QueryValidatorDistributionInfoResponse.self_bond_rewards:type_name -> cosmos.base.v1beta1.DecCoin + 23, // 2: cosmos.distribution.v1beta1.QueryValidatorDistributionInfoResponse.commission:type_name -> cosmos.base.v1beta1.DecCoin + 24, // 3: cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsResponse.rewards:type_name -> cosmos.distribution.v1beta1.ValidatorOutstandingRewards + 25, // 4: cosmos.distribution.v1beta1.QueryValidatorCommissionResponse.commission:type_name -> cosmos.distribution.v1beta1.ValidatorAccumulatedCommission + 26, // 5: cosmos.distribution.v1beta1.QueryValidatorSlashesRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest + 27, // 6: cosmos.distribution.v1beta1.QueryValidatorSlashesResponse.slashes:type_name -> cosmos.distribution.v1beta1.ValidatorSlashEvent + 28, // 7: cosmos.distribution.v1beta1.QueryValidatorSlashesResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse + 23, // 8: cosmos.distribution.v1beta1.QueryDelegationRewardsResponse.rewards:type_name -> cosmos.base.v1beta1.DecCoin + 29, // 9: cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse.rewards:type_name -> cosmos.distribution.v1beta1.DelegationDelegatorReward + 23, // 10: cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse.total:type_name -> cosmos.base.v1beta1.DecCoin + 23, // 11: cosmos.distribution.v1beta1.QueryCommunityPoolResponse.pool:type_name -> cosmos.base.v1beta1.DecCoin + 30, // 12: cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse.rewards:type_name -> cosmos.distribution.v1beta1.TokenizeShareRecordReward + 23, // 13: cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse.total:type_name -> cosmos.base.v1beta1.DecCoin + 0, // 14: cosmos.distribution.v1beta1.Query.Params:input_type -> cosmos.distribution.v1beta1.QueryParamsRequest + 2, // 15: cosmos.distribution.v1beta1.Query.ValidatorDistributionInfo:input_type -> cosmos.distribution.v1beta1.QueryValidatorDistributionInfoRequest + 4, // 16: cosmos.distribution.v1beta1.Query.ValidatorOutstandingRewards:input_type -> cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsRequest + 6, // 17: cosmos.distribution.v1beta1.Query.ValidatorCommission:input_type -> cosmos.distribution.v1beta1.QueryValidatorCommissionRequest + 8, // 18: cosmos.distribution.v1beta1.Query.ValidatorSlashes:input_type -> cosmos.distribution.v1beta1.QueryValidatorSlashesRequest + 10, // 19: cosmos.distribution.v1beta1.Query.DelegationRewards:input_type -> cosmos.distribution.v1beta1.QueryDelegationRewardsRequest + 12, // 20: cosmos.distribution.v1beta1.Query.DelegationTotalRewards:input_type -> cosmos.distribution.v1beta1.QueryDelegationTotalRewardsRequest + 14, // 21: cosmos.distribution.v1beta1.Query.DelegatorValidators:input_type -> cosmos.distribution.v1beta1.QueryDelegatorValidatorsRequest + 16, // 22: cosmos.distribution.v1beta1.Query.DelegatorWithdrawAddress:input_type -> cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressRequest + 18, // 23: cosmos.distribution.v1beta1.Query.CommunityPool:input_type -> cosmos.distribution.v1beta1.QueryCommunityPoolRequest + 20, // 24: cosmos.distribution.v1beta1.Query.TokenizeShareRecordReward:input_type -> cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardRequest + 1, // 25: cosmos.distribution.v1beta1.Query.Params:output_type -> cosmos.distribution.v1beta1.QueryParamsResponse + 3, // 26: cosmos.distribution.v1beta1.Query.ValidatorDistributionInfo:output_type -> cosmos.distribution.v1beta1.QueryValidatorDistributionInfoResponse + 5, // 27: cosmos.distribution.v1beta1.Query.ValidatorOutstandingRewards:output_type -> cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsResponse + 7, // 28: cosmos.distribution.v1beta1.Query.ValidatorCommission:output_type -> cosmos.distribution.v1beta1.QueryValidatorCommissionResponse + 9, // 29: cosmos.distribution.v1beta1.Query.ValidatorSlashes:output_type -> cosmos.distribution.v1beta1.QueryValidatorSlashesResponse + 11, // 30: cosmos.distribution.v1beta1.Query.DelegationRewards:output_type -> cosmos.distribution.v1beta1.QueryDelegationRewardsResponse + 13, // 31: cosmos.distribution.v1beta1.Query.DelegationTotalRewards:output_type -> cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse + 15, // 32: cosmos.distribution.v1beta1.Query.DelegatorValidators:output_type -> cosmos.distribution.v1beta1.QueryDelegatorValidatorsResponse + 17, // 33: cosmos.distribution.v1beta1.Query.DelegatorWithdrawAddress:output_type -> cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressResponse + 19, // 34: cosmos.distribution.v1beta1.Query.CommunityPool:output_type -> cosmos.distribution.v1beta1.QueryCommunityPoolResponse + 21, // 35: cosmos.distribution.v1beta1.Query.TokenizeShareRecordReward:output_type -> cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse + 25, // [25:36] is the sub-list for method output_type + 14, // [14:25] is the sub-list for method input_type + 14, // [14:14] is the sub-list for extension type_name + 14, // [14:14] is the sub-list for extension extendee + 0, // [0:14] is the sub-list for field type_name } func init() { file_cosmos_distribution_v1beta1_query_proto_init() } @@ -10935,6 +12115,30 @@ func file_cosmos_distribution_v1beta1_query_proto_init() { return nil } } + file_cosmos_distribution_v1beta1_query_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryTokenizeShareRecordRewardRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_distribution_v1beta1_query_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryTokenizeShareRecordRewardResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -10942,7 +12146,7 @@ func file_cosmos_distribution_v1beta1_query_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_cosmos_distribution_v1beta1_query_proto_rawDesc, NumEnums: 0, - NumMessages: 20, + NumMessages: 22, NumExtensions: 0, NumServices: 1, }, diff --git a/api/cosmos/distribution/v1beta1/query_grpc.pb.go b/api/cosmos/distribution/v1beta1/query_grpc.pb.go index 2634afa08db7..452807bc280e 100644 --- a/api/cosmos/distribution/v1beta1/query_grpc.pb.go +++ b/api/cosmos/distribution/v1beta1/query_grpc.pb.go @@ -29,6 +29,7 @@ const ( Query_DelegatorValidators_FullMethodName = "/cosmos.distribution.v1beta1.Query/DelegatorValidators" Query_DelegatorWithdrawAddress_FullMethodName = "/cosmos.distribution.v1beta1.Query/DelegatorWithdrawAddress" Query_CommunityPool_FullMethodName = "/cosmos.distribution.v1beta1.Query/CommunityPool" + Query_TokenizeShareRecordReward_FullMethodName = "/cosmos.distribution.v1beta1.Query/TokenizeShareRecordReward" ) // QueryClient is the client API for Query service. @@ -56,6 +57,8 @@ type QueryClient interface { DelegatorWithdrawAddress(ctx context.Context, in *QueryDelegatorWithdrawAddressRequest, opts ...grpc.CallOption) (*QueryDelegatorWithdrawAddressResponse, error) // CommunityPool queries the community pool coins. CommunityPool(ctx context.Context, in *QueryCommunityPoolRequest, opts ...grpc.CallOption) (*QueryCommunityPoolResponse, error) + // TokenizeShareRecordReward queries the tokenize share record rewards + TokenizeShareRecordReward(ctx context.Context, in *QueryTokenizeShareRecordRewardRequest, opts ...grpc.CallOption) (*QueryTokenizeShareRecordRewardResponse, error) } type queryClient struct { @@ -156,6 +159,15 @@ func (c *queryClient) CommunityPool(ctx context.Context, in *QueryCommunityPoolR return out, nil } +func (c *queryClient) TokenizeShareRecordReward(ctx context.Context, in *QueryTokenizeShareRecordRewardRequest, opts ...grpc.CallOption) (*QueryTokenizeShareRecordRewardResponse, error) { + out := new(QueryTokenizeShareRecordRewardResponse) + err := c.cc.Invoke(ctx, Query_TokenizeShareRecordReward_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // QueryServer is the server API for Query service. // All implementations must embed UnimplementedQueryServer // for forward compatibility @@ -181,6 +193,8 @@ type QueryServer interface { DelegatorWithdrawAddress(context.Context, *QueryDelegatorWithdrawAddressRequest) (*QueryDelegatorWithdrawAddressResponse, error) // CommunityPool queries the community pool coins. CommunityPool(context.Context, *QueryCommunityPoolRequest) (*QueryCommunityPoolResponse, error) + // TokenizeShareRecordReward queries the tokenize share record rewards + TokenizeShareRecordReward(context.Context, *QueryTokenizeShareRecordRewardRequest) (*QueryTokenizeShareRecordRewardResponse, error) mustEmbedUnimplementedQueryServer() } @@ -218,6 +232,9 @@ func (UnimplementedQueryServer) DelegatorWithdrawAddress(context.Context, *Query func (UnimplementedQueryServer) CommunityPool(context.Context, *QueryCommunityPoolRequest) (*QueryCommunityPoolResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CommunityPool not implemented") } +func (UnimplementedQueryServer) TokenizeShareRecordReward(context.Context, *QueryTokenizeShareRecordRewardRequest) (*QueryTokenizeShareRecordRewardResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TokenizeShareRecordReward not implemented") +} func (UnimplementedQueryServer) mustEmbedUnimplementedQueryServer() {} // UnsafeQueryServer may be embedded to opt out of forward compatibility for this service. @@ -411,6 +428,24 @@ func _Query_CommunityPool_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } +func _Query_TokenizeShareRecordReward_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryTokenizeShareRecordRewardRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).TokenizeShareRecordReward(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_TokenizeShareRecordReward_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).TokenizeShareRecordReward(ctx, req.(*QueryTokenizeShareRecordRewardRequest)) + } + return interceptor(ctx, in, info, handler) +} + // Query_ServiceDesc is the grpc.ServiceDesc for Query service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -458,6 +493,10 @@ var Query_ServiceDesc = grpc.ServiceDesc{ MethodName: "CommunityPool", Handler: _Query_CommunityPool_Handler, }, + { + MethodName: "TokenizeShareRecordReward", + Handler: _Query_TokenizeShareRecordReward_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "cosmos/distribution/v1beta1/query.proto", diff --git a/api/cosmos/distribution/v1beta1/tx.pulsar.go b/api/cosmos/distribution/v1beta1/tx.pulsar.go index a6a38d365afc..d45f6717e313 100644 --- a/api/cosmos/distribution/v1beta1/tx.pulsar.go +++ b/api/cosmos/distribution/v1beta1/tx.pulsar.go @@ -5140,6 +5140,1606 @@ func (x *fastReflection_MsgCommunityPoolSpend) ProtoMethods() *protoiface.Method } } +var ( + md_MsgWithdrawTokenizeShareRecordReward protoreflect.MessageDescriptor + fd_MsgWithdrawTokenizeShareRecordReward_owner_address protoreflect.FieldDescriptor + fd_MsgWithdrawTokenizeShareRecordReward_record_id protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_distribution_v1beta1_tx_proto_init() + md_MsgWithdrawTokenizeShareRecordReward = File_cosmos_distribution_v1beta1_tx_proto.Messages().ByName("MsgWithdrawTokenizeShareRecordReward") + fd_MsgWithdrawTokenizeShareRecordReward_owner_address = md_MsgWithdrawTokenizeShareRecordReward.Fields().ByName("owner_address") + fd_MsgWithdrawTokenizeShareRecordReward_record_id = md_MsgWithdrawTokenizeShareRecordReward.Fields().ByName("record_id") +} + +var _ protoreflect.Message = (*fastReflection_MsgWithdrawTokenizeShareRecordReward)(nil) + +type fastReflection_MsgWithdrawTokenizeShareRecordReward MsgWithdrawTokenizeShareRecordReward + +func (x *MsgWithdrawTokenizeShareRecordReward) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgWithdrawTokenizeShareRecordReward)(x) +} + +func (x *MsgWithdrawTokenizeShareRecordReward) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_distribution_v1beta1_tx_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgWithdrawTokenizeShareRecordReward_messageType fastReflection_MsgWithdrawTokenizeShareRecordReward_messageType +var _ protoreflect.MessageType = fastReflection_MsgWithdrawTokenizeShareRecordReward_messageType{} + +type fastReflection_MsgWithdrawTokenizeShareRecordReward_messageType struct{} + +func (x fastReflection_MsgWithdrawTokenizeShareRecordReward_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgWithdrawTokenizeShareRecordReward)(nil) +} +func (x fastReflection_MsgWithdrawTokenizeShareRecordReward_messageType) New() protoreflect.Message { + return new(fastReflection_MsgWithdrawTokenizeShareRecordReward) +} +func (x fastReflection_MsgWithdrawTokenizeShareRecordReward_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgWithdrawTokenizeShareRecordReward +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordReward) Descriptor() protoreflect.MessageDescriptor { + return md_MsgWithdrawTokenizeShareRecordReward +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordReward) Type() protoreflect.MessageType { + return _fastReflection_MsgWithdrawTokenizeShareRecordReward_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordReward) New() protoreflect.Message { + return new(fastReflection_MsgWithdrawTokenizeShareRecordReward) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordReward) Interface() protoreflect.ProtoMessage { + return (*MsgWithdrawTokenizeShareRecordReward)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordReward) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.OwnerAddress != "" { + value := protoreflect.ValueOfString(x.OwnerAddress) + if !f(fd_MsgWithdrawTokenizeShareRecordReward_owner_address, value) { + return + } + } + if x.RecordId != uint64(0) { + value := protoreflect.ValueOfUint64(x.RecordId) + if !f(fd_MsgWithdrawTokenizeShareRecordReward_record_id, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordReward) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward.owner_address": + return x.OwnerAddress != "" + case "cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward.record_id": + return x.RecordId != uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordReward) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward.owner_address": + x.OwnerAddress = "" + case "cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward.record_id": + x.RecordId = uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordReward) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward.owner_address": + value := x.OwnerAddress + return protoreflect.ValueOfString(value) + case "cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward.record_id": + value := x.RecordId + return protoreflect.ValueOfUint64(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordReward) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward.owner_address": + x.OwnerAddress = value.Interface().(string) + case "cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward.record_id": + x.RecordId = value.Uint() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordReward) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward.owner_address": + panic(fmt.Errorf("field owner_address of message cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward is not mutable")) + case "cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward.record_id": + panic(fmt.Errorf("field record_id of message cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordReward) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward.owner_address": + return protoreflect.ValueOfString("") + case "cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward.record_id": + return protoreflect.ValueOfUint64(uint64(0)) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordReward) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordReward) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordReward) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordReward) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordReward) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgWithdrawTokenizeShareRecordReward) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.OwnerAddress) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.RecordId != 0 { + n += 1 + runtime.Sov(uint64(x.RecordId)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgWithdrawTokenizeShareRecordReward) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.RecordId != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.RecordId)) + i-- + dAtA[i] = 0x10 + } + if len(x.OwnerAddress) > 0 { + i -= len(x.OwnerAddress) + copy(dAtA[i:], x.OwnerAddress) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.OwnerAddress))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgWithdrawTokenizeShareRecordReward) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgWithdrawTokenizeShareRecordReward: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgWithdrawTokenizeShareRecordReward: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field OwnerAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.OwnerAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field RecordId", wireType) + } + x.RecordId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.RecordId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgWithdrawTokenizeShareRecordRewardResponse protoreflect.MessageDescriptor +) + +func init() { + file_cosmos_distribution_v1beta1_tx_proto_init() + md_MsgWithdrawTokenizeShareRecordRewardResponse = File_cosmos_distribution_v1beta1_tx_proto.Messages().ByName("MsgWithdrawTokenizeShareRecordRewardResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse)(nil) + +type fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse MsgWithdrawTokenizeShareRecordRewardResponse + +func (x *MsgWithdrawTokenizeShareRecordRewardResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse)(x) +} + +func (x *MsgWithdrawTokenizeShareRecordRewardResponse) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_distribution_v1beta1_tx_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse_messageType fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse_messageType{} + +type fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse_messageType struct{} + +func (x fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse)(nil) +} +func (x fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse) +} +func (x fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgWithdrawTokenizeShareRecordRewardResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgWithdrawTokenizeShareRecordRewardResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse) New() protoreflect.Message { + return new(fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse) Interface() protoreflect.ProtoMessage { + return (*MsgWithdrawTokenizeShareRecordRewardResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordRewardResponse")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordRewardResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordRewardResponse")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordRewardResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordRewardResponse")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordRewardResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordRewardResponse")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordRewardResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordRewardResponse")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordRewardResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordRewardResponse")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordRewardResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordRewardResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgWithdrawTokenizeShareRecordRewardResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgWithdrawTokenizeShareRecordRewardResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgWithdrawTokenizeShareRecordRewardResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgWithdrawTokenizeShareRecordRewardResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgWithdrawTokenizeShareRecordRewardResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgWithdrawTokenizeShareRecordRewardResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgWithdrawAllTokenizeShareRecordReward protoreflect.MessageDescriptor + fd_MsgWithdrawAllTokenizeShareRecordReward_owner_address protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_distribution_v1beta1_tx_proto_init() + md_MsgWithdrawAllTokenizeShareRecordReward = File_cosmos_distribution_v1beta1_tx_proto.Messages().ByName("MsgWithdrawAllTokenizeShareRecordReward") + fd_MsgWithdrawAllTokenizeShareRecordReward_owner_address = md_MsgWithdrawAllTokenizeShareRecordReward.Fields().ByName("owner_address") +} + +var _ protoreflect.Message = (*fastReflection_MsgWithdrawAllTokenizeShareRecordReward)(nil) + +type fastReflection_MsgWithdrawAllTokenizeShareRecordReward MsgWithdrawAllTokenizeShareRecordReward + +func (x *MsgWithdrawAllTokenizeShareRecordReward) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgWithdrawAllTokenizeShareRecordReward)(x) +} + +func (x *MsgWithdrawAllTokenizeShareRecordReward) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_distribution_v1beta1_tx_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgWithdrawAllTokenizeShareRecordReward_messageType fastReflection_MsgWithdrawAllTokenizeShareRecordReward_messageType +var _ protoreflect.MessageType = fastReflection_MsgWithdrawAllTokenizeShareRecordReward_messageType{} + +type fastReflection_MsgWithdrawAllTokenizeShareRecordReward_messageType struct{} + +func (x fastReflection_MsgWithdrawAllTokenizeShareRecordReward_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgWithdrawAllTokenizeShareRecordReward)(nil) +} +func (x fastReflection_MsgWithdrawAllTokenizeShareRecordReward_messageType) New() protoreflect.Message { + return new(fastReflection_MsgWithdrawAllTokenizeShareRecordReward) +} +func (x fastReflection_MsgWithdrawAllTokenizeShareRecordReward_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgWithdrawAllTokenizeShareRecordReward +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordReward) Descriptor() protoreflect.MessageDescriptor { + return md_MsgWithdrawAllTokenizeShareRecordReward +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordReward) Type() protoreflect.MessageType { + return _fastReflection_MsgWithdrawAllTokenizeShareRecordReward_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordReward) New() protoreflect.Message { + return new(fastReflection_MsgWithdrawAllTokenizeShareRecordReward) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordReward) Interface() protoreflect.ProtoMessage { + return (*MsgWithdrawAllTokenizeShareRecordReward)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordReward) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.OwnerAddress != "" { + value := protoreflect.ValueOfString(x.OwnerAddress) + if !f(fd_MsgWithdrawAllTokenizeShareRecordReward_owner_address, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordReward) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordReward.owner_address": + return x.OwnerAddress != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordReward")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordReward does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordReward) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordReward.owner_address": + x.OwnerAddress = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordReward")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordReward does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordReward) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordReward.owner_address": + value := x.OwnerAddress + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordReward")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordReward does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordReward) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordReward.owner_address": + x.OwnerAddress = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordReward")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordReward does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordReward) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordReward.owner_address": + panic(fmt.Errorf("field owner_address of message cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordReward is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordReward")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordReward does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordReward) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordReward.owner_address": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordReward")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordReward does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordReward) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordReward", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordReward) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordReward) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordReward) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordReward) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgWithdrawAllTokenizeShareRecordReward) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.OwnerAddress) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgWithdrawAllTokenizeShareRecordReward) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.OwnerAddress) > 0 { + i -= len(x.OwnerAddress) + copy(dAtA[i:], x.OwnerAddress) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.OwnerAddress))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgWithdrawAllTokenizeShareRecordReward) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgWithdrawAllTokenizeShareRecordReward: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgWithdrawAllTokenizeShareRecordReward: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field OwnerAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.OwnerAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgWithdrawAllTokenizeShareRecordRewardResponse protoreflect.MessageDescriptor +) + +func init() { + file_cosmos_distribution_v1beta1_tx_proto_init() + md_MsgWithdrawAllTokenizeShareRecordRewardResponse = File_cosmos_distribution_v1beta1_tx_proto.Messages().ByName("MsgWithdrawAllTokenizeShareRecordRewardResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse)(nil) + +type fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse MsgWithdrawAllTokenizeShareRecordRewardResponse + +func (x *MsgWithdrawAllTokenizeShareRecordRewardResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse)(x) +} + +func (x *MsgWithdrawAllTokenizeShareRecordRewardResponse) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_distribution_v1beta1_tx_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse_messageType fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse_messageType{} + +type fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse_messageType struct{} + +func (x fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse)(nil) +} +func (x fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse) +} +func (x fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgWithdrawAllTokenizeShareRecordRewardResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgWithdrawAllTokenizeShareRecordRewardResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse) New() protoreflect.Message { + return new(fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse) Interface() protoreflect.ProtoMessage { + return (*MsgWithdrawAllTokenizeShareRecordRewardResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordRewardResponse")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordRewardResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordRewardResponse")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordRewardResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordRewardResponse")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordRewardResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordRewardResponse")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordRewardResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordRewardResponse")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordRewardResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordRewardResponse")) + } + panic(fmt.Errorf("message cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordRewardResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordRewardResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgWithdrawAllTokenizeShareRecordRewardResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgWithdrawAllTokenizeShareRecordRewardResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgWithdrawAllTokenizeShareRecordRewardResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgWithdrawAllTokenizeShareRecordRewardResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgWithdrawAllTokenizeShareRecordRewardResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgWithdrawAllTokenizeShareRecordRewardResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + var ( md_MsgCommunityPoolSpendResponse protoreflect.MessageDescriptor ) @@ -5158,7 +6758,7 @@ func (x *MsgCommunityPoolSpendResponse) ProtoReflect() protoreflect.Message { } func (x *MsgCommunityPoolSpendResponse) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_distribution_v1beta1_tx_proto_msgTypes[11] + mi := &file_cosmos_distribution_v1beta1_tx_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5571,7 +7171,7 @@ func (x *MsgDepositValidatorRewardsPool) ProtoReflect() protoreflect.Message { } func (x *MsgDepositValidatorRewardsPool) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_distribution_v1beta1_tx_proto_msgTypes[12] + mi := &file_cosmos_distribution_v1beta1_tx_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6136,7 +7736,7 @@ func (x *MsgDepositValidatorRewardsPoolResponse) ProtoReflect() protoreflect.Mes } func (x *MsgDepositValidatorRewardsPoolResponse) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_distribution_v1beta1_tx_proto_msgTypes[13] + mi := &file_cosmos_distribution_v1beta1_tx_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6927,6 +8527,141 @@ func (x *MsgCommunityPoolSpend) GetAmount() []*v1beta1.Coin { return nil } +// MsgWithdrawTokenizeShareRecordReward withdraws tokenize share rewards for a specific record +type MsgWithdrawTokenizeShareRecordReward struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OwnerAddress string `protobuf:"bytes,1,opt,name=owner_address,json=ownerAddress,proto3" json:"owner_address,omitempty"` + RecordId uint64 `protobuf:"varint,2,opt,name=record_id,json=recordId,proto3" json:"record_id,omitempty"` +} + +func (x *MsgWithdrawTokenizeShareRecordReward) Reset() { + *x = MsgWithdrawTokenizeShareRecordReward{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_distribution_v1beta1_tx_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgWithdrawTokenizeShareRecordReward) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgWithdrawTokenizeShareRecordReward) ProtoMessage() {} + +// Deprecated: Use MsgWithdrawTokenizeShareRecordReward.ProtoReflect.Descriptor instead. +func (*MsgWithdrawTokenizeShareRecordReward) Descriptor() ([]byte, []int) { + return file_cosmos_distribution_v1beta1_tx_proto_rawDescGZIP(), []int{11} +} + +func (x *MsgWithdrawTokenizeShareRecordReward) GetOwnerAddress() string { + if x != nil { + return x.OwnerAddress + } + return "" +} + +func (x *MsgWithdrawTokenizeShareRecordReward) GetRecordId() uint64 { + if x != nil { + return x.RecordId + } + return 0 +} + +// MsgWithdrawTokenizeShareRecordReward defines the Msg/WithdrawTokenizeShareRecordReward response type. +type MsgWithdrawTokenizeShareRecordRewardResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgWithdrawTokenizeShareRecordRewardResponse) Reset() { + *x = MsgWithdrawTokenizeShareRecordRewardResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_distribution_v1beta1_tx_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgWithdrawTokenizeShareRecordRewardResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgWithdrawTokenizeShareRecordRewardResponse) ProtoMessage() {} + +// Deprecated: Use MsgWithdrawTokenizeShareRecordRewardResponse.ProtoReflect.Descriptor instead. +func (*MsgWithdrawTokenizeShareRecordRewardResponse) Descriptor() ([]byte, []int) { + return file_cosmos_distribution_v1beta1_tx_proto_rawDescGZIP(), []int{12} +} + +// MsgWithdrawAllTokenizeShareRecordReward withdraws tokenize share rewards or all +// records owned by the designated owner +type MsgWithdrawAllTokenizeShareRecordReward struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OwnerAddress string `protobuf:"bytes,1,opt,name=owner_address,json=ownerAddress,proto3" json:"owner_address,omitempty"` +} + +func (x *MsgWithdrawAllTokenizeShareRecordReward) Reset() { + *x = MsgWithdrawAllTokenizeShareRecordReward{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_distribution_v1beta1_tx_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgWithdrawAllTokenizeShareRecordReward) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgWithdrawAllTokenizeShareRecordReward) ProtoMessage() {} + +// Deprecated: Use MsgWithdrawAllTokenizeShareRecordReward.ProtoReflect.Descriptor instead. +func (*MsgWithdrawAllTokenizeShareRecordReward) Descriptor() ([]byte, []int) { + return file_cosmos_distribution_v1beta1_tx_proto_rawDescGZIP(), []int{13} +} + +func (x *MsgWithdrawAllTokenizeShareRecordReward) GetOwnerAddress() string { + if x != nil { + return x.OwnerAddress + } + return "" +} + +// MsgWithdrawAllTokenizeShareRecordRewardResponse defines the Msg/WithdrawTokenizeShareRecordReward response type. +type MsgWithdrawAllTokenizeShareRecordRewardResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgWithdrawAllTokenizeShareRecordRewardResponse) Reset() { + *x = MsgWithdrawAllTokenizeShareRecordRewardResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_distribution_v1beta1_tx_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgWithdrawAllTokenizeShareRecordRewardResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgWithdrawAllTokenizeShareRecordRewardResponse) ProtoMessage() {} + +// Deprecated: Use MsgWithdrawAllTokenizeShareRecordRewardResponse.ProtoReflect.Descriptor instead. +func (*MsgWithdrawAllTokenizeShareRecordRewardResponse) Descriptor() ([]byte, []int) { + return file_cosmos_distribution_v1beta1_tx_proto_rawDescGZIP(), []int{14} +} + // MsgCommunityPoolSpendResponse defines the response to executing a // MsgCommunityPoolSpend message. // @@ -6940,7 +8675,7 @@ type MsgCommunityPoolSpendResponse struct { func (x *MsgCommunityPoolSpendResponse) Reset() { *x = MsgCommunityPoolSpendResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_distribution_v1beta1_tx_proto_msgTypes[11] + mi := &file_cosmos_distribution_v1beta1_tx_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6954,7 +8689,7 @@ func (*MsgCommunityPoolSpendResponse) ProtoMessage() {} // Deprecated: Use MsgCommunityPoolSpendResponse.ProtoReflect.Descriptor instead. func (*MsgCommunityPoolSpendResponse) Descriptor() ([]byte, []int) { - return file_cosmos_distribution_v1beta1_tx_proto_rawDescGZIP(), []int{11} + return file_cosmos_distribution_v1beta1_tx_proto_rawDescGZIP(), []int{15} } // DepositValidatorRewardsPool defines the request structure to provide @@ -6974,7 +8709,7 @@ type MsgDepositValidatorRewardsPool struct { func (x *MsgDepositValidatorRewardsPool) Reset() { *x = MsgDepositValidatorRewardsPool{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_distribution_v1beta1_tx_proto_msgTypes[12] + mi := &file_cosmos_distribution_v1beta1_tx_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6988,7 +8723,7 @@ func (*MsgDepositValidatorRewardsPool) ProtoMessage() {} // Deprecated: Use MsgDepositValidatorRewardsPool.ProtoReflect.Descriptor instead. func (*MsgDepositValidatorRewardsPool) Descriptor() ([]byte, []int) { - return file_cosmos_distribution_v1beta1_tx_proto_rawDescGZIP(), []int{12} + return file_cosmos_distribution_v1beta1_tx_proto_rawDescGZIP(), []int{16} } func (x *MsgDepositValidatorRewardsPool) GetDepositor() string { @@ -7025,7 +8760,7 @@ type MsgDepositValidatorRewardsPoolResponse struct { func (x *MsgDepositValidatorRewardsPoolResponse) Reset() { *x = MsgDepositValidatorRewardsPoolResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_distribution_v1beta1_tx_proto_msgTypes[13] + mi := &file_cosmos_distribution_v1beta1_tx_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7039,7 +8774,7 @@ func (*MsgDepositValidatorRewardsPoolResponse) ProtoMessage() {} // Deprecated: Use MsgDepositValidatorRewardsPoolResponse.ProtoReflect.Descriptor instead. func (*MsgDepositValidatorRewardsPoolResponse) Descriptor() ([]byte, []int) { - return file_cosmos_distribution_v1beta1_tx_proto_rawDescGZIP(), []int{13} + return file_cosmos_distribution_v1beta1_tx_proto_rawDescGZIP(), []int{17} } var File_cosmos_distribution_v1beta1_tx_proto protoreflect.FileDescriptor @@ -7176,114 +8911,169 @@ var file_cosmos_distribution_v1beta1_tx_proto_rawDesc = []byte{ 0x74, 0x3a, 0x39, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x26, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x2f, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, - 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x22, 0x1f, 0x0a, 0x1d, - 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, - 0x53, 0x70, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe5, 0x02, - 0x0a, 0x1e, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x50, 0x6f, 0x6f, 0x6c, - 0x12, 0x36, 0x0a, 0x09, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x64, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x12, 0x4e, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, - 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x79, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, - 0x6f, 0x69, 0x6e, 0x42, 0x46, 0xc8, 0xde, 0x1f, 0x00, 0xaa, 0xdf, 0x1f, 0x28, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, - 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x9a, 0xe7, 0xb0, 0x2a, 0x0c, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, - 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x3a, 0x40, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, - 0x2a, 0x09, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x25, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x64, 0x69, 0x73, 0x74, 0x72, - 0x2f, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x73, 0x22, 0x28, 0x0a, 0x26, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x73, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, - 0xec, 0x07, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x84, 0x01, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x57, - 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x32, + 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x22, 0xd8, 0x01, 0x0a, + 0x24, 0x4d, 0x73, 0x67, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x3d, 0x0a, 0x0d, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xf2, 0xde, + 0x1f, 0x14, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x52, 0x0c, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, + 0x64, 0x3a, 0x54, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x0d, + 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x8a, 0xe7, 0xb0, + 0x2a, 0x35, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x64, 0x69, 0x73, + 0x74, 0x72, 0x2f, 0x4d, 0x73, 0x67, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x2e, 0x0a, 0x2c, 0x4d, 0x73, 0x67, 0x57, 0x69, + 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, + 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc1, 0x01, 0x0a, 0x27, 0x4d, 0x73, 0x67, 0x57, + 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x6c, 0x6c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, + 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x12, 0x3d, 0x0a, 0x0d, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xf2, 0xde, 0x1f, 0x14, + 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x22, 0x52, 0x0c, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x3a, 0x57, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, + 0x0d, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x8a, 0xe7, + 0xb0, 0x2a, 0x38, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x64, 0x69, + 0x73, 0x74, 0x72, 0x2f, 0x4d, 0x73, 0x67, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, + 0x6c, 0x6c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x31, 0x0a, 0x2f, 0x4d, + 0x73, 0x67, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x6c, 0x6c, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, + 0x0a, 0x1d, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x6f, + 0x6f, 0x6c, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0xe5, 0x02, 0x0a, 0x1e, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x50, 0x6f, + 0x6f, 0x6c, 0x12, 0x36, 0x0a, 0x09, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, + 0x09, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x12, 0x4e, 0x0a, 0x11, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x79, 0x0a, 0x06, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x46, 0xc8, 0xde, 0x1f, 0x00, 0xaa, 0xdf, 0x1f, 0x28, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x9a, 0xe7, 0xb0, 0x2a, 0x0c, 0x6c, 0x65, 0x67, 0x61, + 0x63, 0x79, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x40, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x82, + 0xe7, 0xb0, 0x2a, 0x09, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x8a, 0xe7, 0xb0, + 0x2a, 0x25, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x64, 0x69, 0x73, + 0x74, 0x72, 0x2f, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x56, 0x61, 0x6c, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x22, 0x28, 0x0a, 0x26, 0x4d, 0x73, 0x67, 0x44, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x73, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x32, 0xdd, 0x0a, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x84, 0x01, 0x0a, 0x12, 0x53, 0x65, + 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x12, 0x32, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, + 0x73, 0x67, 0x53, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x1a, 0x3a, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, + 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, + 0x77, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x93, 0x01, 0x0a, 0x17, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x44, 0x65, 0x6c, + 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x37, 0x2e, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x57, 0x69, + 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x1a, 0x3f, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, + 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x44, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9f, 0x01, 0x0a, 0x1b, 0x57, 0x69, 0x74, 0x68, 0x64, + 0x72, 0x61, 0x77, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x1a, 0x43, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x81, 0x01, 0x0a, 0x11, 0x46, 0x75, 0x6e, + 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x31, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, - 0x53, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x1a, 0x3a, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x93, - 0x01, 0x0a, 0x17, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x44, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x37, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x57, 0x69, 0x74, 0x68, - 0x64, 0x72, 0x61, 0x77, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x1a, 0x3f, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x44, 0x65, 0x6c, - 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9f, 0x01, 0x0a, 0x1b, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, - 0x77, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, - 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x1a, 0x43, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, + 0x46, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, + 0x6c, 0x1a, 0x39, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x4d, 0x73, 0x67, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x81, 0x01, 0x0a, 0x11, 0x46, 0x75, 0x6e, 0x64, 0x43, - 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x31, 0x2e, 0x63, + 0x4d, 0x73, 0x67, 0x46, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, + 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x0c, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2c, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x46, 0x75, - 0x6e, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x1a, - 0x39, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, - 0x67, 0x46, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x6f, - 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x0c, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2c, 0x2e, 0x63, 0x6f, 0x73, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x34, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x34, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x84, - 0x01, 0x0a, 0x12, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, - 0x53, 0x70, 0x65, 0x6e, 0x64, 0x12, 0x32, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, - 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, - 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x1a, 0x3a, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x75, - 0x6e, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9f, 0x01, 0x0a, 0x1b, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x73, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x3b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, - 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x50, 0x6f, - 0x6f, 0x6c, 0x1a, 0x43, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x50, 0x6f, 0x6f, 0x6c, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xfe, - 0x01, 0x0a, 0x1f, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, + 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x84, 0x01, 0x0a, 0x12, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x6f, + 0x6f, 0x6c, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x12, 0x32, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x1a, 0x3a, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9f, 0x01, 0x0a, 0x1b, 0x44, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x73, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x3b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, + 0x50, 0x6f, 0x6f, 0x6c, 0x1a, 0x43, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x40, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x64, 0x69, 0x73, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, - 0x02, 0x03, 0x43, 0x44, 0x58, 0xaa, 0x02, 0x1b, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, - 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0xca, 0x02, 0x1b, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x44, 0x69, 0x73, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0xe2, 0x02, 0x27, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x44, 0x69, 0x73, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, - 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1d, 0x43, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa8, 0xe2, 0x1e, 0x01, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x50, 0x6f, 0x6f, + 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xb1, 0x01, 0x0a, 0x21, 0x57, 0x69, + 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, + 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, + 0x41, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, + 0x67, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, + 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x1a, 0x49, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x4d, 0x73, 0x67, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xba, 0x01, + 0x0a, 0x24, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x6c, 0x6c, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x44, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, + 0x41, 0x6c, 0x6c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, + 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x1a, 0x4c, 0x2e, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x57, 0x69, + 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x6c, 0x6c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, + 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, + 0x01, 0x42, 0xfe, 0x01, 0x0a, 0x1f, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x40, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x64, + 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x44, 0x58, 0xaa, 0x02, 0x1b, 0x43, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x1b, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, + 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x27, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x44, 0x69, + 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, + 0x1d, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa8, 0xe2, + 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -7298,48 +9088,56 @@ func file_cosmos_distribution_v1beta1_tx_proto_rawDescGZIP() []byte { return file_cosmos_distribution_v1beta1_tx_proto_rawDescData } -var file_cosmos_distribution_v1beta1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 14) +var file_cosmos_distribution_v1beta1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 18) var file_cosmos_distribution_v1beta1_tx_proto_goTypes = []interface{}{ - (*MsgSetWithdrawAddress)(nil), // 0: cosmos.distribution.v1beta1.MsgSetWithdrawAddress - (*MsgSetWithdrawAddressResponse)(nil), // 1: cosmos.distribution.v1beta1.MsgSetWithdrawAddressResponse - (*MsgWithdrawDelegatorReward)(nil), // 2: cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward - (*MsgWithdrawDelegatorRewardResponse)(nil), // 3: cosmos.distribution.v1beta1.MsgWithdrawDelegatorRewardResponse - (*MsgWithdrawValidatorCommission)(nil), // 4: cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission - (*MsgWithdrawValidatorCommissionResponse)(nil), // 5: cosmos.distribution.v1beta1.MsgWithdrawValidatorCommissionResponse - (*MsgFundCommunityPool)(nil), // 6: cosmos.distribution.v1beta1.MsgFundCommunityPool - (*MsgFundCommunityPoolResponse)(nil), // 7: cosmos.distribution.v1beta1.MsgFundCommunityPoolResponse - (*MsgUpdateParams)(nil), // 8: cosmos.distribution.v1beta1.MsgUpdateParams - (*MsgUpdateParamsResponse)(nil), // 9: cosmos.distribution.v1beta1.MsgUpdateParamsResponse - (*MsgCommunityPoolSpend)(nil), // 10: cosmos.distribution.v1beta1.MsgCommunityPoolSpend - (*MsgCommunityPoolSpendResponse)(nil), // 11: cosmos.distribution.v1beta1.MsgCommunityPoolSpendResponse - (*MsgDepositValidatorRewardsPool)(nil), // 12: cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPool - (*MsgDepositValidatorRewardsPoolResponse)(nil), // 13: cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPoolResponse - (*v1beta1.Coin)(nil), // 14: cosmos.base.v1beta1.Coin - (*Params)(nil), // 15: cosmos.distribution.v1beta1.Params + (*MsgSetWithdrawAddress)(nil), // 0: cosmos.distribution.v1beta1.MsgSetWithdrawAddress + (*MsgSetWithdrawAddressResponse)(nil), // 1: cosmos.distribution.v1beta1.MsgSetWithdrawAddressResponse + (*MsgWithdrawDelegatorReward)(nil), // 2: cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward + (*MsgWithdrawDelegatorRewardResponse)(nil), // 3: cosmos.distribution.v1beta1.MsgWithdrawDelegatorRewardResponse + (*MsgWithdrawValidatorCommission)(nil), // 4: cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission + (*MsgWithdrawValidatorCommissionResponse)(nil), // 5: cosmos.distribution.v1beta1.MsgWithdrawValidatorCommissionResponse + (*MsgFundCommunityPool)(nil), // 6: cosmos.distribution.v1beta1.MsgFundCommunityPool + (*MsgFundCommunityPoolResponse)(nil), // 7: cosmos.distribution.v1beta1.MsgFundCommunityPoolResponse + (*MsgUpdateParams)(nil), // 8: cosmos.distribution.v1beta1.MsgUpdateParams + (*MsgUpdateParamsResponse)(nil), // 9: cosmos.distribution.v1beta1.MsgUpdateParamsResponse + (*MsgCommunityPoolSpend)(nil), // 10: cosmos.distribution.v1beta1.MsgCommunityPoolSpend + (*MsgWithdrawTokenizeShareRecordReward)(nil), // 11: cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward + (*MsgWithdrawTokenizeShareRecordRewardResponse)(nil), // 12: cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordRewardResponse + (*MsgWithdrawAllTokenizeShareRecordReward)(nil), // 13: cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordReward + (*MsgWithdrawAllTokenizeShareRecordRewardResponse)(nil), // 14: cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordRewardResponse + (*MsgCommunityPoolSpendResponse)(nil), // 15: cosmos.distribution.v1beta1.MsgCommunityPoolSpendResponse + (*MsgDepositValidatorRewardsPool)(nil), // 16: cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPool + (*MsgDepositValidatorRewardsPoolResponse)(nil), // 17: cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPoolResponse + (*v1beta1.Coin)(nil), // 18: cosmos.base.v1beta1.Coin + (*Params)(nil), // 19: cosmos.distribution.v1beta1.Params } var file_cosmos_distribution_v1beta1_tx_proto_depIdxs = []int32{ - 14, // 0: cosmos.distribution.v1beta1.MsgWithdrawDelegatorRewardResponse.amount:type_name -> cosmos.base.v1beta1.Coin - 14, // 1: cosmos.distribution.v1beta1.MsgWithdrawValidatorCommissionResponse.amount:type_name -> cosmos.base.v1beta1.Coin - 14, // 2: cosmos.distribution.v1beta1.MsgFundCommunityPool.amount:type_name -> cosmos.base.v1beta1.Coin - 15, // 3: cosmos.distribution.v1beta1.MsgUpdateParams.params:type_name -> cosmos.distribution.v1beta1.Params - 14, // 4: cosmos.distribution.v1beta1.MsgCommunityPoolSpend.amount:type_name -> cosmos.base.v1beta1.Coin - 14, // 5: cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPool.amount:type_name -> cosmos.base.v1beta1.Coin + 18, // 0: cosmos.distribution.v1beta1.MsgWithdrawDelegatorRewardResponse.amount:type_name -> cosmos.base.v1beta1.Coin + 18, // 1: cosmos.distribution.v1beta1.MsgWithdrawValidatorCommissionResponse.amount:type_name -> cosmos.base.v1beta1.Coin + 18, // 2: cosmos.distribution.v1beta1.MsgFundCommunityPool.amount:type_name -> cosmos.base.v1beta1.Coin + 19, // 3: cosmos.distribution.v1beta1.MsgUpdateParams.params:type_name -> cosmos.distribution.v1beta1.Params + 18, // 4: cosmos.distribution.v1beta1.MsgCommunityPoolSpend.amount:type_name -> cosmos.base.v1beta1.Coin + 18, // 5: cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPool.amount:type_name -> cosmos.base.v1beta1.Coin 0, // 6: cosmos.distribution.v1beta1.Msg.SetWithdrawAddress:input_type -> cosmos.distribution.v1beta1.MsgSetWithdrawAddress 2, // 7: cosmos.distribution.v1beta1.Msg.WithdrawDelegatorReward:input_type -> cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward 4, // 8: cosmos.distribution.v1beta1.Msg.WithdrawValidatorCommission:input_type -> cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission 6, // 9: cosmos.distribution.v1beta1.Msg.FundCommunityPool:input_type -> cosmos.distribution.v1beta1.MsgFundCommunityPool 8, // 10: cosmos.distribution.v1beta1.Msg.UpdateParams:input_type -> cosmos.distribution.v1beta1.MsgUpdateParams 10, // 11: cosmos.distribution.v1beta1.Msg.CommunityPoolSpend:input_type -> cosmos.distribution.v1beta1.MsgCommunityPoolSpend - 12, // 12: cosmos.distribution.v1beta1.Msg.DepositValidatorRewardsPool:input_type -> cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPool - 1, // 13: cosmos.distribution.v1beta1.Msg.SetWithdrawAddress:output_type -> cosmos.distribution.v1beta1.MsgSetWithdrawAddressResponse - 3, // 14: cosmos.distribution.v1beta1.Msg.WithdrawDelegatorReward:output_type -> cosmos.distribution.v1beta1.MsgWithdrawDelegatorRewardResponse - 5, // 15: cosmos.distribution.v1beta1.Msg.WithdrawValidatorCommission:output_type -> cosmos.distribution.v1beta1.MsgWithdrawValidatorCommissionResponse - 7, // 16: cosmos.distribution.v1beta1.Msg.FundCommunityPool:output_type -> cosmos.distribution.v1beta1.MsgFundCommunityPoolResponse - 9, // 17: cosmos.distribution.v1beta1.Msg.UpdateParams:output_type -> cosmos.distribution.v1beta1.MsgUpdateParamsResponse - 11, // 18: cosmos.distribution.v1beta1.Msg.CommunityPoolSpend:output_type -> cosmos.distribution.v1beta1.MsgCommunityPoolSpendResponse - 13, // 19: cosmos.distribution.v1beta1.Msg.DepositValidatorRewardsPool:output_type -> cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPoolResponse - 13, // [13:20] is the sub-list for method output_type - 6, // [6:13] is the sub-list for method input_type + 16, // 12: cosmos.distribution.v1beta1.Msg.DepositValidatorRewardsPool:input_type -> cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPool + 11, // 13: cosmos.distribution.v1beta1.Msg.WithdrawTokenizeShareRecordReward:input_type -> cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward + 13, // 14: cosmos.distribution.v1beta1.Msg.WithdrawAllTokenizeShareRecordReward:input_type -> cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordReward + 1, // 15: cosmos.distribution.v1beta1.Msg.SetWithdrawAddress:output_type -> cosmos.distribution.v1beta1.MsgSetWithdrawAddressResponse + 3, // 16: cosmos.distribution.v1beta1.Msg.WithdrawDelegatorReward:output_type -> cosmos.distribution.v1beta1.MsgWithdrawDelegatorRewardResponse + 5, // 17: cosmos.distribution.v1beta1.Msg.WithdrawValidatorCommission:output_type -> cosmos.distribution.v1beta1.MsgWithdrawValidatorCommissionResponse + 7, // 18: cosmos.distribution.v1beta1.Msg.FundCommunityPool:output_type -> cosmos.distribution.v1beta1.MsgFundCommunityPoolResponse + 9, // 19: cosmos.distribution.v1beta1.Msg.UpdateParams:output_type -> cosmos.distribution.v1beta1.MsgUpdateParamsResponse + 15, // 20: cosmos.distribution.v1beta1.Msg.CommunityPoolSpend:output_type -> cosmos.distribution.v1beta1.MsgCommunityPoolSpendResponse + 17, // 21: cosmos.distribution.v1beta1.Msg.DepositValidatorRewardsPool:output_type -> cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPoolResponse + 12, // 22: cosmos.distribution.v1beta1.Msg.WithdrawTokenizeShareRecordReward:output_type -> cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordRewardResponse + 14, // 23: cosmos.distribution.v1beta1.Msg.WithdrawAllTokenizeShareRecordReward:output_type -> cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordRewardResponse + 15, // [15:24] is the sub-list for method output_type + 6, // [6:15] is the sub-list for method input_type 6, // [6:6] is the sub-list for extension type_name 6, // [6:6] is the sub-list for extension extendee 0, // [0:6] is the sub-list for field type_name @@ -7485,7 +9283,7 @@ func file_cosmos_distribution_v1beta1_tx_proto_init() { } } file_cosmos_distribution_v1beta1_tx_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MsgCommunityPoolSpendResponse); i { + switch v := v.(*MsgWithdrawTokenizeShareRecordReward); i { case 0: return &v.state case 1: @@ -7497,7 +9295,7 @@ func file_cosmos_distribution_v1beta1_tx_proto_init() { } } file_cosmos_distribution_v1beta1_tx_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MsgDepositValidatorRewardsPool); i { + switch v := v.(*MsgWithdrawTokenizeShareRecordRewardResponse); i { case 0: return &v.state case 1: @@ -7509,6 +9307,54 @@ func file_cosmos_distribution_v1beta1_tx_proto_init() { } } file_cosmos_distribution_v1beta1_tx_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgWithdrawAllTokenizeShareRecordReward); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_distribution_v1beta1_tx_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgWithdrawAllTokenizeShareRecordRewardResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_distribution_v1beta1_tx_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgCommunityPoolSpendResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_distribution_v1beta1_tx_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgDepositValidatorRewardsPool); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_distribution_v1beta1_tx_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MsgDepositValidatorRewardsPoolResponse); i { case 0: return &v.state @@ -7527,7 +9373,7 @@ func file_cosmos_distribution_v1beta1_tx_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_cosmos_distribution_v1beta1_tx_proto_rawDesc, NumEnums: 0, - NumMessages: 14, + NumMessages: 18, NumExtensions: 0, NumServices: 1, }, diff --git a/api/cosmos/distribution/v1beta1/tx_grpc.pb.go b/api/cosmos/distribution/v1beta1/tx_grpc.pb.go index a11aa3e53d58..49efaab8c1fb 100644 --- a/api/cosmos/distribution/v1beta1/tx_grpc.pb.go +++ b/api/cosmos/distribution/v1beta1/tx_grpc.pb.go @@ -19,13 +19,15 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - Msg_SetWithdrawAddress_FullMethodName = "/cosmos.distribution.v1beta1.Msg/SetWithdrawAddress" - Msg_WithdrawDelegatorReward_FullMethodName = "/cosmos.distribution.v1beta1.Msg/WithdrawDelegatorReward" - Msg_WithdrawValidatorCommission_FullMethodName = "/cosmos.distribution.v1beta1.Msg/WithdrawValidatorCommission" - Msg_FundCommunityPool_FullMethodName = "/cosmos.distribution.v1beta1.Msg/FundCommunityPool" - Msg_UpdateParams_FullMethodName = "/cosmos.distribution.v1beta1.Msg/UpdateParams" - Msg_CommunityPoolSpend_FullMethodName = "/cosmos.distribution.v1beta1.Msg/CommunityPoolSpend" - Msg_DepositValidatorRewardsPool_FullMethodName = "/cosmos.distribution.v1beta1.Msg/DepositValidatorRewardsPool" + Msg_SetWithdrawAddress_FullMethodName = "/cosmos.distribution.v1beta1.Msg/SetWithdrawAddress" + Msg_WithdrawDelegatorReward_FullMethodName = "/cosmos.distribution.v1beta1.Msg/WithdrawDelegatorReward" + Msg_WithdrawValidatorCommission_FullMethodName = "/cosmos.distribution.v1beta1.Msg/WithdrawValidatorCommission" + Msg_FundCommunityPool_FullMethodName = "/cosmos.distribution.v1beta1.Msg/FundCommunityPool" + Msg_UpdateParams_FullMethodName = "/cosmos.distribution.v1beta1.Msg/UpdateParams" + Msg_CommunityPoolSpend_FullMethodName = "/cosmos.distribution.v1beta1.Msg/CommunityPoolSpend" + Msg_DepositValidatorRewardsPool_FullMethodName = "/cosmos.distribution.v1beta1.Msg/DepositValidatorRewardsPool" + Msg_WithdrawTokenizeShareRecordReward_FullMethodName = "/cosmos.distribution.v1beta1.Msg/WithdrawTokenizeShareRecordReward" + Msg_WithdrawAllTokenizeShareRecordReward_FullMethodName = "/cosmos.distribution.v1beta1.Msg/WithdrawAllTokenizeShareRecordReward" ) // MsgClient is the client API for Msg service. @@ -61,6 +63,10 @@ type MsgClient interface { // // Since: cosmos-sdk 0.50 DepositValidatorRewardsPool(ctx context.Context, in *MsgDepositValidatorRewardsPool, opts ...grpc.CallOption) (*MsgDepositValidatorRewardsPoolResponse, error) + // WithdrawTokenizeShareRecordReward defines a method to withdraw reward for an owning TokenizeShareRecord + WithdrawTokenizeShareRecordReward(ctx context.Context, in *MsgWithdrawTokenizeShareRecordReward, opts ...grpc.CallOption) (*MsgWithdrawTokenizeShareRecordRewardResponse, error) + // WithdrawAllTokenizeShareRecordReward defines a method to withdraw reward for all owning TokenizeShareRecord + WithdrawAllTokenizeShareRecordReward(ctx context.Context, in *MsgWithdrawAllTokenizeShareRecordReward, opts ...grpc.CallOption) (*MsgWithdrawAllTokenizeShareRecordRewardResponse, error) } type msgClient struct { @@ -134,6 +140,24 @@ func (c *msgClient) DepositValidatorRewardsPool(ctx context.Context, in *MsgDepo return out, nil } +func (c *msgClient) WithdrawTokenizeShareRecordReward(ctx context.Context, in *MsgWithdrawTokenizeShareRecordReward, opts ...grpc.CallOption) (*MsgWithdrawTokenizeShareRecordRewardResponse, error) { + out := new(MsgWithdrawTokenizeShareRecordRewardResponse) + err := c.cc.Invoke(ctx, Msg_WithdrawTokenizeShareRecordReward_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) WithdrawAllTokenizeShareRecordReward(ctx context.Context, in *MsgWithdrawAllTokenizeShareRecordReward, opts ...grpc.CallOption) (*MsgWithdrawAllTokenizeShareRecordRewardResponse, error) { + out := new(MsgWithdrawAllTokenizeShareRecordRewardResponse) + err := c.cc.Invoke(ctx, Msg_WithdrawAllTokenizeShareRecordReward_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MsgServer is the server API for Msg service. // All implementations must embed UnimplementedMsgServer // for forward compatibility @@ -167,6 +191,10 @@ type MsgServer interface { // // Since: cosmos-sdk 0.50 DepositValidatorRewardsPool(context.Context, *MsgDepositValidatorRewardsPool) (*MsgDepositValidatorRewardsPoolResponse, error) + // WithdrawTokenizeShareRecordReward defines a method to withdraw reward for an owning TokenizeShareRecord + WithdrawTokenizeShareRecordReward(context.Context, *MsgWithdrawTokenizeShareRecordReward) (*MsgWithdrawTokenizeShareRecordRewardResponse, error) + // WithdrawAllTokenizeShareRecordReward defines a method to withdraw reward for all owning TokenizeShareRecord + WithdrawAllTokenizeShareRecordReward(context.Context, *MsgWithdrawAllTokenizeShareRecordReward) (*MsgWithdrawAllTokenizeShareRecordRewardResponse, error) mustEmbedUnimplementedMsgServer() } @@ -195,6 +223,12 @@ func (UnimplementedMsgServer) CommunityPoolSpend(context.Context, *MsgCommunityP func (UnimplementedMsgServer) DepositValidatorRewardsPool(context.Context, *MsgDepositValidatorRewardsPool) (*MsgDepositValidatorRewardsPoolResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DepositValidatorRewardsPool not implemented") } +func (UnimplementedMsgServer) WithdrawTokenizeShareRecordReward(context.Context, *MsgWithdrawTokenizeShareRecordReward) (*MsgWithdrawTokenizeShareRecordRewardResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method WithdrawTokenizeShareRecordReward not implemented") +} +func (UnimplementedMsgServer) WithdrawAllTokenizeShareRecordReward(context.Context, *MsgWithdrawAllTokenizeShareRecordReward) (*MsgWithdrawAllTokenizeShareRecordRewardResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method WithdrawAllTokenizeShareRecordReward not implemented") +} func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {} // UnsafeMsgServer may be embedded to opt out of forward compatibility for this service. @@ -334,6 +368,42 @@ func _Msg_DepositValidatorRewardsPool_Handler(srv interface{}, ctx context.Conte return interceptor(ctx, in, info, handler) } +func _Msg_WithdrawTokenizeShareRecordReward_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgWithdrawTokenizeShareRecordReward) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).WithdrawTokenizeShareRecordReward(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_WithdrawTokenizeShareRecordReward_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).WithdrawTokenizeShareRecordReward(ctx, req.(*MsgWithdrawTokenizeShareRecordReward)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_WithdrawAllTokenizeShareRecordReward_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgWithdrawAllTokenizeShareRecordReward) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).WithdrawAllTokenizeShareRecordReward(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_WithdrawAllTokenizeShareRecordReward_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).WithdrawAllTokenizeShareRecordReward(ctx, req.(*MsgWithdrawAllTokenizeShareRecordReward)) + } + return interceptor(ctx, in, info, handler) +} + // Msg_ServiceDesc is the grpc.ServiceDesc for Msg service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -369,6 +439,14 @@ var Msg_ServiceDesc = grpc.ServiceDesc{ MethodName: "DepositValidatorRewardsPool", Handler: _Msg_DepositValidatorRewardsPool_Handler, }, + { + MethodName: "WithdrawTokenizeShareRecordReward", + Handler: _Msg_WithdrawTokenizeShareRecordReward_Handler, + }, + { + MethodName: "WithdrawAllTokenizeShareRecordReward", + Handler: _Msg_WithdrawAllTokenizeShareRecordReward_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "cosmos/distribution/v1beta1/tx.proto", diff --git a/api/cosmos/staking/v1beta1/genesis.pulsar.go b/api/cosmos/staking/v1beta1/genesis.pulsar.go index 09c705bdb2e7..b50430f060cb 100644 --- a/api/cosmos/staking/v1beta1/genesis.pulsar.go +++ b/api/cosmos/staking/v1beta1/genesis.pulsar.go @@ -10,6 +10,7 @@ import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoiface "google.golang.org/protobuf/runtime/protoiface" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" io "io" reflect "reflect" sync "sync" @@ -270,16 +271,122 @@ func (x *_GenesisState_7_list) IsValid() bool { return x.list != nil } +var _ protoreflect.List = (*_GenesisState_9_list)(nil) + +type _GenesisState_9_list struct { + list *[]*TokenizeShareRecord +} + +func (x *_GenesisState_9_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_GenesisState_9_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_GenesisState_9_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*TokenizeShareRecord) + (*x.list)[i] = concreteValue +} + +func (x *_GenesisState_9_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*TokenizeShareRecord) + *x.list = append(*x.list, concreteValue) +} + +func (x *_GenesisState_9_list) AppendMutable() protoreflect.Value { + v := new(TokenizeShareRecord) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_GenesisState_9_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_GenesisState_9_list) NewElement() protoreflect.Value { + v := new(TokenizeShareRecord) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_GenesisState_9_list) IsValid() bool { + return x.list != nil +} + +var _ protoreflect.List = (*_GenesisState_12_list)(nil) + +type _GenesisState_12_list struct { + list *[]*TokenizeShareLock +} + +func (x *_GenesisState_12_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_GenesisState_12_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_GenesisState_12_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*TokenizeShareLock) + (*x.list)[i] = concreteValue +} + +func (x *_GenesisState_12_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*TokenizeShareLock) + *x.list = append(*x.list, concreteValue) +} + +func (x *_GenesisState_12_list) AppendMutable() protoreflect.Value { + v := new(TokenizeShareLock) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_GenesisState_12_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_GenesisState_12_list) NewElement() protoreflect.Value { + v := new(TokenizeShareLock) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_GenesisState_12_list) IsValid() bool { + return x.list != nil +} + var ( - md_GenesisState protoreflect.MessageDescriptor - fd_GenesisState_params protoreflect.FieldDescriptor - fd_GenesisState_last_total_power protoreflect.FieldDescriptor - fd_GenesisState_last_validator_powers protoreflect.FieldDescriptor - fd_GenesisState_validators protoreflect.FieldDescriptor - fd_GenesisState_delegations protoreflect.FieldDescriptor - fd_GenesisState_unbonding_delegations protoreflect.FieldDescriptor - fd_GenesisState_redelegations protoreflect.FieldDescriptor - fd_GenesisState_exported protoreflect.FieldDescriptor + md_GenesisState protoreflect.MessageDescriptor + fd_GenesisState_params protoreflect.FieldDescriptor + fd_GenesisState_last_total_power protoreflect.FieldDescriptor + fd_GenesisState_last_validator_powers protoreflect.FieldDescriptor + fd_GenesisState_validators protoreflect.FieldDescriptor + fd_GenesisState_delegations protoreflect.FieldDescriptor + fd_GenesisState_unbonding_delegations protoreflect.FieldDescriptor + fd_GenesisState_redelegations protoreflect.FieldDescriptor + fd_GenesisState_exported protoreflect.FieldDescriptor + fd_GenesisState_tokenize_share_records protoreflect.FieldDescriptor + fd_GenesisState_last_tokenize_share_record_id protoreflect.FieldDescriptor + fd_GenesisState_total_liquid_staked_tokens protoreflect.FieldDescriptor + fd_GenesisState_tokenize_share_locks protoreflect.FieldDescriptor ) func init() { @@ -293,6 +400,10 @@ func init() { fd_GenesisState_unbonding_delegations = md_GenesisState.Fields().ByName("unbonding_delegations") fd_GenesisState_redelegations = md_GenesisState.Fields().ByName("redelegations") fd_GenesisState_exported = md_GenesisState.Fields().ByName("exported") + fd_GenesisState_tokenize_share_records = md_GenesisState.Fields().ByName("tokenize_share_records") + fd_GenesisState_last_tokenize_share_record_id = md_GenesisState.Fields().ByName("last_tokenize_share_record_id") + fd_GenesisState_total_liquid_staked_tokens = md_GenesisState.Fields().ByName("total_liquid_staked_tokens") + fd_GenesisState_tokenize_share_locks = md_GenesisState.Fields().ByName("tokenize_share_locks") } var _ protoreflect.Message = (*fastReflection_GenesisState)(nil) @@ -408,6 +519,30 @@ func (x *fastReflection_GenesisState) Range(f func(protoreflect.FieldDescriptor, return } } + if len(x.TokenizeShareRecords) != 0 { + value := protoreflect.ValueOfList(&_GenesisState_9_list{list: &x.TokenizeShareRecords}) + if !f(fd_GenesisState_tokenize_share_records, value) { + return + } + } + if x.LastTokenizeShareRecordId != uint64(0) { + value := protoreflect.ValueOfUint64(x.LastTokenizeShareRecordId) + if !f(fd_GenesisState_last_tokenize_share_record_id, value) { + return + } + } + if len(x.TotalLiquidStakedTokens) != 0 { + value := protoreflect.ValueOfBytes(x.TotalLiquidStakedTokens) + if !f(fd_GenesisState_total_liquid_staked_tokens, value) { + return + } + } + if len(x.TokenizeShareLocks) != 0 { + value := protoreflect.ValueOfList(&_GenesisState_12_list{list: &x.TokenizeShareLocks}) + if !f(fd_GenesisState_tokenize_share_locks, value) { + return + } + } } // Has reports whether a field is populated. @@ -439,6 +574,14 @@ func (x *fastReflection_GenesisState) Has(fd protoreflect.FieldDescriptor) bool return len(x.Redelegations) != 0 case "cosmos.staking.v1beta1.GenesisState.exported": return x.Exported != false + case "cosmos.staking.v1beta1.GenesisState.tokenize_share_records": + return len(x.TokenizeShareRecords) != 0 + case "cosmos.staking.v1beta1.GenesisState.last_tokenize_share_record_id": + return x.LastTokenizeShareRecordId != uint64(0) + case "cosmos.staking.v1beta1.GenesisState.total_liquid_staked_tokens": + return len(x.TotalLiquidStakedTokens) != 0 + case "cosmos.staking.v1beta1.GenesisState.tokenize_share_locks": + return len(x.TokenizeShareLocks) != 0 default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.GenesisState")) @@ -471,6 +614,14 @@ func (x *fastReflection_GenesisState) Clear(fd protoreflect.FieldDescriptor) { x.Redelegations = nil case "cosmos.staking.v1beta1.GenesisState.exported": x.Exported = false + case "cosmos.staking.v1beta1.GenesisState.tokenize_share_records": + x.TokenizeShareRecords = nil + case "cosmos.staking.v1beta1.GenesisState.last_tokenize_share_record_id": + x.LastTokenizeShareRecordId = uint64(0) + case "cosmos.staking.v1beta1.GenesisState.total_liquid_staked_tokens": + x.TotalLiquidStakedTokens = nil + case "cosmos.staking.v1beta1.GenesisState.tokenize_share_locks": + x.TokenizeShareLocks = nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.GenesisState")) @@ -526,6 +677,24 @@ func (x *fastReflection_GenesisState) Get(descriptor protoreflect.FieldDescripto case "cosmos.staking.v1beta1.GenesisState.exported": value := x.Exported return protoreflect.ValueOfBool(value) + case "cosmos.staking.v1beta1.GenesisState.tokenize_share_records": + if len(x.TokenizeShareRecords) == 0 { + return protoreflect.ValueOfList(&_GenesisState_9_list{}) + } + listValue := &_GenesisState_9_list{list: &x.TokenizeShareRecords} + return protoreflect.ValueOfList(listValue) + case "cosmos.staking.v1beta1.GenesisState.last_tokenize_share_record_id": + value := x.LastTokenizeShareRecordId + return protoreflect.ValueOfUint64(value) + case "cosmos.staking.v1beta1.GenesisState.total_liquid_staked_tokens": + value := x.TotalLiquidStakedTokens + return protoreflect.ValueOfBytes(value) + case "cosmos.staking.v1beta1.GenesisState.tokenize_share_locks": + if len(x.TokenizeShareLocks) == 0 { + return protoreflect.ValueOfList(&_GenesisState_12_list{}) + } + listValue := &_GenesisState_12_list{list: &x.TokenizeShareLocks} + return protoreflect.ValueOfList(listValue) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.GenesisState")) @@ -572,6 +741,18 @@ func (x *fastReflection_GenesisState) Set(fd protoreflect.FieldDescriptor, value x.Redelegations = *clv.list case "cosmos.staking.v1beta1.GenesisState.exported": x.Exported = value.Bool() + case "cosmos.staking.v1beta1.GenesisState.tokenize_share_records": + lv := value.List() + clv := lv.(*_GenesisState_9_list) + x.TokenizeShareRecords = *clv.list + case "cosmos.staking.v1beta1.GenesisState.last_tokenize_share_record_id": + x.LastTokenizeShareRecordId = value.Uint() + case "cosmos.staking.v1beta1.GenesisState.total_liquid_staked_tokens": + x.TotalLiquidStakedTokens = value.Bytes() + case "cosmos.staking.v1beta1.GenesisState.tokenize_share_locks": + lv := value.List() + clv := lv.(*_GenesisState_12_list) + x.TokenizeShareLocks = *clv.list default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.GenesisState")) @@ -627,10 +808,26 @@ func (x *fastReflection_GenesisState) Mutable(fd protoreflect.FieldDescriptor) p } value := &_GenesisState_7_list{list: &x.Redelegations} return protoreflect.ValueOfList(value) + case "cosmos.staking.v1beta1.GenesisState.tokenize_share_records": + if x.TokenizeShareRecords == nil { + x.TokenizeShareRecords = []*TokenizeShareRecord{} + } + value := &_GenesisState_9_list{list: &x.TokenizeShareRecords} + return protoreflect.ValueOfList(value) + case "cosmos.staking.v1beta1.GenesisState.tokenize_share_locks": + if x.TokenizeShareLocks == nil { + x.TokenizeShareLocks = []*TokenizeShareLock{} + } + value := &_GenesisState_12_list{list: &x.TokenizeShareLocks} + return protoreflect.ValueOfList(value) case "cosmos.staking.v1beta1.GenesisState.last_total_power": panic(fmt.Errorf("field last_total_power of message cosmos.staking.v1beta1.GenesisState is not mutable")) case "cosmos.staking.v1beta1.GenesisState.exported": panic(fmt.Errorf("field exported of message cosmos.staking.v1beta1.GenesisState is not mutable")) + case "cosmos.staking.v1beta1.GenesisState.last_tokenize_share_record_id": + panic(fmt.Errorf("field last_tokenize_share_record_id of message cosmos.staking.v1beta1.GenesisState is not mutable")) + case "cosmos.staking.v1beta1.GenesisState.total_liquid_staked_tokens": + panic(fmt.Errorf("field total_liquid_staked_tokens of message cosmos.staking.v1beta1.GenesisState is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.GenesisState")) @@ -666,6 +863,16 @@ func (x *fastReflection_GenesisState) NewField(fd protoreflect.FieldDescriptor) return protoreflect.ValueOfList(&_GenesisState_7_list{list: &list}) case "cosmos.staking.v1beta1.GenesisState.exported": return protoreflect.ValueOfBool(false) + case "cosmos.staking.v1beta1.GenesisState.tokenize_share_records": + list := []*TokenizeShareRecord{} + return protoreflect.ValueOfList(&_GenesisState_9_list{list: &list}) + case "cosmos.staking.v1beta1.GenesisState.last_tokenize_share_record_id": + return protoreflect.ValueOfUint64(uint64(0)) + case "cosmos.staking.v1beta1.GenesisState.total_liquid_staked_tokens": + return protoreflect.ValueOfBytes(nil) + case "cosmos.staking.v1beta1.GenesisState.tokenize_share_locks": + list := []*TokenizeShareLock{} + return protoreflect.ValueOfList(&_GenesisState_12_list{list: &list}) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.GenesisState")) @@ -776,6 +983,25 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { if x.Exported { n += 2 } + if len(x.TokenizeShareRecords) > 0 { + for _, e := range x.TokenizeShareRecords { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.LastTokenizeShareRecordId != 0 { + n += 1 + runtime.Sov(uint64(x.LastTokenizeShareRecordId)) + } + l = len(x.TotalLiquidStakedTokens) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if len(x.TokenizeShareLocks) > 0 { + for _, e := range x.TokenizeShareLocks { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -805,6 +1031,50 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if len(x.TokenizeShareLocks) > 0 { + for iNdEx := len(x.TokenizeShareLocks) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.TokenizeShareLocks[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x62 + } + } + if len(x.TotalLiquidStakedTokens) > 0 { + i -= len(x.TotalLiquidStakedTokens) + copy(dAtA[i:], x.TotalLiquidStakedTokens) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.TotalLiquidStakedTokens))) + i-- + dAtA[i] = 0x5a + } + if x.LastTokenizeShareRecordId != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.LastTokenizeShareRecordId)) + i-- + dAtA[i] = 0x50 + } + if len(x.TokenizeShareRecords) > 0 { + for iNdEx := len(x.TokenizeShareRecords) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.TokenizeShareRecords[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x4a + } + } if x.Exported { i-- if x.Exported { @@ -1225,6 +1495,127 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { } } x.Exported = bool(v != 0) + case 9: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field TokenizeShareRecords", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.TokenizeShareRecords = append(x.TokenizeShareRecords, &TokenizeShareRecord{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.TokenizeShareRecords[len(x.TokenizeShareRecords)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 10: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field LastTokenizeShareRecordId", wireType) + } + x.LastTokenizeShareRecordId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.LastTokenizeShareRecordId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 11: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field TotalLiquidStakedTokens", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.TotalLiquidStakedTokens = append(x.TotalLiquidStakedTokens[:0], dAtA[iNdEx:postIndex]...) + if x.TotalLiquidStakedTokens == nil { + x.TotalLiquidStakedTokens = []byte{} + } + iNdEx = postIndex + case 12: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field TokenizeShareLocks", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.TokenizeShareLocks = append(x.TokenizeShareLocks, &TokenizeShareLock{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.TokenizeShareLocks[len(x.TokenizeShareLocks)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -1261,27 +1652,29 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { } var ( - md_LastValidatorPower protoreflect.MessageDescriptor - fd_LastValidatorPower_address protoreflect.FieldDescriptor - fd_LastValidatorPower_power protoreflect.FieldDescriptor + md_TokenizeShareLock protoreflect.MessageDescriptor + fd_TokenizeShareLock_address protoreflect.FieldDescriptor + fd_TokenizeShareLock_status protoreflect.FieldDescriptor + fd_TokenizeShareLock_completion_time protoreflect.FieldDescriptor ) func init() { file_cosmos_staking_v1beta1_genesis_proto_init() - md_LastValidatorPower = File_cosmos_staking_v1beta1_genesis_proto.Messages().ByName("LastValidatorPower") - fd_LastValidatorPower_address = md_LastValidatorPower.Fields().ByName("address") - fd_LastValidatorPower_power = md_LastValidatorPower.Fields().ByName("power") + md_TokenizeShareLock = File_cosmos_staking_v1beta1_genesis_proto.Messages().ByName("TokenizeShareLock") + fd_TokenizeShareLock_address = md_TokenizeShareLock.Fields().ByName("address") + fd_TokenizeShareLock_status = md_TokenizeShareLock.Fields().ByName("status") + fd_TokenizeShareLock_completion_time = md_TokenizeShareLock.Fields().ByName("completion_time") } -var _ protoreflect.Message = (*fastReflection_LastValidatorPower)(nil) +var _ protoreflect.Message = (*fastReflection_TokenizeShareLock)(nil) -type fastReflection_LastValidatorPower LastValidatorPower +type fastReflection_TokenizeShareLock TokenizeShareLock -func (x *LastValidatorPower) ProtoReflect() protoreflect.Message { - return (*fastReflection_LastValidatorPower)(x) +func (x *TokenizeShareLock) ProtoReflect() protoreflect.Message { + return (*fastReflection_TokenizeShareLock)(x) } -func (x *LastValidatorPower) slowProtoReflect() protoreflect.Message { +func (x *TokenizeShareLock) slowProtoReflect() protoreflect.Message { mi := &file_cosmos_staking_v1beta1_genesis_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1293,13 +1686,574 @@ func (x *LastValidatorPower) slowProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -var _fastReflection_LastValidatorPower_messageType fastReflection_LastValidatorPower_messageType -var _ protoreflect.MessageType = fastReflection_LastValidatorPower_messageType{} +var _fastReflection_TokenizeShareLock_messageType fastReflection_TokenizeShareLock_messageType +var _ protoreflect.MessageType = fastReflection_TokenizeShareLock_messageType{} -type fastReflection_LastValidatorPower_messageType struct{} +type fastReflection_TokenizeShareLock_messageType struct{} -func (x fastReflection_LastValidatorPower_messageType) Zero() protoreflect.Message { - return (*fastReflection_LastValidatorPower)(nil) +func (x fastReflection_TokenizeShareLock_messageType) Zero() protoreflect.Message { + return (*fastReflection_TokenizeShareLock)(nil) +} +func (x fastReflection_TokenizeShareLock_messageType) New() protoreflect.Message { + return new(fastReflection_TokenizeShareLock) +} +func (x fastReflection_TokenizeShareLock_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_TokenizeShareLock +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_TokenizeShareLock) Descriptor() protoreflect.MessageDescriptor { + return md_TokenizeShareLock +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_TokenizeShareLock) Type() protoreflect.MessageType { + return _fastReflection_TokenizeShareLock_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_TokenizeShareLock) New() protoreflect.Message { + return new(fastReflection_TokenizeShareLock) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_TokenizeShareLock) Interface() protoreflect.ProtoMessage { + return (*TokenizeShareLock)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_TokenizeShareLock) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Address != "" { + value := protoreflect.ValueOfString(x.Address) + if !f(fd_TokenizeShareLock_address, value) { + return + } + } + if x.Status != "" { + value := protoreflect.ValueOfString(x.Status) + if !f(fd_TokenizeShareLock_status, value) { + return + } + } + if x.CompletionTime != nil { + value := protoreflect.ValueOfMessage(x.CompletionTime.ProtoReflect()) + if !f(fd_TokenizeShareLock_completion_time, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_TokenizeShareLock) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.TokenizeShareLock.address": + return x.Address != "" + case "cosmos.staking.v1beta1.TokenizeShareLock.status": + return x.Status != "" + case "cosmos.staking.v1beta1.TokenizeShareLock.completion_time": + return x.CompletionTime != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.TokenizeShareLock")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.TokenizeShareLock does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_TokenizeShareLock) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.TokenizeShareLock.address": + x.Address = "" + case "cosmos.staking.v1beta1.TokenizeShareLock.status": + x.Status = "" + case "cosmos.staking.v1beta1.TokenizeShareLock.completion_time": + x.CompletionTime = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.TokenizeShareLock")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.TokenizeShareLock does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_TokenizeShareLock) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.TokenizeShareLock.address": + value := x.Address + return protoreflect.ValueOfString(value) + case "cosmos.staking.v1beta1.TokenizeShareLock.status": + value := x.Status + return protoreflect.ValueOfString(value) + case "cosmos.staking.v1beta1.TokenizeShareLock.completion_time": + value := x.CompletionTime + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.TokenizeShareLock")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.TokenizeShareLock does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_TokenizeShareLock) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.TokenizeShareLock.address": + x.Address = value.Interface().(string) + case "cosmos.staking.v1beta1.TokenizeShareLock.status": + x.Status = value.Interface().(string) + case "cosmos.staking.v1beta1.TokenizeShareLock.completion_time": + x.CompletionTime = value.Message().Interface().(*timestamppb.Timestamp) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.TokenizeShareLock")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.TokenizeShareLock does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_TokenizeShareLock) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.TokenizeShareLock.completion_time": + if x.CompletionTime == nil { + x.CompletionTime = new(timestamppb.Timestamp) + } + return protoreflect.ValueOfMessage(x.CompletionTime.ProtoReflect()) + case "cosmos.staking.v1beta1.TokenizeShareLock.address": + panic(fmt.Errorf("field address of message cosmos.staking.v1beta1.TokenizeShareLock is not mutable")) + case "cosmos.staking.v1beta1.TokenizeShareLock.status": + panic(fmt.Errorf("field status of message cosmos.staking.v1beta1.TokenizeShareLock is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.TokenizeShareLock")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.TokenizeShareLock does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_TokenizeShareLock) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.TokenizeShareLock.address": + return protoreflect.ValueOfString("") + case "cosmos.staking.v1beta1.TokenizeShareLock.status": + return protoreflect.ValueOfString("") + case "cosmos.staking.v1beta1.TokenizeShareLock.completion_time": + m := new(timestamppb.Timestamp) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.TokenizeShareLock")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.TokenizeShareLock does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_TokenizeShareLock) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.TokenizeShareLock", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_TokenizeShareLock) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_TokenizeShareLock) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_TokenizeShareLock) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_TokenizeShareLock) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*TokenizeShareLock) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Address) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Status) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.CompletionTime != nil { + l = options.Size(x.CompletionTime) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*TokenizeShareLock) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.CompletionTime != nil { + encoded, err := options.Marshal(x.CompletionTime) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x1a + } + if len(x.Status) > 0 { + i -= len(x.Status) + copy(dAtA[i:], x.Status) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Status))) + i-- + dAtA[i] = 0x12 + } + if len(x.Address) > 0 { + i -= len(x.Address) + copy(dAtA[i:], x.Address) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Address))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*TokenizeShareLock) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: TokenizeShareLock: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: TokenizeShareLock: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Status = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field CompletionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.CompletionTime == nil { + x.CompletionTime = ×tamppb.Timestamp{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.CompletionTime); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_LastValidatorPower protoreflect.MessageDescriptor + fd_LastValidatorPower_address protoreflect.FieldDescriptor + fd_LastValidatorPower_power protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_genesis_proto_init() + md_LastValidatorPower = File_cosmos_staking_v1beta1_genesis_proto.Messages().ByName("LastValidatorPower") + fd_LastValidatorPower_address = md_LastValidatorPower.Fields().ByName("address") + fd_LastValidatorPower_power = md_LastValidatorPower.Fields().ByName("power") +} + +var _ protoreflect.Message = (*fastReflection_LastValidatorPower)(nil) + +type fastReflection_LastValidatorPower LastValidatorPower + +func (x *LastValidatorPower) ProtoReflect() protoreflect.Message { + return (*fastReflection_LastValidatorPower)(x) +} + +func (x *LastValidatorPower) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_genesis_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_LastValidatorPower_messageType fastReflection_LastValidatorPower_messageType +var _ protoreflect.MessageType = fastReflection_LastValidatorPower_messageType{} + +type fastReflection_LastValidatorPower_messageType struct{} + +func (x fastReflection_LastValidatorPower_messageType) Zero() protoreflect.Message { + return (*fastReflection_LastValidatorPower)(nil) } func (x fastReflection_LastValidatorPower_messageType) New() protoreflect.Message { return new(fastReflection_LastValidatorPower) @@ -1765,6 +2719,14 @@ type GenesisState struct { Redelegations []*Redelegation `protobuf:"bytes,7,rep,name=redelegations,proto3" json:"redelegations,omitempty"` // exported defines a bool to identify whether the chain dealing with exported or initialized genesis. Exported bool `protobuf:"varint,8,opt,name=exported,proto3" json:"exported,omitempty"` + // store tokenize share records to provide reward to record owners + TokenizeShareRecords []*TokenizeShareRecord `protobuf:"bytes,9,rep,name=tokenize_share_records,json=tokenizeShareRecords,proto3" json:"tokenize_share_records,omitempty"` + // last tokenize share record id, used for next share record id calculation + LastTokenizeShareRecordId uint64 `protobuf:"varint,10,opt,name=last_tokenize_share_record_id,json=lastTokenizeShareRecordId,proto3" json:"last_tokenize_share_record_id,omitempty"` + // total number of liquid staked tokens at genesis + TotalLiquidStakedTokens []byte `protobuf:"bytes,11,opt,name=total_liquid_staked_tokens,json=totalLiquidStakedTokens,proto3" json:"total_liquid_staked_tokens,omitempty"` + // tokenize shares locks at genesis + TokenizeShareLocks []*TokenizeShareLock `protobuf:"bytes,12,rep,name=tokenize_share_locks,json=tokenizeShareLocks,proto3" json:"tokenize_share_locks,omitempty"` } func (x *GenesisState) Reset() { @@ -1843,6 +2805,89 @@ func (x *GenesisState) GetExported() bool { return false } +func (x *GenesisState) GetTokenizeShareRecords() []*TokenizeShareRecord { + if x != nil { + return x.TokenizeShareRecords + } + return nil +} + +func (x *GenesisState) GetLastTokenizeShareRecordId() uint64 { + if x != nil { + return x.LastTokenizeShareRecordId + } + return 0 +} + +func (x *GenesisState) GetTotalLiquidStakedTokens() []byte { + if x != nil { + return x.TotalLiquidStakedTokens + } + return nil +} + +func (x *GenesisState) GetTokenizeShareLocks() []*TokenizeShareLock { + if x != nil { + return x.TokenizeShareLocks + } + return nil +} + +// TokenizeSharesLock required for specifying account locks at genesis +type TokenizeShareLock struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Address of the account that is locked + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + // Status of the lock (LOCKED or LOCK_EXPIRING) + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + // Completion time if the lock is expiring + CompletionTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=completion_time,json=completionTime,proto3" json:"completion_time,omitempty"` +} + +func (x *TokenizeShareLock) Reset() { + *x = TokenizeShareLock{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_genesis_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TokenizeShareLock) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TokenizeShareLock) ProtoMessage() {} + +// Deprecated: Use TokenizeShareLock.ProtoReflect.Descriptor instead. +func (*TokenizeShareLock) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_genesis_proto_rawDescGZIP(), []int{1} +} + +func (x *TokenizeShareLock) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +func (x *TokenizeShareLock) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *TokenizeShareLock) GetCompletionTime() *timestamppb.Timestamp { + if x != nil { + return x.CompletionTime + } + return nil +} + // LastValidatorPower required for validator set update logic. type LastValidatorPower struct { state protoimpl.MessageState @@ -1858,7 +2903,7 @@ type LastValidatorPower struct { func (x *LastValidatorPower) Reset() { *x = LastValidatorPower{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_genesis_proto_msgTypes[1] + mi := &file_cosmos_staking_v1beta1_genesis_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1872,7 +2917,7 @@ func (*LastValidatorPower) ProtoMessage() {} // Deprecated: Use LastValidatorPower.ProtoReflect.Descriptor instead. func (*LastValidatorPower) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_genesis_proto_rawDescGZIP(), []int{1} + return file_cosmos_staking_v1beta1_genesis_proto_rawDescGZIP(), []int{2} } func (x *LastValidatorPower) GetAddress() string { @@ -1902,70 +2947,108 @@ var file_cosmos_staking_v1beta1_genesis_proto_rawDesc = []byte{ 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, - 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x97, 0x05, 0x0a, 0x0c, 0x47, 0x65, 0x6e, - 0x65, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, - 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x5a, 0x0a, 0x10, - 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x30, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, - 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x49, 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x6f, - 0x74, 0x61, 0x6c, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x69, 0x0a, 0x15, 0x6c, 0x61, 0x73, 0x74, - 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa6, 0x08, 0x0a, 0x0c, 0x47, 0x65, + 0x6e, 0x65, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, + 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x5a, 0x0a, + 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x6f, 0x77, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x30, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, + 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, + 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x54, + 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x69, 0x0a, 0x15, 0x6c, 0x61, 0x73, + 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x77, 0x65, + 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x4c, 0x61, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, + 0x6f, 0x77, 0x65, 0x72, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, + 0x13, 0x6c, 0x61, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x6f, + 0x77, 0x65, 0x72, 0x73, 0x12, 0x4c, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, + 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x09, 0xc8, 0xde, 0x1f, + 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, + 0x72, 0x73, 0x12, 0x4f, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x4c, 0x61, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x6f, - 0x77, 0x65, 0x72, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x13, - 0x6c, 0x61, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x6f, 0x77, - 0x65, 0x72, 0x73, 0x12, 0x4c, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, + 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x6b, 0x0a, 0x15, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x6e, 0x62, 0x6f, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x14, 0x75, 0x6e, 0x62, 0x6f, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x55, 0x0a, 0x0d, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, - 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, - 0x73, 0x12, 0x4f, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, - 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x6b, 0x0a, 0x15, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, - 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x6e, 0x62, 0x6f, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, - 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x14, 0x75, 0x6e, 0x62, 0x6f, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x55, 0x0a, 0x0d, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0xc8, 0xde, - 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0d, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, - 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, - 0x65, 0x64, 0x22, 0x68, 0x0a, 0x12, 0x4c, 0x61, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x6f, 0x72, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, - 0x70, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x70, 0x6f, 0x77, - 0x65, 0x72, 0x3a, 0x08, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x42, 0xdc, 0x01, 0x0a, - 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0c, 0x47, 0x65, 0x6e, - 0x65, 0x73, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x3b, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x53, 0x58, 0xaa, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0xca, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, - 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x22, 0x43, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0xea, 0x02, 0x18, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x53, 0x74, 0x61, 0x6b, 0x69, - 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0xc8, + 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0d, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, + 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x64, 0x12, 0x67, 0x0a, 0x16, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x5f, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x09, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, + 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x14, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, + 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x40, 0x0a, 0x1d, + 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x5f, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x19, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, + 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x64, 0x12, 0x7f, + 0x0a, 0x1a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x5f, 0x73, + 0x74, 0x61, 0x6b, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x0c, 0x42, 0x42, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, + 0x74, 0xf2, 0xde, 0x1f, 0x21, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x64, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x22, 0x52, 0x17, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4c, 0x69, 0x71, + 0x75, 0x69, 0x64, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, + 0x61, 0x0a, 0x14, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, + 0x68, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x12, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x63, + 0x6b, 0x73, 0x22, 0xae, 0x01, 0x0a, 0x11, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, + 0x68, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x67, 0x0a, 0x0f, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, + 0x22, 0xc8, 0xde, 0x1f, 0x00, 0xf2, 0xde, 0x1f, 0x16, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x90, + 0xdf, 0x1f, 0x01, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x69, 0x6d, 0x65, 0x22, 0x68, 0x0a, 0x12, 0x4c, 0x61, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x6f, 0x72, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x07, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, + 0x05, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x70, 0x6f, + 0x77, 0x65, 0x72, 0x3a, 0x08, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x42, 0xdc, 0x01, + 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, + 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0c, 0x47, 0x65, + 0x6e, 0x65, 0x73, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x53, 0x58, 0xaa, 0x02, 0x16, 0x43, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0xca, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x61, + 0x6b, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x22, 0x43, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0xea, 0x02, 0x18, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x53, 0x74, 0x61, 0x6b, + 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1980,28 +3063,34 @@ func file_cosmos_staking_v1beta1_genesis_proto_rawDescGZIP() []byte { return file_cosmos_staking_v1beta1_genesis_proto_rawDescData } -var file_cosmos_staking_v1beta1_genesis_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_cosmos_staking_v1beta1_genesis_proto_msgTypes = make([]protoimpl.MessageInfo, 3) var file_cosmos_staking_v1beta1_genesis_proto_goTypes = []interface{}{ - (*GenesisState)(nil), // 0: cosmos.staking.v1beta1.GenesisState - (*LastValidatorPower)(nil), // 1: cosmos.staking.v1beta1.LastValidatorPower - (*Params)(nil), // 2: cosmos.staking.v1beta1.Params - (*Validator)(nil), // 3: cosmos.staking.v1beta1.Validator - (*Delegation)(nil), // 4: cosmos.staking.v1beta1.Delegation - (*UnbondingDelegation)(nil), // 5: cosmos.staking.v1beta1.UnbondingDelegation - (*Redelegation)(nil), // 6: cosmos.staking.v1beta1.Redelegation + (*GenesisState)(nil), // 0: cosmos.staking.v1beta1.GenesisState + (*TokenizeShareLock)(nil), // 1: cosmos.staking.v1beta1.TokenizeShareLock + (*LastValidatorPower)(nil), // 2: cosmos.staking.v1beta1.LastValidatorPower + (*Params)(nil), // 3: cosmos.staking.v1beta1.Params + (*Validator)(nil), // 4: cosmos.staking.v1beta1.Validator + (*Delegation)(nil), // 5: cosmos.staking.v1beta1.Delegation + (*UnbondingDelegation)(nil), // 6: cosmos.staking.v1beta1.UnbondingDelegation + (*Redelegation)(nil), // 7: cosmos.staking.v1beta1.Redelegation + (*TokenizeShareRecord)(nil), // 8: cosmos.staking.v1beta1.TokenizeShareRecord + (*timestamppb.Timestamp)(nil), // 9: google.protobuf.Timestamp } var file_cosmos_staking_v1beta1_genesis_proto_depIdxs = []int32{ - 2, // 0: cosmos.staking.v1beta1.GenesisState.params:type_name -> cosmos.staking.v1beta1.Params - 1, // 1: cosmos.staking.v1beta1.GenesisState.last_validator_powers:type_name -> cosmos.staking.v1beta1.LastValidatorPower - 3, // 2: cosmos.staking.v1beta1.GenesisState.validators:type_name -> cosmos.staking.v1beta1.Validator - 4, // 3: cosmos.staking.v1beta1.GenesisState.delegations:type_name -> cosmos.staking.v1beta1.Delegation - 5, // 4: cosmos.staking.v1beta1.GenesisState.unbonding_delegations:type_name -> cosmos.staking.v1beta1.UnbondingDelegation - 6, // 5: cosmos.staking.v1beta1.GenesisState.redelegations:type_name -> cosmos.staking.v1beta1.Redelegation - 6, // [6:6] is the sub-list for method output_type - 6, // [6:6] is the sub-list for method input_type - 6, // [6:6] is the sub-list for extension type_name - 6, // [6:6] is the sub-list for extension extendee - 0, // [0:6] is the sub-list for field type_name + 3, // 0: cosmos.staking.v1beta1.GenesisState.params:type_name -> cosmos.staking.v1beta1.Params + 2, // 1: cosmos.staking.v1beta1.GenesisState.last_validator_powers:type_name -> cosmos.staking.v1beta1.LastValidatorPower + 4, // 2: cosmos.staking.v1beta1.GenesisState.validators:type_name -> cosmos.staking.v1beta1.Validator + 5, // 3: cosmos.staking.v1beta1.GenesisState.delegations:type_name -> cosmos.staking.v1beta1.Delegation + 6, // 4: cosmos.staking.v1beta1.GenesisState.unbonding_delegations:type_name -> cosmos.staking.v1beta1.UnbondingDelegation + 7, // 5: cosmos.staking.v1beta1.GenesisState.redelegations:type_name -> cosmos.staking.v1beta1.Redelegation + 8, // 6: cosmos.staking.v1beta1.GenesisState.tokenize_share_records:type_name -> cosmos.staking.v1beta1.TokenizeShareRecord + 1, // 7: cosmos.staking.v1beta1.GenesisState.tokenize_share_locks:type_name -> cosmos.staking.v1beta1.TokenizeShareLock + 9, // 8: cosmos.staking.v1beta1.TokenizeShareLock.completion_time:type_name -> google.protobuf.Timestamp + 9, // [9:9] is the sub-list for method output_type + 9, // [9:9] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name } func init() { file_cosmos_staking_v1beta1_genesis_proto_init() } @@ -2024,6 +3113,18 @@ func file_cosmos_staking_v1beta1_genesis_proto_init() { } } file_cosmos_staking_v1beta1_genesis_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TokenizeShareLock); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_genesis_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LastValidatorPower); i { case 0: return &v.state @@ -2042,7 +3143,7 @@ func file_cosmos_staking_v1beta1_genesis_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_cosmos_staking_v1beta1_genesis_proto_rawDesc, NumEnums: 0, - NumMessages: 2, + NumMessages: 3, NumExtensions: 0, NumServices: 0, }, diff --git a/api/cosmos/staking/v1beta1/query.pulsar.go b/api/cosmos/staking/v1beta1/query.pulsar.go index d2200ab51140..8ba7280c1ba0 100644 --- a/api/cosmos/staking/v1beta1/query.pulsar.go +++ b/api/cosmos/staking/v1beta1/query.pulsar.go @@ -4,6 +4,7 @@ package stakingv1beta1 import ( _ "cosmossdk.io/api/amino" v1beta1 "cosmossdk.io/api/cosmos/base/query/v1beta1" + v1beta11 "cosmossdk.io/api/cosmos/base/v1beta1" _ "cosmossdk.io/api/cosmos/query/v1" fmt "fmt" _ "github.com/cosmos/cosmos-proto" @@ -13683,1218 +13684,8648 @@ func (x *fastReflection_QueryParamsResponse) ProtoMethods() *protoiface.Methods } } +var ( + md_QueryTokenizeShareRecordByIdRequest protoreflect.MessageDescriptor + fd_QueryTokenizeShareRecordByIdRequest_id protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_query_proto_init() + md_QueryTokenizeShareRecordByIdRequest = File_cosmos_staking_v1beta1_query_proto.Messages().ByName("QueryTokenizeShareRecordByIdRequest") + fd_QueryTokenizeShareRecordByIdRequest_id = md_QueryTokenizeShareRecordByIdRequest.Fields().ByName("id") +} + +var _ protoreflect.Message = (*fastReflection_QueryTokenizeShareRecordByIdRequest)(nil) + +type fastReflection_QueryTokenizeShareRecordByIdRequest QueryTokenizeShareRecordByIdRequest + +func (x *QueryTokenizeShareRecordByIdRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryTokenizeShareRecordByIdRequest)(x) +} + +func (x *QueryTokenizeShareRecordByIdRequest) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryTokenizeShareRecordByIdRequest_messageType fastReflection_QueryTokenizeShareRecordByIdRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryTokenizeShareRecordByIdRequest_messageType{} + +type fastReflection_QueryTokenizeShareRecordByIdRequest_messageType struct{} + +func (x fastReflection_QueryTokenizeShareRecordByIdRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryTokenizeShareRecordByIdRequest)(nil) +} +func (x fastReflection_QueryTokenizeShareRecordByIdRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryTokenizeShareRecordByIdRequest) +} +func (x fastReflection_QueryTokenizeShareRecordByIdRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenizeShareRecordByIdRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryTokenizeShareRecordByIdRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenizeShareRecordByIdRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryTokenizeShareRecordByIdRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryTokenizeShareRecordByIdRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryTokenizeShareRecordByIdRequest) New() protoreflect.Message { + return new(fastReflection_QueryTokenizeShareRecordByIdRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryTokenizeShareRecordByIdRequest) Interface() protoreflect.ProtoMessage { + return (*QueryTokenizeShareRecordByIdRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryTokenizeShareRecordByIdRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Id != uint64(0) { + value := protoreflect.ValueOfUint64(x.Id) + if !f(fd_QueryTokenizeShareRecordByIdRequest_id, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryTokenizeShareRecordByIdRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdRequest.id": + return x.Id != uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordByIdRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdRequest.id": + x.Id = uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryTokenizeShareRecordByIdRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdRequest.id": + value := x.Id + return protoreflect.ValueOfUint64(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordByIdRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdRequest.id": + x.Id = value.Uint() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordByIdRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdRequest.id": + panic(fmt.Errorf("field id of message cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdRequest is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryTokenizeShareRecordByIdRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdRequest.id": + return protoreflect.ValueOfUint64(uint64(0)) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryTokenizeShareRecordByIdRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryTokenizeShareRecordByIdRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordByIdRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryTokenizeShareRecordByIdRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryTokenizeShareRecordByIdRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryTokenizeShareRecordByIdRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Id != 0 { + n += 1 + runtime.Sov(uint64(x.Id)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenizeShareRecordByIdRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Id != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Id)) + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenizeShareRecordByIdRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenizeShareRecordByIdRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenizeShareRecordByIdRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + x.Id = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Id |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryTokenizeShareRecordByIdResponse protoreflect.MessageDescriptor + fd_QueryTokenizeShareRecordByIdResponse_record protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_query_proto_init() + md_QueryTokenizeShareRecordByIdResponse = File_cosmos_staking_v1beta1_query_proto.Messages().ByName("QueryTokenizeShareRecordByIdResponse") + fd_QueryTokenizeShareRecordByIdResponse_record = md_QueryTokenizeShareRecordByIdResponse.Fields().ByName("record") +} + +var _ protoreflect.Message = (*fastReflection_QueryTokenizeShareRecordByIdResponse)(nil) + +type fastReflection_QueryTokenizeShareRecordByIdResponse QueryTokenizeShareRecordByIdResponse + +func (x *QueryTokenizeShareRecordByIdResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryTokenizeShareRecordByIdResponse)(x) +} + +func (x *QueryTokenizeShareRecordByIdResponse) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryTokenizeShareRecordByIdResponse_messageType fastReflection_QueryTokenizeShareRecordByIdResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryTokenizeShareRecordByIdResponse_messageType{} + +type fastReflection_QueryTokenizeShareRecordByIdResponse_messageType struct{} + +func (x fastReflection_QueryTokenizeShareRecordByIdResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryTokenizeShareRecordByIdResponse)(nil) +} +func (x fastReflection_QueryTokenizeShareRecordByIdResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryTokenizeShareRecordByIdResponse) +} +func (x fastReflection_QueryTokenizeShareRecordByIdResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenizeShareRecordByIdResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryTokenizeShareRecordByIdResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenizeShareRecordByIdResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryTokenizeShareRecordByIdResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryTokenizeShareRecordByIdResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryTokenizeShareRecordByIdResponse) New() protoreflect.Message { + return new(fastReflection_QueryTokenizeShareRecordByIdResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryTokenizeShareRecordByIdResponse) Interface() protoreflect.ProtoMessage { + return (*QueryTokenizeShareRecordByIdResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryTokenizeShareRecordByIdResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Record != nil { + value := protoreflect.ValueOfMessage(x.Record.ProtoReflect()) + if !f(fd_QueryTokenizeShareRecordByIdResponse_record, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryTokenizeShareRecordByIdResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdResponse.record": + return x.Record != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordByIdResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdResponse.record": + x.Record = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryTokenizeShareRecordByIdResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdResponse.record": + value := x.Record + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordByIdResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdResponse.record": + x.Record = value.Message().Interface().(*TokenizeShareRecord) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordByIdResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdResponse.record": + if x.Record == nil { + x.Record = new(TokenizeShareRecord) + } + return protoreflect.ValueOfMessage(x.Record.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryTokenizeShareRecordByIdResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdResponse.record": + m := new(TokenizeShareRecord) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryTokenizeShareRecordByIdResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryTokenizeShareRecordByIdResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordByIdResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryTokenizeShareRecordByIdResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryTokenizeShareRecordByIdResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryTokenizeShareRecordByIdResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Record != nil { + l = options.Size(x.Record) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenizeShareRecordByIdResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Record != nil { + encoded, err := options.Marshal(x.Record) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenizeShareRecordByIdResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenizeShareRecordByIdResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenizeShareRecordByIdResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Record", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Record == nil { + x.Record = &TokenizeShareRecord{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Record); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryTokenizeShareRecordByDenomRequest protoreflect.MessageDescriptor + fd_QueryTokenizeShareRecordByDenomRequest_denom protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_query_proto_init() + md_QueryTokenizeShareRecordByDenomRequest = File_cosmos_staking_v1beta1_query_proto.Messages().ByName("QueryTokenizeShareRecordByDenomRequest") + fd_QueryTokenizeShareRecordByDenomRequest_denom = md_QueryTokenizeShareRecordByDenomRequest.Fields().ByName("denom") +} + +var _ protoreflect.Message = (*fastReflection_QueryTokenizeShareRecordByDenomRequest)(nil) + +type fastReflection_QueryTokenizeShareRecordByDenomRequest QueryTokenizeShareRecordByDenomRequest + +func (x *QueryTokenizeShareRecordByDenomRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryTokenizeShareRecordByDenomRequest)(x) +} + +func (x *QueryTokenizeShareRecordByDenomRequest) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryTokenizeShareRecordByDenomRequest_messageType fastReflection_QueryTokenizeShareRecordByDenomRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryTokenizeShareRecordByDenomRequest_messageType{} + +type fastReflection_QueryTokenizeShareRecordByDenomRequest_messageType struct{} + +func (x fastReflection_QueryTokenizeShareRecordByDenomRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryTokenizeShareRecordByDenomRequest)(nil) +} +func (x fastReflection_QueryTokenizeShareRecordByDenomRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryTokenizeShareRecordByDenomRequest) +} +func (x fastReflection_QueryTokenizeShareRecordByDenomRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenizeShareRecordByDenomRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryTokenizeShareRecordByDenomRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenizeShareRecordByDenomRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryTokenizeShareRecordByDenomRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryTokenizeShareRecordByDenomRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryTokenizeShareRecordByDenomRequest) New() protoreflect.Message { + return new(fastReflection_QueryTokenizeShareRecordByDenomRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryTokenizeShareRecordByDenomRequest) Interface() protoreflect.ProtoMessage { + return (*QueryTokenizeShareRecordByDenomRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryTokenizeShareRecordByDenomRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Denom != "" { + value := protoreflect.ValueOfString(x.Denom) + if !f(fd_QueryTokenizeShareRecordByDenomRequest_denom, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryTokenizeShareRecordByDenomRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomRequest.denom": + return x.Denom != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordByDenomRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomRequest.denom": + x.Denom = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryTokenizeShareRecordByDenomRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomRequest.denom": + value := x.Denom + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordByDenomRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomRequest.denom": + x.Denom = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordByDenomRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomRequest.denom": + panic(fmt.Errorf("field denom of message cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomRequest is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryTokenizeShareRecordByDenomRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomRequest.denom": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryTokenizeShareRecordByDenomRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryTokenizeShareRecordByDenomRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordByDenomRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryTokenizeShareRecordByDenomRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryTokenizeShareRecordByDenomRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryTokenizeShareRecordByDenomRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Denom) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenizeShareRecordByDenomRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Denom) > 0 { + i -= len(x.Denom) + copy(dAtA[i:], x.Denom) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Denom))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenizeShareRecordByDenomRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenizeShareRecordByDenomRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenizeShareRecordByDenomRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryTokenizeShareRecordByDenomResponse protoreflect.MessageDescriptor + fd_QueryTokenizeShareRecordByDenomResponse_record protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_query_proto_init() + md_QueryTokenizeShareRecordByDenomResponse = File_cosmos_staking_v1beta1_query_proto.Messages().ByName("QueryTokenizeShareRecordByDenomResponse") + fd_QueryTokenizeShareRecordByDenomResponse_record = md_QueryTokenizeShareRecordByDenomResponse.Fields().ByName("record") +} + +var _ protoreflect.Message = (*fastReflection_QueryTokenizeShareRecordByDenomResponse)(nil) + +type fastReflection_QueryTokenizeShareRecordByDenomResponse QueryTokenizeShareRecordByDenomResponse + +func (x *QueryTokenizeShareRecordByDenomResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryTokenizeShareRecordByDenomResponse)(x) +} + +func (x *QueryTokenizeShareRecordByDenomResponse) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[31] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryTokenizeShareRecordByDenomResponse_messageType fastReflection_QueryTokenizeShareRecordByDenomResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryTokenizeShareRecordByDenomResponse_messageType{} + +type fastReflection_QueryTokenizeShareRecordByDenomResponse_messageType struct{} + +func (x fastReflection_QueryTokenizeShareRecordByDenomResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryTokenizeShareRecordByDenomResponse)(nil) +} +func (x fastReflection_QueryTokenizeShareRecordByDenomResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryTokenizeShareRecordByDenomResponse) +} +func (x fastReflection_QueryTokenizeShareRecordByDenomResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenizeShareRecordByDenomResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryTokenizeShareRecordByDenomResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenizeShareRecordByDenomResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryTokenizeShareRecordByDenomResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryTokenizeShareRecordByDenomResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryTokenizeShareRecordByDenomResponse) New() protoreflect.Message { + return new(fastReflection_QueryTokenizeShareRecordByDenomResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryTokenizeShareRecordByDenomResponse) Interface() protoreflect.ProtoMessage { + return (*QueryTokenizeShareRecordByDenomResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryTokenizeShareRecordByDenomResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Record != nil { + value := protoreflect.ValueOfMessage(x.Record.ProtoReflect()) + if !f(fd_QueryTokenizeShareRecordByDenomResponse_record, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryTokenizeShareRecordByDenomResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomResponse.record": + return x.Record != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordByDenomResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomResponse.record": + x.Record = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryTokenizeShareRecordByDenomResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomResponse.record": + value := x.Record + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordByDenomResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomResponse.record": + x.Record = value.Message().Interface().(*TokenizeShareRecord) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordByDenomResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomResponse.record": + if x.Record == nil { + x.Record = new(TokenizeShareRecord) + } + return protoreflect.ValueOfMessage(x.Record.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryTokenizeShareRecordByDenomResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomResponse.record": + m := new(TokenizeShareRecord) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryTokenizeShareRecordByDenomResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryTokenizeShareRecordByDenomResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordByDenomResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryTokenizeShareRecordByDenomResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryTokenizeShareRecordByDenomResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryTokenizeShareRecordByDenomResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Record != nil { + l = options.Size(x.Record) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenizeShareRecordByDenomResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Record != nil { + encoded, err := options.Marshal(x.Record) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenizeShareRecordByDenomResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenizeShareRecordByDenomResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenizeShareRecordByDenomResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Record", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Record == nil { + x.Record = &TokenizeShareRecord{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Record); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryTokenizeShareRecordsOwnedRequest protoreflect.MessageDescriptor + fd_QueryTokenizeShareRecordsOwnedRequest_owner protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_query_proto_init() + md_QueryTokenizeShareRecordsOwnedRequest = File_cosmos_staking_v1beta1_query_proto.Messages().ByName("QueryTokenizeShareRecordsOwnedRequest") + fd_QueryTokenizeShareRecordsOwnedRequest_owner = md_QueryTokenizeShareRecordsOwnedRequest.Fields().ByName("owner") +} + +var _ protoreflect.Message = (*fastReflection_QueryTokenizeShareRecordsOwnedRequest)(nil) + +type fastReflection_QueryTokenizeShareRecordsOwnedRequest QueryTokenizeShareRecordsOwnedRequest + +func (x *QueryTokenizeShareRecordsOwnedRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryTokenizeShareRecordsOwnedRequest)(x) +} + +func (x *QueryTokenizeShareRecordsOwnedRequest) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[32] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryTokenizeShareRecordsOwnedRequest_messageType fastReflection_QueryTokenizeShareRecordsOwnedRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryTokenizeShareRecordsOwnedRequest_messageType{} + +type fastReflection_QueryTokenizeShareRecordsOwnedRequest_messageType struct{} + +func (x fastReflection_QueryTokenizeShareRecordsOwnedRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryTokenizeShareRecordsOwnedRequest)(nil) +} +func (x fastReflection_QueryTokenizeShareRecordsOwnedRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryTokenizeShareRecordsOwnedRequest) +} +func (x fastReflection_QueryTokenizeShareRecordsOwnedRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenizeShareRecordsOwnedRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenizeShareRecordsOwnedRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryTokenizeShareRecordsOwnedRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedRequest) New() protoreflect.Message { + return new(fastReflection_QueryTokenizeShareRecordsOwnedRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedRequest) Interface() protoreflect.ProtoMessage { + return (*QueryTokenizeShareRecordsOwnedRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Owner != "" { + value := protoreflect.ValueOfString(x.Owner) + if !f(fd_QueryTokenizeShareRecordsOwnedRequest_owner, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedRequest.owner": + return x.Owner != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedRequest.owner": + x.Owner = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedRequest.owner": + value := x.Owner + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedRequest.owner": + x.Owner = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedRequest.owner": + panic(fmt.Errorf("field owner of message cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedRequest is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedRequest.owner": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryTokenizeShareRecordsOwnedRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Owner) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenizeShareRecordsOwnedRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Owner) > 0 { + i -= len(x.Owner) + copy(dAtA[i:], x.Owner) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Owner))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenizeShareRecordsOwnedRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenizeShareRecordsOwnedRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenizeShareRecordsOwnedRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Owner", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Owner = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var _ protoreflect.List = (*_QueryTokenizeShareRecordsOwnedResponse_1_list)(nil) + +type _QueryTokenizeShareRecordsOwnedResponse_1_list struct { + list *[]*TokenizeShareRecord +} + +func (x *_QueryTokenizeShareRecordsOwnedResponse_1_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_QueryTokenizeShareRecordsOwnedResponse_1_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_QueryTokenizeShareRecordsOwnedResponse_1_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*TokenizeShareRecord) + (*x.list)[i] = concreteValue +} + +func (x *_QueryTokenizeShareRecordsOwnedResponse_1_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*TokenizeShareRecord) + *x.list = append(*x.list, concreteValue) +} + +func (x *_QueryTokenizeShareRecordsOwnedResponse_1_list) AppendMutable() protoreflect.Value { + v := new(TokenizeShareRecord) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryTokenizeShareRecordsOwnedResponse_1_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_QueryTokenizeShareRecordsOwnedResponse_1_list) NewElement() protoreflect.Value { + v := new(TokenizeShareRecord) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryTokenizeShareRecordsOwnedResponse_1_list) IsValid() bool { + return x.list != nil +} + +var ( + md_QueryTokenizeShareRecordsOwnedResponse protoreflect.MessageDescriptor + fd_QueryTokenizeShareRecordsOwnedResponse_records protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_query_proto_init() + md_QueryTokenizeShareRecordsOwnedResponse = File_cosmos_staking_v1beta1_query_proto.Messages().ByName("QueryTokenizeShareRecordsOwnedResponse") + fd_QueryTokenizeShareRecordsOwnedResponse_records = md_QueryTokenizeShareRecordsOwnedResponse.Fields().ByName("records") +} + +var _ protoreflect.Message = (*fastReflection_QueryTokenizeShareRecordsOwnedResponse)(nil) + +type fastReflection_QueryTokenizeShareRecordsOwnedResponse QueryTokenizeShareRecordsOwnedResponse + +func (x *QueryTokenizeShareRecordsOwnedResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryTokenizeShareRecordsOwnedResponse)(x) +} + +func (x *QueryTokenizeShareRecordsOwnedResponse) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryTokenizeShareRecordsOwnedResponse_messageType fastReflection_QueryTokenizeShareRecordsOwnedResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryTokenizeShareRecordsOwnedResponse_messageType{} + +type fastReflection_QueryTokenizeShareRecordsOwnedResponse_messageType struct{} + +func (x fastReflection_QueryTokenizeShareRecordsOwnedResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryTokenizeShareRecordsOwnedResponse)(nil) +} +func (x fastReflection_QueryTokenizeShareRecordsOwnedResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryTokenizeShareRecordsOwnedResponse) +} +func (x fastReflection_QueryTokenizeShareRecordsOwnedResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenizeShareRecordsOwnedResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenizeShareRecordsOwnedResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryTokenizeShareRecordsOwnedResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedResponse) New() protoreflect.Message { + return new(fastReflection_QueryTokenizeShareRecordsOwnedResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedResponse) Interface() protoreflect.ProtoMessage { + return (*QueryTokenizeShareRecordsOwnedResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if len(x.Records) != 0 { + value := protoreflect.ValueOfList(&_QueryTokenizeShareRecordsOwnedResponse_1_list{list: &x.Records}) + if !f(fd_QueryTokenizeShareRecordsOwnedResponse_records, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedResponse.records": + return len(x.Records) != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedResponse.records": + x.Records = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedResponse.records": + if len(x.Records) == 0 { + return protoreflect.ValueOfList(&_QueryTokenizeShareRecordsOwnedResponse_1_list{}) + } + listValue := &_QueryTokenizeShareRecordsOwnedResponse_1_list{list: &x.Records} + return protoreflect.ValueOfList(listValue) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedResponse.records": + lv := value.List() + clv := lv.(*_QueryTokenizeShareRecordsOwnedResponse_1_list) + x.Records = *clv.list + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedResponse.records": + if x.Records == nil { + x.Records = []*TokenizeShareRecord{} + } + value := &_QueryTokenizeShareRecordsOwnedResponse_1_list{list: &x.Records} + return protoreflect.ValueOfList(value) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedResponse.records": + list := []*TokenizeShareRecord{} + return protoreflect.ValueOfList(&_QueryTokenizeShareRecordsOwnedResponse_1_list{list: &list}) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryTokenizeShareRecordsOwnedResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryTokenizeShareRecordsOwnedResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if len(x.Records) > 0 { + for _, e := range x.Records { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenizeShareRecordsOwnedResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Records) > 0 { + for iNdEx := len(x.Records) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.Records[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenizeShareRecordsOwnedResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenizeShareRecordsOwnedResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenizeShareRecordsOwnedResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Records", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Records = append(x.Records, &TokenizeShareRecord{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Records[len(x.Records)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryAllTokenizeShareRecordsRequest protoreflect.MessageDescriptor + fd_QueryAllTokenizeShareRecordsRequest_pagination protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_query_proto_init() + md_QueryAllTokenizeShareRecordsRequest = File_cosmos_staking_v1beta1_query_proto.Messages().ByName("QueryAllTokenizeShareRecordsRequest") + fd_QueryAllTokenizeShareRecordsRequest_pagination = md_QueryAllTokenizeShareRecordsRequest.Fields().ByName("pagination") +} + +var _ protoreflect.Message = (*fastReflection_QueryAllTokenizeShareRecordsRequest)(nil) + +type fastReflection_QueryAllTokenizeShareRecordsRequest QueryAllTokenizeShareRecordsRequest + +func (x *QueryAllTokenizeShareRecordsRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryAllTokenizeShareRecordsRequest)(x) +} + +func (x *QueryAllTokenizeShareRecordsRequest) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[34] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryAllTokenizeShareRecordsRequest_messageType fastReflection_QueryAllTokenizeShareRecordsRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryAllTokenizeShareRecordsRequest_messageType{} + +type fastReflection_QueryAllTokenizeShareRecordsRequest_messageType struct{} + +func (x fastReflection_QueryAllTokenizeShareRecordsRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryAllTokenizeShareRecordsRequest)(nil) +} +func (x fastReflection_QueryAllTokenizeShareRecordsRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryAllTokenizeShareRecordsRequest) +} +func (x fastReflection_QueryAllTokenizeShareRecordsRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryAllTokenizeShareRecordsRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryAllTokenizeShareRecordsRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryAllTokenizeShareRecordsRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryAllTokenizeShareRecordsRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryAllTokenizeShareRecordsRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryAllTokenizeShareRecordsRequest) New() protoreflect.Message { + return new(fastReflection_QueryAllTokenizeShareRecordsRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryAllTokenizeShareRecordsRequest) Interface() protoreflect.ProtoMessage { + return (*QueryAllTokenizeShareRecordsRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryAllTokenizeShareRecordsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Pagination != nil { + value := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + if !f(fd_QueryAllTokenizeShareRecordsRequest_pagination, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryAllTokenizeShareRecordsRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsRequest.pagination": + return x.Pagination != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryAllTokenizeShareRecordsRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsRequest.pagination": + x.Pagination = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryAllTokenizeShareRecordsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsRequest.pagination": + value := x.Pagination + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryAllTokenizeShareRecordsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsRequest.pagination": + x.Pagination = value.Message().Interface().(*v1beta1.PageRequest) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryAllTokenizeShareRecordsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsRequest.pagination": + if x.Pagination == nil { + x.Pagination = new(v1beta1.PageRequest) + } + return protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryAllTokenizeShareRecordsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsRequest.pagination": + m := new(v1beta1.PageRequest) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryAllTokenizeShareRecordsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryAllTokenizeShareRecordsRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryAllTokenizeShareRecordsRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryAllTokenizeShareRecordsRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryAllTokenizeShareRecordsRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryAllTokenizeShareRecordsRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Pagination != nil { + l = options.Size(x.Pagination) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryAllTokenizeShareRecordsRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Pagination != nil { + encoded, err := options.Marshal(x.Pagination) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryAllTokenizeShareRecordsRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryAllTokenizeShareRecordsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryAllTokenizeShareRecordsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Pagination == nil { + x.Pagination = &v1beta1.PageRequest{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var _ protoreflect.List = (*_QueryAllTokenizeShareRecordsResponse_1_list)(nil) + +type _QueryAllTokenizeShareRecordsResponse_1_list struct { + list *[]*TokenizeShareRecord +} + +func (x *_QueryAllTokenizeShareRecordsResponse_1_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_QueryAllTokenizeShareRecordsResponse_1_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_QueryAllTokenizeShareRecordsResponse_1_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*TokenizeShareRecord) + (*x.list)[i] = concreteValue +} + +func (x *_QueryAllTokenizeShareRecordsResponse_1_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*TokenizeShareRecord) + *x.list = append(*x.list, concreteValue) +} + +func (x *_QueryAllTokenizeShareRecordsResponse_1_list) AppendMutable() protoreflect.Value { + v := new(TokenizeShareRecord) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryAllTokenizeShareRecordsResponse_1_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_QueryAllTokenizeShareRecordsResponse_1_list) NewElement() protoreflect.Value { + v := new(TokenizeShareRecord) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryAllTokenizeShareRecordsResponse_1_list) IsValid() bool { + return x.list != nil +} + +var ( + md_QueryAllTokenizeShareRecordsResponse protoreflect.MessageDescriptor + fd_QueryAllTokenizeShareRecordsResponse_records protoreflect.FieldDescriptor + fd_QueryAllTokenizeShareRecordsResponse_pagination protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_query_proto_init() + md_QueryAllTokenizeShareRecordsResponse = File_cosmos_staking_v1beta1_query_proto.Messages().ByName("QueryAllTokenizeShareRecordsResponse") + fd_QueryAllTokenizeShareRecordsResponse_records = md_QueryAllTokenizeShareRecordsResponse.Fields().ByName("records") + fd_QueryAllTokenizeShareRecordsResponse_pagination = md_QueryAllTokenizeShareRecordsResponse.Fields().ByName("pagination") +} + +var _ protoreflect.Message = (*fastReflection_QueryAllTokenizeShareRecordsResponse)(nil) + +type fastReflection_QueryAllTokenizeShareRecordsResponse QueryAllTokenizeShareRecordsResponse + +func (x *QueryAllTokenizeShareRecordsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryAllTokenizeShareRecordsResponse)(x) +} + +func (x *QueryAllTokenizeShareRecordsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[35] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryAllTokenizeShareRecordsResponse_messageType fastReflection_QueryAllTokenizeShareRecordsResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryAllTokenizeShareRecordsResponse_messageType{} + +type fastReflection_QueryAllTokenizeShareRecordsResponse_messageType struct{} + +func (x fastReflection_QueryAllTokenizeShareRecordsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryAllTokenizeShareRecordsResponse)(nil) +} +func (x fastReflection_QueryAllTokenizeShareRecordsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryAllTokenizeShareRecordsResponse) +} +func (x fastReflection_QueryAllTokenizeShareRecordsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryAllTokenizeShareRecordsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryAllTokenizeShareRecordsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryAllTokenizeShareRecordsResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryAllTokenizeShareRecordsResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryAllTokenizeShareRecordsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryAllTokenizeShareRecordsResponse) New() protoreflect.Message { + return new(fastReflection_QueryAllTokenizeShareRecordsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryAllTokenizeShareRecordsResponse) Interface() protoreflect.ProtoMessage { + return (*QueryAllTokenizeShareRecordsResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryAllTokenizeShareRecordsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if len(x.Records) != 0 { + value := protoreflect.ValueOfList(&_QueryAllTokenizeShareRecordsResponse_1_list{list: &x.Records}) + if !f(fd_QueryAllTokenizeShareRecordsResponse_records, value) { + return + } + } + if x.Pagination != nil { + value := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + if !f(fd_QueryAllTokenizeShareRecordsResponse_pagination, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryAllTokenizeShareRecordsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse.records": + return len(x.Records) != 0 + case "cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse.pagination": + return x.Pagination != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryAllTokenizeShareRecordsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse.records": + x.Records = nil + case "cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse.pagination": + x.Pagination = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryAllTokenizeShareRecordsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse.records": + if len(x.Records) == 0 { + return protoreflect.ValueOfList(&_QueryAllTokenizeShareRecordsResponse_1_list{}) + } + listValue := &_QueryAllTokenizeShareRecordsResponse_1_list{list: &x.Records} + return protoreflect.ValueOfList(listValue) + case "cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse.pagination": + value := x.Pagination + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryAllTokenizeShareRecordsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse.records": + lv := value.List() + clv := lv.(*_QueryAllTokenizeShareRecordsResponse_1_list) + x.Records = *clv.list + case "cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse.pagination": + x.Pagination = value.Message().Interface().(*v1beta1.PageResponse) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryAllTokenizeShareRecordsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse.records": + if x.Records == nil { + x.Records = []*TokenizeShareRecord{} + } + value := &_QueryAllTokenizeShareRecordsResponse_1_list{list: &x.Records} + return protoreflect.ValueOfList(value) + case "cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse.pagination": + if x.Pagination == nil { + x.Pagination = new(v1beta1.PageResponse) + } + return protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryAllTokenizeShareRecordsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse.records": + list := []*TokenizeShareRecord{} + return protoreflect.ValueOfList(&_QueryAllTokenizeShareRecordsResponse_1_list{list: &list}) + case "cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse.pagination": + m := new(v1beta1.PageResponse) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryAllTokenizeShareRecordsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryAllTokenizeShareRecordsResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryAllTokenizeShareRecordsResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryAllTokenizeShareRecordsResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryAllTokenizeShareRecordsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryAllTokenizeShareRecordsResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if len(x.Records) > 0 { + for _, e := range x.Records { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.Pagination != nil { + l = options.Size(x.Pagination) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryAllTokenizeShareRecordsResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Pagination != nil { + encoded, err := options.Marshal(x.Pagination) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if len(x.Records) > 0 { + for iNdEx := len(x.Records) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.Records[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryAllTokenizeShareRecordsResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryAllTokenizeShareRecordsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryAllTokenizeShareRecordsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Records", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Records = append(x.Records, &TokenizeShareRecord{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Records[len(x.Records)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Pagination == nil { + x.Pagination = &v1beta1.PageResponse{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryLastTokenizeShareRecordIdRequest protoreflect.MessageDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_query_proto_init() + md_QueryLastTokenizeShareRecordIdRequest = File_cosmos_staking_v1beta1_query_proto.Messages().ByName("QueryLastTokenizeShareRecordIdRequest") +} + +var _ protoreflect.Message = (*fastReflection_QueryLastTokenizeShareRecordIdRequest)(nil) + +type fastReflection_QueryLastTokenizeShareRecordIdRequest QueryLastTokenizeShareRecordIdRequest + +func (x *QueryLastTokenizeShareRecordIdRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryLastTokenizeShareRecordIdRequest)(x) +} + +func (x *QueryLastTokenizeShareRecordIdRequest) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[36] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryLastTokenizeShareRecordIdRequest_messageType fastReflection_QueryLastTokenizeShareRecordIdRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryLastTokenizeShareRecordIdRequest_messageType{} + +type fastReflection_QueryLastTokenizeShareRecordIdRequest_messageType struct{} + +func (x fastReflection_QueryLastTokenizeShareRecordIdRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryLastTokenizeShareRecordIdRequest)(nil) +} +func (x fastReflection_QueryLastTokenizeShareRecordIdRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryLastTokenizeShareRecordIdRequest) +} +func (x fastReflection_QueryLastTokenizeShareRecordIdRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryLastTokenizeShareRecordIdRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryLastTokenizeShareRecordIdRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryLastTokenizeShareRecordIdRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryLastTokenizeShareRecordIdRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryLastTokenizeShareRecordIdRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryLastTokenizeShareRecordIdRequest) New() protoreflect.Message { + return new(fastReflection_QueryLastTokenizeShareRecordIdRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryLastTokenizeShareRecordIdRequest) Interface() protoreflect.ProtoMessage { + return (*QueryLastTokenizeShareRecordIdRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryLastTokenizeShareRecordIdRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryLastTokenizeShareRecordIdRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryLastTokenizeShareRecordIdRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryLastTokenizeShareRecordIdRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryLastTokenizeShareRecordIdRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryLastTokenizeShareRecordIdRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryLastTokenizeShareRecordIdRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryLastTokenizeShareRecordIdRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryLastTokenizeShareRecordIdRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryLastTokenizeShareRecordIdRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryLastTokenizeShareRecordIdRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryLastTokenizeShareRecordIdRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryLastTokenizeShareRecordIdRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryLastTokenizeShareRecordIdRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryLastTokenizeShareRecordIdRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryLastTokenizeShareRecordIdRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryLastTokenizeShareRecordIdRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryLastTokenizeShareRecordIdResponse protoreflect.MessageDescriptor + fd_QueryLastTokenizeShareRecordIdResponse_id protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_query_proto_init() + md_QueryLastTokenizeShareRecordIdResponse = File_cosmos_staking_v1beta1_query_proto.Messages().ByName("QueryLastTokenizeShareRecordIdResponse") + fd_QueryLastTokenizeShareRecordIdResponse_id = md_QueryLastTokenizeShareRecordIdResponse.Fields().ByName("id") +} + +var _ protoreflect.Message = (*fastReflection_QueryLastTokenizeShareRecordIdResponse)(nil) + +type fastReflection_QueryLastTokenizeShareRecordIdResponse QueryLastTokenizeShareRecordIdResponse + +func (x *QueryLastTokenizeShareRecordIdResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryLastTokenizeShareRecordIdResponse)(x) +} + +func (x *QueryLastTokenizeShareRecordIdResponse) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[37] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryLastTokenizeShareRecordIdResponse_messageType fastReflection_QueryLastTokenizeShareRecordIdResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryLastTokenizeShareRecordIdResponse_messageType{} + +type fastReflection_QueryLastTokenizeShareRecordIdResponse_messageType struct{} + +func (x fastReflection_QueryLastTokenizeShareRecordIdResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryLastTokenizeShareRecordIdResponse)(nil) +} +func (x fastReflection_QueryLastTokenizeShareRecordIdResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryLastTokenizeShareRecordIdResponse) +} +func (x fastReflection_QueryLastTokenizeShareRecordIdResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryLastTokenizeShareRecordIdResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryLastTokenizeShareRecordIdResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryLastTokenizeShareRecordIdResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryLastTokenizeShareRecordIdResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryLastTokenizeShareRecordIdResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryLastTokenizeShareRecordIdResponse) New() protoreflect.Message { + return new(fastReflection_QueryLastTokenizeShareRecordIdResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryLastTokenizeShareRecordIdResponse) Interface() protoreflect.ProtoMessage { + return (*QueryLastTokenizeShareRecordIdResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryLastTokenizeShareRecordIdResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Id != uint64(0) { + value := protoreflect.ValueOfUint64(x.Id) + if !f(fd_QueryLastTokenizeShareRecordIdResponse_id, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryLastTokenizeShareRecordIdResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdResponse.id": + return x.Id != uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryLastTokenizeShareRecordIdResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdResponse.id": + x.Id = uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryLastTokenizeShareRecordIdResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdResponse.id": + value := x.Id + return protoreflect.ValueOfUint64(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryLastTokenizeShareRecordIdResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdResponse.id": + x.Id = value.Uint() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryLastTokenizeShareRecordIdResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdResponse.id": + panic(fmt.Errorf("field id of message cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdResponse is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryLastTokenizeShareRecordIdResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdResponse.id": + return protoreflect.ValueOfUint64(uint64(0)) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryLastTokenizeShareRecordIdResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryLastTokenizeShareRecordIdResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryLastTokenizeShareRecordIdResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryLastTokenizeShareRecordIdResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryLastTokenizeShareRecordIdResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryLastTokenizeShareRecordIdResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Id != 0 { + n += 1 + runtime.Sov(uint64(x.Id)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryLastTokenizeShareRecordIdResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Id != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Id)) + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryLastTokenizeShareRecordIdResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryLastTokenizeShareRecordIdResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryLastTokenizeShareRecordIdResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + x.Id = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Id |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryTotalTokenizeSharedAssetsRequest protoreflect.MessageDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_query_proto_init() + md_QueryTotalTokenizeSharedAssetsRequest = File_cosmos_staking_v1beta1_query_proto.Messages().ByName("QueryTotalTokenizeSharedAssetsRequest") +} + +var _ protoreflect.Message = (*fastReflection_QueryTotalTokenizeSharedAssetsRequest)(nil) + +type fastReflection_QueryTotalTokenizeSharedAssetsRequest QueryTotalTokenizeSharedAssetsRequest + +func (x *QueryTotalTokenizeSharedAssetsRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryTotalTokenizeSharedAssetsRequest)(x) +} + +func (x *QueryTotalTokenizeSharedAssetsRequest) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[38] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryTotalTokenizeSharedAssetsRequest_messageType fastReflection_QueryTotalTokenizeSharedAssetsRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryTotalTokenizeSharedAssetsRequest_messageType{} + +type fastReflection_QueryTotalTokenizeSharedAssetsRequest_messageType struct{} + +func (x fastReflection_QueryTotalTokenizeSharedAssetsRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryTotalTokenizeSharedAssetsRequest)(nil) +} +func (x fastReflection_QueryTotalTokenizeSharedAssetsRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryTotalTokenizeSharedAssetsRequest) +} +func (x fastReflection_QueryTotalTokenizeSharedAssetsRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTotalTokenizeSharedAssetsRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTotalTokenizeSharedAssetsRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryTotalTokenizeSharedAssetsRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsRequest) New() protoreflect.Message { + return new(fastReflection_QueryTotalTokenizeSharedAssetsRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsRequest) Interface() protoreflect.ProtoMessage { + return (*QueryTotalTokenizeSharedAssetsRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsRequest")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryTotalTokenizeSharedAssetsRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryTotalTokenizeSharedAssetsRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryTotalTokenizeSharedAssetsRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTotalTokenizeSharedAssetsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTotalTokenizeSharedAssetsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryTotalTokenizeSharedAssetsResponse protoreflect.MessageDescriptor + fd_QueryTotalTokenizeSharedAssetsResponse_value protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_query_proto_init() + md_QueryTotalTokenizeSharedAssetsResponse = File_cosmos_staking_v1beta1_query_proto.Messages().ByName("QueryTotalTokenizeSharedAssetsResponse") + fd_QueryTotalTokenizeSharedAssetsResponse_value = md_QueryTotalTokenizeSharedAssetsResponse.Fields().ByName("value") +} + +var _ protoreflect.Message = (*fastReflection_QueryTotalTokenizeSharedAssetsResponse)(nil) + +type fastReflection_QueryTotalTokenizeSharedAssetsResponse QueryTotalTokenizeSharedAssetsResponse + +func (x *QueryTotalTokenizeSharedAssetsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryTotalTokenizeSharedAssetsResponse)(x) +} + +func (x *QueryTotalTokenizeSharedAssetsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[39] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryTotalTokenizeSharedAssetsResponse_messageType fastReflection_QueryTotalTokenizeSharedAssetsResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryTotalTokenizeSharedAssetsResponse_messageType{} + +type fastReflection_QueryTotalTokenizeSharedAssetsResponse_messageType struct{} + +func (x fastReflection_QueryTotalTokenizeSharedAssetsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryTotalTokenizeSharedAssetsResponse)(nil) +} +func (x fastReflection_QueryTotalTokenizeSharedAssetsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryTotalTokenizeSharedAssetsResponse) +} +func (x fastReflection_QueryTotalTokenizeSharedAssetsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTotalTokenizeSharedAssetsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTotalTokenizeSharedAssetsResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryTotalTokenizeSharedAssetsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsResponse) New() protoreflect.Message { + return new(fastReflection_QueryTotalTokenizeSharedAssetsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsResponse) Interface() protoreflect.ProtoMessage { + return (*QueryTotalTokenizeSharedAssetsResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Value != nil { + value := protoreflect.ValueOfMessage(x.Value.ProtoReflect()) + if !f(fd_QueryTotalTokenizeSharedAssetsResponse_value, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsResponse.value": + return x.Value != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsResponse.value": + x.Value = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsResponse.value": + value := x.Value + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsResponse.value": + x.Value = value.Message().Interface().(*v1beta11.Coin) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsResponse.value": + if x.Value == nil { + x.Value = new(v1beta11.Coin) + } + return protoreflect.ValueOfMessage(x.Value.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsResponse.value": + m := new(v1beta11.Coin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryTotalTokenizeSharedAssetsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryTotalTokenizeSharedAssetsResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Value != nil { + l = options.Size(x.Value) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryTotalTokenizeSharedAssetsResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Value != nil { + encoded, err := options.Marshal(x.Value) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryTotalTokenizeSharedAssetsResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTotalTokenizeSharedAssetsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTotalTokenizeSharedAssetsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Value == nil { + x.Value = &v1beta11.Coin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Value); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryTotalLiquidStaked protoreflect.MessageDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_query_proto_init() + md_QueryTotalLiquidStaked = File_cosmos_staking_v1beta1_query_proto.Messages().ByName("QueryTotalLiquidStaked") +} + +var _ protoreflect.Message = (*fastReflection_QueryTotalLiquidStaked)(nil) + +type fastReflection_QueryTotalLiquidStaked QueryTotalLiquidStaked + +func (x *QueryTotalLiquidStaked) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryTotalLiquidStaked)(x) +} + +func (x *QueryTotalLiquidStaked) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[40] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryTotalLiquidStaked_messageType fastReflection_QueryTotalLiquidStaked_messageType +var _ protoreflect.MessageType = fastReflection_QueryTotalLiquidStaked_messageType{} + +type fastReflection_QueryTotalLiquidStaked_messageType struct{} + +func (x fastReflection_QueryTotalLiquidStaked_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryTotalLiquidStaked)(nil) +} +func (x fastReflection_QueryTotalLiquidStaked_messageType) New() protoreflect.Message { + return new(fastReflection_QueryTotalLiquidStaked) +} +func (x fastReflection_QueryTotalLiquidStaked_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTotalLiquidStaked +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryTotalLiquidStaked) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTotalLiquidStaked +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryTotalLiquidStaked) Type() protoreflect.MessageType { + return _fastReflection_QueryTotalLiquidStaked_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryTotalLiquidStaked) New() protoreflect.Message { + return new(fastReflection_QueryTotalLiquidStaked) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryTotalLiquidStaked) Interface() protoreflect.ProtoMessage { + return (*QueryTotalLiquidStaked)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryTotalLiquidStaked) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryTotalLiquidStaked) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTotalLiquidStaked")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTotalLiquidStaked does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTotalLiquidStaked) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTotalLiquidStaked")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTotalLiquidStaked does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryTotalLiquidStaked) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTotalLiquidStaked")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTotalLiquidStaked does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTotalLiquidStaked) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTotalLiquidStaked")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTotalLiquidStaked does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTotalLiquidStaked) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTotalLiquidStaked")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTotalLiquidStaked does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryTotalLiquidStaked) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTotalLiquidStaked")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTotalLiquidStaked does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryTotalLiquidStaked) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.QueryTotalLiquidStaked", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryTotalLiquidStaked) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTotalLiquidStaked) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryTotalLiquidStaked) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryTotalLiquidStaked) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryTotalLiquidStaked) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryTotalLiquidStaked) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryTotalLiquidStaked) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTotalLiquidStaked: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTotalLiquidStaked: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryTotalLiquidStakedResponse protoreflect.MessageDescriptor + fd_QueryTotalLiquidStakedResponse_tokens protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_query_proto_init() + md_QueryTotalLiquidStakedResponse = File_cosmos_staking_v1beta1_query_proto.Messages().ByName("QueryTotalLiquidStakedResponse") + fd_QueryTotalLiquidStakedResponse_tokens = md_QueryTotalLiquidStakedResponse.Fields().ByName("tokens") +} + +var _ protoreflect.Message = (*fastReflection_QueryTotalLiquidStakedResponse)(nil) + +type fastReflection_QueryTotalLiquidStakedResponse QueryTotalLiquidStakedResponse + +func (x *QueryTotalLiquidStakedResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryTotalLiquidStakedResponse)(x) +} + +func (x *QueryTotalLiquidStakedResponse) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[41] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryTotalLiquidStakedResponse_messageType fastReflection_QueryTotalLiquidStakedResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryTotalLiquidStakedResponse_messageType{} + +type fastReflection_QueryTotalLiquidStakedResponse_messageType struct{} + +func (x fastReflection_QueryTotalLiquidStakedResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryTotalLiquidStakedResponse)(nil) +} +func (x fastReflection_QueryTotalLiquidStakedResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryTotalLiquidStakedResponse) +} +func (x fastReflection_QueryTotalLiquidStakedResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTotalLiquidStakedResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryTotalLiquidStakedResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTotalLiquidStakedResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryTotalLiquidStakedResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryTotalLiquidStakedResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryTotalLiquidStakedResponse) New() protoreflect.Message { + return new(fastReflection_QueryTotalLiquidStakedResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryTotalLiquidStakedResponse) Interface() protoreflect.ProtoMessage { + return (*QueryTotalLiquidStakedResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryTotalLiquidStakedResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Tokens != "" { + value := protoreflect.ValueOfString(x.Tokens) + if !f(fd_QueryTotalLiquidStakedResponse_tokens, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryTotalLiquidStakedResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTotalLiquidStakedResponse.tokens": + return x.Tokens != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTotalLiquidStakedResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTotalLiquidStakedResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTotalLiquidStakedResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTotalLiquidStakedResponse.tokens": + x.Tokens = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTotalLiquidStakedResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTotalLiquidStakedResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryTotalLiquidStakedResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.QueryTotalLiquidStakedResponse.tokens": + value := x.Tokens + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTotalLiquidStakedResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTotalLiquidStakedResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTotalLiquidStakedResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTotalLiquidStakedResponse.tokens": + x.Tokens = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTotalLiquidStakedResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTotalLiquidStakedResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTotalLiquidStakedResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTotalLiquidStakedResponse.tokens": + panic(fmt.Errorf("field tokens of message cosmos.staking.v1beta1.QueryTotalLiquidStakedResponse is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTotalLiquidStakedResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTotalLiquidStakedResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryTotalLiquidStakedResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTotalLiquidStakedResponse.tokens": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTotalLiquidStakedResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTotalLiquidStakedResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryTotalLiquidStakedResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.QueryTotalLiquidStakedResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryTotalLiquidStakedResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTotalLiquidStakedResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryTotalLiquidStakedResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryTotalLiquidStakedResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryTotalLiquidStakedResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Tokens) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryTotalLiquidStakedResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Tokens) > 0 { + i -= len(x.Tokens) + copy(dAtA[i:], x.Tokens) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Tokens))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryTotalLiquidStakedResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTotalLiquidStakedResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTotalLiquidStakedResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Tokens", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Tokens = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryTokenizeShareLockInfo protoreflect.MessageDescriptor + fd_QueryTokenizeShareLockInfo_address protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_query_proto_init() + md_QueryTokenizeShareLockInfo = File_cosmos_staking_v1beta1_query_proto.Messages().ByName("QueryTokenizeShareLockInfo") + fd_QueryTokenizeShareLockInfo_address = md_QueryTokenizeShareLockInfo.Fields().ByName("address") +} + +var _ protoreflect.Message = (*fastReflection_QueryTokenizeShareLockInfo)(nil) + +type fastReflection_QueryTokenizeShareLockInfo QueryTokenizeShareLockInfo + +func (x *QueryTokenizeShareLockInfo) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryTokenizeShareLockInfo)(x) +} + +func (x *QueryTokenizeShareLockInfo) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[42] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryTokenizeShareLockInfo_messageType fastReflection_QueryTokenizeShareLockInfo_messageType +var _ protoreflect.MessageType = fastReflection_QueryTokenizeShareLockInfo_messageType{} + +type fastReflection_QueryTokenizeShareLockInfo_messageType struct{} + +func (x fastReflection_QueryTokenizeShareLockInfo_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryTokenizeShareLockInfo)(nil) +} +func (x fastReflection_QueryTokenizeShareLockInfo_messageType) New() protoreflect.Message { + return new(fastReflection_QueryTokenizeShareLockInfo) +} +func (x fastReflection_QueryTokenizeShareLockInfo_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenizeShareLockInfo +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryTokenizeShareLockInfo) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenizeShareLockInfo +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryTokenizeShareLockInfo) Type() protoreflect.MessageType { + return _fastReflection_QueryTokenizeShareLockInfo_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryTokenizeShareLockInfo) New() protoreflect.Message { + return new(fastReflection_QueryTokenizeShareLockInfo) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryTokenizeShareLockInfo) Interface() protoreflect.ProtoMessage { + return (*QueryTokenizeShareLockInfo)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryTokenizeShareLockInfo) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Address != "" { + value := protoreflect.ValueOfString(x.Address) + if !f(fd_QueryTokenizeShareLockInfo_address, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryTokenizeShareLockInfo) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareLockInfo.address": + return x.Address != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareLockInfo")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareLockInfo does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareLockInfo) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareLockInfo.address": + x.Address = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareLockInfo")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareLockInfo does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryTokenizeShareLockInfo) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareLockInfo.address": + value := x.Address + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareLockInfo")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareLockInfo does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareLockInfo) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareLockInfo.address": + x.Address = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareLockInfo")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareLockInfo does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareLockInfo) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareLockInfo.address": + panic(fmt.Errorf("field address of message cosmos.staking.v1beta1.QueryTokenizeShareLockInfo is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareLockInfo")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareLockInfo does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryTokenizeShareLockInfo) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareLockInfo.address": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareLockInfo")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareLockInfo does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryTokenizeShareLockInfo) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.QueryTokenizeShareLockInfo", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryTokenizeShareLockInfo) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareLockInfo) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryTokenizeShareLockInfo) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryTokenizeShareLockInfo) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryTokenizeShareLockInfo) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Address) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenizeShareLockInfo) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Address) > 0 { + i -= len(x.Address) + copy(dAtA[i:], x.Address) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Address))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenizeShareLockInfo) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenizeShareLockInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenizeShareLockInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryTokenizeShareLockInfoResponse protoreflect.MessageDescriptor + fd_QueryTokenizeShareLockInfoResponse_status protoreflect.FieldDescriptor + fd_QueryTokenizeShareLockInfoResponse_expiration_time protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_query_proto_init() + md_QueryTokenizeShareLockInfoResponse = File_cosmos_staking_v1beta1_query_proto.Messages().ByName("QueryTokenizeShareLockInfoResponse") + fd_QueryTokenizeShareLockInfoResponse_status = md_QueryTokenizeShareLockInfoResponse.Fields().ByName("status") + fd_QueryTokenizeShareLockInfoResponse_expiration_time = md_QueryTokenizeShareLockInfoResponse.Fields().ByName("expiration_time") +} + +var _ protoreflect.Message = (*fastReflection_QueryTokenizeShareLockInfoResponse)(nil) + +type fastReflection_QueryTokenizeShareLockInfoResponse QueryTokenizeShareLockInfoResponse + +func (x *QueryTokenizeShareLockInfoResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryTokenizeShareLockInfoResponse)(x) +} + +func (x *QueryTokenizeShareLockInfoResponse) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[43] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryTokenizeShareLockInfoResponse_messageType fastReflection_QueryTokenizeShareLockInfoResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryTokenizeShareLockInfoResponse_messageType{} + +type fastReflection_QueryTokenizeShareLockInfoResponse_messageType struct{} + +func (x fastReflection_QueryTokenizeShareLockInfoResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryTokenizeShareLockInfoResponse)(nil) +} +func (x fastReflection_QueryTokenizeShareLockInfoResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryTokenizeShareLockInfoResponse) +} +func (x fastReflection_QueryTokenizeShareLockInfoResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenizeShareLockInfoResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryTokenizeShareLockInfoResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenizeShareLockInfoResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryTokenizeShareLockInfoResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryTokenizeShareLockInfoResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryTokenizeShareLockInfoResponse) New() protoreflect.Message { + return new(fastReflection_QueryTokenizeShareLockInfoResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryTokenizeShareLockInfoResponse) Interface() protoreflect.ProtoMessage { + return (*QueryTokenizeShareLockInfoResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryTokenizeShareLockInfoResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Status != "" { + value := protoreflect.ValueOfString(x.Status) + if !f(fd_QueryTokenizeShareLockInfoResponse_status, value) { + return + } + } + if x.ExpirationTime != "" { + value := protoreflect.ValueOfString(x.ExpirationTime) + if !f(fd_QueryTokenizeShareLockInfoResponse_expiration_time, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryTokenizeShareLockInfoResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse.status": + return x.Status != "" + case "cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse.expiration_time": + return x.ExpirationTime != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareLockInfoResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse.status": + x.Status = "" + case "cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse.expiration_time": + x.ExpirationTime = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryTokenizeShareLockInfoResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse.status": + value := x.Status + return protoreflect.ValueOfString(value) + case "cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse.expiration_time": + value := x.ExpirationTime + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareLockInfoResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse.status": + x.Status = value.Interface().(string) + case "cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse.expiration_time": + x.ExpirationTime = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareLockInfoResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse.status": + panic(fmt.Errorf("field status of message cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse is not mutable")) + case "cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse.expiration_time": + panic(fmt.Errorf("field expiration_time of message cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryTokenizeShareLockInfoResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse.status": + return protoreflect.ValueOfString("") + case "cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse.expiration_time": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryTokenizeShareLockInfoResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryTokenizeShareLockInfoResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenizeShareLockInfoResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryTokenizeShareLockInfoResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryTokenizeShareLockInfoResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryTokenizeShareLockInfoResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Status) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.ExpirationTime) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenizeShareLockInfoResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.ExpirationTime) > 0 { + i -= len(x.ExpirationTime) + copy(dAtA[i:], x.ExpirationTime) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ExpirationTime))) + i-- + dAtA[i] = 0x12 + } + if len(x.Status) > 0 { + i -= len(x.Status) + copy(dAtA[i:], x.Status) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Status))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenizeShareLockInfoResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenizeShareLockInfoResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenizeShareLockInfoResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Status = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ExpirationTime", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.ExpirationTime = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.27.0 // protoc (unknown) // source: cosmos/staking/v1beta1/query.proto -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// QueryValidatorsRequest is request type for Query/Validators RPC method. +type QueryValidatorsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // status enables to query for validators matching a given status. + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + // pagination defines an optional pagination for the request. + Pagination *v1beta1.PageRequest `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryValidatorsRequest) Reset() { + *x = QueryValidatorsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryValidatorsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryValidatorsRequest) ProtoMessage() {} + +// Deprecated: Use QueryValidatorsRequest.ProtoReflect.Descriptor instead. +func (*QueryValidatorsRequest) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{0} +} + +func (x *QueryValidatorsRequest) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *QueryValidatorsRequest) GetPagination() *v1beta1.PageRequest { + if x != nil { + return x.Pagination + } + return nil +} + +// QueryValidatorsResponse is response type for the Query/Validators RPC method +type QueryValidatorsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // validators contains all the queried validators. + Validators []*Validator `protobuf:"bytes,1,rep,name=validators,proto3" json:"validators,omitempty"` + // pagination defines the pagination in the response. + Pagination *v1beta1.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryValidatorsResponse) Reset() { + *x = QueryValidatorsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryValidatorsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryValidatorsResponse) ProtoMessage() {} + +// Deprecated: Use QueryValidatorsResponse.ProtoReflect.Descriptor instead. +func (*QueryValidatorsResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{1} +} + +func (x *QueryValidatorsResponse) GetValidators() []*Validator { + if x != nil { + return x.Validators + } + return nil +} + +func (x *QueryValidatorsResponse) GetPagination() *v1beta1.PageResponse { + if x != nil { + return x.Pagination + } + return nil +} + +// QueryValidatorRequest is response type for the Query/Validator RPC method +type QueryValidatorRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // validator_addr defines the validator address to query for. + ValidatorAddr string `protobuf:"bytes,1,opt,name=validator_addr,json=validatorAddr,proto3" json:"validator_addr,omitempty"` +} + +func (x *QueryValidatorRequest) Reset() { + *x = QueryValidatorRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryValidatorRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryValidatorRequest) ProtoMessage() {} + +// Deprecated: Use QueryValidatorRequest.ProtoReflect.Descriptor instead. +func (*QueryValidatorRequest) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{2} +} + +func (x *QueryValidatorRequest) GetValidatorAddr() string { + if x != nil { + return x.ValidatorAddr + } + return "" +} + +// QueryValidatorResponse is response type for the Query/Validator RPC method +type QueryValidatorResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // validator defines the validator info. + Validator *Validator `protobuf:"bytes,1,opt,name=validator,proto3" json:"validator,omitempty"` +} + +func (x *QueryValidatorResponse) Reset() { + *x = QueryValidatorResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryValidatorResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryValidatorResponse) ProtoMessage() {} + +// Deprecated: Use QueryValidatorResponse.ProtoReflect.Descriptor instead. +func (*QueryValidatorResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{3} +} + +func (x *QueryValidatorResponse) GetValidator() *Validator { + if x != nil { + return x.Validator + } + return nil +} + +// QueryValidatorDelegationsRequest is request type for the +// Query/ValidatorDelegations RPC method +type QueryValidatorDelegationsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // validator_addr defines the validator address to query for. + ValidatorAddr string `protobuf:"bytes,1,opt,name=validator_addr,json=validatorAddr,proto3" json:"validator_addr,omitempty"` + // pagination defines an optional pagination for the request. + Pagination *v1beta1.PageRequest `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryValidatorDelegationsRequest) Reset() { + *x = QueryValidatorDelegationsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryValidatorDelegationsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryValidatorDelegationsRequest) ProtoMessage() {} + +// Deprecated: Use QueryValidatorDelegationsRequest.ProtoReflect.Descriptor instead. +func (*QueryValidatorDelegationsRequest) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{4} +} + +func (x *QueryValidatorDelegationsRequest) GetValidatorAddr() string { + if x != nil { + return x.ValidatorAddr + } + return "" +} + +func (x *QueryValidatorDelegationsRequest) GetPagination() *v1beta1.PageRequest { + if x != nil { + return x.Pagination + } + return nil +} + +// QueryValidatorDelegationsResponse is response type for the +// Query/ValidatorDelegations RPC method +type QueryValidatorDelegationsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DelegationResponses []*DelegationResponse `protobuf:"bytes,1,rep,name=delegation_responses,json=delegationResponses,proto3" json:"delegation_responses,omitempty"` + // pagination defines the pagination in the response. + Pagination *v1beta1.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryValidatorDelegationsResponse) Reset() { + *x = QueryValidatorDelegationsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryValidatorDelegationsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryValidatorDelegationsResponse) ProtoMessage() {} + +// Deprecated: Use QueryValidatorDelegationsResponse.ProtoReflect.Descriptor instead. +func (*QueryValidatorDelegationsResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{5} +} + +func (x *QueryValidatorDelegationsResponse) GetDelegationResponses() []*DelegationResponse { + if x != nil { + return x.DelegationResponses + } + return nil +} + +func (x *QueryValidatorDelegationsResponse) GetPagination() *v1beta1.PageResponse { + if x != nil { + return x.Pagination + } + return nil +} + +// QueryValidatorUnbondingDelegationsRequest is required type for the +// Query/ValidatorUnbondingDelegations RPC method +type QueryValidatorUnbondingDelegationsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // validator_addr defines the validator address to query for. + ValidatorAddr string `protobuf:"bytes,1,opt,name=validator_addr,json=validatorAddr,proto3" json:"validator_addr,omitempty"` + // pagination defines an optional pagination for the request. + Pagination *v1beta1.PageRequest `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryValidatorUnbondingDelegationsRequest) Reset() { + *x = QueryValidatorUnbondingDelegationsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryValidatorUnbondingDelegationsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryValidatorUnbondingDelegationsRequest) ProtoMessage() {} + +// Deprecated: Use QueryValidatorUnbondingDelegationsRequest.ProtoReflect.Descriptor instead. +func (*QueryValidatorUnbondingDelegationsRequest) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{6} +} + +func (x *QueryValidatorUnbondingDelegationsRequest) GetValidatorAddr() string { + if x != nil { + return x.ValidatorAddr + } + return "" +} + +func (x *QueryValidatorUnbondingDelegationsRequest) GetPagination() *v1beta1.PageRequest { + if x != nil { + return x.Pagination + } + return nil +} + +// QueryValidatorUnbondingDelegationsResponse is response type for the +// Query/ValidatorUnbondingDelegations RPC method. +type QueryValidatorUnbondingDelegationsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UnbondingResponses []*UnbondingDelegation `protobuf:"bytes,1,rep,name=unbonding_responses,json=unbondingResponses,proto3" json:"unbonding_responses,omitempty"` + // pagination defines the pagination in the response. + Pagination *v1beta1.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryValidatorUnbondingDelegationsResponse) Reset() { + *x = QueryValidatorUnbondingDelegationsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryValidatorUnbondingDelegationsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryValidatorUnbondingDelegationsResponse) ProtoMessage() {} + +// Deprecated: Use QueryValidatorUnbondingDelegationsResponse.ProtoReflect.Descriptor instead. +func (*QueryValidatorUnbondingDelegationsResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{7} +} + +func (x *QueryValidatorUnbondingDelegationsResponse) GetUnbondingResponses() []*UnbondingDelegation { + if x != nil { + return x.UnbondingResponses + } + return nil +} + +func (x *QueryValidatorUnbondingDelegationsResponse) GetPagination() *v1beta1.PageResponse { + if x != nil { + return x.Pagination + } + return nil +} + +// QueryDelegationRequest is request type for the Query/Delegation RPC method. +type QueryDelegationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // delegator_addr defines the delegator address to query for. + DelegatorAddr string `protobuf:"bytes,1,opt,name=delegator_addr,json=delegatorAddr,proto3" json:"delegator_addr,omitempty"` + // validator_addr defines the validator address to query for. + ValidatorAddr string `protobuf:"bytes,2,opt,name=validator_addr,json=validatorAddr,proto3" json:"validator_addr,omitempty"` +} + +func (x *QueryDelegationRequest) Reset() { + *x = QueryDelegationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryDelegationRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryDelegationRequest) ProtoMessage() {} + +// Deprecated: Use QueryDelegationRequest.ProtoReflect.Descriptor instead. +func (*QueryDelegationRequest) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{8} +} + +func (x *QueryDelegationRequest) GetDelegatorAddr() string { + if x != nil { + return x.DelegatorAddr + } + return "" +} + +func (x *QueryDelegationRequest) GetValidatorAddr() string { + if x != nil { + return x.ValidatorAddr + } + return "" +} + +// QueryDelegationResponse is response type for the Query/Delegation RPC method. +type QueryDelegationResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // delegation_responses defines the delegation info of a delegation. + DelegationResponse *DelegationResponse `protobuf:"bytes,1,opt,name=delegation_response,json=delegationResponse,proto3" json:"delegation_response,omitempty"` +} + +func (x *QueryDelegationResponse) Reset() { + *x = QueryDelegationResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryDelegationResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryDelegationResponse) ProtoMessage() {} + +// Deprecated: Use QueryDelegationResponse.ProtoReflect.Descriptor instead. +func (*QueryDelegationResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{9} +} + +func (x *QueryDelegationResponse) GetDelegationResponse() *DelegationResponse { + if x != nil { + return x.DelegationResponse + } + return nil +} + +// QueryUnbondingDelegationRequest is request type for the +// Query/UnbondingDelegation RPC method. +type QueryUnbondingDelegationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // delegator_addr defines the delegator address to query for. + DelegatorAddr string `protobuf:"bytes,1,opt,name=delegator_addr,json=delegatorAddr,proto3" json:"delegator_addr,omitempty"` + // validator_addr defines the validator address to query for. + ValidatorAddr string `protobuf:"bytes,2,opt,name=validator_addr,json=validatorAddr,proto3" json:"validator_addr,omitempty"` +} + +func (x *QueryUnbondingDelegationRequest) Reset() { + *x = QueryUnbondingDelegationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryUnbondingDelegationRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryUnbondingDelegationRequest) ProtoMessage() {} + +// Deprecated: Use QueryUnbondingDelegationRequest.ProtoReflect.Descriptor instead. +func (*QueryUnbondingDelegationRequest) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{10} +} + +func (x *QueryUnbondingDelegationRequest) GetDelegatorAddr() string { + if x != nil { + return x.DelegatorAddr + } + return "" +} + +func (x *QueryUnbondingDelegationRequest) GetValidatorAddr() string { + if x != nil { + return x.ValidatorAddr + } + return "" +} + +// QueryDelegationResponse is response type for the Query/UnbondingDelegation +// RPC method. +type QueryUnbondingDelegationResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // unbond defines the unbonding information of a delegation. + Unbond *UnbondingDelegation `protobuf:"bytes,1,opt,name=unbond,proto3" json:"unbond,omitempty"` +} + +func (x *QueryUnbondingDelegationResponse) Reset() { + *x = QueryUnbondingDelegationResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryUnbondingDelegationResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} -// QueryValidatorsRequest is request type for Query/Validators RPC method. -type QueryValidatorsRequest struct { +func (*QueryUnbondingDelegationResponse) ProtoMessage() {} + +// Deprecated: Use QueryUnbondingDelegationResponse.ProtoReflect.Descriptor instead. +func (*QueryUnbondingDelegationResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{11} +} + +func (x *QueryUnbondingDelegationResponse) GetUnbond() *UnbondingDelegation { + if x != nil { + return x.Unbond + } + return nil +} + +// QueryDelegatorDelegationsRequest is request type for the +// Query/DelegatorDelegations RPC method. +type QueryDelegatorDelegationsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // status enables to query for validators matching a given status. - Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + // delegator_addr defines the delegator address to query for. + DelegatorAddr string `protobuf:"bytes,1,opt,name=delegator_addr,json=delegatorAddr,proto3" json:"delegator_addr,omitempty"` // pagination defines an optional pagination for the request. Pagination *v1beta1.PageRequest `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` } -func (x *QueryValidatorsRequest) Reset() { - *x = QueryValidatorsRequest{} +func (x *QueryDelegatorDelegationsRequest) Reset() { + *x = QueryDelegatorDelegationsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[0] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryValidatorsRequest) String() string { +func (x *QueryDelegatorDelegationsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryValidatorsRequest) ProtoMessage() {} +func (*QueryDelegatorDelegationsRequest) ProtoMessage() {} -// Deprecated: Use QueryValidatorsRequest.ProtoReflect.Descriptor instead. -func (*QueryValidatorsRequest) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{0} +// Deprecated: Use QueryDelegatorDelegationsRequest.ProtoReflect.Descriptor instead. +func (*QueryDelegatorDelegationsRequest) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{12} +} + +func (x *QueryDelegatorDelegationsRequest) GetDelegatorAddr() string { + if x != nil { + return x.DelegatorAddr + } + return "" +} + +func (x *QueryDelegatorDelegationsRequest) GetPagination() *v1beta1.PageRequest { + if x != nil { + return x.Pagination + } + return nil +} + +// QueryDelegatorDelegationsResponse is response type for the +// Query/DelegatorDelegations RPC method. +type QueryDelegatorDelegationsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // delegation_responses defines all the delegations' info of a delegator. + DelegationResponses []*DelegationResponse `protobuf:"bytes,1,rep,name=delegation_responses,json=delegationResponses,proto3" json:"delegation_responses,omitempty"` + // pagination defines the pagination in the response. + Pagination *v1beta1.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryDelegatorDelegationsResponse) Reset() { + *x = QueryDelegatorDelegationsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryDelegatorDelegationsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryDelegatorDelegationsResponse) ProtoMessage() {} + +// Deprecated: Use QueryDelegatorDelegationsResponse.ProtoReflect.Descriptor instead. +func (*QueryDelegatorDelegationsResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{13} +} + +func (x *QueryDelegatorDelegationsResponse) GetDelegationResponses() []*DelegationResponse { + if x != nil { + return x.DelegationResponses + } + return nil +} + +func (x *QueryDelegatorDelegationsResponse) GetPagination() *v1beta1.PageResponse { + if x != nil { + return x.Pagination + } + return nil +} + +// QueryDelegatorUnbondingDelegationsRequest is request type for the +// Query/DelegatorUnbondingDelegations RPC method. +type QueryDelegatorUnbondingDelegationsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // delegator_addr defines the delegator address to query for. + DelegatorAddr string `protobuf:"bytes,1,opt,name=delegator_addr,json=delegatorAddr,proto3" json:"delegator_addr,omitempty"` + // pagination defines an optional pagination for the request. + Pagination *v1beta1.PageRequest `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryDelegatorUnbondingDelegationsRequest) Reset() { + *x = QueryDelegatorUnbondingDelegationsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryDelegatorUnbondingDelegationsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryDelegatorUnbondingDelegationsRequest) ProtoMessage() {} + +// Deprecated: Use QueryDelegatorUnbondingDelegationsRequest.ProtoReflect.Descriptor instead. +func (*QueryDelegatorUnbondingDelegationsRequest) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{14} +} + +func (x *QueryDelegatorUnbondingDelegationsRequest) GetDelegatorAddr() string { + if x != nil { + return x.DelegatorAddr + } + return "" +} + +func (x *QueryDelegatorUnbondingDelegationsRequest) GetPagination() *v1beta1.PageRequest { + if x != nil { + return x.Pagination + } + return nil +} + +// QueryUnbondingDelegatorDelegationsResponse is response type for the +// Query/UnbondingDelegatorDelegations RPC method. +type QueryDelegatorUnbondingDelegationsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UnbondingResponses []*UnbondingDelegation `protobuf:"bytes,1,rep,name=unbonding_responses,json=unbondingResponses,proto3" json:"unbonding_responses,omitempty"` + // pagination defines the pagination in the response. + Pagination *v1beta1.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryDelegatorUnbondingDelegationsResponse) Reset() { + *x = QueryDelegatorUnbondingDelegationsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryDelegatorUnbondingDelegationsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryDelegatorUnbondingDelegationsResponse) ProtoMessage() {} + +// Deprecated: Use QueryDelegatorUnbondingDelegationsResponse.ProtoReflect.Descriptor instead. +func (*QueryDelegatorUnbondingDelegationsResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{15} +} + +func (x *QueryDelegatorUnbondingDelegationsResponse) GetUnbondingResponses() []*UnbondingDelegation { + if x != nil { + return x.UnbondingResponses + } + return nil +} + +func (x *QueryDelegatorUnbondingDelegationsResponse) GetPagination() *v1beta1.PageResponse { + if x != nil { + return x.Pagination + } + return nil +} + +// QueryRedelegationsRequest is request type for the Query/Redelegations RPC +// method. +type QueryRedelegationsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // delegator_addr defines the delegator address to query for. + DelegatorAddr string `protobuf:"bytes,1,opt,name=delegator_addr,json=delegatorAddr,proto3" json:"delegator_addr,omitempty"` + // src_validator_addr defines the validator address to redelegate from. + SrcValidatorAddr string `protobuf:"bytes,2,opt,name=src_validator_addr,json=srcValidatorAddr,proto3" json:"src_validator_addr,omitempty"` + // dst_validator_addr defines the validator address to redelegate to. + DstValidatorAddr string `protobuf:"bytes,3,opt,name=dst_validator_addr,json=dstValidatorAddr,proto3" json:"dst_validator_addr,omitempty"` + // pagination defines an optional pagination for the request. + Pagination *v1beta1.PageRequest `protobuf:"bytes,4,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryRedelegationsRequest) Reset() { + *x = QueryRedelegationsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryRedelegationsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryRedelegationsRequest) ProtoMessage() {} + +// Deprecated: Use QueryRedelegationsRequest.ProtoReflect.Descriptor instead. +func (*QueryRedelegationsRequest) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{16} +} + +func (x *QueryRedelegationsRequest) GetDelegatorAddr() string { + if x != nil { + return x.DelegatorAddr + } + return "" +} + +func (x *QueryRedelegationsRequest) GetSrcValidatorAddr() string { + if x != nil { + return x.SrcValidatorAddr + } + return "" } -func (x *QueryValidatorsRequest) GetStatus() string { +func (x *QueryRedelegationsRequest) GetDstValidatorAddr() string { if x != nil { - return x.Status + return x.DstValidatorAddr } return "" } -func (x *QueryValidatorsRequest) GetPagination() *v1beta1.PageRequest { +func (x *QueryRedelegationsRequest) GetPagination() *v1beta1.PageRequest { if x != nil { return x.Pagination } return nil } -// QueryValidatorsResponse is response type for the Query/Validators RPC method -type QueryValidatorsResponse struct { +// QueryRedelegationsResponse is response type for the Query/Redelegations RPC +// method. +type QueryRedelegationsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // validators contains all the queried validators. - Validators []*Validator `protobuf:"bytes,1,rep,name=validators,proto3" json:"validators,omitempty"` + RedelegationResponses []*RedelegationResponse `protobuf:"bytes,1,rep,name=redelegation_responses,json=redelegationResponses,proto3" json:"redelegation_responses,omitempty"` // pagination defines the pagination in the response. Pagination *v1beta1.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` } -func (x *QueryValidatorsResponse) Reset() { - *x = QueryValidatorsResponse{} +func (x *QueryRedelegationsResponse) Reset() { + *x = QueryRedelegationsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[1] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryValidatorsResponse) String() string { +func (x *QueryRedelegationsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryValidatorsResponse) ProtoMessage() {} +func (*QueryRedelegationsResponse) ProtoMessage() {} -// Deprecated: Use QueryValidatorsResponse.ProtoReflect.Descriptor instead. -func (*QueryValidatorsResponse) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{1} +// Deprecated: Use QueryRedelegationsResponse.ProtoReflect.Descriptor instead. +func (*QueryRedelegationsResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{17} } -func (x *QueryValidatorsResponse) GetValidators() []*Validator { +func (x *QueryRedelegationsResponse) GetRedelegationResponses() []*RedelegationResponse { if x != nil { - return x.Validators + return x.RedelegationResponses } return nil } -func (x *QueryValidatorsResponse) GetPagination() *v1beta1.PageResponse { +func (x *QueryRedelegationsResponse) GetPagination() *v1beta1.PageResponse { if x != nil { return x.Pagination } return nil } -// QueryValidatorRequest is response type for the Query/Validator RPC method -type QueryValidatorRequest struct { +// QueryDelegatorValidatorsRequest is request type for the +// Query/DelegatorValidators RPC method. +type QueryDelegatorValidatorsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // validator_addr defines the validator address to query for. - ValidatorAddr string `protobuf:"bytes,1,opt,name=validator_addr,json=validatorAddr,proto3" json:"validator_addr,omitempty"` + // delegator_addr defines the delegator address to query for. + DelegatorAddr string `protobuf:"bytes,1,opt,name=delegator_addr,json=delegatorAddr,proto3" json:"delegator_addr,omitempty"` + // pagination defines an optional pagination for the request. + Pagination *v1beta1.PageRequest `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` } -func (x *QueryValidatorRequest) Reset() { - *x = QueryValidatorRequest{} +func (x *QueryDelegatorValidatorsRequest) Reset() { + *x = QueryDelegatorValidatorsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[2] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryValidatorRequest) String() string { +func (x *QueryDelegatorValidatorsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryValidatorRequest) ProtoMessage() {} +func (*QueryDelegatorValidatorsRequest) ProtoMessage() {} -// Deprecated: Use QueryValidatorRequest.ProtoReflect.Descriptor instead. -func (*QueryValidatorRequest) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{2} +// Deprecated: Use QueryDelegatorValidatorsRequest.ProtoReflect.Descriptor instead. +func (*QueryDelegatorValidatorsRequest) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{18} } -func (x *QueryValidatorRequest) GetValidatorAddr() string { +func (x *QueryDelegatorValidatorsRequest) GetDelegatorAddr() string { if x != nil { - return x.ValidatorAddr + return x.DelegatorAddr } return "" } -// QueryValidatorResponse is response type for the Query/Validator RPC method -type QueryValidatorResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // validator defines the validator info. - Validator *Validator `protobuf:"bytes,1,opt,name=validator,proto3" json:"validator,omitempty"` -} - -func (x *QueryValidatorResponse) Reset() { - *x = QueryValidatorResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *QueryValidatorResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*QueryValidatorResponse) ProtoMessage() {} - -// Deprecated: Use QueryValidatorResponse.ProtoReflect.Descriptor instead. -func (*QueryValidatorResponse) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{3} -} - -func (x *QueryValidatorResponse) GetValidator() *Validator { +func (x *QueryDelegatorValidatorsRequest) GetPagination() *v1beta1.PageRequest { if x != nil { - return x.Validator + return x.Pagination } return nil } -// QueryValidatorDelegationsRequest is request type for the -// Query/ValidatorDelegations RPC method -type QueryValidatorDelegationsRequest struct { +// QueryDelegatorValidatorsResponse is response type for the +// Query/DelegatorValidators RPC method. +type QueryDelegatorValidatorsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // validator_addr defines the validator address to query for. - ValidatorAddr string `protobuf:"bytes,1,opt,name=validator_addr,json=validatorAddr,proto3" json:"validator_addr,omitempty"` - // pagination defines an optional pagination for the request. - Pagination *v1beta1.PageRequest `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` + // validators defines the validators' info of a delegator. + Validators []*Validator `protobuf:"bytes,1,rep,name=validators,proto3" json:"validators,omitempty"` + // pagination defines the pagination in the response. + Pagination *v1beta1.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` } -func (x *QueryValidatorDelegationsRequest) Reset() { - *x = QueryValidatorDelegationsRequest{} +func (x *QueryDelegatorValidatorsResponse) Reset() { + *x = QueryDelegatorValidatorsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[4] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryValidatorDelegationsRequest) String() string { +func (x *QueryDelegatorValidatorsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryValidatorDelegationsRequest) ProtoMessage() {} +func (*QueryDelegatorValidatorsResponse) ProtoMessage() {} -// Deprecated: Use QueryValidatorDelegationsRequest.ProtoReflect.Descriptor instead. -func (*QueryValidatorDelegationsRequest) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{4} +// Deprecated: Use QueryDelegatorValidatorsResponse.ProtoReflect.Descriptor instead. +func (*QueryDelegatorValidatorsResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{19} } -func (x *QueryValidatorDelegationsRequest) GetValidatorAddr() string { +func (x *QueryDelegatorValidatorsResponse) GetValidators() []*Validator { if x != nil { - return x.ValidatorAddr + return x.Validators } - return "" + return nil } -func (x *QueryValidatorDelegationsRequest) GetPagination() *v1beta1.PageRequest { +func (x *QueryDelegatorValidatorsResponse) GetPagination() *v1beta1.PageResponse { if x != nil { return x.Pagination } return nil } -// QueryValidatorDelegationsResponse is response type for the -// Query/ValidatorDelegations RPC method -type QueryValidatorDelegationsResponse struct { +// QueryDelegatorValidatorRequest is request type for the +// Query/DelegatorValidator RPC method. +type QueryDelegatorValidatorRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DelegationResponses []*DelegationResponse `protobuf:"bytes,1,rep,name=delegation_responses,json=delegationResponses,proto3" json:"delegation_responses,omitempty"` - // pagination defines the pagination in the response. - Pagination *v1beta1.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` + // delegator_addr defines the delegator address to query for. + DelegatorAddr string `protobuf:"bytes,1,opt,name=delegator_addr,json=delegatorAddr,proto3" json:"delegator_addr,omitempty"` + // validator_addr defines the validator address to query for. + ValidatorAddr string `protobuf:"bytes,2,opt,name=validator_addr,json=validatorAddr,proto3" json:"validator_addr,omitempty"` } -func (x *QueryValidatorDelegationsResponse) Reset() { - *x = QueryValidatorDelegationsResponse{} +func (x *QueryDelegatorValidatorRequest) Reset() { + *x = QueryDelegatorValidatorRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[5] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryValidatorDelegationsResponse) String() string { +func (x *QueryDelegatorValidatorRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryValidatorDelegationsResponse) ProtoMessage() {} +func (*QueryDelegatorValidatorRequest) ProtoMessage() {} -// Deprecated: Use QueryValidatorDelegationsResponse.ProtoReflect.Descriptor instead. -func (*QueryValidatorDelegationsResponse) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{5} +// Deprecated: Use QueryDelegatorValidatorRequest.ProtoReflect.Descriptor instead. +func (*QueryDelegatorValidatorRequest) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{20} } -func (x *QueryValidatorDelegationsResponse) GetDelegationResponses() []*DelegationResponse { +func (x *QueryDelegatorValidatorRequest) GetDelegatorAddr() string { if x != nil { - return x.DelegationResponses + return x.DelegatorAddr } - return nil + return "" } -func (x *QueryValidatorDelegationsResponse) GetPagination() *v1beta1.PageResponse { +func (x *QueryDelegatorValidatorRequest) GetValidatorAddr() string { if x != nil { - return x.Pagination + return x.ValidatorAddr } - return nil + return "" } -// QueryValidatorUnbondingDelegationsRequest is required type for the -// Query/ValidatorUnbondingDelegations RPC method -type QueryValidatorUnbondingDelegationsRequest struct { +// QueryDelegatorValidatorResponse response type for the +// Query/DelegatorValidator RPC method. +type QueryDelegatorValidatorResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // validator_addr defines the validator address to query for. - ValidatorAddr string `protobuf:"bytes,1,opt,name=validator_addr,json=validatorAddr,proto3" json:"validator_addr,omitempty"` - // pagination defines an optional pagination for the request. - Pagination *v1beta1.PageRequest `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` + // validator defines the validator info. + Validator *Validator `protobuf:"bytes,1,opt,name=validator,proto3" json:"validator,omitempty"` } -func (x *QueryValidatorUnbondingDelegationsRequest) Reset() { - *x = QueryValidatorUnbondingDelegationsRequest{} +func (x *QueryDelegatorValidatorResponse) Reset() { + *x = QueryDelegatorValidatorResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[6] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryValidatorUnbondingDelegationsRequest) String() string { +func (x *QueryDelegatorValidatorResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryValidatorUnbondingDelegationsRequest) ProtoMessage() {} - -// Deprecated: Use QueryValidatorUnbondingDelegationsRequest.ProtoReflect.Descriptor instead. -func (*QueryValidatorUnbondingDelegationsRequest) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{6} -} +func (*QueryDelegatorValidatorResponse) ProtoMessage() {} -func (x *QueryValidatorUnbondingDelegationsRequest) GetValidatorAddr() string { - if x != nil { - return x.ValidatorAddr - } - return "" +// Deprecated: Use QueryDelegatorValidatorResponse.ProtoReflect.Descriptor instead. +func (*QueryDelegatorValidatorResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{21} } -func (x *QueryValidatorUnbondingDelegationsRequest) GetPagination() *v1beta1.PageRequest { +func (x *QueryDelegatorValidatorResponse) GetValidator() *Validator { if x != nil { - return x.Pagination + return x.Validator } return nil } -// QueryValidatorUnbondingDelegationsResponse is response type for the -// Query/ValidatorUnbondingDelegations RPC method. -type QueryValidatorUnbondingDelegationsResponse struct { +// QueryHistoricalInfoRequest is request type for the Query/HistoricalInfo RPC +// method. +type QueryHistoricalInfoRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UnbondingResponses []*UnbondingDelegation `protobuf:"bytes,1,rep,name=unbonding_responses,json=unbondingResponses,proto3" json:"unbonding_responses,omitempty"` - // pagination defines the pagination in the response. - Pagination *v1beta1.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` + // height defines at which height to query the historical info. + Height int64 `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"` } -func (x *QueryValidatorUnbondingDelegationsResponse) Reset() { - *x = QueryValidatorUnbondingDelegationsResponse{} +func (x *QueryHistoricalInfoRequest) Reset() { + *x = QueryHistoricalInfoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[7] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryValidatorUnbondingDelegationsResponse) String() string { +func (x *QueryHistoricalInfoRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryValidatorUnbondingDelegationsResponse) ProtoMessage() {} - -// Deprecated: Use QueryValidatorUnbondingDelegationsResponse.ProtoReflect.Descriptor instead. -func (*QueryValidatorUnbondingDelegationsResponse) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{7} -} +func (*QueryHistoricalInfoRequest) ProtoMessage() {} -func (x *QueryValidatorUnbondingDelegationsResponse) GetUnbondingResponses() []*UnbondingDelegation { - if x != nil { - return x.UnbondingResponses - } - return nil +// Deprecated: Use QueryHistoricalInfoRequest.ProtoReflect.Descriptor instead. +func (*QueryHistoricalInfoRequest) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{22} } -func (x *QueryValidatorUnbondingDelegationsResponse) GetPagination() *v1beta1.PageResponse { +func (x *QueryHistoricalInfoRequest) GetHeight() int64 { if x != nil { - return x.Pagination + return x.Height } - return nil + return 0 } -// QueryDelegationRequest is request type for the Query/Delegation RPC method. -type QueryDelegationRequest struct { +// QueryHistoricalInfoResponse is response type for the Query/HistoricalInfo RPC +// method. +type QueryHistoricalInfoResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // delegator_addr defines the delegator address to query for. - DelegatorAddr string `protobuf:"bytes,1,opt,name=delegator_addr,json=delegatorAddr,proto3" json:"delegator_addr,omitempty"` - // validator_addr defines the validator address to query for. - ValidatorAddr string `protobuf:"bytes,2,opt,name=validator_addr,json=validatorAddr,proto3" json:"validator_addr,omitempty"` + // hist defines the historical info at the given height. + Hist *HistoricalInfo `protobuf:"bytes,1,opt,name=hist,proto3" json:"hist,omitempty"` } -func (x *QueryDelegationRequest) Reset() { - *x = QueryDelegationRequest{} +func (x *QueryHistoricalInfoResponse) Reset() { + *x = QueryHistoricalInfoResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[8] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryDelegationRequest) String() string { +func (x *QueryHistoricalInfoResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryDelegationRequest) ProtoMessage() {} - -// Deprecated: Use QueryDelegationRequest.ProtoReflect.Descriptor instead. -func (*QueryDelegationRequest) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{8} -} +func (*QueryHistoricalInfoResponse) ProtoMessage() {} -func (x *QueryDelegationRequest) GetDelegatorAddr() string { - if x != nil { - return x.DelegatorAddr - } - return "" +// Deprecated: Use QueryHistoricalInfoResponse.ProtoReflect.Descriptor instead. +func (*QueryHistoricalInfoResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{23} } -func (x *QueryDelegationRequest) GetValidatorAddr() string { +func (x *QueryHistoricalInfoResponse) GetHist() *HistoricalInfo { if x != nil { - return x.ValidatorAddr + return x.Hist } - return "" + return nil } -// QueryDelegationResponse is response type for the Query/Delegation RPC method. -type QueryDelegationResponse struct { +// QueryPoolRequest is request type for the Query/Pool RPC method. +type QueryPoolRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // delegation_responses defines the delegation info of a delegation. - DelegationResponse *DelegationResponse `protobuf:"bytes,1,opt,name=delegation_response,json=delegationResponse,proto3" json:"delegation_response,omitempty"` } -func (x *QueryDelegationResponse) Reset() { - *x = QueryDelegationResponse{} +func (x *QueryPoolRequest) Reset() { + *x = QueryPoolRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[9] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryDelegationResponse) String() string { +func (x *QueryPoolRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryDelegationResponse) ProtoMessage() {} - -// Deprecated: Use QueryDelegationResponse.ProtoReflect.Descriptor instead. -func (*QueryDelegationResponse) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{9} -} +func (*QueryPoolRequest) ProtoMessage() {} -func (x *QueryDelegationResponse) GetDelegationResponse() *DelegationResponse { - if x != nil { - return x.DelegationResponse - } - return nil +// Deprecated: Use QueryPoolRequest.ProtoReflect.Descriptor instead. +func (*QueryPoolRequest) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{24} } -// QueryUnbondingDelegationRequest is request type for the -// Query/UnbondingDelegation RPC method. -type QueryUnbondingDelegationRequest struct { +// QueryPoolResponse is response type for the Query/Pool RPC method. +type QueryPoolResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // delegator_addr defines the delegator address to query for. - DelegatorAddr string `protobuf:"bytes,1,opt,name=delegator_addr,json=delegatorAddr,proto3" json:"delegator_addr,omitempty"` - // validator_addr defines the validator address to query for. - ValidatorAddr string `protobuf:"bytes,2,opt,name=validator_addr,json=validatorAddr,proto3" json:"validator_addr,omitempty"` + // pool defines the pool info. + Pool *Pool `protobuf:"bytes,1,opt,name=pool,proto3" json:"pool,omitempty"` } -func (x *QueryUnbondingDelegationRequest) Reset() { - *x = QueryUnbondingDelegationRequest{} +func (x *QueryPoolResponse) Reset() { + *x = QueryPoolResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[10] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryUnbondingDelegationRequest) String() string { +func (x *QueryPoolResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryUnbondingDelegationRequest) ProtoMessage() {} - -// Deprecated: Use QueryUnbondingDelegationRequest.ProtoReflect.Descriptor instead. -func (*QueryUnbondingDelegationRequest) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{10} -} +func (*QueryPoolResponse) ProtoMessage() {} -func (x *QueryUnbondingDelegationRequest) GetDelegatorAddr() string { - if x != nil { - return x.DelegatorAddr - } - return "" +// Deprecated: Use QueryPoolResponse.ProtoReflect.Descriptor instead. +func (*QueryPoolResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{25} } -func (x *QueryUnbondingDelegationRequest) GetValidatorAddr() string { +func (x *QueryPoolResponse) GetPool() *Pool { if x != nil { - return x.ValidatorAddr + return x.Pool } - return "" + return nil } -// QueryDelegationResponse is response type for the Query/UnbondingDelegation -// RPC method. -type QueryUnbondingDelegationResponse struct { +// QueryParamsRequest is request type for the Query/Params RPC method. +type QueryParamsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // unbond defines the unbonding information of a delegation. - Unbond *UnbondingDelegation `protobuf:"bytes,1,opt,name=unbond,proto3" json:"unbond,omitempty"` } -func (x *QueryUnbondingDelegationResponse) Reset() { - *x = QueryUnbondingDelegationResponse{} +func (x *QueryParamsRequest) Reset() { + *x = QueryParamsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[11] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryUnbondingDelegationResponse) String() string { +func (x *QueryParamsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryUnbondingDelegationResponse) ProtoMessage() {} - -// Deprecated: Use QueryUnbondingDelegationResponse.ProtoReflect.Descriptor instead. -func (*QueryUnbondingDelegationResponse) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{11} -} +func (*QueryParamsRequest) ProtoMessage() {} -func (x *QueryUnbondingDelegationResponse) GetUnbond() *UnbondingDelegation { - if x != nil { - return x.Unbond - } - return nil +// Deprecated: Use QueryParamsRequest.ProtoReflect.Descriptor instead. +func (*QueryParamsRequest) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{26} } -// QueryDelegatorDelegationsRequest is request type for the -// Query/DelegatorDelegations RPC method. -type QueryDelegatorDelegationsRequest struct { +// QueryParamsResponse is response type for the Query/Params RPC method. +type QueryParamsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // delegator_addr defines the delegator address to query for. - DelegatorAddr string `protobuf:"bytes,1,opt,name=delegator_addr,json=delegatorAddr,proto3" json:"delegator_addr,omitempty"` - // pagination defines an optional pagination for the request. - Pagination *v1beta1.PageRequest `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` + // params holds all the parameters of this module. + Params *Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"` } -func (x *QueryDelegatorDelegationsRequest) Reset() { - *x = QueryDelegatorDelegationsRequest{} +func (x *QueryParamsResponse) Reset() { + *x = QueryParamsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[12] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryDelegatorDelegationsRequest) String() string { +func (x *QueryParamsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryDelegatorDelegationsRequest) ProtoMessage() {} - -// Deprecated: Use QueryDelegatorDelegationsRequest.ProtoReflect.Descriptor instead. -func (*QueryDelegatorDelegationsRequest) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{12} -} +func (*QueryParamsResponse) ProtoMessage() {} -func (x *QueryDelegatorDelegationsRequest) GetDelegatorAddr() string { - if x != nil { - return x.DelegatorAddr - } - return "" +// Deprecated: Use QueryParamsResponse.ProtoReflect.Descriptor instead. +func (*QueryParamsResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{27} } -func (x *QueryDelegatorDelegationsRequest) GetPagination() *v1beta1.PageRequest { +func (x *QueryParamsResponse) GetParams() *Params { if x != nil { - return x.Pagination + return x.Params } return nil } -// QueryDelegatorDelegationsResponse is response type for the -// Query/DelegatorDelegations RPC method. -type QueryDelegatorDelegationsResponse struct { +// QueryTokenizeShareRecordByIdRequest is request type for the +// Query/QueryTokenizeShareRecordById RPC method. +type QueryTokenizeShareRecordByIdRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // delegation_responses defines all the delegations' info of a delegator. - DelegationResponses []*DelegationResponse `protobuf:"bytes,1,rep,name=delegation_responses,json=delegationResponses,proto3" json:"delegation_responses,omitempty"` - // pagination defines the pagination in the response. - Pagination *v1beta1.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *QueryDelegatorDelegationsResponse) Reset() { - *x = QueryDelegatorDelegationsResponse{} +func (x *QueryTokenizeShareRecordByIdRequest) Reset() { + *x = QueryTokenizeShareRecordByIdRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[13] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryDelegatorDelegationsResponse) String() string { +func (x *QueryTokenizeShareRecordByIdRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryDelegatorDelegationsResponse) ProtoMessage() {} - -// Deprecated: Use QueryDelegatorDelegationsResponse.ProtoReflect.Descriptor instead. -func (*QueryDelegatorDelegationsResponse) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{13} -} +func (*QueryTokenizeShareRecordByIdRequest) ProtoMessage() {} -func (x *QueryDelegatorDelegationsResponse) GetDelegationResponses() []*DelegationResponse { - if x != nil { - return x.DelegationResponses - } - return nil +// Deprecated: Use QueryTokenizeShareRecordByIdRequest.ProtoReflect.Descriptor instead. +func (*QueryTokenizeShareRecordByIdRequest) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{28} } -func (x *QueryDelegatorDelegationsResponse) GetPagination() *v1beta1.PageResponse { +func (x *QueryTokenizeShareRecordByIdRequest) GetId() uint64 { if x != nil { - return x.Pagination + return x.Id } - return nil + return 0 } -// QueryDelegatorUnbondingDelegationsRequest is request type for the -// Query/DelegatorUnbondingDelegations RPC method. -type QueryDelegatorUnbondingDelegationsRequest struct { +// QueryTokenizeShareRecordByIdRequest is response type for the +// Query/QueryTokenizeShareRecordById RPC method. +type QueryTokenizeShareRecordByIdResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // delegator_addr defines the delegator address to query for. - DelegatorAddr string `protobuf:"bytes,1,opt,name=delegator_addr,json=delegatorAddr,proto3" json:"delegator_addr,omitempty"` - // pagination defines an optional pagination for the request. - Pagination *v1beta1.PageRequest `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` + Record *TokenizeShareRecord `protobuf:"bytes,1,opt,name=record,proto3" json:"record,omitempty"` } -func (x *QueryDelegatorUnbondingDelegationsRequest) Reset() { - *x = QueryDelegatorUnbondingDelegationsRequest{} +func (x *QueryTokenizeShareRecordByIdResponse) Reset() { + *x = QueryTokenizeShareRecordByIdResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[14] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryDelegatorUnbondingDelegationsRequest) String() string { +func (x *QueryTokenizeShareRecordByIdResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryDelegatorUnbondingDelegationsRequest) ProtoMessage() {} - -// Deprecated: Use QueryDelegatorUnbondingDelegationsRequest.ProtoReflect.Descriptor instead. -func (*QueryDelegatorUnbondingDelegationsRequest) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{14} -} +func (*QueryTokenizeShareRecordByIdResponse) ProtoMessage() {} -func (x *QueryDelegatorUnbondingDelegationsRequest) GetDelegatorAddr() string { - if x != nil { - return x.DelegatorAddr - } - return "" +// Deprecated: Use QueryTokenizeShareRecordByIdResponse.ProtoReflect.Descriptor instead. +func (*QueryTokenizeShareRecordByIdResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{29} } -func (x *QueryDelegatorUnbondingDelegationsRequest) GetPagination() *v1beta1.PageRequest { +func (x *QueryTokenizeShareRecordByIdResponse) GetRecord() *TokenizeShareRecord { if x != nil { - return x.Pagination + return x.Record } return nil } -// QueryUnbondingDelegatorDelegationsResponse is response type for the -// Query/UnbondingDelegatorDelegations RPC method. -type QueryDelegatorUnbondingDelegationsResponse struct { +// QueryTokenizeShareRecordByDenomRequest is request type for the +// Query/QueryTokenizeShareRecordByDenom RPC method. +type QueryTokenizeShareRecordByDenomRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UnbondingResponses []*UnbondingDelegation `protobuf:"bytes,1,rep,name=unbonding_responses,json=unbondingResponses,proto3" json:"unbonding_responses,omitempty"` - // pagination defines the pagination in the response. - Pagination *v1beta1.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` } -func (x *QueryDelegatorUnbondingDelegationsResponse) Reset() { - *x = QueryDelegatorUnbondingDelegationsResponse{} +func (x *QueryTokenizeShareRecordByDenomRequest) Reset() { + *x = QueryTokenizeShareRecordByDenomRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[15] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryDelegatorUnbondingDelegationsResponse) String() string { +func (x *QueryTokenizeShareRecordByDenomRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryDelegatorUnbondingDelegationsResponse) ProtoMessage() {} - -// Deprecated: Use QueryDelegatorUnbondingDelegationsResponse.ProtoReflect.Descriptor instead. -func (*QueryDelegatorUnbondingDelegationsResponse) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{15} -} - -func (x *QueryDelegatorUnbondingDelegationsResponse) GetUnbondingResponses() []*UnbondingDelegation { - if x != nil { - return x.UnbondingResponses - } - return nil +func (*QueryTokenizeShareRecordByDenomRequest) ProtoMessage() {} + +// Deprecated: Use QueryTokenizeShareRecordByDenomRequest.ProtoReflect.Descriptor instead. +func (*QueryTokenizeShareRecordByDenomRequest) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{30} } -func (x *QueryDelegatorUnbondingDelegationsResponse) GetPagination() *v1beta1.PageResponse { +func (x *QueryTokenizeShareRecordByDenomRequest) GetDenom() string { if x != nil { - return x.Pagination + return x.Denom } - return nil + return "" } -// QueryRedelegationsRequest is request type for the Query/Redelegations RPC -// method. -type QueryRedelegationsRequest struct { +// QueryTokenizeShareRecordByDenomResponse is response type for the +// Query/QueryTokenizeShareRecordByDenom RPC method. +type QueryTokenizeShareRecordByDenomResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // delegator_addr defines the delegator address to query for. - DelegatorAddr string `protobuf:"bytes,1,opt,name=delegator_addr,json=delegatorAddr,proto3" json:"delegator_addr,omitempty"` - // src_validator_addr defines the validator address to redelegate from. - SrcValidatorAddr string `protobuf:"bytes,2,opt,name=src_validator_addr,json=srcValidatorAddr,proto3" json:"src_validator_addr,omitempty"` - // dst_validator_addr defines the validator address to redelegate to. - DstValidatorAddr string `protobuf:"bytes,3,opt,name=dst_validator_addr,json=dstValidatorAddr,proto3" json:"dst_validator_addr,omitempty"` - // pagination defines an optional pagination for the request. - Pagination *v1beta1.PageRequest `protobuf:"bytes,4,opt,name=pagination,proto3" json:"pagination,omitempty"` + Record *TokenizeShareRecord `protobuf:"bytes,1,opt,name=record,proto3" json:"record,omitempty"` } -func (x *QueryRedelegationsRequest) Reset() { - *x = QueryRedelegationsRequest{} +func (x *QueryTokenizeShareRecordByDenomResponse) Reset() { + *x = QueryTokenizeShareRecordByDenomResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[16] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryRedelegationsRequest) String() string { +func (x *QueryTokenizeShareRecordByDenomResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryRedelegationsRequest) ProtoMessage() {} +func (*QueryTokenizeShareRecordByDenomResponse) ProtoMessage() {} -// Deprecated: Use QueryRedelegationsRequest.ProtoReflect.Descriptor instead. -func (*QueryRedelegationsRequest) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{16} +// Deprecated: Use QueryTokenizeShareRecordByDenomResponse.ProtoReflect.Descriptor instead. +func (*QueryTokenizeShareRecordByDenomResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{31} } -func (x *QueryRedelegationsRequest) GetDelegatorAddr() string { +func (x *QueryTokenizeShareRecordByDenomResponse) GetRecord() *TokenizeShareRecord { if x != nil { - return x.DelegatorAddr + return x.Record } - return "" + return nil } -func (x *QueryRedelegationsRequest) GetSrcValidatorAddr() string { - if x != nil { - return x.SrcValidatorAddr - } - return "" +// QueryTokenizeShareRecordsOwnedRequest is request type for the +// Query/QueryTokenizeShareRecordsOwned RPC method. +type QueryTokenizeShareRecordsOwnedRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` } -func (x *QueryRedelegationsRequest) GetDstValidatorAddr() string { - if x != nil { - return x.DstValidatorAddr +func (x *QueryTokenizeShareRecordsOwnedRequest) Reset() { + *x = QueryTokenizeShareRecordsOwnedRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *QueryRedelegationsRequest) GetPagination() *v1beta1.PageRequest { +func (x *QueryTokenizeShareRecordsOwnedRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryTokenizeShareRecordsOwnedRequest) ProtoMessage() {} + +// Deprecated: Use QueryTokenizeShareRecordsOwnedRequest.ProtoReflect.Descriptor instead. +func (*QueryTokenizeShareRecordsOwnedRequest) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{32} +} + +func (x *QueryTokenizeShareRecordsOwnedRequest) GetOwner() string { if x != nil { - return x.Pagination + return x.Owner } - return nil + return "" } -// QueryRedelegationsResponse is response type for the Query/Redelegations RPC -// method. -type QueryRedelegationsResponse struct { +// QueryTokenizeShareRecordsOwnedResponse is response type for the +// Query/QueryTokenizeShareRecordsOwned RPC method. +type QueryTokenizeShareRecordsOwnedResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - RedelegationResponses []*RedelegationResponse `protobuf:"bytes,1,rep,name=redelegation_responses,json=redelegationResponses,proto3" json:"redelegation_responses,omitempty"` - // pagination defines the pagination in the response. - Pagination *v1beta1.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` + Records []*TokenizeShareRecord `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"` } -func (x *QueryRedelegationsResponse) Reset() { - *x = QueryRedelegationsResponse{} +func (x *QueryTokenizeShareRecordsOwnedResponse) Reset() { + *x = QueryTokenizeShareRecordsOwnedResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[17] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryRedelegationsResponse) String() string { +func (x *QueryTokenizeShareRecordsOwnedResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryRedelegationsResponse) ProtoMessage() {} - -// Deprecated: Use QueryRedelegationsResponse.ProtoReflect.Descriptor instead. -func (*QueryRedelegationsResponse) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{17} -} +func (*QueryTokenizeShareRecordsOwnedResponse) ProtoMessage() {} -func (x *QueryRedelegationsResponse) GetRedelegationResponses() []*RedelegationResponse { - if x != nil { - return x.RedelegationResponses - } - return nil +// Deprecated: Use QueryTokenizeShareRecordsOwnedResponse.ProtoReflect.Descriptor instead. +func (*QueryTokenizeShareRecordsOwnedResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{33} } -func (x *QueryRedelegationsResponse) GetPagination() *v1beta1.PageResponse { +func (x *QueryTokenizeShareRecordsOwnedResponse) GetRecords() []*TokenizeShareRecord { if x != nil { - return x.Pagination + return x.Records } return nil } -// QueryDelegatorValidatorsRequest is request type for the -// Query/DelegatorValidators RPC method. -type QueryDelegatorValidatorsRequest struct { +// QueryAllTokenizeShareRecordsRequest is request type for the +// Query/QueryAllTokenizeShareRecords RPC method. +type QueryAllTokenizeShareRecordsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // delegator_addr defines the delegator address to query for. - DelegatorAddr string `protobuf:"bytes,1,opt,name=delegator_addr,json=delegatorAddr,proto3" json:"delegator_addr,omitempty"` // pagination defines an optional pagination for the request. - Pagination *v1beta1.PageRequest `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` + Pagination *v1beta1.PageRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` } -func (x *QueryDelegatorValidatorsRequest) Reset() { - *x = QueryDelegatorValidatorsRequest{} +func (x *QueryAllTokenizeShareRecordsRequest) Reset() { + *x = QueryAllTokenizeShareRecordsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[18] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryDelegatorValidatorsRequest) String() string { +func (x *QueryAllTokenizeShareRecordsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryDelegatorValidatorsRequest) ProtoMessage() {} - -// Deprecated: Use QueryDelegatorValidatorsRequest.ProtoReflect.Descriptor instead. -func (*QueryDelegatorValidatorsRequest) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{18} -} +func (*QueryAllTokenizeShareRecordsRequest) ProtoMessage() {} -func (x *QueryDelegatorValidatorsRequest) GetDelegatorAddr() string { - if x != nil { - return x.DelegatorAddr - } - return "" +// Deprecated: Use QueryAllTokenizeShareRecordsRequest.ProtoReflect.Descriptor instead. +func (*QueryAllTokenizeShareRecordsRequest) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{34} } -func (x *QueryDelegatorValidatorsRequest) GetPagination() *v1beta1.PageRequest { +func (x *QueryAllTokenizeShareRecordsRequest) GetPagination() *v1beta1.PageRequest { if x != nil { return x.Pagination } return nil } -// QueryDelegatorValidatorsResponse is response type for the -// Query/DelegatorValidators RPC method. -type QueryDelegatorValidatorsResponse struct { +// QueryAllTokenizeShareRecordsResponse is response type for the +// Query/QueryAllTokenizeShareRecords RPC method. +type QueryAllTokenizeShareRecordsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // validators defines the validators' info of a delegator. - Validators []*Validator `protobuf:"bytes,1,rep,name=validators,proto3" json:"validators,omitempty"` + Records []*TokenizeShareRecord `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"` // pagination defines the pagination in the response. Pagination *v1beta1.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` } -func (x *QueryDelegatorValidatorsResponse) Reset() { - *x = QueryDelegatorValidatorsResponse{} +func (x *QueryAllTokenizeShareRecordsResponse) Reset() { + *x = QueryAllTokenizeShareRecordsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[19] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryDelegatorValidatorsResponse) String() string { +func (x *QueryAllTokenizeShareRecordsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryDelegatorValidatorsResponse) ProtoMessage() {} +func (*QueryAllTokenizeShareRecordsResponse) ProtoMessage() {} -// Deprecated: Use QueryDelegatorValidatorsResponse.ProtoReflect.Descriptor instead. -func (*QueryDelegatorValidatorsResponse) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{19} +// Deprecated: Use QueryAllTokenizeShareRecordsResponse.ProtoReflect.Descriptor instead. +func (*QueryAllTokenizeShareRecordsResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{35} } -func (x *QueryDelegatorValidatorsResponse) GetValidators() []*Validator { +func (x *QueryAllTokenizeShareRecordsResponse) GetRecords() []*TokenizeShareRecord { if x != nil { - return x.Validators + return x.Records } return nil } -func (x *QueryDelegatorValidatorsResponse) GetPagination() *v1beta1.PageResponse { +func (x *QueryAllTokenizeShareRecordsResponse) GetPagination() *v1beta1.PageResponse { if x != nil { return x.Pagination } return nil } -// QueryDelegatorValidatorRequest is request type for the -// Query/DelegatorValidator RPC method. -type QueryDelegatorValidatorRequest struct { +// QueryLastTokenizeShareRecordIdRequest is request type for the +// Query/QueryLastTokenizeShareRecordId RPC method. +type QueryLastTokenizeShareRecordIdRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // delegator_addr defines the delegator address to query for. - DelegatorAddr string `protobuf:"bytes,1,opt,name=delegator_addr,json=delegatorAddr,proto3" json:"delegator_addr,omitempty"` - // validator_addr defines the validator address to query for. - ValidatorAddr string `protobuf:"bytes,2,opt,name=validator_addr,json=validatorAddr,proto3" json:"validator_addr,omitempty"` } -func (x *QueryDelegatorValidatorRequest) Reset() { - *x = QueryDelegatorValidatorRequest{} +func (x *QueryLastTokenizeShareRecordIdRequest) Reset() { + *x = QueryLastTokenizeShareRecordIdRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[20] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryDelegatorValidatorRequest) String() string { +func (x *QueryLastTokenizeShareRecordIdRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryDelegatorValidatorRequest) ProtoMessage() {} - -// Deprecated: Use QueryDelegatorValidatorRequest.ProtoReflect.Descriptor instead. -func (*QueryDelegatorValidatorRequest) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{20} -} - -func (x *QueryDelegatorValidatorRequest) GetDelegatorAddr() string { - if x != nil { - return x.DelegatorAddr - } - return "" -} +func (*QueryLastTokenizeShareRecordIdRequest) ProtoMessage() {} -func (x *QueryDelegatorValidatorRequest) GetValidatorAddr() string { - if x != nil { - return x.ValidatorAddr - } - return "" +// Deprecated: Use QueryLastTokenizeShareRecordIdRequest.ProtoReflect.Descriptor instead. +func (*QueryLastTokenizeShareRecordIdRequest) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{36} } -// QueryDelegatorValidatorResponse response type for the -// Query/DelegatorValidator RPC method. -type QueryDelegatorValidatorResponse struct { +// QueryLastTokenizeShareRecordIdResponse is response type for the +// Query/QueryLastTokenizeShareRecordId RPC method. +type QueryLastTokenizeShareRecordIdResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // validator defines the validator info. - Validator *Validator `protobuf:"bytes,1,opt,name=validator,proto3" json:"validator,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *QueryDelegatorValidatorResponse) Reset() { - *x = QueryDelegatorValidatorResponse{} +func (x *QueryLastTokenizeShareRecordIdResponse) Reset() { + *x = QueryLastTokenizeShareRecordIdResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[21] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryDelegatorValidatorResponse) String() string { +func (x *QueryLastTokenizeShareRecordIdResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryDelegatorValidatorResponse) ProtoMessage() {} +func (*QueryLastTokenizeShareRecordIdResponse) ProtoMessage() {} -// Deprecated: Use QueryDelegatorValidatorResponse.ProtoReflect.Descriptor instead. -func (*QueryDelegatorValidatorResponse) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{21} +// Deprecated: Use QueryLastTokenizeShareRecordIdResponse.ProtoReflect.Descriptor instead. +func (*QueryLastTokenizeShareRecordIdResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{37} } -func (x *QueryDelegatorValidatorResponse) GetValidator() *Validator { +func (x *QueryLastTokenizeShareRecordIdResponse) GetId() uint64 { if x != nil { - return x.Validator + return x.Id } - return nil + return 0 } -// QueryHistoricalInfoRequest is request type for the Query/HistoricalInfo RPC -// method. -type QueryHistoricalInfoRequest struct { +// QueryTotalTokenizeSharedAssetsRequest is request type for the +// Query/QueryTotalTokenizeSharedAssets RPC method. +type QueryTotalTokenizeSharedAssetsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // height defines at which height to query the historical info. - Height int64 `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"` } -func (x *QueryHistoricalInfoRequest) Reset() { - *x = QueryHistoricalInfoRequest{} +func (x *QueryTotalTokenizeSharedAssetsRequest) Reset() { + *x = QueryTotalTokenizeSharedAssetsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[22] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryHistoricalInfoRequest) String() string { +func (x *QueryTotalTokenizeSharedAssetsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryHistoricalInfoRequest) ProtoMessage() {} - -// Deprecated: Use QueryHistoricalInfoRequest.ProtoReflect.Descriptor instead. -func (*QueryHistoricalInfoRequest) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{22} -} +func (*QueryTotalTokenizeSharedAssetsRequest) ProtoMessage() {} -func (x *QueryHistoricalInfoRequest) GetHeight() int64 { - if x != nil { - return x.Height - } - return 0 +// Deprecated: Use QueryTotalTokenizeSharedAssetsRequest.ProtoReflect.Descriptor instead. +func (*QueryTotalTokenizeSharedAssetsRequest) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{38} } -// QueryHistoricalInfoResponse is response type for the Query/HistoricalInfo RPC -// method. -type QueryHistoricalInfoResponse struct { +// QueryTotalTokenizeSharedAssetsResponse is response type for the +// Query/QueryTotalTokenizeSharedAssets RPC method. +type QueryTotalTokenizeSharedAssetsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // hist defines the historical info at the given height. - Hist *HistoricalInfo `protobuf:"bytes,1,opt,name=hist,proto3" json:"hist,omitempty"` + Value *v1beta11.Coin `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` } -func (x *QueryHistoricalInfoResponse) Reset() { - *x = QueryHistoricalInfoResponse{} +func (x *QueryTotalTokenizeSharedAssetsResponse) Reset() { + *x = QueryTotalTokenizeSharedAssetsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[23] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryHistoricalInfoResponse) String() string { +func (x *QueryTotalTokenizeSharedAssetsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryHistoricalInfoResponse) ProtoMessage() {} +func (*QueryTotalTokenizeSharedAssetsResponse) ProtoMessage() {} -// Deprecated: Use QueryHistoricalInfoResponse.ProtoReflect.Descriptor instead. -func (*QueryHistoricalInfoResponse) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{23} +// Deprecated: Use QueryTotalTokenizeSharedAssetsResponse.ProtoReflect.Descriptor instead. +func (*QueryTotalTokenizeSharedAssetsResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{39} } -func (x *QueryHistoricalInfoResponse) GetHist() *HistoricalInfo { +func (x *QueryTotalTokenizeSharedAssetsResponse) GetValue() *v1beta11.Coin { if x != nil { - return x.Hist + return x.Value } return nil } -// QueryPoolRequest is request type for the Query/Pool RPC method. -type QueryPoolRequest struct { +// QueryTotalLiquidStakedRequest is request type for the +// Query/QueryQueryTotalLiquidStaked RPC method. +type QueryTotalLiquidStaked struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *QueryPoolRequest) Reset() { - *x = QueryPoolRequest{} +func (x *QueryTotalLiquidStaked) Reset() { + *x = QueryTotalLiquidStaked{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[24] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryPoolRequest) String() string { +func (x *QueryTotalLiquidStaked) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryPoolRequest) ProtoMessage() {} +func (*QueryTotalLiquidStaked) ProtoMessage() {} -// Deprecated: Use QueryPoolRequest.ProtoReflect.Descriptor instead. -func (*QueryPoolRequest) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{24} +// Deprecated: Use QueryTotalLiquidStaked.ProtoReflect.Descriptor instead. +func (*QueryTotalLiquidStaked) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{40} } -// QueryPoolResponse is response type for the Query/Pool RPC method. -type QueryPoolResponse struct { +// QueryTotalLiquidStakedResponse is response type for the +// Query/QueryQueryTotalLiquidStaked RPC method. +type QueryTotalLiquidStakedResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // pool defines the pool info. - Pool *Pool `protobuf:"bytes,1,opt,name=pool,proto3" json:"pool,omitempty"` + Tokens string `protobuf:"bytes,1,opt,name=tokens,proto3" json:"tokens,omitempty"` } -func (x *QueryPoolResponse) Reset() { - *x = QueryPoolResponse{} +func (x *QueryTotalLiquidStakedResponse) Reset() { + *x = QueryTotalLiquidStakedResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[25] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryPoolResponse) String() string { +func (x *QueryTotalLiquidStakedResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryPoolResponse) ProtoMessage() {} +func (*QueryTotalLiquidStakedResponse) ProtoMessage() {} -// Deprecated: Use QueryPoolResponse.ProtoReflect.Descriptor instead. -func (*QueryPoolResponse) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{25} +// Deprecated: Use QueryTotalLiquidStakedResponse.ProtoReflect.Descriptor instead. +func (*QueryTotalLiquidStakedResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{41} } -func (x *QueryPoolResponse) GetPool() *Pool { +func (x *QueryTotalLiquidStakedResponse) GetTokens() string { if x != nil { - return x.Pool + return x.Tokens } - return nil + return "" } -// QueryParamsRequest is request type for the Query/Params RPC method. -type QueryParamsRequest struct { +// QueryTokenizeShareLockInfo queries the tokenize share lock information +// associated with given account +type QueryTokenizeShareLockInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` } -func (x *QueryParamsRequest) Reset() { - *x = QueryParamsRequest{} +func (x *QueryTokenizeShareLockInfo) Reset() { + *x = QueryTokenizeShareLockInfo{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[26] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryParamsRequest) String() string { +func (x *QueryTokenizeShareLockInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryParamsRequest) ProtoMessage() {} +func (*QueryTokenizeShareLockInfo) ProtoMessage() {} -// Deprecated: Use QueryParamsRequest.ProtoReflect.Descriptor instead. -func (*QueryParamsRequest) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{26} +// Deprecated: Use QueryTokenizeShareLockInfo.ProtoReflect.Descriptor instead. +func (*QueryTokenizeShareLockInfo) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{42} } -// QueryParamsResponse is response type for the Query/Params RPC method. -type QueryParamsResponse struct { +func (x *QueryTokenizeShareLockInfo) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +// QueryTokenizeShareLockInfoResponse is the response from the +// QueryTokenizeShareLockInfo query +type QueryTokenizeShareLockInfoResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // params holds all the parameters of this module. - Params *Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"` + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + ExpirationTime string `protobuf:"bytes,2,opt,name=expiration_time,json=expirationTime,proto3" json:"expiration_time,omitempty"` } -func (x *QueryParamsResponse) Reset() { - *x = QueryParamsResponse{} +func (x *QueryTokenizeShareLockInfoResponse) Reset() { + *x = QueryTokenizeShareLockInfoResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[27] + mi := &file_cosmos_staking_v1beta1_query_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryParamsResponse) String() string { +func (x *QueryTokenizeShareLockInfoResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryParamsResponse) ProtoMessage() {} +func (*QueryTokenizeShareLockInfoResponse) ProtoMessage() {} -// Deprecated: Use QueryParamsResponse.ProtoReflect.Descriptor instead. -func (*QueryParamsResponse) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{27} +// Deprecated: Use QueryTokenizeShareLockInfoResponse.ProtoReflect.Descriptor instead. +func (*QueryTokenizeShareLockInfoResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_query_proto_rawDescGZIP(), []int{43} +} + +func (x *QueryTokenizeShareLockInfoResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" } -func (x *QueryParamsResponse) GetParams() *Params { +func (x *QueryTokenizeShareLockInfoResponse) GetExpirationTime() string { if x != nil { - return x.Params + return x.ExpirationTime } - return nil + return "" } var File_cosmos_staking_v1beta1_query_proto protoreflect.FileDescriptor @@ -14912,6 +22343,8 @@ var file_cosmos_staking_v1beta1_query_proto_rawDesc = []byte{ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x71, @@ -15186,201 +22619,390 @@ var file_cosmos_staking_v1beta1_query_proto_rawDesc = []byte{ 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, - 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x32, 0xb0, 0x16, - 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x9e, 0x01, 0x0a, 0x0a, 0x56, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x88, 0xe7, 0xb0, 0x2a, 0x01, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, - 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0xac, 0x01, 0x0a, 0x09, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, - 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0x88, 0xe7, 0xb0, 0x2a, 0x01, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x35, 0x12, 0x33, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, - 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, - 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x7d, 0x12, 0xd9, 0x01, 0x0a, 0x14, 0x56, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x38, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, - 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x63, 0x6f, 0x73, + 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x35, 0x0a, + 0x23, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, + 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x02, 0x69, 0x64, 0x22, 0x71, 0x0a, 0x24, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x06, + 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, + 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, + 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x22, 0x3e, 0x0a, 0x26, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x42, 0x79, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x22, 0x74, 0x0a, 0x27, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x42, 0x79, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x49, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, + 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x22, 0x3d, 0x0a, + 0x25, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, + 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x4f, 0x77, 0x6e, 0x65, 0x64, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x22, 0x75, 0x0a, 0x26, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, + 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x4f, 0x77, 0x6e, 0x65, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x73, 0x22, 0x6d, 0x0a, 0x23, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0xbc, 0x01, 0x0a, 0x24, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x07, 0x72, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, + 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, + 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x27, 0x0a, 0x25, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x38, 0x0a, 0x26, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, + 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x02, 0x69, 0x64, 0x22, 0x27, 0x0a, 0x25, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, + 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x5f, 0x0a, + 0x26, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, + 0x6e, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x18, + 0x0a, 0x16, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4c, 0x69, 0x71, 0x75, + 0x69, 0x64, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x64, 0x22, 0x38, 0x0a, 0x1e, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x53, 0x74, 0x61, 0x6b, + 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x73, 0x22, 0x36, 0x0a, 0x1a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x65, 0x0a, 0x22, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, + 0x4c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x69, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, + 0x65, 0x32, 0xda, 0x23, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x9e, 0x01, 0x0a, 0x0a, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x6f, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4c, 0x88, 0xe7, 0xb0, 0x2a, 0x01, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x41, 0x12, 0x3f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, - 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, - 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x7d, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0xfe, 0x01, 0x0a, 0x1d, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, - 0x72, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, - 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x6e, 0x62, - 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, - 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0x88, 0xe7, - 0xb0, 0x2a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4b, 0x12, 0x49, 0x2f, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x7d, 0x2f, 0x75, - 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xcc, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, - 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, - 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5d, 0x88, 0xe7, 0xb0, 0x2a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x52, 0x12, 0x50, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, - 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x7d, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, - 0x64, 0x72, 0x7d, 0x12, 0xfc, 0x01, 0x0a, 0x13, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, + 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x88, 0xe7, 0xb0, + 0x2a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0xac, 0x01, 0x0a, + 0x09, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2d, 0x2e, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0x88, 0xe7, 0xb0, 0x2a, 0x01, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x12, 0x33, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, + 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x7d, 0x12, 0xd9, 0x01, 0x0a, 0x14, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, - 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x72, - 0x88, 0xe7, 0xb0, 0x2a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x67, 0x12, 0x65, 0x2f, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, - 0x7b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x7d, - 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x64, 0x65, - 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x7d, 0x2f, 0x75, 0x6e, - 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0xce, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, - 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, - 0x74, 0x6f, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, - 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x65, 0x6c, + 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x65, 0x6c, 0x65, + 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, + 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4c, 0x88, 0xe7, 0xb0, 0x2a, 0x01, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x12, 0x3f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, + 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x7d, 0x2f, 0x64, 0x65, 0x6c, 0x65, + 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xfe, 0x01, 0x0a, 0x1d, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, + 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, + 0x72, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x6f, 0x72, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x41, 0x88, 0xe7, 0xb0, 0x2a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, + 0x22, 0x56, 0x88, 0xe7, 0xb0, 0x2a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4b, 0x12, 0x49, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, - 0x64, 0x72, 0x7d, 0x12, 0xfe, 0x01, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, - 0x72, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, - 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x6e, 0x62, - 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x73, 0x2f, 0x7b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x7d, 0x2f, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x6c, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xcc, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5d, 0x88, 0xe7, 0xb0, 0x2a, 0x01, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x52, 0x12, 0x50, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, + 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x7d, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, + 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x7d, 0x12, 0xfc, 0x01, 0x0a, 0x13, 0x55, 0x6e, 0x62, 0x6f, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x37, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x55, 0x6e, + 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, - 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0x88, 0xe7, - 0xb0, 0x2a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4b, 0x12, 0x49, 0x2f, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x64, - 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x7d, 0x2f, 0x75, - 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xc6, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x72, 0x88, 0xe7, 0xb0, 0x2a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x67, 0x12, + 0x65, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x7d, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x7d, 0x2f, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x6c, 0x65, + 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0xce, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x6f, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x38, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, + 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x88, - 0xe7, 0xb0, 0x2a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x12, 0x41, 0x2f, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7b, - 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x7d, 0x2f, - 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xd5, 0x01, - 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x37, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, - 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6c, - 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x88, 0xe7, 0xb0, 0x2a, 0x01, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x12, 0x3e, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, - 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x64, - 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x7d, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0xe3, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, - 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x36, 0x2e, 0x63, + 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, + 0x72, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x88, 0xe7, 0xb0, 0x2a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x36, 0x12, 0x34, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, + 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, + 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x7d, 0x12, 0xfe, 0x01, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, + 0x67, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, + 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, + 0x72, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, - 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5c, 0x88, - 0xe7, 0xb0, 0x2a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x51, 0x12, 0x4f, 0x2f, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7b, - 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x7d, 0x2f, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x7d, 0x12, 0xb8, 0x01, 0x0a, 0x0e, - 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x32, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0x88, 0xe7, 0xb0, 0x2a, 0x01, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x32, 0x12, 0x30, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, - 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x68, 0x69, - 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2f, 0x7b, 0x68, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x7d, 0x12, 0x86, 0x01, 0x0a, 0x04, 0x50, 0x6f, 0x6f, 0x6c, 0x12, - 0x28, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6f, - 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x61, 0x74, 0x6f, 0x72, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x56, 0x88, 0xe7, 0xb0, 0x2a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4b, 0x12, 0x49, 0x2f, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, + 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x7d, 0x2f, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x6c, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xc6, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x64, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x2e, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x64, 0x65, + 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x4e, 0x88, 0xe7, 0xb0, 0x2a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x12, 0x41, + 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, + 0x72, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x7d, 0x2f, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0xd5, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x37, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x88, 0xe7, 0xb0, 0x2a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x1e, 0x12, 0x1c, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, - 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x12, - 0x8e, 0x01, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2a, 0x2e, 0x63, 0x6f, 0x73, + 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, + 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x88, 0xe7, + 0xb0, 0x2a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x12, 0x3e, 0x2f, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x64, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x7d, 0x2f, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0xe3, 0x01, 0x0a, 0x12, 0x44, 0x65, + 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x12, 0x36, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x5c, 0x88, 0xe7, 0xb0, 0x2a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x51, 0x12, 0x4f, + 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, + 0x72, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x7d, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7b, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x7d, 0x12, + 0xd6, 0x01, 0x0a, 0x17, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, + 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, 0x79, 0x49, 0x64, 0x12, 0x3b, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, + 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, 0x79, 0x49, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, + 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x12, 0x38, + 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, + 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x62, 0x79, + 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xe5, 0x01, 0x0a, 0x1a, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x42, 0x79, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x3e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, + 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, 0x79, 0x44, 0x65, 0x6e, 0x6f, 0x6d, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, + 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, 0x79, 0x44, 0x65, 0x6e, 0x6f, 0x6d, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, + 0x12, 0x3e, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, + 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, + 0x7a, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, + 0x62, 0x79, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x2f, 0x7b, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x7d, + 0x12, 0xdf, 0x01, 0x0a, 0x19, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, + 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x4f, 0x77, 0x6e, 0x65, 0x64, 0x12, 0x3d, + 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x73, 0x4f, 0x77, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, + 0x4f, 0x77, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x43, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, + 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x72, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x64, 0x2f, 0x7b, 0x6f, 0x77, 0x6e, 0x65, + 0x72, 0x7d, 0x12, 0xcc, 0x01, 0x0a, 0x17, 0x41, 0x6c, 0x6c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, + 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x3b, + 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x30, 0x12, 0x2e, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, + 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x69, 0x7a, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x73, 0x12, 0xd9, 0x01, 0x0a, 0x19, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, + 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x64, 0x12, + 0x3d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x61, + 0x73, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, + 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x61, 0x73, + 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x12, 0x35, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, + 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, + 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x5f, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x12, 0xd8, 0x01, + 0x0a, 0x19, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, + 0x68, 0x61, 0x72, 0x65, 0x64, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x3d, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x41, 0x73, 0x73, + 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x88, 0xe7, 0xb0, 0x2a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, - 0x12, 0x1e, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, - 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x42, 0xda, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, - 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x41, 0x73, 0x73, 0x65, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x36, 0x12, 0x34, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, + 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x64, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0xb0, 0x01, 0x0a, 0x11, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x64, 0x12, 0x2e, + 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x64, 0x1a, 0x36, + 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, + 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6c, 0x69, + 0x71, 0x75, 0x69, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x64, 0x12, 0xcb, 0x01, 0x0a, 0x15, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x63, + 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x32, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, + 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, + 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x3a, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, + 0x53, 0x68, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x53, 0x58, 0xaa, 0x02, 0x16, 0x43, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, - 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x22, - 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c, 0x56, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xea, 0x02, 0x18, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x53, 0x74, 0x61, - 0x6b, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x5f, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2f, + 0x7b, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x12, 0xb8, 0x01, 0x0a, 0x0e, 0x48, 0x69, + 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x32, 0x2e, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x33, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0x88, 0xe7, 0xb0, 0x2a, 0x01, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x32, 0x12, 0x30, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, + 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x68, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2f, 0x7b, 0x68, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x7d, 0x12, 0x86, 0x01, 0x0a, 0x04, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x28, 0x2e, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6f, 0x6f, 0x6c, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x29, 0x88, 0xe7, 0xb0, 0x2a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, + 0x1c, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x12, 0x8e, 0x01, + 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2a, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, + 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x2b, 0x88, 0xe7, 0xb0, 0x2a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, + 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0xda, + 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, + 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0a, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x3b, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x53, 0x58, 0xaa, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0xca, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, + 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x22, 0x43, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0xea, 0x02, 0x18, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x53, 0x74, 0x61, 0x6b, 0x69, + 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -15395,7 +23017,7 @@ func file_cosmos_staking_v1beta1_query_proto_rawDescGZIP() []byte { return file_cosmos_staking_v1beta1_query_proto_rawDescData } -var file_cosmos_staking_v1beta1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 28) +var file_cosmos_staking_v1beta1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 44) var file_cosmos_staking_v1beta1_query_proto_goTypes = []interface{}{ (*QueryValidatorsRequest)(nil), // 0: cosmos.staking.v1beta1.QueryValidatorsRequest (*QueryValidatorsResponse)(nil), // 1: cosmos.staking.v1beta1.QueryValidatorsResponse @@ -15425,78 +23047,119 @@ var file_cosmos_staking_v1beta1_query_proto_goTypes = []interface{}{ (*QueryPoolResponse)(nil), // 25: cosmos.staking.v1beta1.QueryPoolResponse (*QueryParamsRequest)(nil), // 26: cosmos.staking.v1beta1.QueryParamsRequest (*QueryParamsResponse)(nil), // 27: cosmos.staking.v1beta1.QueryParamsResponse - (*v1beta1.PageRequest)(nil), // 28: cosmos.base.query.v1beta1.PageRequest - (*Validator)(nil), // 29: cosmos.staking.v1beta1.Validator - (*v1beta1.PageResponse)(nil), // 30: cosmos.base.query.v1beta1.PageResponse - (*DelegationResponse)(nil), // 31: cosmos.staking.v1beta1.DelegationResponse - (*UnbondingDelegation)(nil), // 32: cosmos.staking.v1beta1.UnbondingDelegation - (*RedelegationResponse)(nil), // 33: cosmos.staking.v1beta1.RedelegationResponse - (*HistoricalInfo)(nil), // 34: cosmos.staking.v1beta1.HistoricalInfo - (*Pool)(nil), // 35: cosmos.staking.v1beta1.Pool - (*Params)(nil), // 36: cosmos.staking.v1beta1.Params + (*QueryTokenizeShareRecordByIdRequest)(nil), // 28: cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdRequest + (*QueryTokenizeShareRecordByIdResponse)(nil), // 29: cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdResponse + (*QueryTokenizeShareRecordByDenomRequest)(nil), // 30: cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomRequest + (*QueryTokenizeShareRecordByDenomResponse)(nil), // 31: cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomResponse + (*QueryTokenizeShareRecordsOwnedRequest)(nil), // 32: cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedRequest + (*QueryTokenizeShareRecordsOwnedResponse)(nil), // 33: cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedResponse + (*QueryAllTokenizeShareRecordsRequest)(nil), // 34: cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsRequest + (*QueryAllTokenizeShareRecordsResponse)(nil), // 35: cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse + (*QueryLastTokenizeShareRecordIdRequest)(nil), // 36: cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdRequest + (*QueryLastTokenizeShareRecordIdResponse)(nil), // 37: cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdResponse + (*QueryTotalTokenizeSharedAssetsRequest)(nil), // 38: cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsRequest + (*QueryTotalTokenizeSharedAssetsResponse)(nil), // 39: cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsResponse + (*QueryTotalLiquidStaked)(nil), // 40: cosmos.staking.v1beta1.QueryTotalLiquidStaked + (*QueryTotalLiquidStakedResponse)(nil), // 41: cosmos.staking.v1beta1.QueryTotalLiquidStakedResponse + (*QueryTokenizeShareLockInfo)(nil), // 42: cosmos.staking.v1beta1.QueryTokenizeShareLockInfo + (*QueryTokenizeShareLockInfoResponse)(nil), // 43: cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse + (*v1beta1.PageRequest)(nil), // 44: cosmos.base.query.v1beta1.PageRequest + (*Validator)(nil), // 45: cosmos.staking.v1beta1.Validator + (*v1beta1.PageResponse)(nil), // 46: cosmos.base.query.v1beta1.PageResponse + (*DelegationResponse)(nil), // 47: cosmos.staking.v1beta1.DelegationResponse + (*UnbondingDelegation)(nil), // 48: cosmos.staking.v1beta1.UnbondingDelegation + (*RedelegationResponse)(nil), // 49: cosmos.staking.v1beta1.RedelegationResponse + (*HistoricalInfo)(nil), // 50: cosmos.staking.v1beta1.HistoricalInfo + (*Pool)(nil), // 51: cosmos.staking.v1beta1.Pool + (*Params)(nil), // 52: cosmos.staking.v1beta1.Params + (*TokenizeShareRecord)(nil), // 53: cosmos.staking.v1beta1.TokenizeShareRecord + (*v1beta11.Coin)(nil), // 54: cosmos.base.v1beta1.Coin } var file_cosmos_staking_v1beta1_query_proto_depIdxs = []int32{ - 28, // 0: cosmos.staking.v1beta1.QueryValidatorsRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest - 29, // 1: cosmos.staking.v1beta1.QueryValidatorsResponse.validators:type_name -> cosmos.staking.v1beta1.Validator - 30, // 2: cosmos.staking.v1beta1.QueryValidatorsResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse - 29, // 3: cosmos.staking.v1beta1.QueryValidatorResponse.validator:type_name -> cosmos.staking.v1beta1.Validator - 28, // 4: cosmos.staking.v1beta1.QueryValidatorDelegationsRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest - 31, // 5: cosmos.staking.v1beta1.QueryValidatorDelegationsResponse.delegation_responses:type_name -> cosmos.staking.v1beta1.DelegationResponse - 30, // 6: cosmos.staking.v1beta1.QueryValidatorDelegationsResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse - 28, // 7: cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest - 32, // 8: cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse.unbonding_responses:type_name -> cosmos.staking.v1beta1.UnbondingDelegation - 30, // 9: cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse - 31, // 10: cosmos.staking.v1beta1.QueryDelegationResponse.delegation_response:type_name -> cosmos.staking.v1beta1.DelegationResponse - 32, // 11: cosmos.staking.v1beta1.QueryUnbondingDelegationResponse.unbond:type_name -> cosmos.staking.v1beta1.UnbondingDelegation - 28, // 12: cosmos.staking.v1beta1.QueryDelegatorDelegationsRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest - 31, // 13: cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse.delegation_responses:type_name -> cosmos.staking.v1beta1.DelegationResponse - 30, // 14: cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse - 28, // 15: cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest - 32, // 16: cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse.unbonding_responses:type_name -> cosmos.staking.v1beta1.UnbondingDelegation - 30, // 17: cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse - 28, // 18: cosmos.staking.v1beta1.QueryRedelegationsRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest - 33, // 19: cosmos.staking.v1beta1.QueryRedelegationsResponse.redelegation_responses:type_name -> cosmos.staking.v1beta1.RedelegationResponse - 30, // 20: cosmos.staking.v1beta1.QueryRedelegationsResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse - 28, // 21: cosmos.staking.v1beta1.QueryDelegatorValidatorsRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest - 29, // 22: cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse.validators:type_name -> cosmos.staking.v1beta1.Validator - 30, // 23: cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse - 29, // 24: cosmos.staking.v1beta1.QueryDelegatorValidatorResponse.validator:type_name -> cosmos.staking.v1beta1.Validator - 34, // 25: cosmos.staking.v1beta1.QueryHistoricalInfoResponse.hist:type_name -> cosmos.staking.v1beta1.HistoricalInfo - 35, // 26: cosmos.staking.v1beta1.QueryPoolResponse.pool:type_name -> cosmos.staking.v1beta1.Pool - 36, // 27: cosmos.staking.v1beta1.QueryParamsResponse.params:type_name -> cosmos.staking.v1beta1.Params - 0, // 28: cosmos.staking.v1beta1.Query.Validators:input_type -> cosmos.staking.v1beta1.QueryValidatorsRequest - 2, // 29: cosmos.staking.v1beta1.Query.Validator:input_type -> cosmos.staking.v1beta1.QueryValidatorRequest - 4, // 30: cosmos.staking.v1beta1.Query.ValidatorDelegations:input_type -> cosmos.staking.v1beta1.QueryValidatorDelegationsRequest - 6, // 31: cosmos.staking.v1beta1.Query.ValidatorUnbondingDelegations:input_type -> cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsRequest - 8, // 32: cosmos.staking.v1beta1.Query.Delegation:input_type -> cosmos.staking.v1beta1.QueryDelegationRequest - 10, // 33: cosmos.staking.v1beta1.Query.UnbondingDelegation:input_type -> cosmos.staking.v1beta1.QueryUnbondingDelegationRequest - 12, // 34: cosmos.staking.v1beta1.Query.DelegatorDelegations:input_type -> cosmos.staking.v1beta1.QueryDelegatorDelegationsRequest - 14, // 35: cosmos.staking.v1beta1.Query.DelegatorUnbondingDelegations:input_type -> cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsRequest - 16, // 36: cosmos.staking.v1beta1.Query.Redelegations:input_type -> cosmos.staking.v1beta1.QueryRedelegationsRequest - 18, // 37: cosmos.staking.v1beta1.Query.DelegatorValidators:input_type -> cosmos.staking.v1beta1.QueryDelegatorValidatorsRequest - 20, // 38: cosmos.staking.v1beta1.Query.DelegatorValidator:input_type -> cosmos.staking.v1beta1.QueryDelegatorValidatorRequest - 22, // 39: cosmos.staking.v1beta1.Query.HistoricalInfo:input_type -> cosmos.staking.v1beta1.QueryHistoricalInfoRequest - 24, // 40: cosmos.staking.v1beta1.Query.Pool:input_type -> cosmos.staking.v1beta1.QueryPoolRequest - 26, // 41: cosmos.staking.v1beta1.Query.Params:input_type -> cosmos.staking.v1beta1.QueryParamsRequest - 1, // 42: cosmos.staking.v1beta1.Query.Validators:output_type -> cosmos.staking.v1beta1.QueryValidatorsResponse - 3, // 43: cosmos.staking.v1beta1.Query.Validator:output_type -> cosmos.staking.v1beta1.QueryValidatorResponse - 5, // 44: cosmos.staking.v1beta1.Query.ValidatorDelegations:output_type -> cosmos.staking.v1beta1.QueryValidatorDelegationsResponse - 7, // 45: cosmos.staking.v1beta1.Query.ValidatorUnbondingDelegations:output_type -> cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse - 9, // 46: cosmos.staking.v1beta1.Query.Delegation:output_type -> cosmos.staking.v1beta1.QueryDelegationResponse - 11, // 47: cosmos.staking.v1beta1.Query.UnbondingDelegation:output_type -> cosmos.staking.v1beta1.QueryUnbondingDelegationResponse - 13, // 48: cosmos.staking.v1beta1.Query.DelegatorDelegations:output_type -> cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse - 15, // 49: cosmos.staking.v1beta1.Query.DelegatorUnbondingDelegations:output_type -> cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse - 17, // 50: cosmos.staking.v1beta1.Query.Redelegations:output_type -> cosmos.staking.v1beta1.QueryRedelegationsResponse - 19, // 51: cosmos.staking.v1beta1.Query.DelegatorValidators:output_type -> cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse - 21, // 52: cosmos.staking.v1beta1.Query.DelegatorValidator:output_type -> cosmos.staking.v1beta1.QueryDelegatorValidatorResponse - 23, // 53: cosmos.staking.v1beta1.Query.HistoricalInfo:output_type -> cosmos.staking.v1beta1.QueryHistoricalInfoResponse - 25, // 54: cosmos.staking.v1beta1.Query.Pool:output_type -> cosmos.staking.v1beta1.QueryPoolResponse - 27, // 55: cosmos.staking.v1beta1.Query.Params:output_type -> cosmos.staking.v1beta1.QueryParamsResponse - 42, // [42:56] is the sub-list for method output_type - 28, // [28:42] is the sub-list for method input_type - 28, // [28:28] is the sub-list for extension type_name - 28, // [28:28] is the sub-list for extension extendee - 0, // [0:28] is the sub-list for field type_name + 44, // 0: cosmos.staking.v1beta1.QueryValidatorsRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest + 45, // 1: cosmos.staking.v1beta1.QueryValidatorsResponse.validators:type_name -> cosmos.staking.v1beta1.Validator + 46, // 2: cosmos.staking.v1beta1.QueryValidatorsResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse + 45, // 3: cosmos.staking.v1beta1.QueryValidatorResponse.validator:type_name -> cosmos.staking.v1beta1.Validator + 44, // 4: cosmos.staking.v1beta1.QueryValidatorDelegationsRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest + 47, // 5: cosmos.staking.v1beta1.QueryValidatorDelegationsResponse.delegation_responses:type_name -> cosmos.staking.v1beta1.DelegationResponse + 46, // 6: cosmos.staking.v1beta1.QueryValidatorDelegationsResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse + 44, // 7: cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest + 48, // 8: cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse.unbonding_responses:type_name -> cosmos.staking.v1beta1.UnbondingDelegation + 46, // 9: cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse + 47, // 10: cosmos.staking.v1beta1.QueryDelegationResponse.delegation_response:type_name -> cosmos.staking.v1beta1.DelegationResponse + 48, // 11: cosmos.staking.v1beta1.QueryUnbondingDelegationResponse.unbond:type_name -> cosmos.staking.v1beta1.UnbondingDelegation + 44, // 12: cosmos.staking.v1beta1.QueryDelegatorDelegationsRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest + 47, // 13: cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse.delegation_responses:type_name -> cosmos.staking.v1beta1.DelegationResponse + 46, // 14: cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse + 44, // 15: cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest + 48, // 16: cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse.unbonding_responses:type_name -> cosmos.staking.v1beta1.UnbondingDelegation + 46, // 17: cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse + 44, // 18: cosmos.staking.v1beta1.QueryRedelegationsRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest + 49, // 19: cosmos.staking.v1beta1.QueryRedelegationsResponse.redelegation_responses:type_name -> cosmos.staking.v1beta1.RedelegationResponse + 46, // 20: cosmos.staking.v1beta1.QueryRedelegationsResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse + 44, // 21: cosmos.staking.v1beta1.QueryDelegatorValidatorsRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest + 45, // 22: cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse.validators:type_name -> cosmos.staking.v1beta1.Validator + 46, // 23: cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse + 45, // 24: cosmos.staking.v1beta1.QueryDelegatorValidatorResponse.validator:type_name -> cosmos.staking.v1beta1.Validator + 50, // 25: cosmos.staking.v1beta1.QueryHistoricalInfoResponse.hist:type_name -> cosmos.staking.v1beta1.HistoricalInfo + 51, // 26: cosmos.staking.v1beta1.QueryPoolResponse.pool:type_name -> cosmos.staking.v1beta1.Pool + 52, // 27: cosmos.staking.v1beta1.QueryParamsResponse.params:type_name -> cosmos.staking.v1beta1.Params + 53, // 28: cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdResponse.record:type_name -> cosmos.staking.v1beta1.TokenizeShareRecord + 53, // 29: cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomResponse.record:type_name -> cosmos.staking.v1beta1.TokenizeShareRecord + 53, // 30: cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedResponse.records:type_name -> cosmos.staking.v1beta1.TokenizeShareRecord + 44, // 31: cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest + 53, // 32: cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse.records:type_name -> cosmos.staking.v1beta1.TokenizeShareRecord + 46, // 33: cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse + 54, // 34: cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsResponse.value:type_name -> cosmos.base.v1beta1.Coin + 0, // 35: cosmos.staking.v1beta1.Query.Validators:input_type -> cosmos.staking.v1beta1.QueryValidatorsRequest + 2, // 36: cosmos.staking.v1beta1.Query.Validator:input_type -> cosmos.staking.v1beta1.QueryValidatorRequest + 4, // 37: cosmos.staking.v1beta1.Query.ValidatorDelegations:input_type -> cosmos.staking.v1beta1.QueryValidatorDelegationsRequest + 6, // 38: cosmos.staking.v1beta1.Query.ValidatorUnbondingDelegations:input_type -> cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsRequest + 8, // 39: cosmos.staking.v1beta1.Query.Delegation:input_type -> cosmos.staking.v1beta1.QueryDelegationRequest + 10, // 40: cosmos.staking.v1beta1.Query.UnbondingDelegation:input_type -> cosmos.staking.v1beta1.QueryUnbondingDelegationRequest + 12, // 41: cosmos.staking.v1beta1.Query.DelegatorDelegations:input_type -> cosmos.staking.v1beta1.QueryDelegatorDelegationsRequest + 14, // 42: cosmos.staking.v1beta1.Query.DelegatorUnbondingDelegations:input_type -> cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsRequest + 16, // 43: cosmos.staking.v1beta1.Query.Redelegations:input_type -> cosmos.staking.v1beta1.QueryRedelegationsRequest + 18, // 44: cosmos.staking.v1beta1.Query.DelegatorValidators:input_type -> cosmos.staking.v1beta1.QueryDelegatorValidatorsRequest + 20, // 45: cosmos.staking.v1beta1.Query.DelegatorValidator:input_type -> cosmos.staking.v1beta1.QueryDelegatorValidatorRequest + 28, // 46: cosmos.staking.v1beta1.Query.TokenizeShareRecordById:input_type -> cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdRequest + 30, // 47: cosmos.staking.v1beta1.Query.TokenizeShareRecordByDenom:input_type -> cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomRequest + 32, // 48: cosmos.staking.v1beta1.Query.TokenizeShareRecordsOwned:input_type -> cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedRequest + 34, // 49: cosmos.staking.v1beta1.Query.AllTokenizeShareRecords:input_type -> cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsRequest + 36, // 50: cosmos.staking.v1beta1.Query.LastTokenizeShareRecordId:input_type -> cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdRequest + 38, // 51: cosmos.staking.v1beta1.Query.TotalTokenizeSharedAssets:input_type -> cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsRequest + 40, // 52: cosmos.staking.v1beta1.Query.TotalLiquidStaked:input_type -> cosmos.staking.v1beta1.QueryTotalLiquidStaked + 42, // 53: cosmos.staking.v1beta1.Query.TokenizeShareLockInfo:input_type -> cosmos.staking.v1beta1.QueryTokenizeShareLockInfo + 22, // 54: cosmos.staking.v1beta1.Query.HistoricalInfo:input_type -> cosmos.staking.v1beta1.QueryHistoricalInfoRequest + 24, // 55: cosmos.staking.v1beta1.Query.Pool:input_type -> cosmos.staking.v1beta1.QueryPoolRequest + 26, // 56: cosmos.staking.v1beta1.Query.Params:input_type -> cosmos.staking.v1beta1.QueryParamsRequest + 1, // 57: cosmos.staking.v1beta1.Query.Validators:output_type -> cosmos.staking.v1beta1.QueryValidatorsResponse + 3, // 58: cosmos.staking.v1beta1.Query.Validator:output_type -> cosmos.staking.v1beta1.QueryValidatorResponse + 5, // 59: cosmos.staking.v1beta1.Query.ValidatorDelegations:output_type -> cosmos.staking.v1beta1.QueryValidatorDelegationsResponse + 7, // 60: cosmos.staking.v1beta1.Query.ValidatorUnbondingDelegations:output_type -> cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse + 9, // 61: cosmos.staking.v1beta1.Query.Delegation:output_type -> cosmos.staking.v1beta1.QueryDelegationResponse + 11, // 62: cosmos.staking.v1beta1.Query.UnbondingDelegation:output_type -> cosmos.staking.v1beta1.QueryUnbondingDelegationResponse + 13, // 63: cosmos.staking.v1beta1.Query.DelegatorDelegations:output_type -> cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse + 15, // 64: cosmos.staking.v1beta1.Query.DelegatorUnbondingDelegations:output_type -> cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse + 17, // 65: cosmos.staking.v1beta1.Query.Redelegations:output_type -> cosmos.staking.v1beta1.QueryRedelegationsResponse + 19, // 66: cosmos.staking.v1beta1.Query.DelegatorValidators:output_type -> cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse + 21, // 67: cosmos.staking.v1beta1.Query.DelegatorValidator:output_type -> cosmos.staking.v1beta1.QueryDelegatorValidatorResponse + 29, // 68: cosmos.staking.v1beta1.Query.TokenizeShareRecordById:output_type -> cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdResponse + 31, // 69: cosmos.staking.v1beta1.Query.TokenizeShareRecordByDenom:output_type -> cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomResponse + 33, // 70: cosmos.staking.v1beta1.Query.TokenizeShareRecordsOwned:output_type -> cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedResponse + 35, // 71: cosmos.staking.v1beta1.Query.AllTokenizeShareRecords:output_type -> cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse + 37, // 72: cosmos.staking.v1beta1.Query.LastTokenizeShareRecordId:output_type -> cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdResponse + 39, // 73: cosmos.staking.v1beta1.Query.TotalTokenizeSharedAssets:output_type -> cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsResponse + 41, // 74: cosmos.staking.v1beta1.Query.TotalLiquidStaked:output_type -> cosmos.staking.v1beta1.QueryTotalLiquidStakedResponse + 43, // 75: cosmos.staking.v1beta1.Query.TokenizeShareLockInfo:output_type -> cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse + 23, // 76: cosmos.staking.v1beta1.Query.HistoricalInfo:output_type -> cosmos.staking.v1beta1.QueryHistoricalInfoResponse + 25, // 77: cosmos.staking.v1beta1.Query.Pool:output_type -> cosmos.staking.v1beta1.QueryPoolResponse + 27, // 78: cosmos.staking.v1beta1.Query.Params:output_type -> cosmos.staking.v1beta1.QueryParamsResponse + 57, // [57:79] is the sub-list for method output_type + 35, // [35:57] is the sub-list for method input_type + 35, // [35:35] is the sub-list for extension type_name + 35, // [35:35] is the sub-list for extension extendee + 0, // [0:35] is the sub-list for field type_name } func init() { file_cosmos_staking_v1beta1_query_proto_init() } @@ -15842,6 +23505,198 @@ func file_cosmos_staking_v1beta1_query_proto_init() { return nil } } + file_cosmos_staking_v1beta1_query_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryTokenizeShareRecordByIdRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_query_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryTokenizeShareRecordByIdResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_query_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryTokenizeShareRecordByDenomRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_query_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryTokenizeShareRecordByDenomResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_query_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryTokenizeShareRecordsOwnedRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_query_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryTokenizeShareRecordsOwnedResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_query_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryAllTokenizeShareRecordsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_query_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryAllTokenizeShareRecordsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_query_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryLastTokenizeShareRecordIdRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_query_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryLastTokenizeShareRecordIdResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_query_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryTotalTokenizeSharedAssetsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_query_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryTotalTokenizeSharedAssetsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_query_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryTotalLiquidStaked); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_query_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryTotalLiquidStakedResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_query_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryTokenizeShareLockInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_query_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryTokenizeShareLockInfoResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -15849,7 +23704,7 @@ func file_cosmos_staking_v1beta1_query_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_cosmos_staking_v1beta1_query_proto_rawDesc, NumEnums: 0, - NumMessages: 28, + NumMessages: 44, NumExtensions: 0, NumServices: 1, }, diff --git a/api/cosmos/staking/v1beta1/query_grpc.pb.go b/api/cosmos/staking/v1beta1/query_grpc.pb.go index a015a80c6eb2..11a3097a15df 100644 --- a/api/cosmos/staking/v1beta1/query_grpc.pb.go +++ b/api/cosmos/staking/v1beta1/query_grpc.pb.go @@ -30,6 +30,14 @@ const ( Query_Redelegations_FullMethodName = "/cosmos.staking.v1beta1.Query/Redelegations" Query_DelegatorValidators_FullMethodName = "/cosmos.staking.v1beta1.Query/DelegatorValidators" Query_DelegatorValidator_FullMethodName = "/cosmos.staking.v1beta1.Query/DelegatorValidator" + Query_TokenizeShareRecordById_FullMethodName = "/cosmos.staking.v1beta1.Query/TokenizeShareRecordById" + Query_TokenizeShareRecordByDenom_FullMethodName = "/cosmos.staking.v1beta1.Query/TokenizeShareRecordByDenom" + Query_TokenizeShareRecordsOwned_FullMethodName = "/cosmos.staking.v1beta1.Query/TokenizeShareRecordsOwned" + Query_AllTokenizeShareRecords_FullMethodName = "/cosmos.staking.v1beta1.Query/AllTokenizeShareRecords" + Query_LastTokenizeShareRecordId_FullMethodName = "/cosmos.staking.v1beta1.Query/LastTokenizeShareRecordId" + Query_TotalTokenizeSharedAssets_FullMethodName = "/cosmos.staking.v1beta1.Query/TotalTokenizeSharedAssets" + Query_TotalLiquidStaked_FullMethodName = "/cosmos.staking.v1beta1.Query/TotalLiquidStaked" + Query_TokenizeShareLockInfo_FullMethodName = "/cosmos.staking.v1beta1.Query/TokenizeShareLockInfo" Query_HistoricalInfo_FullMethodName = "/cosmos.staking.v1beta1.Query/HistoricalInfo" Query_Pool_FullMethodName = "/cosmos.staking.v1beta1.Query/Pool" Query_Params_FullMethodName = "/cosmos.staking.v1beta1.Query/Params" @@ -86,6 +94,22 @@ type QueryClient interface { // DelegatorValidator queries validator info for given delegator validator // pair. DelegatorValidator(ctx context.Context, in *QueryDelegatorValidatorRequest, opts ...grpc.CallOption) (*QueryDelegatorValidatorResponse, error) + // Query for individual tokenize share record information by share by id + TokenizeShareRecordById(ctx context.Context, in *QueryTokenizeShareRecordByIdRequest, opts ...grpc.CallOption) (*QueryTokenizeShareRecordByIdResponse, error) + // Query for individual tokenize share record information by share denom + TokenizeShareRecordByDenom(ctx context.Context, in *QueryTokenizeShareRecordByDenomRequest, opts ...grpc.CallOption) (*QueryTokenizeShareRecordByDenomResponse, error) + // Query tokenize share records by address + TokenizeShareRecordsOwned(ctx context.Context, in *QueryTokenizeShareRecordsOwnedRequest, opts ...grpc.CallOption) (*QueryTokenizeShareRecordsOwnedResponse, error) + // Query for all tokenize share records + AllTokenizeShareRecords(ctx context.Context, in *QueryAllTokenizeShareRecordsRequest, opts ...grpc.CallOption) (*QueryAllTokenizeShareRecordsResponse, error) + // Query for last tokenize share record id + LastTokenizeShareRecordId(ctx context.Context, in *QueryLastTokenizeShareRecordIdRequest, opts ...grpc.CallOption) (*QueryLastTokenizeShareRecordIdResponse, error) + // Query for total tokenized staked assets + TotalTokenizeSharedAssets(ctx context.Context, in *QueryTotalTokenizeSharedAssetsRequest, opts ...grpc.CallOption) (*QueryTotalTokenizeSharedAssetsResponse, error) + // Query for total liquid staked (including tokenized shares or owned by an liquid staking provider) + TotalLiquidStaked(ctx context.Context, in *QueryTotalLiquidStaked, opts ...grpc.CallOption) (*QueryTotalLiquidStakedResponse, error) + // Query tokenize share locks + TokenizeShareLockInfo(ctx context.Context, in *QueryTokenizeShareLockInfo, opts ...grpc.CallOption) (*QueryTokenizeShareLockInfoResponse, error) // HistoricalInfo queries the historical info for given height. HistoricalInfo(ctx context.Context, in *QueryHistoricalInfoRequest, opts ...grpc.CallOption) (*QueryHistoricalInfoResponse, error) // Pool queries the pool info. @@ -201,6 +225,78 @@ func (c *queryClient) DelegatorValidator(ctx context.Context, in *QueryDelegator return out, nil } +func (c *queryClient) TokenizeShareRecordById(ctx context.Context, in *QueryTokenizeShareRecordByIdRequest, opts ...grpc.CallOption) (*QueryTokenizeShareRecordByIdResponse, error) { + out := new(QueryTokenizeShareRecordByIdResponse) + err := c.cc.Invoke(ctx, Query_TokenizeShareRecordById_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) TokenizeShareRecordByDenom(ctx context.Context, in *QueryTokenizeShareRecordByDenomRequest, opts ...grpc.CallOption) (*QueryTokenizeShareRecordByDenomResponse, error) { + out := new(QueryTokenizeShareRecordByDenomResponse) + err := c.cc.Invoke(ctx, Query_TokenizeShareRecordByDenom_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) TokenizeShareRecordsOwned(ctx context.Context, in *QueryTokenizeShareRecordsOwnedRequest, opts ...grpc.CallOption) (*QueryTokenizeShareRecordsOwnedResponse, error) { + out := new(QueryTokenizeShareRecordsOwnedResponse) + err := c.cc.Invoke(ctx, Query_TokenizeShareRecordsOwned_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) AllTokenizeShareRecords(ctx context.Context, in *QueryAllTokenizeShareRecordsRequest, opts ...grpc.CallOption) (*QueryAllTokenizeShareRecordsResponse, error) { + out := new(QueryAllTokenizeShareRecordsResponse) + err := c.cc.Invoke(ctx, Query_AllTokenizeShareRecords_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) LastTokenizeShareRecordId(ctx context.Context, in *QueryLastTokenizeShareRecordIdRequest, opts ...grpc.CallOption) (*QueryLastTokenizeShareRecordIdResponse, error) { + out := new(QueryLastTokenizeShareRecordIdResponse) + err := c.cc.Invoke(ctx, Query_LastTokenizeShareRecordId_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) TotalTokenizeSharedAssets(ctx context.Context, in *QueryTotalTokenizeSharedAssetsRequest, opts ...grpc.CallOption) (*QueryTotalTokenizeSharedAssetsResponse, error) { + out := new(QueryTotalTokenizeSharedAssetsResponse) + err := c.cc.Invoke(ctx, Query_TotalTokenizeSharedAssets_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) TotalLiquidStaked(ctx context.Context, in *QueryTotalLiquidStaked, opts ...grpc.CallOption) (*QueryTotalLiquidStakedResponse, error) { + out := new(QueryTotalLiquidStakedResponse) + err := c.cc.Invoke(ctx, Query_TotalLiquidStaked_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) TokenizeShareLockInfo(ctx context.Context, in *QueryTokenizeShareLockInfo, opts ...grpc.CallOption) (*QueryTokenizeShareLockInfoResponse, error) { + out := new(QueryTokenizeShareLockInfoResponse) + err := c.cc.Invoke(ctx, Query_TokenizeShareLockInfo_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *queryClient) HistoricalInfo(ctx context.Context, in *QueryHistoricalInfoRequest, opts ...grpc.CallOption) (*QueryHistoricalInfoResponse, error) { out := new(QueryHistoricalInfoResponse) err := c.cc.Invoke(ctx, Query_HistoricalInfo_FullMethodName, in, out, opts...) @@ -279,6 +375,22 @@ type QueryServer interface { // DelegatorValidator queries validator info for given delegator validator // pair. DelegatorValidator(context.Context, *QueryDelegatorValidatorRequest) (*QueryDelegatorValidatorResponse, error) + // Query for individual tokenize share record information by share by id + TokenizeShareRecordById(context.Context, *QueryTokenizeShareRecordByIdRequest) (*QueryTokenizeShareRecordByIdResponse, error) + // Query for individual tokenize share record information by share denom + TokenizeShareRecordByDenom(context.Context, *QueryTokenizeShareRecordByDenomRequest) (*QueryTokenizeShareRecordByDenomResponse, error) + // Query tokenize share records by address + TokenizeShareRecordsOwned(context.Context, *QueryTokenizeShareRecordsOwnedRequest) (*QueryTokenizeShareRecordsOwnedResponse, error) + // Query for all tokenize share records + AllTokenizeShareRecords(context.Context, *QueryAllTokenizeShareRecordsRequest) (*QueryAllTokenizeShareRecordsResponse, error) + // Query for last tokenize share record id + LastTokenizeShareRecordId(context.Context, *QueryLastTokenizeShareRecordIdRequest) (*QueryLastTokenizeShareRecordIdResponse, error) + // Query for total tokenized staked assets + TotalTokenizeSharedAssets(context.Context, *QueryTotalTokenizeSharedAssetsRequest) (*QueryTotalTokenizeSharedAssetsResponse, error) + // Query for total liquid staked (including tokenized shares or owned by an liquid staking provider) + TotalLiquidStaked(context.Context, *QueryTotalLiquidStaked) (*QueryTotalLiquidStakedResponse, error) + // Query tokenize share locks + TokenizeShareLockInfo(context.Context, *QueryTokenizeShareLockInfo) (*QueryTokenizeShareLockInfoResponse, error) // HistoricalInfo queries the historical info for given height. HistoricalInfo(context.Context, *QueryHistoricalInfoRequest) (*QueryHistoricalInfoResponse, error) // Pool queries the pool info. @@ -325,6 +437,30 @@ func (UnimplementedQueryServer) DelegatorValidators(context.Context, *QueryDeleg func (UnimplementedQueryServer) DelegatorValidator(context.Context, *QueryDelegatorValidatorRequest) (*QueryDelegatorValidatorResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DelegatorValidator not implemented") } +func (UnimplementedQueryServer) TokenizeShareRecordById(context.Context, *QueryTokenizeShareRecordByIdRequest) (*QueryTokenizeShareRecordByIdResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TokenizeShareRecordById not implemented") +} +func (UnimplementedQueryServer) TokenizeShareRecordByDenom(context.Context, *QueryTokenizeShareRecordByDenomRequest) (*QueryTokenizeShareRecordByDenomResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TokenizeShareRecordByDenom not implemented") +} +func (UnimplementedQueryServer) TokenizeShareRecordsOwned(context.Context, *QueryTokenizeShareRecordsOwnedRequest) (*QueryTokenizeShareRecordsOwnedResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TokenizeShareRecordsOwned not implemented") +} +func (UnimplementedQueryServer) AllTokenizeShareRecords(context.Context, *QueryAllTokenizeShareRecordsRequest) (*QueryAllTokenizeShareRecordsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AllTokenizeShareRecords not implemented") +} +func (UnimplementedQueryServer) LastTokenizeShareRecordId(context.Context, *QueryLastTokenizeShareRecordIdRequest) (*QueryLastTokenizeShareRecordIdResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method LastTokenizeShareRecordId not implemented") +} +func (UnimplementedQueryServer) TotalTokenizeSharedAssets(context.Context, *QueryTotalTokenizeSharedAssetsRequest) (*QueryTotalTokenizeSharedAssetsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TotalTokenizeSharedAssets not implemented") +} +func (UnimplementedQueryServer) TotalLiquidStaked(context.Context, *QueryTotalLiquidStaked) (*QueryTotalLiquidStakedResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TotalLiquidStaked not implemented") +} +func (UnimplementedQueryServer) TokenizeShareLockInfo(context.Context, *QueryTokenizeShareLockInfo) (*QueryTokenizeShareLockInfoResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TokenizeShareLockInfo not implemented") +} func (UnimplementedQueryServer) HistoricalInfo(context.Context, *QueryHistoricalInfoRequest) (*QueryHistoricalInfoResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method HistoricalInfo not implemented") } @@ -545,6 +681,150 @@ func _Query_DelegatorValidator_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _Query_TokenizeShareRecordById_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryTokenizeShareRecordByIdRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).TokenizeShareRecordById(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_TokenizeShareRecordById_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).TokenizeShareRecordById(ctx, req.(*QueryTokenizeShareRecordByIdRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_TokenizeShareRecordByDenom_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryTokenizeShareRecordByDenomRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).TokenizeShareRecordByDenom(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_TokenizeShareRecordByDenom_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).TokenizeShareRecordByDenom(ctx, req.(*QueryTokenizeShareRecordByDenomRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_TokenizeShareRecordsOwned_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryTokenizeShareRecordsOwnedRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).TokenizeShareRecordsOwned(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_TokenizeShareRecordsOwned_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).TokenizeShareRecordsOwned(ctx, req.(*QueryTokenizeShareRecordsOwnedRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_AllTokenizeShareRecords_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryAllTokenizeShareRecordsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).AllTokenizeShareRecords(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_AllTokenizeShareRecords_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).AllTokenizeShareRecords(ctx, req.(*QueryAllTokenizeShareRecordsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_LastTokenizeShareRecordId_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryLastTokenizeShareRecordIdRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).LastTokenizeShareRecordId(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_LastTokenizeShareRecordId_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).LastTokenizeShareRecordId(ctx, req.(*QueryLastTokenizeShareRecordIdRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_TotalTokenizeSharedAssets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryTotalTokenizeSharedAssetsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).TotalTokenizeSharedAssets(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_TotalTokenizeSharedAssets_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).TotalTokenizeSharedAssets(ctx, req.(*QueryTotalTokenizeSharedAssetsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_TotalLiquidStaked_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryTotalLiquidStaked) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).TotalLiquidStaked(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_TotalLiquidStaked_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).TotalLiquidStaked(ctx, req.(*QueryTotalLiquidStaked)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_TokenizeShareLockInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryTokenizeShareLockInfo) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).TokenizeShareLockInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_TokenizeShareLockInfo_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).TokenizeShareLockInfo(ctx, req.(*QueryTokenizeShareLockInfo)) + } + return interceptor(ctx, in, info, handler) +} + func _Query_HistoricalInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(QueryHistoricalInfoRequest) if err := dec(in); err != nil { @@ -650,6 +930,38 @@ var Query_ServiceDesc = grpc.ServiceDesc{ MethodName: "DelegatorValidator", Handler: _Query_DelegatorValidator_Handler, }, + { + MethodName: "TokenizeShareRecordById", + Handler: _Query_TokenizeShareRecordById_Handler, + }, + { + MethodName: "TokenizeShareRecordByDenom", + Handler: _Query_TokenizeShareRecordByDenom_Handler, + }, + { + MethodName: "TokenizeShareRecordsOwned", + Handler: _Query_TokenizeShareRecordsOwned_Handler, + }, + { + MethodName: "AllTokenizeShareRecords", + Handler: _Query_AllTokenizeShareRecords_Handler, + }, + { + MethodName: "LastTokenizeShareRecordId", + Handler: _Query_LastTokenizeShareRecordId_Handler, + }, + { + MethodName: "TotalTokenizeSharedAssets", + Handler: _Query_TotalTokenizeSharedAssets_Handler, + }, + { + MethodName: "TotalLiquidStaked", + Handler: _Query_TotalLiquidStaked_Handler, + }, + { + MethodName: "TokenizeShareLockInfo", + Handler: _Query_TokenizeShareLockInfo_Handler, + }, { MethodName: "HistoricalInfo", Handler: _Query_HistoricalInfo_Handler, diff --git a/api/cosmos/staking/v1beta1/staking.pulsar.go b/api/cosmos/staking/v1beta1/staking.pulsar.go index 9ec8314f45ca..9f363cea5ea4 100644 --- a/api/cosmos/staking/v1beta1/staking.pulsar.go +++ b/api/cosmos/staking/v1beta1/staking.pulsar.go @@ -2393,6 +2393,8 @@ var ( fd_Validator_min_self_delegation protoreflect.FieldDescriptor fd_Validator_unbonding_on_hold_ref_count protoreflect.FieldDescriptor fd_Validator_unbonding_ids protoreflect.FieldDescriptor + fd_Validator_validator_bond_shares protoreflect.FieldDescriptor + fd_Validator_liquid_shares protoreflect.FieldDescriptor ) func init() { @@ -2411,6 +2413,8 @@ func init() { fd_Validator_min_self_delegation = md_Validator.Fields().ByName("min_self_delegation") fd_Validator_unbonding_on_hold_ref_count = md_Validator.Fields().ByName("unbonding_on_hold_ref_count") fd_Validator_unbonding_ids = md_Validator.Fields().ByName("unbonding_ids") + fd_Validator_validator_bond_shares = md_Validator.Fields().ByName("validator_bond_shares") + fd_Validator_liquid_shares = md_Validator.Fields().ByName("liquid_shares") } var _ protoreflect.Message = (*fastReflection_Validator)(nil) @@ -2556,6 +2560,18 @@ func (x *fastReflection_Validator) Range(f func(protoreflect.FieldDescriptor, pr return } } + if x.ValidatorBondShares != "" { + value := protoreflect.ValueOfString(x.ValidatorBondShares) + if !f(fd_Validator_validator_bond_shares, value) { + return + } + } + if x.LiquidShares != "" { + value := protoreflect.ValueOfString(x.LiquidShares) + if !f(fd_Validator_liquid_shares, value) { + return + } + } } // Has reports whether a field is populated. @@ -2597,6 +2613,10 @@ func (x *fastReflection_Validator) Has(fd protoreflect.FieldDescriptor) bool { return x.UnbondingOnHoldRefCount != int64(0) case "cosmos.staking.v1beta1.Validator.unbonding_ids": return len(x.UnbondingIds) != 0 + case "cosmos.staking.v1beta1.Validator.validator_bond_shares": + return x.ValidatorBondShares != "" + case "cosmos.staking.v1beta1.Validator.liquid_shares": + return x.LiquidShares != "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Validator")) @@ -2639,6 +2659,10 @@ func (x *fastReflection_Validator) Clear(fd protoreflect.FieldDescriptor) { x.UnbondingOnHoldRefCount = int64(0) case "cosmos.staking.v1beta1.Validator.unbonding_ids": x.UnbondingIds = nil + case "cosmos.staking.v1beta1.Validator.validator_bond_shares": + x.ValidatorBondShares = "" + case "cosmos.staking.v1beta1.Validator.liquid_shares": + x.LiquidShares = "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Validator")) @@ -2697,6 +2721,12 @@ func (x *fastReflection_Validator) Get(descriptor protoreflect.FieldDescriptor) } listValue := &_Validator_13_list{list: &x.UnbondingIds} return protoreflect.ValueOfList(listValue) + case "cosmos.staking.v1beta1.Validator.validator_bond_shares": + value := x.ValidatorBondShares + return protoreflect.ValueOfString(value) + case "cosmos.staking.v1beta1.Validator.liquid_shares": + value := x.LiquidShares + return protoreflect.ValueOfString(value) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Validator")) @@ -2745,6 +2775,10 @@ func (x *fastReflection_Validator) Set(fd protoreflect.FieldDescriptor, value pr lv := value.List() clv := lv.(*_Validator_13_list) x.UnbondingIds = *clv.list + case "cosmos.staking.v1beta1.Validator.validator_bond_shares": + x.ValidatorBondShares = value.Interface().(string) + case "cosmos.staking.v1beta1.Validator.liquid_shares": + x.LiquidShares = value.Interface().(string) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Validator")) @@ -2807,6 +2841,10 @@ func (x *fastReflection_Validator) Mutable(fd protoreflect.FieldDescriptor) prot panic(fmt.Errorf("field min_self_delegation of message cosmos.staking.v1beta1.Validator is not mutable")) case "cosmos.staking.v1beta1.Validator.unbonding_on_hold_ref_count": panic(fmt.Errorf("field unbonding_on_hold_ref_count of message cosmos.staking.v1beta1.Validator is not mutable")) + case "cosmos.staking.v1beta1.Validator.validator_bond_shares": + panic(fmt.Errorf("field validator_bond_shares of message cosmos.staking.v1beta1.Validator is not mutable")) + case "cosmos.staking.v1beta1.Validator.liquid_shares": + panic(fmt.Errorf("field liquid_shares of message cosmos.staking.v1beta1.Validator is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Validator")) @@ -2851,6 +2889,10 @@ func (x *fastReflection_Validator) NewField(fd protoreflect.FieldDescriptor) pro case "cosmos.staking.v1beta1.Validator.unbonding_ids": list := []uint64{} return protoreflect.ValueOfList(&_Validator_13_list{list: &list}) + case "cosmos.staking.v1beta1.Validator.validator_bond_shares": + return protoreflect.ValueOfString("") + case "cosmos.staking.v1beta1.Validator.liquid_shares": + return protoreflect.ValueOfString("") default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Validator")) @@ -2971,6 +3013,14 @@ func (x *fastReflection_Validator) ProtoMethods() *protoiface.Methods { } n += 1 + runtime.Sov(uint64(l)) + l } + l = len(x.ValidatorBondShares) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.LiquidShares) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -3000,6 +3050,20 @@ func (x *fastReflection_Validator) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if len(x.LiquidShares) > 0 { + i -= len(x.LiquidShares) + copy(dAtA[i:], x.LiquidShares) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.LiquidShares))) + i-- + dAtA[i] = 0x7a + } + if len(x.ValidatorBondShares) > 0 { + i -= len(x.ValidatorBondShares) + copy(dAtA[i:], x.ValidatorBondShares) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ValidatorBondShares))) + i-- + dAtA[i] = 0x72 + } if len(x.UnbondingIds) > 0 { var pksize2 int for _, num := range x.UnbondingIds { @@ -3603,6 +3667,70 @@ func (x *fastReflection_Validator) ProtoMethods() *protoiface.Methods { } else { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field UnbondingIds", wireType) } + case 14: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ValidatorBondShares", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.ValidatorBondShares = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 15: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field LiquidShares", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.LiquidShares = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -6143,6 +6271,7 @@ var ( fd_Delegation_delegator_address protoreflect.FieldDescriptor fd_Delegation_validator_address protoreflect.FieldDescriptor fd_Delegation_shares protoreflect.FieldDescriptor + fd_Delegation_validator_bond protoreflect.FieldDescriptor ) func init() { @@ -6151,6 +6280,7 @@ func init() { fd_Delegation_delegator_address = md_Delegation.Fields().ByName("delegator_address") fd_Delegation_validator_address = md_Delegation.Fields().ByName("validator_address") fd_Delegation_shares = md_Delegation.Fields().ByName("shares") + fd_Delegation_validator_bond = md_Delegation.Fields().ByName("validator_bond") } var _ protoreflect.Message = (*fastReflection_Delegation)(nil) @@ -6236,6 +6366,12 @@ func (x *fastReflection_Delegation) Range(f func(protoreflect.FieldDescriptor, p return } } + if x.ValidatorBond != false { + value := protoreflect.ValueOfBool(x.ValidatorBond) + if !f(fd_Delegation_validator_bond, value) { + return + } + } } // Has reports whether a field is populated. @@ -6257,6 +6393,8 @@ func (x *fastReflection_Delegation) Has(fd protoreflect.FieldDescriptor) bool { return x.ValidatorAddress != "" case "cosmos.staking.v1beta1.Delegation.shares": return x.Shares != "" + case "cosmos.staking.v1beta1.Delegation.validator_bond": + return x.ValidatorBond != false default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Delegation")) @@ -6279,6 +6417,8 @@ func (x *fastReflection_Delegation) Clear(fd protoreflect.FieldDescriptor) { x.ValidatorAddress = "" case "cosmos.staking.v1beta1.Delegation.shares": x.Shares = "" + case "cosmos.staking.v1beta1.Delegation.validator_bond": + x.ValidatorBond = false default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Delegation")) @@ -6304,6 +6444,9 @@ func (x *fastReflection_Delegation) Get(descriptor protoreflect.FieldDescriptor) case "cosmos.staking.v1beta1.Delegation.shares": value := x.Shares return protoreflect.ValueOfString(value) + case "cosmos.staking.v1beta1.Delegation.validator_bond": + value := x.ValidatorBond + return protoreflect.ValueOfBool(value) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Delegation")) @@ -6330,6 +6473,8 @@ func (x *fastReflection_Delegation) Set(fd protoreflect.FieldDescriptor, value p x.ValidatorAddress = value.Interface().(string) case "cosmos.staking.v1beta1.Delegation.shares": x.Shares = value.Interface().(string) + case "cosmos.staking.v1beta1.Delegation.validator_bond": + x.ValidatorBond = value.Bool() default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Delegation")) @@ -6356,6 +6501,8 @@ func (x *fastReflection_Delegation) Mutable(fd protoreflect.FieldDescriptor) pro panic(fmt.Errorf("field validator_address of message cosmos.staking.v1beta1.Delegation is not mutable")) case "cosmos.staking.v1beta1.Delegation.shares": panic(fmt.Errorf("field shares of message cosmos.staking.v1beta1.Delegation is not mutable")) + case "cosmos.staking.v1beta1.Delegation.validator_bond": + panic(fmt.Errorf("field validator_bond of message cosmos.staking.v1beta1.Delegation is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Delegation")) @@ -6375,6 +6522,8 @@ func (x *fastReflection_Delegation) NewField(fd protoreflect.FieldDescriptor) pr return protoreflect.ValueOfString("") case "cosmos.staking.v1beta1.Delegation.shares": return protoreflect.ValueOfString("") + case "cosmos.staking.v1beta1.Delegation.validator_bond": + return protoreflect.ValueOfBool(false) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Delegation")) @@ -6456,6 +6605,9 @@ func (x *fastReflection_Delegation) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } + if x.ValidatorBond { + n += 2 + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -6485,6 +6637,16 @@ func (x *fastReflection_Delegation) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if x.ValidatorBond { + i-- + if x.ValidatorBond { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } if len(x.Shares) > 0 { i -= len(x.Shares) copy(dAtA[i:], x.Shares) @@ -6651,6 +6813,26 @@ func (x *fastReflection_Delegation) ProtoMethods() *protoiface.Methods { } x.Shares = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 4: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ValidatorBond", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.ValidatorBond = bool(v != 0) default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -9409,13 +9591,16 @@ func (x *fastReflection_Redelegation) ProtoMethods() *protoiface.Methods { } var ( - md_Params protoreflect.MessageDescriptor - fd_Params_unbonding_time protoreflect.FieldDescriptor - fd_Params_max_validators protoreflect.FieldDescriptor - fd_Params_max_entries protoreflect.FieldDescriptor - fd_Params_historical_entries protoreflect.FieldDescriptor - fd_Params_bond_denom protoreflect.FieldDescriptor - fd_Params_min_commission_rate protoreflect.FieldDescriptor + md_Params protoreflect.MessageDescriptor + fd_Params_unbonding_time protoreflect.FieldDescriptor + fd_Params_max_validators protoreflect.FieldDescriptor + fd_Params_max_entries protoreflect.FieldDescriptor + fd_Params_historical_entries protoreflect.FieldDescriptor + fd_Params_bond_denom protoreflect.FieldDescriptor + fd_Params_min_commission_rate protoreflect.FieldDescriptor + fd_Params_validator_bond_factor protoreflect.FieldDescriptor + fd_Params_global_liquid_staking_cap protoreflect.FieldDescriptor + fd_Params_validator_liquid_staking_cap protoreflect.FieldDescriptor ) func init() { @@ -9427,6 +9612,9 @@ func init() { fd_Params_historical_entries = md_Params.Fields().ByName("historical_entries") fd_Params_bond_denom = md_Params.Fields().ByName("bond_denom") fd_Params_min_commission_rate = md_Params.Fields().ByName("min_commission_rate") + fd_Params_validator_bond_factor = md_Params.Fields().ByName("validator_bond_factor") + fd_Params_global_liquid_staking_cap = md_Params.Fields().ByName("global_liquid_staking_cap") + fd_Params_validator_liquid_staking_cap = md_Params.Fields().ByName("validator_liquid_staking_cap") } var _ protoreflect.Message = (*fastReflection_Params)(nil) @@ -9530,6 +9718,24 @@ func (x *fastReflection_Params) Range(f func(protoreflect.FieldDescriptor, proto return } } + if x.ValidatorBondFactor != "" { + value := protoreflect.ValueOfString(x.ValidatorBondFactor) + if !f(fd_Params_validator_bond_factor, value) { + return + } + } + if x.GlobalLiquidStakingCap != "" { + value := protoreflect.ValueOfString(x.GlobalLiquidStakingCap) + if !f(fd_Params_global_liquid_staking_cap, value) { + return + } + } + if x.ValidatorLiquidStakingCap != "" { + value := protoreflect.ValueOfString(x.ValidatorLiquidStakingCap) + if !f(fd_Params_validator_liquid_staking_cap, value) { + return + } + } } // Has reports whether a field is populated. @@ -9557,6 +9763,12 @@ func (x *fastReflection_Params) Has(fd protoreflect.FieldDescriptor) bool { return x.BondDenom != "" case "cosmos.staking.v1beta1.Params.min_commission_rate": return x.MinCommissionRate != "" + case "cosmos.staking.v1beta1.Params.validator_bond_factor": + return x.ValidatorBondFactor != "" + case "cosmos.staking.v1beta1.Params.global_liquid_staking_cap": + return x.GlobalLiquidStakingCap != "" + case "cosmos.staking.v1beta1.Params.validator_liquid_staking_cap": + return x.ValidatorLiquidStakingCap != "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Params")) @@ -9585,6 +9797,12 @@ func (x *fastReflection_Params) Clear(fd protoreflect.FieldDescriptor) { x.BondDenom = "" case "cosmos.staking.v1beta1.Params.min_commission_rate": x.MinCommissionRate = "" + case "cosmos.staking.v1beta1.Params.validator_bond_factor": + x.ValidatorBondFactor = "" + case "cosmos.staking.v1beta1.Params.global_liquid_staking_cap": + x.GlobalLiquidStakingCap = "" + case "cosmos.staking.v1beta1.Params.validator_liquid_staking_cap": + x.ValidatorLiquidStakingCap = "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Params")) @@ -9619,6 +9837,15 @@ func (x *fastReflection_Params) Get(descriptor protoreflect.FieldDescriptor) pro case "cosmos.staking.v1beta1.Params.min_commission_rate": value := x.MinCommissionRate return protoreflect.ValueOfString(value) + case "cosmos.staking.v1beta1.Params.validator_bond_factor": + value := x.ValidatorBondFactor + return protoreflect.ValueOfString(value) + case "cosmos.staking.v1beta1.Params.global_liquid_staking_cap": + value := x.GlobalLiquidStakingCap + return protoreflect.ValueOfString(value) + case "cosmos.staking.v1beta1.Params.validator_liquid_staking_cap": + value := x.ValidatorLiquidStakingCap + return protoreflect.ValueOfString(value) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Params")) @@ -9651,6 +9878,12 @@ func (x *fastReflection_Params) Set(fd protoreflect.FieldDescriptor, value proto x.BondDenom = value.Interface().(string) case "cosmos.staking.v1beta1.Params.min_commission_rate": x.MinCommissionRate = value.Interface().(string) + case "cosmos.staking.v1beta1.Params.validator_bond_factor": + x.ValidatorBondFactor = value.Interface().(string) + case "cosmos.staking.v1beta1.Params.global_liquid_staking_cap": + x.GlobalLiquidStakingCap = value.Interface().(string) + case "cosmos.staking.v1beta1.Params.validator_liquid_staking_cap": + x.ValidatorLiquidStakingCap = value.Interface().(string) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Params")) @@ -9686,6 +9919,12 @@ func (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protore panic(fmt.Errorf("field bond_denom of message cosmos.staking.v1beta1.Params is not mutable")) case "cosmos.staking.v1beta1.Params.min_commission_rate": panic(fmt.Errorf("field min_commission_rate of message cosmos.staking.v1beta1.Params is not mutable")) + case "cosmos.staking.v1beta1.Params.validator_bond_factor": + panic(fmt.Errorf("field validator_bond_factor of message cosmos.staking.v1beta1.Params is not mutable")) + case "cosmos.staking.v1beta1.Params.global_liquid_staking_cap": + panic(fmt.Errorf("field global_liquid_staking_cap of message cosmos.staking.v1beta1.Params is not mutable")) + case "cosmos.staking.v1beta1.Params.validator_liquid_staking_cap": + panic(fmt.Errorf("field validator_liquid_staking_cap of message cosmos.staking.v1beta1.Params is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Params")) @@ -9712,6 +9951,12 @@ func (x *fastReflection_Params) NewField(fd protoreflect.FieldDescriptor) protor return protoreflect.ValueOfString("") case "cosmos.staking.v1beta1.Params.min_commission_rate": return protoreflect.ValueOfString("") + case "cosmos.staking.v1beta1.Params.validator_bond_factor": + return protoreflect.ValueOfString("") + case "cosmos.staking.v1beta1.Params.global_liquid_staking_cap": + return protoreflect.ValueOfString("") + case "cosmos.staking.v1beta1.Params.validator_liquid_staking_cap": + return protoreflect.ValueOfString("") default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Params")) @@ -9802,6 +10047,18 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } + l = len(x.ValidatorBondFactor) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.GlobalLiquidStakingCap) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.ValidatorLiquidStakingCap) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -9831,6 +10088,27 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if len(x.ValidatorLiquidStakingCap) > 0 { + i -= len(x.ValidatorLiquidStakingCap) + copy(dAtA[i:], x.ValidatorLiquidStakingCap) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ValidatorLiquidStakingCap))) + i-- + dAtA[i] = 0x4a + } + if len(x.GlobalLiquidStakingCap) > 0 { + i -= len(x.GlobalLiquidStakingCap) + copy(dAtA[i:], x.GlobalLiquidStakingCap) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.GlobalLiquidStakingCap))) + i-- + dAtA[i] = 0x42 + } + if len(x.ValidatorBondFactor) > 0 { + i -= len(x.ValidatorBondFactor) + copy(dAtA[i:], x.ValidatorBondFactor) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ValidatorBondFactor))) + i-- + dAtA[i] = 0x3a + } if len(x.MinCommissionRate) > 0 { i -= len(x.MinCommissionRate) copy(dAtA[i:], x.MinCommissionRate) @@ -10080,6 +10358,102 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { } x.MinCommissionRate = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 7: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ValidatorBondFactor", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.ValidatorBondFactor = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field GlobalLiquidStakingCap", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.GlobalLiquidStakingCap = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ValidatorLiquidStakingCap", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.ValidatorLiquidStakingCap = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -12679,28 +13053,1104 @@ func (x *fastReflection_ValidatorUpdates) ProtoMethods() *protoiface.Methods { } } -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.27.0 -// protoc (unknown) -// source: cosmos/staking/v1beta1/staking.proto - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +var ( + md_TokenizeShareRecord protoreflect.MessageDescriptor + fd_TokenizeShareRecord_id protoreflect.FieldDescriptor + fd_TokenizeShareRecord_owner protoreflect.FieldDescriptor + fd_TokenizeShareRecord_module_account protoreflect.FieldDescriptor + fd_TokenizeShareRecord_validator protoreflect.FieldDescriptor ) -// BondStatus is the status of a validator. -type BondStatus int32 +func init() { + file_cosmos_staking_v1beta1_staking_proto_init() + md_TokenizeShareRecord = File_cosmos_staking_v1beta1_staking_proto.Messages().ByName("TokenizeShareRecord") + fd_TokenizeShareRecord_id = md_TokenizeShareRecord.Fields().ByName("id") + fd_TokenizeShareRecord_owner = md_TokenizeShareRecord.Fields().ByName("owner") + fd_TokenizeShareRecord_module_account = md_TokenizeShareRecord.Fields().ByName("module_account") + fd_TokenizeShareRecord_validator = md_TokenizeShareRecord.Fields().ByName("validator") +} -const ( - // UNSPECIFIED defines an invalid validator status. - BondStatus_BOND_STATUS_UNSPECIFIED BondStatus = 0 - // UNBONDED defines a validator that is not bonded. - BondStatus_BOND_STATUS_UNBONDED BondStatus = 1 - // UNBONDING defines a validator that is unbonding. +var _ protoreflect.Message = (*fastReflection_TokenizeShareRecord)(nil) + +type fastReflection_TokenizeShareRecord TokenizeShareRecord + +func (x *TokenizeShareRecord) ProtoReflect() protoreflect.Message { + return (*fastReflection_TokenizeShareRecord)(x) +} + +func (x *TokenizeShareRecord) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_TokenizeShareRecord_messageType fastReflection_TokenizeShareRecord_messageType +var _ protoreflect.MessageType = fastReflection_TokenizeShareRecord_messageType{} + +type fastReflection_TokenizeShareRecord_messageType struct{} + +func (x fastReflection_TokenizeShareRecord_messageType) Zero() protoreflect.Message { + return (*fastReflection_TokenizeShareRecord)(nil) +} +func (x fastReflection_TokenizeShareRecord_messageType) New() protoreflect.Message { + return new(fastReflection_TokenizeShareRecord) +} +func (x fastReflection_TokenizeShareRecord_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_TokenizeShareRecord +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_TokenizeShareRecord) Descriptor() protoreflect.MessageDescriptor { + return md_TokenizeShareRecord +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_TokenizeShareRecord) Type() protoreflect.MessageType { + return _fastReflection_TokenizeShareRecord_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_TokenizeShareRecord) New() protoreflect.Message { + return new(fastReflection_TokenizeShareRecord) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_TokenizeShareRecord) Interface() protoreflect.ProtoMessage { + return (*TokenizeShareRecord)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_TokenizeShareRecord) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Id != uint64(0) { + value := protoreflect.ValueOfUint64(x.Id) + if !f(fd_TokenizeShareRecord_id, value) { + return + } + } + if x.Owner != "" { + value := protoreflect.ValueOfString(x.Owner) + if !f(fd_TokenizeShareRecord_owner, value) { + return + } + } + if x.ModuleAccount != "" { + value := protoreflect.ValueOfString(x.ModuleAccount) + if !f(fd_TokenizeShareRecord_module_account, value) { + return + } + } + if x.Validator != "" { + value := protoreflect.ValueOfString(x.Validator) + if !f(fd_TokenizeShareRecord_validator, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_TokenizeShareRecord) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.TokenizeShareRecord.id": + return x.Id != uint64(0) + case "cosmos.staking.v1beta1.TokenizeShareRecord.owner": + return x.Owner != "" + case "cosmos.staking.v1beta1.TokenizeShareRecord.module_account": + return x.ModuleAccount != "" + case "cosmos.staking.v1beta1.TokenizeShareRecord.validator": + return x.Validator != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.TokenizeShareRecord")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.TokenizeShareRecord does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_TokenizeShareRecord) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.TokenizeShareRecord.id": + x.Id = uint64(0) + case "cosmos.staking.v1beta1.TokenizeShareRecord.owner": + x.Owner = "" + case "cosmos.staking.v1beta1.TokenizeShareRecord.module_account": + x.ModuleAccount = "" + case "cosmos.staking.v1beta1.TokenizeShareRecord.validator": + x.Validator = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.TokenizeShareRecord")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.TokenizeShareRecord does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_TokenizeShareRecord) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.TokenizeShareRecord.id": + value := x.Id + return protoreflect.ValueOfUint64(value) + case "cosmos.staking.v1beta1.TokenizeShareRecord.owner": + value := x.Owner + return protoreflect.ValueOfString(value) + case "cosmos.staking.v1beta1.TokenizeShareRecord.module_account": + value := x.ModuleAccount + return protoreflect.ValueOfString(value) + case "cosmos.staking.v1beta1.TokenizeShareRecord.validator": + value := x.Validator + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.TokenizeShareRecord")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.TokenizeShareRecord does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_TokenizeShareRecord) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.TokenizeShareRecord.id": + x.Id = value.Uint() + case "cosmos.staking.v1beta1.TokenizeShareRecord.owner": + x.Owner = value.Interface().(string) + case "cosmos.staking.v1beta1.TokenizeShareRecord.module_account": + x.ModuleAccount = value.Interface().(string) + case "cosmos.staking.v1beta1.TokenizeShareRecord.validator": + x.Validator = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.TokenizeShareRecord")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.TokenizeShareRecord does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_TokenizeShareRecord) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.TokenizeShareRecord.id": + panic(fmt.Errorf("field id of message cosmos.staking.v1beta1.TokenizeShareRecord is not mutable")) + case "cosmos.staking.v1beta1.TokenizeShareRecord.owner": + panic(fmt.Errorf("field owner of message cosmos.staking.v1beta1.TokenizeShareRecord is not mutable")) + case "cosmos.staking.v1beta1.TokenizeShareRecord.module_account": + panic(fmt.Errorf("field module_account of message cosmos.staking.v1beta1.TokenizeShareRecord is not mutable")) + case "cosmos.staking.v1beta1.TokenizeShareRecord.validator": + panic(fmt.Errorf("field validator of message cosmos.staking.v1beta1.TokenizeShareRecord is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.TokenizeShareRecord")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.TokenizeShareRecord does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_TokenizeShareRecord) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.TokenizeShareRecord.id": + return protoreflect.ValueOfUint64(uint64(0)) + case "cosmos.staking.v1beta1.TokenizeShareRecord.owner": + return protoreflect.ValueOfString("") + case "cosmos.staking.v1beta1.TokenizeShareRecord.module_account": + return protoreflect.ValueOfString("") + case "cosmos.staking.v1beta1.TokenizeShareRecord.validator": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.TokenizeShareRecord")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.TokenizeShareRecord does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_TokenizeShareRecord) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.TokenizeShareRecord", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_TokenizeShareRecord) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_TokenizeShareRecord) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_TokenizeShareRecord) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_TokenizeShareRecord) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*TokenizeShareRecord) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Id != 0 { + n += 1 + runtime.Sov(uint64(x.Id)) + } + l = len(x.Owner) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.ModuleAccount) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Validator) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*TokenizeShareRecord) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Validator) > 0 { + i -= len(x.Validator) + copy(dAtA[i:], x.Validator) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Validator))) + i-- + dAtA[i] = 0x22 + } + if len(x.ModuleAccount) > 0 { + i -= len(x.ModuleAccount) + copy(dAtA[i:], x.ModuleAccount) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ModuleAccount))) + i-- + dAtA[i] = 0x1a + } + if len(x.Owner) > 0 { + i -= len(x.Owner) + copy(dAtA[i:], x.Owner) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Owner))) + i-- + dAtA[i] = 0x12 + } + if x.Id != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Id)) + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*TokenizeShareRecord) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: TokenizeShareRecord: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: TokenizeShareRecord: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + x.Id = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Id |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Owner", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Owner = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ModuleAccount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.ModuleAccount = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Validator", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Validator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var _ protoreflect.List = (*_PendingTokenizeShareAuthorizations_1_list)(nil) + +type _PendingTokenizeShareAuthorizations_1_list struct { + list *[]string +} + +func (x *_PendingTokenizeShareAuthorizations_1_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_PendingTokenizeShareAuthorizations_1_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfString((*x.list)[i]) +} + +func (x *_PendingTokenizeShareAuthorizations_1_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + (*x.list)[i] = concreteValue +} + +func (x *_PendingTokenizeShareAuthorizations_1_list) Append(value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + *x.list = append(*x.list, concreteValue) +} + +func (x *_PendingTokenizeShareAuthorizations_1_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message PendingTokenizeShareAuthorizations at list field Addresses as it is not of Message kind")) +} + +func (x *_PendingTokenizeShareAuthorizations_1_list) Truncate(n int) { + *x.list = (*x.list)[:n] +} + +func (x *_PendingTokenizeShareAuthorizations_1_list) NewElement() protoreflect.Value { + v := "" + return protoreflect.ValueOfString(v) +} + +func (x *_PendingTokenizeShareAuthorizations_1_list) IsValid() bool { + return x.list != nil +} + +var ( + md_PendingTokenizeShareAuthorizations protoreflect.MessageDescriptor + fd_PendingTokenizeShareAuthorizations_addresses protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_staking_proto_init() + md_PendingTokenizeShareAuthorizations = File_cosmos_staking_v1beta1_staking_proto.Messages().ByName("PendingTokenizeShareAuthorizations") + fd_PendingTokenizeShareAuthorizations_addresses = md_PendingTokenizeShareAuthorizations.Fields().ByName("addresses") +} + +var _ protoreflect.Message = (*fastReflection_PendingTokenizeShareAuthorizations)(nil) + +type fastReflection_PendingTokenizeShareAuthorizations PendingTokenizeShareAuthorizations + +func (x *PendingTokenizeShareAuthorizations) ProtoReflect() protoreflect.Message { + return (*fastReflection_PendingTokenizeShareAuthorizations)(x) +} + +func (x *PendingTokenizeShareAuthorizations) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_PendingTokenizeShareAuthorizations_messageType fastReflection_PendingTokenizeShareAuthorizations_messageType +var _ protoreflect.MessageType = fastReflection_PendingTokenizeShareAuthorizations_messageType{} + +type fastReflection_PendingTokenizeShareAuthorizations_messageType struct{} + +func (x fastReflection_PendingTokenizeShareAuthorizations_messageType) Zero() protoreflect.Message { + return (*fastReflection_PendingTokenizeShareAuthorizations)(nil) +} +func (x fastReflection_PendingTokenizeShareAuthorizations_messageType) New() protoreflect.Message { + return new(fastReflection_PendingTokenizeShareAuthorizations) +} +func (x fastReflection_PendingTokenizeShareAuthorizations_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_PendingTokenizeShareAuthorizations +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_PendingTokenizeShareAuthorizations) Descriptor() protoreflect.MessageDescriptor { + return md_PendingTokenizeShareAuthorizations +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_PendingTokenizeShareAuthorizations) Type() protoreflect.MessageType { + return _fastReflection_PendingTokenizeShareAuthorizations_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_PendingTokenizeShareAuthorizations) New() protoreflect.Message { + return new(fastReflection_PendingTokenizeShareAuthorizations) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_PendingTokenizeShareAuthorizations) Interface() protoreflect.ProtoMessage { + return (*PendingTokenizeShareAuthorizations)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_PendingTokenizeShareAuthorizations) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if len(x.Addresses) != 0 { + value := protoreflect.ValueOfList(&_PendingTokenizeShareAuthorizations_1_list{list: &x.Addresses}) + if !f(fd_PendingTokenizeShareAuthorizations_addresses, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_PendingTokenizeShareAuthorizations) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.PendingTokenizeShareAuthorizations.addresses": + return len(x.Addresses) != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.PendingTokenizeShareAuthorizations")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.PendingTokenizeShareAuthorizations does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_PendingTokenizeShareAuthorizations) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.PendingTokenizeShareAuthorizations.addresses": + x.Addresses = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.PendingTokenizeShareAuthorizations")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.PendingTokenizeShareAuthorizations does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_PendingTokenizeShareAuthorizations) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.PendingTokenizeShareAuthorizations.addresses": + if len(x.Addresses) == 0 { + return protoreflect.ValueOfList(&_PendingTokenizeShareAuthorizations_1_list{}) + } + listValue := &_PendingTokenizeShareAuthorizations_1_list{list: &x.Addresses} + return protoreflect.ValueOfList(listValue) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.PendingTokenizeShareAuthorizations")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.PendingTokenizeShareAuthorizations does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_PendingTokenizeShareAuthorizations) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.PendingTokenizeShareAuthorizations.addresses": + lv := value.List() + clv := lv.(*_PendingTokenizeShareAuthorizations_1_list) + x.Addresses = *clv.list + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.PendingTokenizeShareAuthorizations")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.PendingTokenizeShareAuthorizations does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_PendingTokenizeShareAuthorizations) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.PendingTokenizeShareAuthorizations.addresses": + if x.Addresses == nil { + x.Addresses = []string{} + } + value := &_PendingTokenizeShareAuthorizations_1_list{list: &x.Addresses} + return protoreflect.ValueOfList(value) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.PendingTokenizeShareAuthorizations")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.PendingTokenizeShareAuthorizations does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_PendingTokenizeShareAuthorizations) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.PendingTokenizeShareAuthorizations.addresses": + list := []string{} + return protoreflect.ValueOfList(&_PendingTokenizeShareAuthorizations_1_list{list: &list}) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.PendingTokenizeShareAuthorizations")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.PendingTokenizeShareAuthorizations does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_PendingTokenizeShareAuthorizations) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.PendingTokenizeShareAuthorizations", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_PendingTokenizeShareAuthorizations) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_PendingTokenizeShareAuthorizations) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_PendingTokenizeShareAuthorizations) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_PendingTokenizeShareAuthorizations) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*PendingTokenizeShareAuthorizations) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if len(x.Addresses) > 0 { + for _, s := range x.Addresses { + l = len(s) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*PendingTokenizeShareAuthorizations) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Addresses) > 0 { + for iNdEx := len(x.Addresses) - 1; iNdEx >= 0; iNdEx-- { + i -= len(x.Addresses[iNdEx]) + copy(dAtA[i:], x.Addresses[iNdEx]) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Addresses[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*PendingTokenizeShareAuthorizations) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: PendingTokenizeShareAuthorizations: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: PendingTokenizeShareAuthorizations: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Addresses", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Addresses = append(x.Addresses, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: cosmos/staking/v1beta1/staking.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// BondStatus is the status of a validator. +type BondStatus int32 + +const ( + // UNSPECIFIED defines an invalid validator status. + BondStatus_BOND_STATUS_UNSPECIFIED BondStatus = 0 + // UNBONDED defines a validator that is not bonded. + BondStatus_BOND_STATUS_UNBONDED BondStatus = 1 + // UNBONDING defines a validator that is unbonding. BondStatus_BOND_STATUS_UNBONDING BondStatus = 2 // BONDED defines a validator that is bonded. BondStatus_BOND_STATUS_BONDED BondStatus = 3 @@ -12802,6 +14252,64 @@ func (Infraction) EnumDescriptor() ([]byte, []int) { return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{1} } +// TokenizeShareLockStatus indicates whether the address is able to tokenize shares +type TokenizeShareLockStatus int32 + +const ( + // UNSPECIFIED defines an empty tokenize share lock status + TokenizeShareLockStatus_TOKENIZE_SHARE_LOCK_STATUS_UNSPECIFIED TokenizeShareLockStatus = 0 + // LOCKED indicates the account is locked and cannot tokenize shares + TokenizeShareLockStatus_TOKENIZE_SHARE_LOCK_STATUS_LOCKED TokenizeShareLockStatus = 1 + // UNLOCKED indicates the account is unlocked and can tokenize shares + TokenizeShareLockStatus_TOKENIZE_SHARE_LOCK_STATUS_UNLOCKED TokenizeShareLockStatus = 2 + // LOCK_EXPIRING indicates the account is unable to tokenize shares, but + // will be able to tokenize shortly (after 1 unbonding period) + TokenizeShareLockStatus_TOKENIZE_SHARE_LOCK_STATUS_LOCK_EXPIRING TokenizeShareLockStatus = 3 +) + +// Enum value maps for TokenizeShareLockStatus. +var ( + TokenizeShareLockStatus_name = map[int32]string{ + 0: "TOKENIZE_SHARE_LOCK_STATUS_UNSPECIFIED", + 1: "TOKENIZE_SHARE_LOCK_STATUS_LOCKED", + 2: "TOKENIZE_SHARE_LOCK_STATUS_UNLOCKED", + 3: "TOKENIZE_SHARE_LOCK_STATUS_LOCK_EXPIRING", + } + TokenizeShareLockStatus_value = map[string]int32{ + "TOKENIZE_SHARE_LOCK_STATUS_UNSPECIFIED": 0, + "TOKENIZE_SHARE_LOCK_STATUS_LOCKED": 1, + "TOKENIZE_SHARE_LOCK_STATUS_UNLOCKED": 2, + "TOKENIZE_SHARE_LOCK_STATUS_LOCK_EXPIRING": 3, + } +) + +func (x TokenizeShareLockStatus) Enum() *TokenizeShareLockStatus { + p := new(TokenizeShareLockStatus) + *p = x + return p +} + +func (x TokenizeShareLockStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TokenizeShareLockStatus) Descriptor() protoreflect.EnumDescriptor { + return file_cosmos_staking_v1beta1_staking_proto_enumTypes[2].Descriptor() +} + +func (TokenizeShareLockStatus) Type() protoreflect.EnumType { + return &file_cosmos_staking_v1beta1_staking_proto_enumTypes[2] +} + +func (x TokenizeShareLockStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TokenizeShareLockStatus.Descriptor instead. +func (TokenizeShareLockStatus) EnumDescriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{2} +} + // HistoricalInfo contains header and validator information for a given block. // It is stored as part of staking module's state, which persists the `n` most // recent HistoricalInfo @@ -13057,14 +14565,18 @@ type Validator struct { UnbondingTime *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=unbonding_time,json=unbondingTime,proto3" json:"unbonding_time,omitempty"` // commission defines the commission parameters. Commission *Commission `protobuf:"bytes,10,opt,name=commission,proto3" json:"commission,omitempty"` - // min_self_delegation is the validator's self declared minimum self delegation. + // Deprecated: This field has been deprecated with LSM in favor of the validator bond // - // Since: cosmos-sdk 0.46 + // Deprecated: Do not use. MinSelfDelegation string `protobuf:"bytes,11,opt,name=min_self_delegation,json=minSelfDelegation,proto3" json:"min_self_delegation,omitempty"` // strictly positive if this validator's unbonding has been stopped by external modules UnbondingOnHoldRefCount int64 `protobuf:"varint,12,opt,name=unbonding_on_hold_ref_count,json=unbondingOnHoldRefCount,proto3" json:"unbonding_on_hold_ref_count,omitempty"` // list of unbonding ids, each uniquely identifing an unbonding of this validator UnbondingIds []uint64 `protobuf:"varint,13,rep,packed,name=unbonding_ids,json=unbondingIds,proto3" json:"unbonding_ids,omitempty"` + // Number of shares self bonded from the validator + ValidatorBondShares string `protobuf:"bytes,14,opt,name=validator_bond_shares,json=validatorBondShares,proto3" json:"validator_bond_shares,omitempty"` + // Number of shares either tokenized or owned by a liquid staking provider + LiquidShares string `protobuf:"bytes,15,opt,name=liquid_shares,json=liquidShares,proto3" json:"liquid_shares,omitempty"` } func (x *Validator) Reset() { @@ -13157,6 +14669,7 @@ func (x *Validator) GetCommission() *Commission { return nil } +// Deprecated: Do not use. func (x *Validator) GetMinSelfDelegation() string { if x != nil { return x.MinSelfDelegation @@ -13178,6 +14691,20 @@ func (x *Validator) GetUnbondingIds() []uint64 { return nil } +func (x *Validator) GetValidatorBondShares() string { + if x != nil { + return x.ValidatorBondShares + } + return "" +} + +func (x *Validator) GetLiquidShares() string { + if x != nil { + return x.LiquidShares + } + return "" +} + // ValAddresses defines a repeated set of validator addresses. type ValAddresses struct { state protoimpl.MessageState @@ -13401,6 +14928,8 @@ type Delegation struct { ValidatorAddress string `protobuf:"bytes,2,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"` // shares define the delegation shares received. Shares string `protobuf:"bytes,3,opt,name=shares,proto3" json:"shares,omitempty"` + // has this delegation been marked as a validator self bond. + ValidatorBond bool `protobuf:"varint,4,opt,name=validator_bond,json=validatorBond,proto3" json:"validator_bond,omitempty"` } func (x *Delegation) Reset() { @@ -13444,6 +14973,13 @@ func (x *Delegation) GetShares() string { return "" } +func (x *Delegation) GetValidatorBond() bool { + if x != nil { + return x.ValidatorBond + } + return false +} + // UnbondingDelegation stores all of a single delegator's unbonding bonds // for a single validator in an time-ordered list. type UnbondingDelegation struct { @@ -13747,6 +15283,15 @@ type Params struct { BondDenom string `protobuf:"bytes,5,opt,name=bond_denom,json=bondDenom,proto3" json:"bond_denom,omitempty"` // min_commission_rate is the chain-wide minimum commission rate that a validator can charge their delegators MinCommissionRate string `protobuf:"bytes,6,opt,name=min_commission_rate,json=minCommissionRate,proto3" json:"min_commission_rate,omitempty"` + // validator_bond_factor is required as a safety check for tokenizing shares and + // delegations from liquid staking providers + ValidatorBondFactor string `protobuf:"bytes,7,opt,name=validator_bond_factor,json=validatorBondFactor,proto3" json:"validator_bond_factor,omitempty"` + // global_liquid_staking_cap represents a cap on the portion of stake that + // comes from liquid staking providers + GlobalLiquidStakingCap string `protobuf:"bytes,8,opt,name=global_liquid_staking_cap,json=globalLiquidStakingCap,proto3" json:"global_liquid_staking_cap,omitempty"` + // validator_liquid_staking_cap represents a cap on the portion of stake that + // comes from liquid staking providers for a specific validator + ValidatorLiquidStakingCap string `protobuf:"bytes,9,opt,name=validator_liquid_staking_cap,json=validatorLiquidStakingCap,proto3" json:"validator_liquid_staking_cap,omitempty"` } func (x *Params) Reset() { @@ -13811,6 +15356,27 @@ func (x *Params) GetMinCommissionRate() string { return "" } +func (x *Params) GetValidatorBondFactor() string { + if x != nil { + return x.ValidatorBondFactor + } + return "" +} + +func (x *Params) GetGlobalLiquidStakingCap() string { + if x != nil { + return x.GlobalLiquidStakingCap + } + return "" +} + +func (x *Params) GetValidatorLiquidStakingCap() string { + if x != nil { + return x.ValidatorLiquidStakingCap + } + return "" +} + // DelegationResponse is equivalent to Delegation except that it contains a // balance in addition to shares which is more suitable for client responses. type DelegationResponse struct { @@ -14030,6 +15596,103 @@ func (x *ValidatorUpdates) GetUpdates() []*abci.ValidatorUpdate { return nil } +// TokenizeShareRecord represents a tokenized delegation +type TokenizeShareRecord struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Owner string `protobuf:"bytes,2,opt,name=owner,proto3" json:"owner,omitempty"` + ModuleAccount string `protobuf:"bytes,3,opt,name=module_account,json=moduleAccount,proto3" json:"module_account,omitempty"` // module account take the role of delegator + Validator string `protobuf:"bytes,4,opt,name=validator,proto3" json:"validator,omitempty"` // validator delegated to for tokenize share record creation +} + +func (x *TokenizeShareRecord) Reset() { + *x = TokenizeShareRecord{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TokenizeShareRecord) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TokenizeShareRecord) ProtoMessage() {} + +// Deprecated: Use TokenizeShareRecord.ProtoReflect.Descriptor instead. +func (*TokenizeShareRecord) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{21} +} + +func (x *TokenizeShareRecord) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *TokenizeShareRecord) GetOwner() string { + if x != nil { + return x.Owner + } + return "" +} + +func (x *TokenizeShareRecord) GetModuleAccount() string { + if x != nil { + return x.ModuleAccount + } + return "" +} + +func (x *TokenizeShareRecord) GetValidator() string { + if x != nil { + return x.Validator + } + return "" +} + +// PendingTokenizeShareAuthorizations stores a list of addresses that have their +// tokenize share enablement in progress +type PendingTokenizeShareAuthorizations struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Addresses []string `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` +} + +func (x *PendingTokenizeShareAuthorizations) Reset() { + *x = PendingTokenizeShareAuthorizations{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PendingTokenizeShareAuthorizations) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PendingTokenizeShareAuthorizations) ProtoMessage() {} + +// Deprecated: Use PendingTokenizeShareAuthorizations.ProtoReflect.Descriptor instead. +func (*PendingTokenizeShareAuthorizations) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{22} +} + +func (x *PendingTokenizeShareAuthorizations) GetAddresses() []string { + if x != nil { + return x.Addresses + } + return nil +} + var File_cosmos_staking_v1beta1_staking_proto protoreflect.FileDescriptor var file_cosmos_staking_v1beta1_staking_proto_rawDesc = []byte{ @@ -14102,7 +15765,7 @@ var file_cosmos_staking_v1beta1_staking_proto_rawDesc = []byte{ 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0x8a, 0x07, 0x0a, 0x09, 0x56, 0x61, 0x6c, 0x69, + 0x73, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0xe7, 0x08, 0x0a, 0x09, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x43, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, @@ -14146,284 +15809,354 @@ var file_cosmos_staking_v1beta1_staking_proto_rawDesc = []byte{ 0x22, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, - 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x13, 0x6d, 0x69, + 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x5d, 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x6c, 0x66, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, - 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, - 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x11, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x6c, 0x66, 0x44, 0x65, 0x6c, - 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x1b, 0x75, 0x6e, 0x62, 0x6f, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6e, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x66, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x75, 0x6e, - 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4f, 0x6e, 0x48, 0x6f, 0x6c, 0x64, 0x52, 0x65, 0x66, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0c, 0x75, 0x6e, - 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x73, 0x3a, 0x08, 0x88, 0xa0, 0x1f, 0x00, - 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x46, 0x0a, 0x0c, 0x56, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0xa9, 0x01, 0x0a, - 0x06, 0x44, 0x56, 0x50, 0x61, 0x69, 0x72, 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, - 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4e, - 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x08, - 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x4a, 0x0a, 0x07, 0x44, 0x56, 0x50, 0x61, - 0x69, 0x72, 0x73, 0x12, 0x3f, 0x0a, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x56, 0x50, 0x61, - 0x69, 0x72, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x05, 0x70, - 0x61, 0x69, 0x72, 0x73, 0x22, 0x8b, 0x02, 0x0a, 0x0a, 0x44, 0x56, 0x56, 0x54, 0x72, 0x69, 0x70, - 0x6c, 0x65, 0x74, 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, - 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, - 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x55, 0x0a, 0x15, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x72, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x12, 0x55, 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x64, - 0x73, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x52, 0x13, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x73, - 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x08, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, - 0x1f, 0x00, 0x22, 0x58, 0x0a, 0x0b, 0x44, 0x56, 0x56, 0x54, 0x72, 0x69, 0x70, 0x6c, 0x65, 0x74, - 0x73, 0x12, 0x49, 0x0a, 0x08, 0x74, 0x72, 0x69, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, - 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x56, 0x56, - 0x54, 0x72, 0x69, 0x70, 0x6c, 0x65, 0x74, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, - 0x2a, 0x01, 0x52, 0x08, 0x74, 0x72, 0x69, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x22, 0xf8, 0x01, 0x0a, - 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x11, 0x64, - 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x12, 0x4e, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, + 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2d, 0x18, 0x01, 0xc8, 0xde, 0x1f, 0x00, 0xda, + 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, + 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x11, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x6c, 0x66, 0x44, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x1b, 0x75, 0x6e, 0x62, + 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6e, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x72, + 0x65, 0x66, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, + 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4f, 0x6e, 0x48, 0x6f, 0x6c, 0x64, 0x52, + 0x65, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x75, 0x6e, 0x62, 0x6f, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0c, + 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x73, 0x12, 0x77, 0x0a, 0x15, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x62, 0x6f, 0x6e, 0x64, 0x5f, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x43, 0xc8, 0xde, 0x1f, + 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, + 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, + 0xf2, 0xde, 0x1f, 0x1c, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x5f, 0x62, 0x6f, 0x6e, 0x64, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x22, + 0x52, 0x13, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x6f, 0x6e, 0x64, 0x53, + 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x60, 0x0a, 0x0d, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x5f, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3b, 0xc8, 0xde, + 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, + 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, + 0x63, 0xf2, 0xde, 0x1f, 0x14, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6c, 0x69, 0x71, 0x75, 0x69, + 0x64, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x22, 0x52, 0x0c, 0x6c, 0x69, 0x71, 0x75, 0x69, + 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x3a, 0x08, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, + 0x00, 0x22, 0x46, 0x0a, 0x0c, 0x56, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, + 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0xa9, 0x01, 0x0a, 0x06, 0x44, 0x56, + 0x50, 0x61, 0x69, 0x72, 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, + 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4e, 0x0a, 0x11, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x08, 0x88, 0xa0, 0x1f, + 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x4a, 0x0a, 0x07, 0x44, 0x56, 0x50, 0x61, 0x69, 0x72, 0x73, + 0x12, 0x3f, 0x0a, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x56, 0x50, 0x61, 0x69, 0x72, 0x42, + 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x05, 0x70, 0x61, 0x69, 0x72, + 0x73, 0x22, 0x8b, 0x02, 0x0a, 0x0a, 0x44, 0x56, 0x56, 0x54, 0x72, 0x69, 0x70, 0x6c, 0x65, 0x74, + 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, + 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x55, 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x6f, 0x72, 0x53, 0x72, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x55, + 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x12, 0x49, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, - 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x3a, 0x08, 0x88, - 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x8d, 0x02, 0x0a, 0x13, 0x55, 0x6e, 0x62, 0x6f, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4e, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x55, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, - 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x08, 0x88, - 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x9b, 0x03, 0x0a, 0x18, 0x55, 0x6e, 0x62, 0x6f, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x52, 0x0a, - 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0xa8, 0xe7, 0xb0, 0x2a, - 0x01, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x54, 0x0a, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x62, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xc8, 0xde, 0x1f, 0x00, - 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, - 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0e, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, - 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x45, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, - 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, - 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x21, - 0x0a, 0x0c, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, - 0x64, 0x12, 0x3c, 0x0a, 0x1b, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6f, - 0x6e, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x66, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x4f, 0x6e, 0x48, 0x6f, 0x6c, 0x64, 0x52, 0x65, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3a, - 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0x9f, 0x03, 0x0a, 0x11, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, - 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x12, 0x52, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x90, - 0xdf, 0x1f, 0x01, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x0f, 0x69, 0x6e, 0x69, 0x74, - 0x69, 0x61, 0x6c, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, - 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0e, - 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x50, - 0x0a, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x5f, 0x64, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, - 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x09, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x44, 0x73, 0x74, - 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x1b, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x5f, 0x6f, 0x6e, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x66, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x4f, 0x6e, 0x48, 0x6f, 0x6c, 0x64, 0x52, 0x65, 0x66, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0xdd, 0x02, 0x0a, 0x0c, 0x52, 0x65, 0x64, 0x65, + 0x52, 0x13, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x73, 0x74, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x08, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, + 0x58, 0x0a, 0x0b, 0x44, 0x56, 0x56, 0x54, 0x72, 0x69, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x12, 0x49, + 0x0a, 0x08, 0x74, 0x72, 0x69, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x56, 0x56, 0x54, 0x72, 0x69, + 0x70, 0x6c, 0x65, 0x74, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, + 0x08, 0x74, 0x72, 0x69, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x22, 0x9f, 0x02, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x55, 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x72, 0x63, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, - 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x52, 0x13, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x72, 0x63, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x55, 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x6f, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x4e, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, + 0x49, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, + 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, + 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, + 0x65, 0x63, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x62, 0x6f, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x6f, 0x6e, + 0x64, 0x3a, 0x08, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x8d, 0x02, 0x0a, 0x13, + 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, + 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, + 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4e, 0x0a, 0x11, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x6f, 0x72, 0x44, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4e, 0x0a, - 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, - 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x08, 0x88, - 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x9c, 0x03, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x12, 0x4f, 0x0a, 0x0e, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x98, 0xdf, 0x1f, 0x01, 0xa8, - 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0d, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6d, 0x61, 0x78, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, - 0x78, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0a, 0x6d, 0x61, 0x78, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x68, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, - 0x63, 0x61, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6f, - 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x62, 0x6f, 0x6e, 0x64, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x84, 0x01, 0x0a, 0x13, 0x6d, 0x69, - 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x54, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, - 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, - 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xf2, 0xde, 0x1f, 0x1a, - 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x22, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x11, 0x6d, - 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, - 0x3a, 0x24, 0xe8, 0xa0, 0x1f, 0x01, 0x8a, 0xe7, 0xb0, 0x2a, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x78, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xa9, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, - 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, - 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x07, - 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, - 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x04, 0xe8, 0xa0, - 0x1f, 0x00, 0x22, 0xcd, 0x01, 0x0a, 0x19, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x63, 0x0a, 0x12, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, - 0x2a, 0x01, 0x52, 0x11, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x45, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, + 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x55, 0x0a, 0x07, 0x65, 0x6e, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, + 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x09, 0xc8, + 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x3a, 0x08, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x9b, 0x03, 0x0a, 0x18, + 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x12, 0x52, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, + 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, + 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, + 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, + 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, + 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0e, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x61, 0x6c, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x45, 0x0a, 0x07, 0x62, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xc8, 0xde, + 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, + 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, + 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x1b, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x5f, 0x6f, 0x6e, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x66, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x75, 0x6e, 0x62, 0x6f, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4f, 0x6e, 0x48, 0x6f, 0x6c, 0x64, 0x52, 0x65, 0x66, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0x9f, 0x03, 0x0a, 0x11, 0x52, 0x65, + 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x52, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0d, 0xc8, + 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0e, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x0f, + 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, + 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, + 0x6e, 0x74, 0x52, 0x0e, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x42, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x12, 0x50, 0x0a, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x5f, 0x64, 0x73, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, - 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x49, 0x6e, 0x74, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x04, 0xe8, 0xa0, - 0x1f, 0x01, 0x22, 0xc9, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x0c, 0x72, - 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, - 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, - 0x2a, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x56, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, - 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, - 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0xeb, - 0x01, 0x0a, 0x04, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x71, 0x0a, 0x11, 0x6e, 0x6f, 0x74, 0x5f, 0x62, - 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x45, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, - 0x74, 0xea, 0xde, 0x1f, 0x11, 0x6e, 0x6f, 0x74, 0x5f, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x42, 0x6f, - 0x6e, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x66, 0x0a, 0x0d, 0x62, 0x6f, - 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x41, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, - 0xea, 0xde, 0x1f, 0x0d, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x73, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xa8, - 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x73, 0x3a, 0x08, 0xe8, 0xa0, 0x1f, 0x01, 0xf0, 0xa0, 0x1f, 0x01, 0x22, 0x59, 0x0a, 0x10, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, - 0x12, 0x45, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x61, - 0x62, 0x63, 0x69, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2a, 0xb6, 0x01, 0x0a, 0x0a, 0x42, 0x6f, 0x6e, 0x64, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, 0x17, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x1a, 0x0f, 0x8a, 0x9d, 0x20, 0x0b, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x14, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x42, 0x4f, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x01, 0x1a, 0x0c, - 0x8a, 0x9d, 0x20, 0x08, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x15, - 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x42, 0x4f, - 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x1a, 0x0d, 0x8a, 0x9d, 0x20, 0x09, 0x55, 0x6e, 0x62, - 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x22, 0x0a, 0x12, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x42, 0x4f, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x03, 0x1a, 0x0a, - 0x8a, 0x9d, 0x20, 0x06, 0x42, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x1a, 0x04, 0x88, 0xa3, 0x1e, 0x00, - 0x2a, 0x5d, 0x0a, 0x0a, 0x49, 0x6e, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, - 0x0a, 0x16, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x4e, - 0x46, 0x52, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x5f, - 0x53, 0x49, 0x47, 0x4e, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x43, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x02, 0x42, - 0xdc, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, - 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0c, - 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x53, 0x58, 0xaa, 0x02, 0x16, 0x43, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, - 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, - 0x22, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c, - 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0xea, 0x02, 0x18, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x53, 0x74, - 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x09, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x73, 0x44, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x75, 0x6e, 0x62, 0x6f, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x1b, 0x75, 0x6e, 0x62, 0x6f, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6e, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x66, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x75, 0x6e, + 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4f, 0x6e, 0x48, 0x6f, 0x6c, 0x64, 0x52, 0x65, 0x66, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0xdd, 0x02, 0x0a, 0x0c, + 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x11, + 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x55, 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x53, 0x72, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x55, 0x0a, 0x15, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x12, 0x4e, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, + 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x09, 0xc8, + 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x3a, 0x08, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0xe2, 0x06, 0x0a, 0x06, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x4f, 0x0a, 0x0e, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x98, + 0xdf, 0x1f, 0x01, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0d, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0d, 0x6d, 0x61, 0x78, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x1f, + 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, + 0x2d, 0x0a, 0x12, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x65, 0x6e, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x68, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1d, + 0x0a, 0x0a, 0x62, 0x6f, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x62, 0x6f, 0x6e, 0x64, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x84, 0x01, + 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x54, 0xc8, 0xde, 0x1f, + 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, + 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, + 0xf2, 0xde, 0x1f, 0x1a, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6f, + 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x22, 0xd2, 0xb4, + 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xa8, 0xe7, 0xb0, 0x2a, + 0x01, 0x52, 0x11, 0x6d, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x61, 0x74, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x5f, 0x62, 0x6f, 0x6e, 0x64, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x56, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, + 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xf2, 0xde, 0x1f, 0x1c, 0x79, 0x61, 0x6d, + 0x6c, 0x3a, 0x22, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x62, 0x6f, 0x6e, + 0x64, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x13, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x6f, 0x6e, 0x64, 0x46, 0x61, 0x63, 0x74, 0x6f, + 0x72, 0x12, 0x95, 0x01, 0x0a, 0x19, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x6c, 0x69, 0x71, + 0x75, 0x69, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x61, 0x70, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x5a, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, + 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xf2, 0xde, 0x1f, 0x20, 0x79, 0x61, + 0x6d, 0x6c, 0x3a, 0x22, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, + 0x64, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x61, 0x70, 0x22, 0xd2, 0xb4, + 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xa8, 0xe7, 0xb0, 0x2a, + 0x01, 0x52, 0x16, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x53, + 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x70, 0x12, 0x9e, 0x01, 0x0a, 0x1c, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x5f, 0x73, + 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x61, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x5d, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, + 0x63, 0x79, 0x44, 0x65, 0x63, 0xf2, 0xde, 0x1f, 0x23, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x5f, + 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x61, 0x70, 0x22, 0xd2, 0xb4, 0x2d, 0x0a, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, + 0x19, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, + 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x70, 0x3a, 0x24, 0xe8, 0xa0, 0x1f, 0x01, + 0x8a, 0xe7, 0xb0, 0x2a, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, + 0x78, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x22, 0xa9, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, + 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, + 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x62, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0xcd, 0x01, 0x0a, + 0x19, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x12, 0x72, 0x65, + 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x11, 0x72, 0x65, + 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x45, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, + 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x07, 0x62, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0xc9, 0x01, 0x0a, + 0x14, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x0c, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0c, 0x72, 0x65, + 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x07, 0x65, 0x6e, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x09, + 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0xeb, 0x01, 0x0a, 0x04, 0x50, 0x6f, 0x6f, + 0x6c, 0x12, 0x71, 0x0a, 0x11, 0x6e, 0x6f, 0x74, 0x5f, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x45, 0xc8, 0xde, + 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, + 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xea, 0xde, 0x1f, 0x11, 0x6e, + 0x6f, 0x74, 0x5f, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, + 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, + 0xb0, 0x2a, 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x42, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x66, 0x0a, 0x0d, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x41, 0xc8, 0xde, 0x1f, + 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, + 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xea, 0xde, 0x1f, 0x0d, 0x62, 0x6f, + 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0c, + 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x3a, 0x08, 0xe8, 0xa0, + 0x1f, 0x01, 0xf0, 0xa0, 0x1f, 0x01, 0x22, 0x59, 0x0a, 0x10, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x07, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x61, 0x62, 0x63, 0x69, 0x2e, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x09, 0xc8, + 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x73, 0x22, 0x86, 0x01, 0x0a, 0x13, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, + 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, + 0x25, 0x0a, 0x0e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x6f, 0x72, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0x42, 0x0a, 0x22, 0x50, 0x65, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, + 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x2a, 0xb6, + 0x01, 0x0a, 0x0a, 0x42, 0x6f, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, + 0x17, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x1a, 0x0f, 0x8a, 0x9d, 0x20, 0x0b, + 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x14, 0x42, + 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x42, 0x4f, 0x4e, + 0x44, 0x45, 0x44, 0x10, 0x01, 0x1a, 0x0c, 0x8a, 0x9d, 0x20, 0x08, 0x55, 0x6e, 0x62, 0x6f, 0x6e, + 0x64, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x15, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x42, 0x4f, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x1a, 0x0d, + 0x8a, 0x9d, 0x20, 0x09, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x22, 0x0a, + 0x12, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x42, 0x4f, 0x4e, + 0x44, 0x45, 0x44, 0x10, 0x03, 0x1a, 0x0a, 0x8a, 0x9d, 0x20, 0x06, 0x42, 0x6f, 0x6e, 0x64, 0x65, + 0x64, 0x1a, 0x04, 0x88, 0xa3, 0x1e, 0x00, 0x2a, 0x5d, 0x0a, 0x0a, 0x49, 0x6e, 0x66, 0x72, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x43, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x01, 0x12, 0x17, 0x0a, + 0x13, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x4f, 0x57, 0x4e, + 0x54, 0x49, 0x4d, 0x45, 0x10, 0x02, 0x2a, 0xc9, 0x01, 0x0a, 0x17, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x2a, 0x0a, 0x26, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x49, 0x5a, 0x45, 0x5f, 0x53, + 0x48, 0x41, 0x52, 0x45, 0x5f, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x25, + 0x0a, 0x21, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x49, 0x5a, 0x45, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, + 0x5f, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4c, 0x4f, 0x43, + 0x4b, 0x45, 0x44, 0x10, 0x01, 0x12, 0x27, 0x0a, 0x23, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x49, 0x5a, + 0x45, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x5f, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x02, 0x12, 0x2c, + 0x0a, 0x28, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x49, 0x5a, 0x45, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, + 0x5f, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4c, 0x4f, 0x43, + 0x4b, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x1a, 0x04, 0x88, 0xa3, + 0x1e, 0x00, 0x42, 0xdc, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x42, 0x0c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x36, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, + 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x73, 0x74, 0x61, 0x6b, 0x69, + 0x6e, 0x67, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x53, 0x58, 0xaa, + 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0xe2, 0x02, 0x22, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, 0x69, + 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x18, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, + 0x3a, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -14438,62 +16171,65 @@ func file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP() []byte { return file_cosmos_staking_v1beta1_staking_proto_rawDescData } -var file_cosmos_staking_v1beta1_staking_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_cosmos_staking_v1beta1_staking_proto_msgTypes = make([]protoimpl.MessageInfo, 21) +var file_cosmos_staking_v1beta1_staking_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_cosmos_staking_v1beta1_staking_proto_msgTypes = make([]protoimpl.MessageInfo, 23) var file_cosmos_staking_v1beta1_staking_proto_goTypes = []interface{}{ - (BondStatus)(0), // 0: cosmos.staking.v1beta1.BondStatus - (Infraction)(0), // 1: cosmos.staking.v1beta1.Infraction - (*HistoricalInfo)(nil), // 2: cosmos.staking.v1beta1.HistoricalInfo - (*CommissionRates)(nil), // 3: cosmos.staking.v1beta1.CommissionRates - (*Commission)(nil), // 4: cosmos.staking.v1beta1.Commission - (*Description)(nil), // 5: cosmos.staking.v1beta1.Description - (*Validator)(nil), // 6: cosmos.staking.v1beta1.Validator - (*ValAddresses)(nil), // 7: cosmos.staking.v1beta1.ValAddresses - (*DVPair)(nil), // 8: cosmos.staking.v1beta1.DVPair - (*DVPairs)(nil), // 9: cosmos.staking.v1beta1.DVPairs - (*DVVTriplet)(nil), // 10: cosmos.staking.v1beta1.DVVTriplet - (*DVVTriplets)(nil), // 11: cosmos.staking.v1beta1.DVVTriplets - (*Delegation)(nil), // 12: cosmos.staking.v1beta1.Delegation - (*UnbondingDelegation)(nil), // 13: cosmos.staking.v1beta1.UnbondingDelegation - (*UnbondingDelegationEntry)(nil), // 14: cosmos.staking.v1beta1.UnbondingDelegationEntry - (*RedelegationEntry)(nil), // 15: cosmos.staking.v1beta1.RedelegationEntry - (*Redelegation)(nil), // 16: cosmos.staking.v1beta1.Redelegation - (*Params)(nil), // 17: cosmos.staking.v1beta1.Params - (*DelegationResponse)(nil), // 18: cosmos.staking.v1beta1.DelegationResponse - (*RedelegationEntryResponse)(nil), // 19: cosmos.staking.v1beta1.RedelegationEntryResponse - (*RedelegationResponse)(nil), // 20: cosmos.staking.v1beta1.RedelegationResponse - (*Pool)(nil), // 21: cosmos.staking.v1beta1.Pool - (*ValidatorUpdates)(nil), // 22: cosmos.staking.v1beta1.ValidatorUpdates - (*types.Header)(nil), // 23: tendermint.types.Header - (*timestamppb.Timestamp)(nil), // 24: google.protobuf.Timestamp - (*anypb.Any)(nil), // 25: google.protobuf.Any - (*durationpb.Duration)(nil), // 26: google.protobuf.Duration - (*v1beta1.Coin)(nil), // 27: cosmos.base.v1beta1.Coin - (*abci.ValidatorUpdate)(nil), // 28: tendermint.abci.ValidatorUpdate + (BondStatus)(0), // 0: cosmos.staking.v1beta1.BondStatus + (Infraction)(0), // 1: cosmos.staking.v1beta1.Infraction + (TokenizeShareLockStatus)(0), // 2: cosmos.staking.v1beta1.TokenizeShareLockStatus + (*HistoricalInfo)(nil), // 3: cosmos.staking.v1beta1.HistoricalInfo + (*CommissionRates)(nil), // 4: cosmos.staking.v1beta1.CommissionRates + (*Commission)(nil), // 5: cosmos.staking.v1beta1.Commission + (*Description)(nil), // 6: cosmos.staking.v1beta1.Description + (*Validator)(nil), // 7: cosmos.staking.v1beta1.Validator + (*ValAddresses)(nil), // 8: cosmos.staking.v1beta1.ValAddresses + (*DVPair)(nil), // 9: cosmos.staking.v1beta1.DVPair + (*DVPairs)(nil), // 10: cosmos.staking.v1beta1.DVPairs + (*DVVTriplet)(nil), // 11: cosmos.staking.v1beta1.DVVTriplet + (*DVVTriplets)(nil), // 12: cosmos.staking.v1beta1.DVVTriplets + (*Delegation)(nil), // 13: cosmos.staking.v1beta1.Delegation + (*UnbondingDelegation)(nil), // 14: cosmos.staking.v1beta1.UnbondingDelegation + (*UnbondingDelegationEntry)(nil), // 15: cosmos.staking.v1beta1.UnbondingDelegationEntry + (*RedelegationEntry)(nil), // 16: cosmos.staking.v1beta1.RedelegationEntry + (*Redelegation)(nil), // 17: cosmos.staking.v1beta1.Redelegation + (*Params)(nil), // 18: cosmos.staking.v1beta1.Params + (*DelegationResponse)(nil), // 19: cosmos.staking.v1beta1.DelegationResponse + (*RedelegationEntryResponse)(nil), // 20: cosmos.staking.v1beta1.RedelegationEntryResponse + (*RedelegationResponse)(nil), // 21: cosmos.staking.v1beta1.RedelegationResponse + (*Pool)(nil), // 22: cosmos.staking.v1beta1.Pool + (*ValidatorUpdates)(nil), // 23: cosmos.staking.v1beta1.ValidatorUpdates + (*TokenizeShareRecord)(nil), // 24: cosmos.staking.v1beta1.TokenizeShareRecord + (*PendingTokenizeShareAuthorizations)(nil), // 25: cosmos.staking.v1beta1.PendingTokenizeShareAuthorizations + (*types.Header)(nil), // 26: tendermint.types.Header + (*timestamppb.Timestamp)(nil), // 27: google.protobuf.Timestamp + (*anypb.Any)(nil), // 28: google.protobuf.Any + (*durationpb.Duration)(nil), // 29: google.protobuf.Duration + (*v1beta1.Coin)(nil), // 30: cosmos.base.v1beta1.Coin + (*abci.ValidatorUpdate)(nil), // 31: tendermint.abci.ValidatorUpdate } var file_cosmos_staking_v1beta1_staking_proto_depIdxs = []int32{ - 23, // 0: cosmos.staking.v1beta1.HistoricalInfo.header:type_name -> tendermint.types.Header - 6, // 1: cosmos.staking.v1beta1.HistoricalInfo.valset:type_name -> cosmos.staking.v1beta1.Validator - 3, // 2: cosmos.staking.v1beta1.Commission.commission_rates:type_name -> cosmos.staking.v1beta1.CommissionRates - 24, // 3: cosmos.staking.v1beta1.Commission.update_time:type_name -> google.protobuf.Timestamp - 25, // 4: cosmos.staking.v1beta1.Validator.consensus_pubkey:type_name -> google.protobuf.Any + 26, // 0: cosmos.staking.v1beta1.HistoricalInfo.header:type_name -> tendermint.types.Header + 7, // 1: cosmos.staking.v1beta1.HistoricalInfo.valset:type_name -> cosmos.staking.v1beta1.Validator + 4, // 2: cosmos.staking.v1beta1.Commission.commission_rates:type_name -> cosmos.staking.v1beta1.CommissionRates + 27, // 3: cosmos.staking.v1beta1.Commission.update_time:type_name -> google.protobuf.Timestamp + 28, // 4: cosmos.staking.v1beta1.Validator.consensus_pubkey:type_name -> google.protobuf.Any 0, // 5: cosmos.staking.v1beta1.Validator.status:type_name -> cosmos.staking.v1beta1.BondStatus - 5, // 6: cosmos.staking.v1beta1.Validator.description:type_name -> cosmos.staking.v1beta1.Description - 24, // 7: cosmos.staking.v1beta1.Validator.unbonding_time:type_name -> google.protobuf.Timestamp - 4, // 8: cosmos.staking.v1beta1.Validator.commission:type_name -> cosmos.staking.v1beta1.Commission - 8, // 9: cosmos.staking.v1beta1.DVPairs.pairs:type_name -> cosmos.staking.v1beta1.DVPair - 10, // 10: cosmos.staking.v1beta1.DVVTriplets.triplets:type_name -> cosmos.staking.v1beta1.DVVTriplet - 14, // 11: cosmos.staking.v1beta1.UnbondingDelegation.entries:type_name -> cosmos.staking.v1beta1.UnbondingDelegationEntry - 24, // 12: cosmos.staking.v1beta1.UnbondingDelegationEntry.completion_time:type_name -> google.protobuf.Timestamp - 24, // 13: cosmos.staking.v1beta1.RedelegationEntry.completion_time:type_name -> google.protobuf.Timestamp - 15, // 14: cosmos.staking.v1beta1.Redelegation.entries:type_name -> cosmos.staking.v1beta1.RedelegationEntry - 26, // 15: cosmos.staking.v1beta1.Params.unbonding_time:type_name -> google.protobuf.Duration - 12, // 16: cosmos.staking.v1beta1.DelegationResponse.delegation:type_name -> cosmos.staking.v1beta1.Delegation - 27, // 17: cosmos.staking.v1beta1.DelegationResponse.balance:type_name -> cosmos.base.v1beta1.Coin - 15, // 18: cosmos.staking.v1beta1.RedelegationEntryResponse.redelegation_entry:type_name -> cosmos.staking.v1beta1.RedelegationEntry - 16, // 19: cosmos.staking.v1beta1.RedelegationResponse.redelegation:type_name -> cosmos.staking.v1beta1.Redelegation - 19, // 20: cosmos.staking.v1beta1.RedelegationResponse.entries:type_name -> cosmos.staking.v1beta1.RedelegationEntryResponse - 28, // 21: cosmos.staking.v1beta1.ValidatorUpdates.updates:type_name -> tendermint.abci.ValidatorUpdate + 6, // 6: cosmos.staking.v1beta1.Validator.description:type_name -> cosmos.staking.v1beta1.Description + 27, // 7: cosmos.staking.v1beta1.Validator.unbonding_time:type_name -> google.protobuf.Timestamp + 5, // 8: cosmos.staking.v1beta1.Validator.commission:type_name -> cosmos.staking.v1beta1.Commission + 9, // 9: cosmos.staking.v1beta1.DVPairs.pairs:type_name -> cosmos.staking.v1beta1.DVPair + 11, // 10: cosmos.staking.v1beta1.DVVTriplets.triplets:type_name -> cosmos.staking.v1beta1.DVVTriplet + 15, // 11: cosmos.staking.v1beta1.UnbondingDelegation.entries:type_name -> cosmos.staking.v1beta1.UnbondingDelegationEntry + 27, // 12: cosmos.staking.v1beta1.UnbondingDelegationEntry.completion_time:type_name -> google.protobuf.Timestamp + 27, // 13: cosmos.staking.v1beta1.RedelegationEntry.completion_time:type_name -> google.protobuf.Timestamp + 16, // 14: cosmos.staking.v1beta1.Redelegation.entries:type_name -> cosmos.staking.v1beta1.RedelegationEntry + 29, // 15: cosmos.staking.v1beta1.Params.unbonding_time:type_name -> google.protobuf.Duration + 13, // 16: cosmos.staking.v1beta1.DelegationResponse.delegation:type_name -> cosmos.staking.v1beta1.Delegation + 30, // 17: cosmos.staking.v1beta1.DelegationResponse.balance:type_name -> cosmos.base.v1beta1.Coin + 16, // 18: cosmos.staking.v1beta1.RedelegationEntryResponse.redelegation_entry:type_name -> cosmos.staking.v1beta1.RedelegationEntry + 17, // 19: cosmos.staking.v1beta1.RedelegationResponse.redelegation:type_name -> cosmos.staking.v1beta1.Redelegation + 20, // 20: cosmos.staking.v1beta1.RedelegationResponse.entries:type_name -> cosmos.staking.v1beta1.RedelegationEntryResponse + 31, // 21: cosmos.staking.v1beta1.ValidatorUpdates.updates:type_name -> tendermint.abci.ValidatorUpdate 22, // [22:22] is the sub-list for method output_type 22, // [22:22] is the sub-list for method input_type 22, // [22:22] is the sub-list for extension type_name @@ -14759,14 +16495,38 @@ func file_cosmos_staking_v1beta1_staking_proto_init() { return nil } } + file_cosmos_staking_v1beta1_staking_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TokenizeShareRecord); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_staking_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PendingTokenizeShareAuthorizations); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_cosmos_staking_v1beta1_staking_proto_rawDesc, - NumEnums: 2, - NumMessages: 21, + NumEnums: 3, + NumMessages: 23, NumExtensions: 0, NumServices: 0, }, diff --git a/api/cosmos/staking/v1beta1/tx.pulsar.go b/api/cosmos/staking/v1beta1/tx.pulsar.go index 36214b35c38e..c735cd224add 100644 --- a/api/cosmos/staking/v1beta1/tx.pulsar.go +++ b/api/cosmos/staking/v1beta1/tx.pulsar.go @@ -7102,675 +7102,7342 @@ func (x *fastReflection_MsgUpdateParamsResponse) ProtoMethods() *protoiface.Meth } } +var ( + md_MsgUnbondValidator protoreflect.MessageDescriptor + fd_MsgUnbondValidator_validator_address protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_tx_proto_init() + md_MsgUnbondValidator = File_cosmos_staking_v1beta1_tx_proto.Messages().ByName("MsgUnbondValidator") + fd_MsgUnbondValidator_validator_address = md_MsgUnbondValidator.Fields().ByName("validator_address") +} + +var _ protoreflect.Message = (*fastReflection_MsgUnbondValidator)(nil) + +type fastReflection_MsgUnbondValidator MsgUnbondValidator + +func (x *MsgUnbondValidator) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgUnbondValidator)(x) +} + +func (x *MsgUnbondValidator) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgUnbondValidator_messageType fastReflection_MsgUnbondValidator_messageType +var _ protoreflect.MessageType = fastReflection_MsgUnbondValidator_messageType{} + +type fastReflection_MsgUnbondValidator_messageType struct{} + +func (x fastReflection_MsgUnbondValidator_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgUnbondValidator)(nil) +} +func (x fastReflection_MsgUnbondValidator_messageType) New() protoreflect.Message { + return new(fastReflection_MsgUnbondValidator) +} +func (x fastReflection_MsgUnbondValidator_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUnbondValidator +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgUnbondValidator) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUnbondValidator +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgUnbondValidator) Type() protoreflect.MessageType { + return _fastReflection_MsgUnbondValidator_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgUnbondValidator) New() protoreflect.Message { + return new(fastReflection_MsgUnbondValidator) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgUnbondValidator) Interface() protoreflect.ProtoMessage { + return (*MsgUnbondValidator)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgUnbondValidator) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.ValidatorAddress != "" { + value := protoreflect.ValueOfString(x.ValidatorAddress) + if !f(fd_MsgUnbondValidator_validator_address, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgUnbondValidator) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgUnbondValidator.validator_address": + return x.ValidatorAddress != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgUnbondValidator")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgUnbondValidator does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUnbondValidator) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgUnbondValidator.validator_address": + x.ValidatorAddress = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgUnbondValidator")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgUnbondValidator does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgUnbondValidator) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.MsgUnbondValidator.validator_address": + value := x.ValidatorAddress + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgUnbondValidator")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgUnbondValidator does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUnbondValidator) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgUnbondValidator.validator_address": + x.ValidatorAddress = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgUnbondValidator")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgUnbondValidator does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUnbondValidator) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgUnbondValidator.validator_address": + panic(fmt.Errorf("field validator_address of message cosmos.staking.v1beta1.MsgUnbondValidator is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgUnbondValidator")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgUnbondValidator does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgUnbondValidator) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgUnbondValidator.validator_address": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgUnbondValidator")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgUnbondValidator does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgUnbondValidator) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.MsgUnbondValidator", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgUnbondValidator) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUnbondValidator) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgUnbondValidator) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgUnbondValidator) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgUnbondValidator) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.ValidatorAddress) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgUnbondValidator) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.ValidatorAddress) > 0 { + i -= len(x.ValidatorAddress) + copy(dAtA[i:], x.ValidatorAddress) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ValidatorAddress))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgUnbondValidator) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUnbondValidator: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUnbondValidator: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.ValidatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgUnbondValidatorResponse protoreflect.MessageDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_tx_proto_init() + md_MsgUnbondValidatorResponse = File_cosmos_staking_v1beta1_tx_proto.Messages().ByName("MsgUnbondValidatorResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgUnbondValidatorResponse)(nil) + +type fastReflection_MsgUnbondValidatorResponse MsgUnbondValidatorResponse + +func (x *MsgUnbondValidatorResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgUnbondValidatorResponse)(x) +} + +func (x *MsgUnbondValidatorResponse) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgUnbondValidatorResponse_messageType fastReflection_MsgUnbondValidatorResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgUnbondValidatorResponse_messageType{} + +type fastReflection_MsgUnbondValidatorResponse_messageType struct{} + +func (x fastReflection_MsgUnbondValidatorResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgUnbondValidatorResponse)(nil) +} +func (x fastReflection_MsgUnbondValidatorResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgUnbondValidatorResponse) +} +func (x fastReflection_MsgUnbondValidatorResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUnbondValidatorResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgUnbondValidatorResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUnbondValidatorResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgUnbondValidatorResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgUnbondValidatorResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgUnbondValidatorResponse) New() protoreflect.Message { + return new(fastReflection_MsgUnbondValidatorResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgUnbondValidatorResponse) Interface() protoreflect.ProtoMessage { + return (*MsgUnbondValidatorResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgUnbondValidatorResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgUnbondValidatorResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgUnbondValidatorResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgUnbondValidatorResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUnbondValidatorResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgUnbondValidatorResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgUnbondValidatorResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgUnbondValidatorResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgUnbondValidatorResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgUnbondValidatorResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUnbondValidatorResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgUnbondValidatorResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgUnbondValidatorResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUnbondValidatorResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgUnbondValidatorResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgUnbondValidatorResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgUnbondValidatorResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgUnbondValidatorResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgUnbondValidatorResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgUnbondValidatorResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.MsgUnbondValidatorResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgUnbondValidatorResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUnbondValidatorResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgUnbondValidatorResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgUnbondValidatorResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgUnbondValidatorResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgUnbondValidatorResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgUnbondValidatorResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUnbondValidatorResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUnbondValidatorResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgTokenizeShares protoreflect.MessageDescriptor + fd_MsgTokenizeShares_delegator_address protoreflect.FieldDescriptor + fd_MsgTokenizeShares_validator_address protoreflect.FieldDescriptor + fd_MsgTokenizeShares_amount protoreflect.FieldDescriptor + fd_MsgTokenizeShares_tokenized_share_owner protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_tx_proto_init() + md_MsgTokenizeShares = File_cosmos_staking_v1beta1_tx_proto.Messages().ByName("MsgTokenizeShares") + fd_MsgTokenizeShares_delegator_address = md_MsgTokenizeShares.Fields().ByName("delegator_address") + fd_MsgTokenizeShares_validator_address = md_MsgTokenizeShares.Fields().ByName("validator_address") + fd_MsgTokenizeShares_amount = md_MsgTokenizeShares.Fields().ByName("amount") + fd_MsgTokenizeShares_tokenized_share_owner = md_MsgTokenizeShares.Fields().ByName("tokenized_share_owner") +} + +var _ protoreflect.Message = (*fastReflection_MsgTokenizeShares)(nil) + +type fastReflection_MsgTokenizeShares MsgTokenizeShares + +func (x *MsgTokenizeShares) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgTokenizeShares)(x) +} + +func (x *MsgTokenizeShares) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgTokenizeShares_messageType fastReflection_MsgTokenizeShares_messageType +var _ protoreflect.MessageType = fastReflection_MsgTokenizeShares_messageType{} + +type fastReflection_MsgTokenizeShares_messageType struct{} + +func (x fastReflection_MsgTokenizeShares_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgTokenizeShares)(nil) +} +func (x fastReflection_MsgTokenizeShares_messageType) New() protoreflect.Message { + return new(fastReflection_MsgTokenizeShares) +} +func (x fastReflection_MsgTokenizeShares_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgTokenizeShares +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgTokenizeShares) Descriptor() protoreflect.MessageDescriptor { + return md_MsgTokenizeShares +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgTokenizeShares) Type() protoreflect.MessageType { + return _fastReflection_MsgTokenizeShares_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgTokenizeShares) New() protoreflect.Message { + return new(fastReflection_MsgTokenizeShares) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgTokenizeShares) Interface() protoreflect.ProtoMessage { + return (*MsgTokenizeShares)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgTokenizeShares) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.DelegatorAddress != "" { + value := protoreflect.ValueOfString(x.DelegatorAddress) + if !f(fd_MsgTokenizeShares_delegator_address, value) { + return + } + } + if x.ValidatorAddress != "" { + value := protoreflect.ValueOfString(x.ValidatorAddress) + if !f(fd_MsgTokenizeShares_validator_address, value) { + return + } + } + if x.Amount != nil { + value := protoreflect.ValueOfMessage(x.Amount.ProtoReflect()) + if !f(fd_MsgTokenizeShares_amount, value) { + return + } + } + if x.TokenizedShareOwner != "" { + value := protoreflect.ValueOfString(x.TokenizedShareOwner) + if !f(fd_MsgTokenizeShares_tokenized_share_owner, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgTokenizeShares) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgTokenizeShares.delegator_address": + return x.DelegatorAddress != "" + case "cosmos.staking.v1beta1.MsgTokenizeShares.validator_address": + return x.ValidatorAddress != "" + case "cosmos.staking.v1beta1.MsgTokenizeShares.amount": + return x.Amount != nil + case "cosmos.staking.v1beta1.MsgTokenizeShares.tokenized_share_owner": + return x.TokenizedShareOwner != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgTokenizeShares")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgTokenizeShares does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgTokenizeShares) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgTokenizeShares.delegator_address": + x.DelegatorAddress = "" + case "cosmos.staking.v1beta1.MsgTokenizeShares.validator_address": + x.ValidatorAddress = "" + case "cosmos.staking.v1beta1.MsgTokenizeShares.amount": + x.Amount = nil + case "cosmos.staking.v1beta1.MsgTokenizeShares.tokenized_share_owner": + x.TokenizedShareOwner = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgTokenizeShares")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgTokenizeShares does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgTokenizeShares) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.MsgTokenizeShares.delegator_address": + value := x.DelegatorAddress + return protoreflect.ValueOfString(value) + case "cosmos.staking.v1beta1.MsgTokenizeShares.validator_address": + value := x.ValidatorAddress + return protoreflect.ValueOfString(value) + case "cosmos.staking.v1beta1.MsgTokenizeShares.amount": + value := x.Amount + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "cosmos.staking.v1beta1.MsgTokenizeShares.tokenized_share_owner": + value := x.TokenizedShareOwner + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgTokenizeShares")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgTokenizeShares does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgTokenizeShares) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgTokenizeShares.delegator_address": + x.DelegatorAddress = value.Interface().(string) + case "cosmos.staking.v1beta1.MsgTokenizeShares.validator_address": + x.ValidatorAddress = value.Interface().(string) + case "cosmos.staking.v1beta1.MsgTokenizeShares.amount": + x.Amount = value.Message().Interface().(*v1beta1.Coin) + case "cosmos.staking.v1beta1.MsgTokenizeShares.tokenized_share_owner": + x.TokenizedShareOwner = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgTokenizeShares")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgTokenizeShares does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgTokenizeShares) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgTokenizeShares.amount": + if x.Amount == nil { + x.Amount = new(v1beta1.Coin) + } + return protoreflect.ValueOfMessage(x.Amount.ProtoReflect()) + case "cosmos.staking.v1beta1.MsgTokenizeShares.delegator_address": + panic(fmt.Errorf("field delegator_address of message cosmos.staking.v1beta1.MsgTokenizeShares is not mutable")) + case "cosmos.staking.v1beta1.MsgTokenizeShares.validator_address": + panic(fmt.Errorf("field validator_address of message cosmos.staking.v1beta1.MsgTokenizeShares is not mutable")) + case "cosmos.staking.v1beta1.MsgTokenizeShares.tokenized_share_owner": + panic(fmt.Errorf("field tokenized_share_owner of message cosmos.staking.v1beta1.MsgTokenizeShares is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgTokenizeShares")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgTokenizeShares does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgTokenizeShares) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgTokenizeShares.delegator_address": + return protoreflect.ValueOfString("") + case "cosmos.staking.v1beta1.MsgTokenizeShares.validator_address": + return protoreflect.ValueOfString("") + case "cosmos.staking.v1beta1.MsgTokenizeShares.amount": + m := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "cosmos.staking.v1beta1.MsgTokenizeShares.tokenized_share_owner": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgTokenizeShares")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgTokenizeShares does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgTokenizeShares) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.MsgTokenizeShares", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgTokenizeShares) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgTokenizeShares) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgTokenizeShares) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgTokenizeShares) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgTokenizeShares) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.DelegatorAddress) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.ValidatorAddress) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Amount != nil { + l = options.Size(x.Amount) + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.TokenizedShareOwner) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgTokenizeShares) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.TokenizedShareOwner) > 0 { + i -= len(x.TokenizedShareOwner) + copy(dAtA[i:], x.TokenizedShareOwner) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.TokenizedShareOwner))) + i-- + dAtA[i] = 0x22 + } + if x.Amount != nil { + encoded, err := options.Marshal(x.Amount) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x1a + } + if len(x.ValidatorAddress) > 0 { + i -= len(x.ValidatorAddress) + copy(dAtA[i:], x.ValidatorAddress) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ValidatorAddress))) + i-- + dAtA[i] = 0x12 + } + if len(x.DelegatorAddress) > 0 { + i -= len(x.DelegatorAddress) + copy(dAtA[i:], x.DelegatorAddress) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.DelegatorAddress))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgTokenizeShares) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgTokenizeShares: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgTokenizeShares: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field DelegatorAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.DelegatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.ValidatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Amount == nil { + x.Amount = &v1beta1.Coin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Amount); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field TokenizedShareOwner", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.TokenizedShareOwner = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgTokenizeSharesResponse protoreflect.MessageDescriptor + fd_MsgTokenizeSharesResponse_amount protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_tx_proto_init() + md_MsgTokenizeSharesResponse = File_cosmos_staking_v1beta1_tx_proto.Messages().ByName("MsgTokenizeSharesResponse") + fd_MsgTokenizeSharesResponse_amount = md_MsgTokenizeSharesResponse.Fields().ByName("amount") +} + +var _ protoreflect.Message = (*fastReflection_MsgTokenizeSharesResponse)(nil) + +type fastReflection_MsgTokenizeSharesResponse MsgTokenizeSharesResponse + +func (x *MsgTokenizeSharesResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgTokenizeSharesResponse)(x) +} + +func (x *MsgTokenizeSharesResponse) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgTokenizeSharesResponse_messageType fastReflection_MsgTokenizeSharesResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgTokenizeSharesResponse_messageType{} + +type fastReflection_MsgTokenizeSharesResponse_messageType struct{} + +func (x fastReflection_MsgTokenizeSharesResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgTokenizeSharesResponse)(nil) +} +func (x fastReflection_MsgTokenizeSharesResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgTokenizeSharesResponse) +} +func (x fastReflection_MsgTokenizeSharesResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgTokenizeSharesResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgTokenizeSharesResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgTokenizeSharesResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgTokenizeSharesResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgTokenizeSharesResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgTokenizeSharesResponse) New() protoreflect.Message { + return new(fastReflection_MsgTokenizeSharesResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgTokenizeSharesResponse) Interface() protoreflect.ProtoMessage { + return (*MsgTokenizeSharesResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgTokenizeSharesResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Amount != nil { + value := protoreflect.ValueOfMessage(x.Amount.ProtoReflect()) + if !f(fd_MsgTokenizeSharesResponse_amount, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgTokenizeSharesResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgTokenizeSharesResponse.amount": + return x.Amount != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgTokenizeSharesResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgTokenizeSharesResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgTokenizeSharesResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgTokenizeSharesResponse.amount": + x.Amount = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgTokenizeSharesResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgTokenizeSharesResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgTokenizeSharesResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.MsgTokenizeSharesResponse.amount": + value := x.Amount + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgTokenizeSharesResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgTokenizeSharesResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgTokenizeSharesResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgTokenizeSharesResponse.amount": + x.Amount = value.Message().Interface().(*v1beta1.Coin) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgTokenizeSharesResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgTokenizeSharesResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgTokenizeSharesResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgTokenizeSharesResponse.amount": + if x.Amount == nil { + x.Amount = new(v1beta1.Coin) + } + return protoreflect.ValueOfMessage(x.Amount.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgTokenizeSharesResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgTokenizeSharesResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgTokenizeSharesResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgTokenizeSharesResponse.amount": + m := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgTokenizeSharesResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgTokenizeSharesResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgTokenizeSharesResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.MsgTokenizeSharesResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgTokenizeSharesResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgTokenizeSharesResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgTokenizeSharesResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgTokenizeSharesResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgTokenizeSharesResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Amount != nil { + l = options.Size(x.Amount) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgTokenizeSharesResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Amount != nil { + encoded, err := options.Marshal(x.Amount) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgTokenizeSharesResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgTokenizeSharesResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgTokenizeSharesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Amount == nil { + x.Amount = &v1beta1.Coin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Amount); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgRedeemTokensForShares protoreflect.MessageDescriptor + fd_MsgRedeemTokensForShares_delegator_address protoreflect.FieldDescriptor + fd_MsgRedeemTokensForShares_amount protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_tx_proto_init() + md_MsgRedeemTokensForShares = File_cosmos_staking_v1beta1_tx_proto.Messages().ByName("MsgRedeemTokensForShares") + fd_MsgRedeemTokensForShares_delegator_address = md_MsgRedeemTokensForShares.Fields().ByName("delegator_address") + fd_MsgRedeemTokensForShares_amount = md_MsgRedeemTokensForShares.Fields().ByName("amount") +} + +var _ protoreflect.Message = (*fastReflection_MsgRedeemTokensForShares)(nil) + +type fastReflection_MsgRedeemTokensForShares MsgRedeemTokensForShares + +func (x *MsgRedeemTokensForShares) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgRedeemTokensForShares)(x) +} + +func (x *MsgRedeemTokensForShares) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgRedeemTokensForShares_messageType fastReflection_MsgRedeemTokensForShares_messageType +var _ protoreflect.MessageType = fastReflection_MsgRedeemTokensForShares_messageType{} + +type fastReflection_MsgRedeemTokensForShares_messageType struct{} + +func (x fastReflection_MsgRedeemTokensForShares_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgRedeemTokensForShares)(nil) +} +func (x fastReflection_MsgRedeemTokensForShares_messageType) New() protoreflect.Message { + return new(fastReflection_MsgRedeemTokensForShares) +} +func (x fastReflection_MsgRedeemTokensForShares_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRedeemTokensForShares +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgRedeemTokensForShares) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRedeemTokensForShares +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgRedeemTokensForShares) Type() protoreflect.MessageType { + return _fastReflection_MsgRedeemTokensForShares_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgRedeemTokensForShares) New() protoreflect.Message { + return new(fastReflection_MsgRedeemTokensForShares) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgRedeemTokensForShares) Interface() protoreflect.ProtoMessage { + return (*MsgRedeemTokensForShares)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgRedeemTokensForShares) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.DelegatorAddress != "" { + value := protoreflect.ValueOfString(x.DelegatorAddress) + if !f(fd_MsgRedeemTokensForShares_delegator_address, value) { + return + } + } + if x.Amount != nil { + value := protoreflect.ValueOfMessage(x.Amount.ProtoReflect()) + if !f(fd_MsgRedeemTokensForShares_amount, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgRedeemTokensForShares) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgRedeemTokensForShares.delegator_address": + return x.DelegatorAddress != "" + case "cosmos.staking.v1beta1.MsgRedeemTokensForShares.amount": + return x.Amount != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgRedeemTokensForShares")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgRedeemTokensForShares does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRedeemTokensForShares) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgRedeemTokensForShares.delegator_address": + x.DelegatorAddress = "" + case "cosmos.staking.v1beta1.MsgRedeemTokensForShares.amount": + x.Amount = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgRedeemTokensForShares")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgRedeemTokensForShares does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgRedeemTokensForShares) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.MsgRedeemTokensForShares.delegator_address": + value := x.DelegatorAddress + return protoreflect.ValueOfString(value) + case "cosmos.staking.v1beta1.MsgRedeemTokensForShares.amount": + value := x.Amount + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgRedeemTokensForShares")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgRedeemTokensForShares does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRedeemTokensForShares) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgRedeemTokensForShares.delegator_address": + x.DelegatorAddress = value.Interface().(string) + case "cosmos.staking.v1beta1.MsgRedeemTokensForShares.amount": + x.Amount = value.Message().Interface().(*v1beta1.Coin) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgRedeemTokensForShares")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgRedeemTokensForShares does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRedeemTokensForShares) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgRedeemTokensForShares.amount": + if x.Amount == nil { + x.Amount = new(v1beta1.Coin) + } + return protoreflect.ValueOfMessage(x.Amount.ProtoReflect()) + case "cosmos.staking.v1beta1.MsgRedeemTokensForShares.delegator_address": + panic(fmt.Errorf("field delegator_address of message cosmos.staking.v1beta1.MsgRedeemTokensForShares is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgRedeemTokensForShares")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgRedeemTokensForShares does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgRedeemTokensForShares) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgRedeemTokensForShares.delegator_address": + return protoreflect.ValueOfString("") + case "cosmos.staking.v1beta1.MsgRedeemTokensForShares.amount": + m := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgRedeemTokensForShares")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgRedeemTokensForShares does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgRedeemTokensForShares) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.MsgRedeemTokensForShares", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgRedeemTokensForShares) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRedeemTokensForShares) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgRedeemTokensForShares) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgRedeemTokensForShares) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgRedeemTokensForShares) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.DelegatorAddress) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Amount != nil { + l = options.Size(x.Amount) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgRedeemTokensForShares) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Amount != nil { + encoded, err := options.Marshal(x.Amount) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if len(x.DelegatorAddress) > 0 { + i -= len(x.DelegatorAddress) + copy(dAtA[i:], x.DelegatorAddress) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.DelegatorAddress))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgRedeemTokensForShares) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRedeemTokensForShares: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRedeemTokensForShares: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field DelegatorAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.DelegatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Amount == nil { + x.Amount = &v1beta1.Coin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Amount); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgRedeemTokensForSharesResponse protoreflect.MessageDescriptor + fd_MsgRedeemTokensForSharesResponse_amount protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_tx_proto_init() + md_MsgRedeemTokensForSharesResponse = File_cosmos_staking_v1beta1_tx_proto.Messages().ByName("MsgRedeemTokensForSharesResponse") + fd_MsgRedeemTokensForSharesResponse_amount = md_MsgRedeemTokensForSharesResponse.Fields().ByName("amount") +} + +var _ protoreflect.Message = (*fastReflection_MsgRedeemTokensForSharesResponse)(nil) + +type fastReflection_MsgRedeemTokensForSharesResponse MsgRedeemTokensForSharesResponse + +func (x *MsgRedeemTokensForSharesResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgRedeemTokensForSharesResponse)(x) +} + +func (x *MsgRedeemTokensForSharesResponse) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgRedeemTokensForSharesResponse_messageType fastReflection_MsgRedeemTokensForSharesResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgRedeemTokensForSharesResponse_messageType{} + +type fastReflection_MsgRedeemTokensForSharesResponse_messageType struct{} + +func (x fastReflection_MsgRedeemTokensForSharesResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgRedeemTokensForSharesResponse)(nil) +} +func (x fastReflection_MsgRedeemTokensForSharesResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgRedeemTokensForSharesResponse) +} +func (x fastReflection_MsgRedeemTokensForSharesResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRedeemTokensForSharesResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgRedeemTokensForSharesResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRedeemTokensForSharesResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgRedeemTokensForSharesResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgRedeemTokensForSharesResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgRedeemTokensForSharesResponse) New() protoreflect.Message { + return new(fastReflection_MsgRedeemTokensForSharesResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgRedeemTokensForSharesResponse) Interface() protoreflect.ProtoMessage { + return (*MsgRedeemTokensForSharesResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgRedeemTokensForSharesResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Amount != nil { + value := protoreflect.ValueOfMessage(x.Amount.ProtoReflect()) + if !f(fd_MsgRedeemTokensForSharesResponse_amount, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgRedeemTokensForSharesResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgRedeemTokensForSharesResponse.amount": + return x.Amount != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgRedeemTokensForSharesResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgRedeemTokensForSharesResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRedeemTokensForSharesResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgRedeemTokensForSharesResponse.amount": + x.Amount = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgRedeemTokensForSharesResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgRedeemTokensForSharesResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgRedeemTokensForSharesResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.MsgRedeemTokensForSharesResponse.amount": + value := x.Amount + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgRedeemTokensForSharesResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgRedeemTokensForSharesResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRedeemTokensForSharesResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgRedeemTokensForSharesResponse.amount": + x.Amount = value.Message().Interface().(*v1beta1.Coin) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgRedeemTokensForSharesResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgRedeemTokensForSharesResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRedeemTokensForSharesResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgRedeemTokensForSharesResponse.amount": + if x.Amount == nil { + x.Amount = new(v1beta1.Coin) + } + return protoreflect.ValueOfMessage(x.Amount.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgRedeemTokensForSharesResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgRedeemTokensForSharesResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgRedeemTokensForSharesResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgRedeemTokensForSharesResponse.amount": + m := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgRedeemTokensForSharesResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgRedeemTokensForSharesResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgRedeemTokensForSharesResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.MsgRedeemTokensForSharesResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgRedeemTokensForSharesResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRedeemTokensForSharesResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgRedeemTokensForSharesResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgRedeemTokensForSharesResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgRedeemTokensForSharesResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Amount != nil { + l = options.Size(x.Amount) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgRedeemTokensForSharesResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Amount != nil { + encoded, err := options.Marshal(x.Amount) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgRedeemTokensForSharesResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRedeemTokensForSharesResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRedeemTokensForSharesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Amount == nil { + x.Amount = &v1beta1.Coin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Amount); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgTransferTokenizeShareRecord protoreflect.MessageDescriptor + fd_MsgTransferTokenizeShareRecord_tokenize_share_record_id protoreflect.FieldDescriptor + fd_MsgTransferTokenizeShareRecord_sender protoreflect.FieldDescriptor + fd_MsgTransferTokenizeShareRecord_new_owner protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_tx_proto_init() + md_MsgTransferTokenizeShareRecord = File_cosmos_staking_v1beta1_tx_proto.Messages().ByName("MsgTransferTokenizeShareRecord") + fd_MsgTransferTokenizeShareRecord_tokenize_share_record_id = md_MsgTransferTokenizeShareRecord.Fields().ByName("tokenize_share_record_id") + fd_MsgTransferTokenizeShareRecord_sender = md_MsgTransferTokenizeShareRecord.Fields().ByName("sender") + fd_MsgTransferTokenizeShareRecord_new_owner = md_MsgTransferTokenizeShareRecord.Fields().ByName("new_owner") +} + +var _ protoreflect.Message = (*fastReflection_MsgTransferTokenizeShareRecord)(nil) + +type fastReflection_MsgTransferTokenizeShareRecord MsgTransferTokenizeShareRecord + +func (x *MsgTransferTokenizeShareRecord) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgTransferTokenizeShareRecord)(x) +} + +func (x *MsgTransferTokenizeShareRecord) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgTransferTokenizeShareRecord_messageType fastReflection_MsgTransferTokenizeShareRecord_messageType +var _ protoreflect.MessageType = fastReflection_MsgTransferTokenizeShareRecord_messageType{} + +type fastReflection_MsgTransferTokenizeShareRecord_messageType struct{} + +func (x fastReflection_MsgTransferTokenizeShareRecord_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgTransferTokenizeShareRecord)(nil) +} +func (x fastReflection_MsgTransferTokenizeShareRecord_messageType) New() protoreflect.Message { + return new(fastReflection_MsgTransferTokenizeShareRecord) +} +func (x fastReflection_MsgTransferTokenizeShareRecord_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgTransferTokenizeShareRecord +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgTransferTokenizeShareRecord) Descriptor() protoreflect.MessageDescriptor { + return md_MsgTransferTokenizeShareRecord +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgTransferTokenizeShareRecord) Type() protoreflect.MessageType { + return _fastReflection_MsgTransferTokenizeShareRecord_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgTransferTokenizeShareRecord) New() protoreflect.Message { + return new(fastReflection_MsgTransferTokenizeShareRecord) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgTransferTokenizeShareRecord) Interface() protoreflect.ProtoMessage { + return (*MsgTransferTokenizeShareRecord)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgTransferTokenizeShareRecord) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.TokenizeShareRecordId != uint64(0) { + value := protoreflect.ValueOfUint64(x.TokenizeShareRecordId) + if !f(fd_MsgTransferTokenizeShareRecord_tokenize_share_record_id, value) { + return + } + } + if x.Sender != "" { + value := protoreflect.ValueOfString(x.Sender) + if !f(fd_MsgTransferTokenizeShareRecord_sender, value) { + return + } + } + if x.NewOwner != "" { + value := protoreflect.ValueOfString(x.NewOwner) + if !f(fd_MsgTransferTokenizeShareRecord_new_owner, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgTransferTokenizeShareRecord) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord.tokenize_share_record_id": + return x.TokenizeShareRecordId != uint64(0) + case "cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord.sender": + return x.Sender != "" + case "cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord.new_owner": + return x.NewOwner != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgTransferTokenizeShareRecord) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord.tokenize_share_record_id": + x.TokenizeShareRecordId = uint64(0) + case "cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord.sender": + x.Sender = "" + case "cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord.new_owner": + x.NewOwner = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgTransferTokenizeShareRecord) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord.tokenize_share_record_id": + value := x.TokenizeShareRecordId + return protoreflect.ValueOfUint64(value) + case "cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord.sender": + value := x.Sender + return protoreflect.ValueOfString(value) + case "cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord.new_owner": + value := x.NewOwner + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgTransferTokenizeShareRecord) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord.tokenize_share_record_id": + x.TokenizeShareRecordId = value.Uint() + case "cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord.sender": + x.Sender = value.Interface().(string) + case "cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord.new_owner": + x.NewOwner = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgTransferTokenizeShareRecord) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord.tokenize_share_record_id": + panic(fmt.Errorf("field tokenize_share_record_id of message cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord is not mutable")) + case "cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord.sender": + panic(fmt.Errorf("field sender of message cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord is not mutable")) + case "cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord.new_owner": + panic(fmt.Errorf("field new_owner of message cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgTransferTokenizeShareRecord) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord.tokenize_share_record_id": + return protoreflect.ValueOfUint64(uint64(0)) + case "cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord.sender": + return protoreflect.ValueOfString("") + case "cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord.new_owner": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgTransferTokenizeShareRecord) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgTransferTokenizeShareRecord) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgTransferTokenizeShareRecord) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgTransferTokenizeShareRecord) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgTransferTokenizeShareRecord) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgTransferTokenizeShareRecord) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.TokenizeShareRecordId != 0 { + n += 1 + runtime.Sov(uint64(x.TokenizeShareRecordId)) + } + l = len(x.Sender) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.NewOwner) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgTransferTokenizeShareRecord) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.NewOwner) > 0 { + i -= len(x.NewOwner) + copy(dAtA[i:], x.NewOwner) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.NewOwner))) + i-- + dAtA[i] = 0x1a + } + if len(x.Sender) > 0 { + i -= len(x.Sender) + copy(dAtA[i:], x.Sender) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Sender))) + i-- + dAtA[i] = 0x12 + } + if x.TokenizeShareRecordId != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.TokenizeShareRecordId)) + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgTransferTokenizeShareRecord) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgTransferTokenizeShareRecord: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgTransferTokenizeShareRecord: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field TokenizeShareRecordId", wireType) + } + x.TokenizeShareRecordId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.TokenizeShareRecordId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Sender = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field NewOwner", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.NewOwner = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgTransferTokenizeShareRecordResponse protoreflect.MessageDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_tx_proto_init() + md_MsgTransferTokenizeShareRecordResponse = File_cosmos_staking_v1beta1_tx_proto.Messages().ByName("MsgTransferTokenizeShareRecordResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgTransferTokenizeShareRecordResponse)(nil) + +type fastReflection_MsgTransferTokenizeShareRecordResponse MsgTransferTokenizeShareRecordResponse + +func (x *MsgTransferTokenizeShareRecordResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgTransferTokenizeShareRecordResponse)(x) +} + +func (x *MsgTransferTokenizeShareRecordResponse) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgTransferTokenizeShareRecordResponse_messageType fastReflection_MsgTransferTokenizeShareRecordResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgTransferTokenizeShareRecordResponse_messageType{} + +type fastReflection_MsgTransferTokenizeShareRecordResponse_messageType struct{} + +func (x fastReflection_MsgTransferTokenizeShareRecordResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgTransferTokenizeShareRecordResponse)(nil) +} +func (x fastReflection_MsgTransferTokenizeShareRecordResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgTransferTokenizeShareRecordResponse) +} +func (x fastReflection_MsgTransferTokenizeShareRecordResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgTransferTokenizeShareRecordResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgTransferTokenizeShareRecordResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgTransferTokenizeShareRecordResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgTransferTokenizeShareRecordResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgTransferTokenizeShareRecordResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgTransferTokenizeShareRecordResponse) New() protoreflect.Message { + return new(fastReflection_MsgTransferTokenizeShareRecordResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgTransferTokenizeShareRecordResponse) Interface() protoreflect.ProtoMessage { + return (*MsgTransferTokenizeShareRecordResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgTransferTokenizeShareRecordResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgTransferTokenizeShareRecordResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgTransferTokenizeShareRecordResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgTransferTokenizeShareRecordResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgTransferTokenizeShareRecordResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgTransferTokenizeShareRecordResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgTransferTokenizeShareRecordResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgTransferTokenizeShareRecordResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgTransferTokenizeShareRecordResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgTransferTokenizeShareRecordResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgTransferTokenizeShareRecordResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgTransferTokenizeShareRecordResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgTransferTokenizeShareRecordResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgTransferTokenizeShareRecordResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgTransferTokenizeShareRecordResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgTransferTokenizeShareRecordResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgTransferTokenizeShareRecordResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgTransferTokenizeShareRecordResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgTransferTokenizeShareRecordResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgTransferTokenizeShareRecordResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.MsgTransferTokenizeShareRecordResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgTransferTokenizeShareRecordResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgTransferTokenizeShareRecordResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgTransferTokenizeShareRecordResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgTransferTokenizeShareRecordResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgTransferTokenizeShareRecordResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgTransferTokenizeShareRecordResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgTransferTokenizeShareRecordResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgTransferTokenizeShareRecordResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgTransferTokenizeShareRecordResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgDisableTokenizeShares protoreflect.MessageDescriptor + fd_MsgDisableTokenizeShares_delegator_address protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_tx_proto_init() + md_MsgDisableTokenizeShares = File_cosmos_staking_v1beta1_tx_proto.Messages().ByName("MsgDisableTokenizeShares") + fd_MsgDisableTokenizeShares_delegator_address = md_MsgDisableTokenizeShares.Fields().ByName("delegator_address") +} + +var _ protoreflect.Message = (*fastReflection_MsgDisableTokenizeShares)(nil) + +type fastReflection_MsgDisableTokenizeShares MsgDisableTokenizeShares + +func (x *MsgDisableTokenizeShares) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgDisableTokenizeShares)(x) +} + +func (x *MsgDisableTokenizeShares) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgDisableTokenizeShares_messageType fastReflection_MsgDisableTokenizeShares_messageType +var _ protoreflect.MessageType = fastReflection_MsgDisableTokenizeShares_messageType{} + +type fastReflection_MsgDisableTokenizeShares_messageType struct{} + +func (x fastReflection_MsgDisableTokenizeShares_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgDisableTokenizeShares)(nil) +} +func (x fastReflection_MsgDisableTokenizeShares_messageType) New() protoreflect.Message { + return new(fastReflection_MsgDisableTokenizeShares) +} +func (x fastReflection_MsgDisableTokenizeShares_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgDisableTokenizeShares +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgDisableTokenizeShares) Descriptor() protoreflect.MessageDescriptor { + return md_MsgDisableTokenizeShares +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgDisableTokenizeShares) Type() protoreflect.MessageType { + return _fastReflection_MsgDisableTokenizeShares_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgDisableTokenizeShares) New() protoreflect.Message { + return new(fastReflection_MsgDisableTokenizeShares) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgDisableTokenizeShares) Interface() protoreflect.ProtoMessage { + return (*MsgDisableTokenizeShares)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgDisableTokenizeShares) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.DelegatorAddress != "" { + value := protoreflect.ValueOfString(x.DelegatorAddress) + if !f(fd_MsgDisableTokenizeShares_delegator_address, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgDisableTokenizeShares) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgDisableTokenizeShares.delegator_address": + return x.DelegatorAddress != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgDisableTokenizeShares")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgDisableTokenizeShares does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgDisableTokenizeShares) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgDisableTokenizeShares.delegator_address": + x.DelegatorAddress = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgDisableTokenizeShares")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgDisableTokenizeShares does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgDisableTokenizeShares) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.MsgDisableTokenizeShares.delegator_address": + value := x.DelegatorAddress + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgDisableTokenizeShares")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgDisableTokenizeShares does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgDisableTokenizeShares) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgDisableTokenizeShares.delegator_address": + x.DelegatorAddress = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgDisableTokenizeShares")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgDisableTokenizeShares does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgDisableTokenizeShares) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgDisableTokenizeShares.delegator_address": + panic(fmt.Errorf("field delegator_address of message cosmos.staking.v1beta1.MsgDisableTokenizeShares is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgDisableTokenizeShares")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgDisableTokenizeShares does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgDisableTokenizeShares) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgDisableTokenizeShares.delegator_address": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgDisableTokenizeShares")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgDisableTokenizeShares does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgDisableTokenizeShares) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.MsgDisableTokenizeShares", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgDisableTokenizeShares) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgDisableTokenizeShares) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgDisableTokenizeShares) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgDisableTokenizeShares) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgDisableTokenizeShares) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.DelegatorAddress) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgDisableTokenizeShares) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.DelegatorAddress) > 0 { + i -= len(x.DelegatorAddress) + copy(dAtA[i:], x.DelegatorAddress) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.DelegatorAddress))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgDisableTokenizeShares) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgDisableTokenizeShares: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgDisableTokenizeShares: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field DelegatorAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.DelegatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgDisableTokenizeSharesResponse protoreflect.MessageDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_tx_proto_init() + md_MsgDisableTokenizeSharesResponse = File_cosmos_staking_v1beta1_tx_proto.Messages().ByName("MsgDisableTokenizeSharesResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgDisableTokenizeSharesResponse)(nil) + +type fastReflection_MsgDisableTokenizeSharesResponse MsgDisableTokenizeSharesResponse + +func (x *MsgDisableTokenizeSharesResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgDisableTokenizeSharesResponse)(x) +} + +func (x *MsgDisableTokenizeSharesResponse) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgDisableTokenizeSharesResponse_messageType fastReflection_MsgDisableTokenizeSharesResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgDisableTokenizeSharesResponse_messageType{} + +type fastReflection_MsgDisableTokenizeSharesResponse_messageType struct{} + +func (x fastReflection_MsgDisableTokenizeSharesResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgDisableTokenizeSharesResponse)(nil) +} +func (x fastReflection_MsgDisableTokenizeSharesResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgDisableTokenizeSharesResponse) +} +func (x fastReflection_MsgDisableTokenizeSharesResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgDisableTokenizeSharesResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgDisableTokenizeSharesResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgDisableTokenizeSharesResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgDisableTokenizeSharesResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgDisableTokenizeSharesResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgDisableTokenizeSharesResponse) New() protoreflect.Message { + return new(fastReflection_MsgDisableTokenizeSharesResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgDisableTokenizeSharesResponse) Interface() protoreflect.ProtoMessage { + return (*MsgDisableTokenizeSharesResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgDisableTokenizeSharesResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgDisableTokenizeSharesResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgDisableTokenizeSharesResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgDisableTokenizeSharesResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgDisableTokenizeSharesResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgDisableTokenizeSharesResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgDisableTokenizeSharesResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgDisableTokenizeSharesResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgDisableTokenizeSharesResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgDisableTokenizeSharesResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgDisableTokenizeSharesResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgDisableTokenizeSharesResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgDisableTokenizeSharesResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgDisableTokenizeSharesResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgDisableTokenizeSharesResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgDisableTokenizeSharesResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgDisableTokenizeSharesResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgDisableTokenizeSharesResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgDisableTokenizeSharesResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgDisableTokenizeSharesResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.MsgDisableTokenizeSharesResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgDisableTokenizeSharesResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgDisableTokenizeSharesResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgDisableTokenizeSharesResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgDisableTokenizeSharesResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgDisableTokenizeSharesResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgDisableTokenizeSharesResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgDisableTokenizeSharesResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgDisableTokenizeSharesResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgDisableTokenizeSharesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgEnableTokenizeShares protoreflect.MessageDescriptor + fd_MsgEnableTokenizeShares_delegator_address protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_tx_proto_init() + md_MsgEnableTokenizeShares = File_cosmos_staking_v1beta1_tx_proto.Messages().ByName("MsgEnableTokenizeShares") + fd_MsgEnableTokenizeShares_delegator_address = md_MsgEnableTokenizeShares.Fields().ByName("delegator_address") +} + +var _ protoreflect.Message = (*fastReflection_MsgEnableTokenizeShares)(nil) + +type fastReflection_MsgEnableTokenizeShares MsgEnableTokenizeShares + +func (x *MsgEnableTokenizeShares) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgEnableTokenizeShares)(x) +} + +func (x *MsgEnableTokenizeShares) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgEnableTokenizeShares_messageType fastReflection_MsgEnableTokenizeShares_messageType +var _ protoreflect.MessageType = fastReflection_MsgEnableTokenizeShares_messageType{} + +type fastReflection_MsgEnableTokenizeShares_messageType struct{} + +func (x fastReflection_MsgEnableTokenizeShares_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgEnableTokenizeShares)(nil) +} +func (x fastReflection_MsgEnableTokenizeShares_messageType) New() protoreflect.Message { + return new(fastReflection_MsgEnableTokenizeShares) +} +func (x fastReflection_MsgEnableTokenizeShares_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgEnableTokenizeShares +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgEnableTokenizeShares) Descriptor() protoreflect.MessageDescriptor { + return md_MsgEnableTokenizeShares +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgEnableTokenizeShares) Type() protoreflect.MessageType { + return _fastReflection_MsgEnableTokenizeShares_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgEnableTokenizeShares) New() protoreflect.Message { + return new(fastReflection_MsgEnableTokenizeShares) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgEnableTokenizeShares) Interface() protoreflect.ProtoMessage { + return (*MsgEnableTokenizeShares)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgEnableTokenizeShares) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.DelegatorAddress != "" { + value := protoreflect.ValueOfString(x.DelegatorAddress) + if !f(fd_MsgEnableTokenizeShares_delegator_address, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgEnableTokenizeShares) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgEnableTokenizeShares.delegator_address": + return x.DelegatorAddress != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgEnableTokenizeShares")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgEnableTokenizeShares does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgEnableTokenizeShares) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgEnableTokenizeShares.delegator_address": + x.DelegatorAddress = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgEnableTokenizeShares")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgEnableTokenizeShares does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgEnableTokenizeShares) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.MsgEnableTokenizeShares.delegator_address": + value := x.DelegatorAddress + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgEnableTokenizeShares")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgEnableTokenizeShares does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgEnableTokenizeShares) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgEnableTokenizeShares.delegator_address": + x.DelegatorAddress = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgEnableTokenizeShares")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgEnableTokenizeShares does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgEnableTokenizeShares) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgEnableTokenizeShares.delegator_address": + panic(fmt.Errorf("field delegator_address of message cosmos.staking.v1beta1.MsgEnableTokenizeShares is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgEnableTokenizeShares")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgEnableTokenizeShares does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgEnableTokenizeShares) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgEnableTokenizeShares.delegator_address": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgEnableTokenizeShares")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgEnableTokenizeShares does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgEnableTokenizeShares) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.MsgEnableTokenizeShares", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgEnableTokenizeShares) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgEnableTokenizeShares) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgEnableTokenizeShares) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgEnableTokenizeShares) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgEnableTokenizeShares) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.DelegatorAddress) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgEnableTokenizeShares) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.DelegatorAddress) > 0 { + i -= len(x.DelegatorAddress) + copy(dAtA[i:], x.DelegatorAddress) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.DelegatorAddress))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgEnableTokenizeShares) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgEnableTokenizeShares: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgEnableTokenizeShares: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field DelegatorAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.DelegatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgEnableTokenizeSharesResponse protoreflect.MessageDescriptor + fd_MsgEnableTokenizeSharesResponse_completion_time protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_tx_proto_init() + md_MsgEnableTokenizeSharesResponse = File_cosmos_staking_v1beta1_tx_proto.Messages().ByName("MsgEnableTokenizeSharesResponse") + fd_MsgEnableTokenizeSharesResponse_completion_time = md_MsgEnableTokenizeSharesResponse.Fields().ByName("completion_time") +} + +var _ protoreflect.Message = (*fastReflection_MsgEnableTokenizeSharesResponse)(nil) + +type fastReflection_MsgEnableTokenizeSharesResponse MsgEnableTokenizeSharesResponse + +func (x *MsgEnableTokenizeSharesResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgEnableTokenizeSharesResponse)(x) +} + +func (x *MsgEnableTokenizeSharesResponse) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgEnableTokenizeSharesResponse_messageType fastReflection_MsgEnableTokenizeSharesResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgEnableTokenizeSharesResponse_messageType{} + +type fastReflection_MsgEnableTokenizeSharesResponse_messageType struct{} + +func (x fastReflection_MsgEnableTokenizeSharesResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgEnableTokenizeSharesResponse)(nil) +} +func (x fastReflection_MsgEnableTokenizeSharesResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgEnableTokenizeSharesResponse) +} +func (x fastReflection_MsgEnableTokenizeSharesResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgEnableTokenizeSharesResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgEnableTokenizeSharesResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgEnableTokenizeSharesResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgEnableTokenizeSharesResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgEnableTokenizeSharesResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgEnableTokenizeSharesResponse) New() protoreflect.Message { + return new(fastReflection_MsgEnableTokenizeSharesResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgEnableTokenizeSharesResponse) Interface() protoreflect.ProtoMessage { + return (*MsgEnableTokenizeSharesResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgEnableTokenizeSharesResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.CompletionTime != nil { + value := protoreflect.ValueOfMessage(x.CompletionTime.ProtoReflect()) + if !f(fd_MsgEnableTokenizeSharesResponse_completion_time, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgEnableTokenizeSharesResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgEnableTokenizeSharesResponse.completion_time": + return x.CompletionTime != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgEnableTokenizeSharesResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgEnableTokenizeSharesResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgEnableTokenizeSharesResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgEnableTokenizeSharesResponse.completion_time": + x.CompletionTime = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgEnableTokenizeSharesResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgEnableTokenizeSharesResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgEnableTokenizeSharesResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.MsgEnableTokenizeSharesResponse.completion_time": + value := x.CompletionTime + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgEnableTokenizeSharesResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgEnableTokenizeSharesResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgEnableTokenizeSharesResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgEnableTokenizeSharesResponse.completion_time": + x.CompletionTime = value.Message().Interface().(*timestamppb.Timestamp) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgEnableTokenizeSharesResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgEnableTokenizeSharesResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgEnableTokenizeSharesResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgEnableTokenizeSharesResponse.completion_time": + if x.CompletionTime == nil { + x.CompletionTime = new(timestamppb.Timestamp) + } + return protoreflect.ValueOfMessage(x.CompletionTime.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgEnableTokenizeSharesResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgEnableTokenizeSharesResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgEnableTokenizeSharesResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgEnableTokenizeSharesResponse.completion_time": + m := new(timestamppb.Timestamp) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgEnableTokenizeSharesResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgEnableTokenizeSharesResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgEnableTokenizeSharesResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.MsgEnableTokenizeSharesResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgEnableTokenizeSharesResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgEnableTokenizeSharesResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgEnableTokenizeSharesResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgEnableTokenizeSharesResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgEnableTokenizeSharesResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.CompletionTime != nil { + l = options.Size(x.CompletionTime) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgEnableTokenizeSharesResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.CompletionTime != nil { + encoded, err := options.Marshal(x.CompletionTime) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgEnableTokenizeSharesResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgEnableTokenizeSharesResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgEnableTokenizeSharesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field CompletionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.CompletionTime == nil { + x.CompletionTime = ×tamppb.Timestamp{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.CompletionTime); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgValidatorBond protoreflect.MessageDescriptor + fd_MsgValidatorBond_delegator_address protoreflect.FieldDescriptor + fd_MsgValidatorBond_validator_address protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_tx_proto_init() + md_MsgValidatorBond = File_cosmos_staking_v1beta1_tx_proto.Messages().ByName("MsgValidatorBond") + fd_MsgValidatorBond_delegator_address = md_MsgValidatorBond.Fields().ByName("delegator_address") + fd_MsgValidatorBond_validator_address = md_MsgValidatorBond.Fields().ByName("validator_address") +} + +var _ protoreflect.Message = (*fastReflection_MsgValidatorBond)(nil) + +type fastReflection_MsgValidatorBond MsgValidatorBond + +func (x *MsgValidatorBond) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgValidatorBond)(x) +} + +func (x *MsgValidatorBond) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgValidatorBond_messageType fastReflection_MsgValidatorBond_messageType +var _ protoreflect.MessageType = fastReflection_MsgValidatorBond_messageType{} + +type fastReflection_MsgValidatorBond_messageType struct{} + +func (x fastReflection_MsgValidatorBond_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgValidatorBond)(nil) +} +func (x fastReflection_MsgValidatorBond_messageType) New() protoreflect.Message { + return new(fastReflection_MsgValidatorBond) +} +func (x fastReflection_MsgValidatorBond_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgValidatorBond +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgValidatorBond) Descriptor() protoreflect.MessageDescriptor { + return md_MsgValidatorBond +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgValidatorBond) Type() protoreflect.MessageType { + return _fastReflection_MsgValidatorBond_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgValidatorBond) New() protoreflect.Message { + return new(fastReflection_MsgValidatorBond) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgValidatorBond) Interface() protoreflect.ProtoMessage { + return (*MsgValidatorBond)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgValidatorBond) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.DelegatorAddress != "" { + value := protoreflect.ValueOfString(x.DelegatorAddress) + if !f(fd_MsgValidatorBond_delegator_address, value) { + return + } + } + if x.ValidatorAddress != "" { + value := protoreflect.ValueOfString(x.ValidatorAddress) + if !f(fd_MsgValidatorBond_validator_address, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgValidatorBond) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgValidatorBond.delegator_address": + return x.DelegatorAddress != "" + case "cosmos.staking.v1beta1.MsgValidatorBond.validator_address": + return x.ValidatorAddress != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgValidatorBond")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgValidatorBond does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgValidatorBond) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgValidatorBond.delegator_address": + x.DelegatorAddress = "" + case "cosmos.staking.v1beta1.MsgValidatorBond.validator_address": + x.ValidatorAddress = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgValidatorBond")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgValidatorBond does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgValidatorBond) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.MsgValidatorBond.delegator_address": + value := x.DelegatorAddress + return protoreflect.ValueOfString(value) + case "cosmos.staking.v1beta1.MsgValidatorBond.validator_address": + value := x.ValidatorAddress + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgValidatorBond")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgValidatorBond does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgValidatorBond) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgValidatorBond.delegator_address": + x.DelegatorAddress = value.Interface().(string) + case "cosmos.staking.v1beta1.MsgValidatorBond.validator_address": + x.ValidatorAddress = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgValidatorBond")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgValidatorBond does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgValidatorBond) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgValidatorBond.delegator_address": + panic(fmt.Errorf("field delegator_address of message cosmos.staking.v1beta1.MsgValidatorBond is not mutable")) + case "cosmos.staking.v1beta1.MsgValidatorBond.validator_address": + panic(fmt.Errorf("field validator_address of message cosmos.staking.v1beta1.MsgValidatorBond is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgValidatorBond")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgValidatorBond does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgValidatorBond) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgValidatorBond.delegator_address": + return protoreflect.ValueOfString("") + case "cosmos.staking.v1beta1.MsgValidatorBond.validator_address": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgValidatorBond")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgValidatorBond does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgValidatorBond) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.MsgValidatorBond", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgValidatorBond) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgValidatorBond) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgValidatorBond) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgValidatorBond) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgValidatorBond) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.DelegatorAddress) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.ValidatorAddress) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgValidatorBond) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.ValidatorAddress) > 0 { + i -= len(x.ValidatorAddress) + copy(dAtA[i:], x.ValidatorAddress) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ValidatorAddress))) + i-- + dAtA[i] = 0x12 + } + if len(x.DelegatorAddress) > 0 { + i -= len(x.DelegatorAddress) + copy(dAtA[i:], x.DelegatorAddress) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.DelegatorAddress))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgValidatorBond) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgValidatorBond: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgValidatorBond: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field DelegatorAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.DelegatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.ValidatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgValidatorBondResponse protoreflect.MessageDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_tx_proto_init() + md_MsgValidatorBondResponse = File_cosmos_staking_v1beta1_tx_proto.Messages().ByName("MsgValidatorBondResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgValidatorBondResponse)(nil) + +type fastReflection_MsgValidatorBondResponse MsgValidatorBondResponse + +func (x *MsgValidatorBondResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgValidatorBondResponse)(x) +} + +func (x *MsgValidatorBondResponse) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgValidatorBondResponse_messageType fastReflection_MsgValidatorBondResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgValidatorBondResponse_messageType{} + +type fastReflection_MsgValidatorBondResponse_messageType struct{} + +func (x fastReflection_MsgValidatorBondResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgValidatorBondResponse)(nil) +} +func (x fastReflection_MsgValidatorBondResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgValidatorBondResponse) +} +func (x fastReflection_MsgValidatorBondResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgValidatorBondResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgValidatorBondResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgValidatorBondResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgValidatorBondResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgValidatorBondResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgValidatorBondResponse) New() protoreflect.Message { + return new(fastReflection_MsgValidatorBondResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgValidatorBondResponse) Interface() protoreflect.ProtoMessage { + return (*MsgValidatorBondResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgValidatorBondResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgValidatorBondResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgValidatorBondResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgValidatorBondResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgValidatorBondResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgValidatorBondResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgValidatorBondResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgValidatorBondResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgValidatorBondResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgValidatorBondResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgValidatorBondResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgValidatorBondResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgValidatorBondResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgValidatorBondResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgValidatorBondResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgValidatorBondResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgValidatorBondResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgValidatorBondResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgValidatorBondResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgValidatorBondResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.MsgValidatorBondResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgValidatorBondResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgValidatorBondResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgValidatorBondResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgValidatorBondResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgValidatorBondResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgValidatorBondResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgValidatorBondResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgValidatorBondResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgValidatorBondResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.27.0 // protoc (unknown) // source: cosmos/staking/v1beta1/tx.proto -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// MsgCreateValidator defines a SDK message for creating a new validator. +type MsgCreateValidator struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Description *Description `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` + Commission *CommissionRates `protobuf:"bytes,2,opt,name=commission,proto3" json:"commission,omitempty"` + // Deprecated: This field has been deprecated with LSM in favor of the validator bond + // + // Deprecated: Do not use. + MinSelfDelegation string `protobuf:"bytes,3,opt,name=min_self_delegation,json=minSelfDelegation,proto3" json:"min_self_delegation,omitempty"` + // Deprecated: Use of Delegator Address in MsgCreateValidator is deprecated. + // The validator address bytes and delegator address bytes refer to the same account while creating validator (defer + // only in bech32 notation). + // + // Deprecated: Do not use. + DelegatorAddress string `protobuf:"bytes,4,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty"` + ValidatorAddress string `protobuf:"bytes,5,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"` + Pubkey *anypb.Any `protobuf:"bytes,6,opt,name=pubkey,proto3" json:"pubkey,omitempty"` + Value *v1beta1.Coin `protobuf:"bytes,7,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *MsgCreateValidator) Reset() { + *x = MsgCreateValidator{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgCreateValidator) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgCreateValidator) ProtoMessage() {} + +// Deprecated: Use MsgCreateValidator.ProtoReflect.Descriptor instead. +func (*MsgCreateValidator) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{0} +} + +func (x *MsgCreateValidator) GetDescription() *Description { + if x != nil { + return x.Description + } + return nil +} + +func (x *MsgCreateValidator) GetCommission() *CommissionRates { + if x != nil { + return x.Commission + } + return nil +} + +// Deprecated: Do not use. +func (x *MsgCreateValidator) GetMinSelfDelegation() string { + if x != nil { + return x.MinSelfDelegation + } + return "" +} + +// Deprecated: Do not use. +func (x *MsgCreateValidator) GetDelegatorAddress() string { + if x != nil { + return x.DelegatorAddress + } + return "" +} + +func (x *MsgCreateValidator) GetValidatorAddress() string { + if x != nil { + return x.ValidatorAddress + } + return "" +} + +func (x *MsgCreateValidator) GetPubkey() *anypb.Any { + if x != nil { + return x.Pubkey + } + return nil +} + +func (x *MsgCreateValidator) GetValue() *v1beta1.Coin { + if x != nil { + return x.Value + } + return nil +} + +// MsgCreateValidatorResponse defines the Msg/CreateValidator response type. +type MsgCreateValidatorResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgCreateValidatorResponse) Reset() { + *x = MsgCreateValidatorResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgCreateValidatorResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgCreateValidatorResponse) ProtoMessage() {} + +// Deprecated: Use MsgCreateValidatorResponse.ProtoReflect.Descriptor instead. +func (*MsgCreateValidatorResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{1} +} + +// MsgEditValidator defines a SDK message for editing an existing validator. +type MsgEditValidator struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Description *Description `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` + ValidatorAddress string `protobuf:"bytes,2,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"` + // We pass a reference to the new commission rate and min self delegation as + // it's not mandatory to update. If not updated, the deserialized rate will be + // zero with no way to distinguish if an update was intended. + // REF: #2373 + CommissionRate string `protobuf:"bytes,3,opt,name=commission_rate,json=commissionRate,proto3" json:"commission_rate,omitempty"` + // Deprecated: This field has been deprecated with LSM in favor of the validator bond + // + // Deprecated: Do not use. + MinSelfDelegation string `protobuf:"bytes,4,opt,name=min_self_delegation,json=minSelfDelegation,proto3" json:"min_self_delegation,omitempty"` +} + +func (x *MsgEditValidator) Reset() { + *x = MsgEditValidator{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgEditValidator) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgEditValidator) ProtoMessage() {} + +// Deprecated: Use MsgEditValidator.ProtoReflect.Descriptor instead. +func (*MsgEditValidator) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{2} +} + +func (x *MsgEditValidator) GetDescription() *Description { + if x != nil { + return x.Description + } + return nil +} + +func (x *MsgEditValidator) GetValidatorAddress() string { + if x != nil { + return x.ValidatorAddress + } + return "" +} + +func (x *MsgEditValidator) GetCommissionRate() string { + if x != nil { + return x.CommissionRate + } + return "" +} + +// Deprecated: Do not use. +func (x *MsgEditValidator) GetMinSelfDelegation() string { + if x != nil { + return x.MinSelfDelegation + } + return "" +} + +// MsgEditValidatorResponse defines the Msg/EditValidator response type. +type MsgEditValidatorResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgEditValidatorResponse) Reset() { + *x = MsgEditValidatorResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgEditValidatorResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgEditValidatorResponse) ProtoMessage() {} + +// Deprecated: Use MsgEditValidatorResponse.ProtoReflect.Descriptor instead. +func (*MsgEditValidatorResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{3} +} + +// MsgDelegate defines a SDK message for performing a delegation of coins +// from a delegator to a validator. +type MsgDelegate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DelegatorAddress string `protobuf:"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty"` + ValidatorAddress string `protobuf:"bytes,2,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"` + Amount *v1beta1.Coin `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount,omitempty"` +} + +func (x *MsgDelegate) Reset() { + *x = MsgDelegate{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgDelegate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgDelegate) ProtoMessage() {} + +// Deprecated: Use MsgDelegate.ProtoReflect.Descriptor instead. +func (*MsgDelegate) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{4} +} + +func (x *MsgDelegate) GetDelegatorAddress() string { + if x != nil { + return x.DelegatorAddress + } + return "" +} + +func (x *MsgDelegate) GetValidatorAddress() string { + if x != nil { + return x.ValidatorAddress + } + return "" +} + +func (x *MsgDelegate) GetAmount() *v1beta1.Coin { + if x != nil { + return x.Amount + } + return nil +} + +// MsgDelegateResponse defines the Msg/Delegate response type. +type MsgDelegateResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgDelegateResponse) Reset() { + *x = MsgDelegateResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgDelegateResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgDelegateResponse) ProtoMessage() {} + +// Deprecated: Use MsgDelegateResponse.ProtoReflect.Descriptor instead. +func (*MsgDelegateResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{5} +} + +// MsgBeginRedelegate defines a SDK message for performing a redelegation +// of coins from a delegator and source validator to a destination validator. +type MsgBeginRedelegate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DelegatorAddress string `protobuf:"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty"` + ValidatorSrcAddress string `protobuf:"bytes,2,opt,name=validator_src_address,json=validatorSrcAddress,proto3" json:"validator_src_address,omitempty"` + ValidatorDstAddress string `protobuf:"bytes,3,opt,name=validator_dst_address,json=validatorDstAddress,proto3" json:"validator_dst_address,omitempty"` + Amount *v1beta1.Coin `protobuf:"bytes,4,opt,name=amount,proto3" json:"amount,omitempty"` +} + +func (x *MsgBeginRedelegate) Reset() { + *x = MsgBeginRedelegate{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgBeginRedelegate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgBeginRedelegate) ProtoMessage() {} + +// Deprecated: Use MsgBeginRedelegate.ProtoReflect.Descriptor instead. +func (*MsgBeginRedelegate) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{6} +} + +func (x *MsgBeginRedelegate) GetDelegatorAddress() string { + if x != nil { + return x.DelegatorAddress + } + return "" +} + +func (x *MsgBeginRedelegate) GetValidatorSrcAddress() string { + if x != nil { + return x.ValidatorSrcAddress + } + return "" +} + +func (x *MsgBeginRedelegate) GetValidatorDstAddress() string { + if x != nil { + return x.ValidatorDstAddress + } + return "" +} + +func (x *MsgBeginRedelegate) GetAmount() *v1beta1.Coin { + if x != nil { + return x.Amount + } + return nil +} + +// MsgBeginRedelegateResponse defines the Msg/BeginRedelegate response type. +type MsgBeginRedelegateResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CompletionTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=completion_time,json=completionTime,proto3" json:"completion_time,omitempty"` +} + +func (x *MsgBeginRedelegateResponse) Reset() { + *x = MsgBeginRedelegateResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgBeginRedelegateResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} -// MsgCreateValidator defines a SDK message for creating a new validator. -type MsgCreateValidator struct { +func (*MsgBeginRedelegateResponse) ProtoMessage() {} + +// Deprecated: Use MsgBeginRedelegateResponse.ProtoReflect.Descriptor instead. +func (*MsgBeginRedelegateResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{7} +} + +func (x *MsgBeginRedelegateResponse) GetCompletionTime() *timestamppb.Timestamp { + if x != nil { + return x.CompletionTime + } + return nil +} + +// MsgUndelegate defines a SDK message for performing an undelegation from a +// delegate and a validator. +type MsgUndelegate struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Description *Description `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` - Commission *CommissionRates `protobuf:"bytes,2,opt,name=commission,proto3" json:"commission,omitempty"` - MinSelfDelegation string `protobuf:"bytes,3,opt,name=min_self_delegation,json=minSelfDelegation,proto3" json:"min_self_delegation,omitempty"` - // Deprecated: Use of Delegator Address in MsgCreateValidator is deprecated. - // The validator address bytes and delegator address bytes refer to the same account while creating validator (defer - // only in bech32 notation). - // - // Deprecated: Do not use. - DelegatorAddress string `protobuf:"bytes,4,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty"` - ValidatorAddress string `protobuf:"bytes,5,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"` - Pubkey *anypb.Any `protobuf:"bytes,6,opt,name=pubkey,proto3" json:"pubkey,omitempty"` - Value *v1beta1.Coin `protobuf:"bytes,7,opt,name=value,proto3" json:"value,omitempty"` + DelegatorAddress string `protobuf:"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty"` + ValidatorAddress string `protobuf:"bytes,2,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"` + Amount *v1beta1.Coin `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount,omitempty"` } -func (x *MsgCreateValidator) Reset() { - *x = MsgCreateValidator{} +func (x *MsgUndelegate) Reset() { + *x = MsgUndelegate{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[0] + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MsgCreateValidator) String() string { +func (x *MsgUndelegate) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MsgCreateValidator) ProtoMessage() {} +func (*MsgUndelegate) ProtoMessage() {} -// Deprecated: Use MsgCreateValidator.ProtoReflect.Descriptor instead. -func (*MsgCreateValidator) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{0} +// Deprecated: Use MsgUndelegate.ProtoReflect.Descriptor instead. +func (*MsgUndelegate) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{8} } -func (x *MsgCreateValidator) GetDescription() *Description { +func (x *MsgUndelegate) GetDelegatorAddress() string { if x != nil { - return x.Description + return x.DelegatorAddress + } + return "" +} + +func (x *MsgUndelegate) GetValidatorAddress() string { + if x != nil { + return x.ValidatorAddress + } + return "" +} + +func (x *MsgUndelegate) GetAmount() *v1beta1.Coin { + if x != nil { + return x.Amount } return nil } -func (x *MsgCreateValidator) GetCommission() *CommissionRates { +// MsgUndelegateResponse defines the Msg/Undelegate response type. +type MsgUndelegateResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CompletionTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=completion_time,json=completionTime,proto3" json:"completion_time,omitempty"` + // amount returns the amount of undelegated coins + // + // Since: cosmos-sdk 0.50 + Amount *v1beta1.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"` +} + +func (x *MsgUndelegateResponse) Reset() { + *x = MsgUndelegateResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgUndelegateResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgUndelegateResponse) ProtoMessage() {} + +// Deprecated: Use MsgUndelegateResponse.ProtoReflect.Descriptor instead. +func (*MsgUndelegateResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{9} +} + +func (x *MsgUndelegateResponse) GetCompletionTime() *timestamppb.Timestamp { if x != nil { - return x.Commission + return x.CompletionTime } return nil } -func (x *MsgCreateValidator) GetMinSelfDelegation() string { +func (x *MsgUndelegateResponse) GetAmount() *v1beta1.Coin { if x != nil { - return x.MinSelfDelegation + return x.Amount } - return "" + return nil } -// Deprecated: Do not use. -func (x *MsgCreateValidator) GetDelegatorAddress() string { +// MsgCancelUnbondingDelegation defines the SDK message for performing a cancel unbonding delegation for delegator +// +// Since: cosmos-sdk 0.46 +type MsgCancelUnbondingDelegation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DelegatorAddress string `protobuf:"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty"` + ValidatorAddress string `protobuf:"bytes,2,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"` + // amount is always less than or equal to unbonding delegation entry balance + Amount *v1beta1.Coin `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount,omitempty"` + // creation_height is the height which the unbonding took place. + CreationHeight int64 `protobuf:"varint,4,opt,name=creation_height,json=creationHeight,proto3" json:"creation_height,omitempty"` +} + +func (x *MsgCancelUnbondingDelegation) Reset() { + *x = MsgCancelUnbondingDelegation{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgCancelUnbondingDelegation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgCancelUnbondingDelegation) ProtoMessage() {} + +// Deprecated: Use MsgCancelUnbondingDelegation.ProtoReflect.Descriptor instead. +func (*MsgCancelUnbondingDelegation) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{10} +} + +func (x *MsgCancelUnbondingDelegation) GetDelegatorAddress() string { if x != nil { return x.DelegatorAddress } return "" } -func (x *MsgCreateValidator) GetValidatorAddress() string { +func (x *MsgCancelUnbondingDelegation) GetValidatorAddress() string { if x != nil { return x.ValidatorAddress } return "" } -func (x *MsgCreateValidator) GetPubkey() *anypb.Any { +func (x *MsgCancelUnbondingDelegation) GetAmount() *v1beta1.Coin { if x != nil { - return x.Pubkey + return x.Amount } return nil } -func (x *MsgCreateValidator) GetValue() *v1beta1.Coin { +func (x *MsgCancelUnbondingDelegation) GetCreationHeight() int64 { if x != nil { - return x.Value + return x.CreationHeight + } + return 0 +} + +// MsgCancelUnbondingDelegationResponse +// +// Since: cosmos-sdk 0.46 +type MsgCancelUnbondingDelegationResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgCancelUnbondingDelegationResponse) Reset() { + *x = MsgCancelUnbondingDelegationResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgCancelUnbondingDelegationResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgCancelUnbondingDelegationResponse) ProtoMessage() {} + +// Deprecated: Use MsgCancelUnbondingDelegationResponse.ProtoReflect.Descriptor instead. +func (*MsgCancelUnbondingDelegationResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{11} +} + +// MsgUpdateParams is the Msg/UpdateParams request type. +// +// Since: cosmos-sdk 0.47 +type MsgUpdateParams struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // authority is the address that controls the module (defaults to x/gov unless overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // params defines the x/staking parameters to update. + // + // NOTE: All parameters must be supplied. + Params *Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params,omitempty"` +} + +func (x *MsgUpdateParams) Reset() { + *x = MsgUpdateParams{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgUpdateParams) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgUpdateParams) ProtoMessage() {} + +// Deprecated: Use MsgUpdateParams.ProtoReflect.Descriptor instead. +func (*MsgUpdateParams) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{12} +} + +func (x *MsgUpdateParams) GetAuthority() string { + if x != nil { + return x.Authority + } + return "" +} + +func (x *MsgUpdateParams) GetParams() *Params { + if x != nil { + return x.Params } return nil } -// MsgCreateValidatorResponse defines the Msg/CreateValidator response type. -type MsgCreateValidatorResponse struct { +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +// +// Since: cosmos-sdk 0.47 +type MsgUpdateParamsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *MsgCreateValidatorResponse) Reset() { - *x = MsgCreateValidatorResponse{} +func (x *MsgUpdateParamsResponse) Reset() { + *x = MsgUpdateParamsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[1] + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MsgCreateValidatorResponse) String() string { +func (x *MsgUpdateParamsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MsgCreateValidatorResponse) ProtoMessage() {} +func (*MsgUpdateParamsResponse) ProtoMessage() {} -// Deprecated: Use MsgCreateValidatorResponse.ProtoReflect.Descriptor instead. -func (*MsgCreateValidatorResponse) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{1} +// Deprecated: Use MsgUpdateParamsResponse.ProtoReflect.Descriptor instead. +func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{13} } -// MsgEditValidator defines a SDK message for editing an existing validator. -type MsgEditValidator struct { +// MsgUnbondValidator defines a method for performing the status transition for +// a validator from bonded to unbonded +// This allows a validator to stop their services and jail themselves without +// experiencing a slash +type MsgUnbondValidator struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Description *Description `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` - ValidatorAddress string `protobuf:"bytes,2,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"` - // We pass a reference to the new commission rate and min self delegation as - // it's not mandatory to update. If not updated, the deserialized rate will be - // zero with no way to distinguish if an update was intended. - // REF: #2373 - CommissionRate string `protobuf:"bytes,3,opt,name=commission_rate,json=commissionRate,proto3" json:"commission_rate,omitempty"` - MinSelfDelegation string `protobuf:"bytes,4,opt,name=min_self_delegation,json=minSelfDelegation,proto3" json:"min_self_delegation,omitempty"` + ValidatorAddress string `protobuf:"bytes,1,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"` } -func (x *MsgEditValidator) Reset() { - *x = MsgEditValidator{} +func (x *MsgUnbondValidator) Reset() { + *x = MsgUnbondValidator{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[2] + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MsgEditValidator) String() string { +func (x *MsgUnbondValidator) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MsgEditValidator) ProtoMessage() {} - -// Deprecated: Use MsgEditValidator.ProtoReflect.Descriptor instead. -func (*MsgEditValidator) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{2} -} +func (*MsgUnbondValidator) ProtoMessage() {} -func (x *MsgEditValidator) GetDescription() *Description { - if x != nil { - return x.Description - } - return nil +// Deprecated: Use MsgUnbondValidator.ProtoReflect.Descriptor instead. +func (*MsgUnbondValidator) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{14} } -func (x *MsgEditValidator) GetValidatorAddress() string { +func (x *MsgUnbondValidator) GetValidatorAddress() string { if x != nil { return x.ValidatorAddress } return "" } -func (x *MsgEditValidator) GetCommissionRate() string { - if x != nil { - return x.CommissionRate - } - return "" -} - -func (x *MsgEditValidator) GetMinSelfDelegation() string { - if x != nil { - return x.MinSelfDelegation - } - return "" -} - -// MsgEditValidatorResponse defines the Msg/EditValidator response type. -type MsgEditValidatorResponse struct { +// MsgUnbondValidatorResponse defines the Msg/UnbondValidator response type. +type MsgUnbondValidatorResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *MsgEditValidatorResponse) Reset() { - *x = MsgEditValidatorResponse{} +func (x *MsgUnbondValidatorResponse) Reset() { + *x = MsgUnbondValidatorResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[3] + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MsgEditValidatorResponse) String() string { +func (x *MsgUnbondValidatorResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MsgEditValidatorResponse) ProtoMessage() {} +func (*MsgUnbondValidatorResponse) ProtoMessage() {} -// Deprecated: Use MsgEditValidatorResponse.ProtoReflect.Descriptor instead. -func (*MsgEditValidatorResponse) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{3} +// Deprecated: Use MsgUnbondValidatorResponse.ProtoReflect.Descriptor instead. +func (*MsgUnbondValidatorResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{15} } -// MsgDelegate defines a SDK message for performing a delegation of coins -// from a delegator to a validator. -type MsgDelegate struct { +// MsgTokenizeShares tokenizes a delegation +type MsgTokenizeShares struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DelegatorAddress string `protobuf:"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty"` - ValidatorAddress string `protobuf:"bytes,2,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"` - Amount *v1beta1.Coin `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount,omitempty"` + DelegatorAddress string `protobuf:"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty"` + ValidatorAddress string `protobuf:"bytes,2,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"` + Amount *v1beta1.Coin `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount,omitempty"` + TokenizedShareOwner string `protobuf:"bytes,4,opt,name=tokenized_share_owner,json=tokenizedShareOwner,proto3" json:"tokenized_share_owner,omitempty"` } -func (x *MsgDelegate) Reset() { - *x = MsgDelegate{} +func (x *MsgTokenizeShares) Reset() { + *x = MsgTokenizeShares{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[4] + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MsgDelegate) String() string { +func (x *MsgTokenizeShares) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MsgDelegate) ProtoMessage() {} +func (*MsgTokenizeShares) ProtoMessage() {} -// Deprecated: Use MsgDelegate.ProtoReflect.Descriptor instead. -func (*MsgDelegate) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{4} +// Deprecated: Use MsgTokenizeShares.ProtoReflect.Descriptor instead. +func (*MsgTokenizeShares) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{16} } -func (x *MsgDelegate) GetDelegatorAddress() string { +func (x *MsgTokenizeShares) GetDelegatorAddress() string { if x != nil { return x.DelegatorAddress } return "" } -func (x *MsgDelegate) GetValidatorAddress() string { +func (x *MsgTokenizeShares) GetValidatorAddress() string { if x != nil { return x.ValidatorAddress } return "" } -func (x *MsgDelegate) GetAmount() *v1beta1.Coin { +func (x *MsgTokenizeShares) GetAmount() *v1beta1.Coin { if x != nil { return x.Amount } return nil } -// MsgDelegateResponse defines the Msg/Delegate response type. -type MsgDelegateResponse struct { +func (x *MsgTokenizeShares) GetTokenizedShareOwner() string { + if x != nil { + return x.TokenizedShareOwner + } + return "" +} + +// MsgTokenizeSharesResponse defines the Msg/MsgTokenizeShares response type. +type MsgTokenizeSharesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Amount *v1beta1.Coin `protobuf:"bytes,1,opt,name=amount,proto3" json:"amount,omitempty"` } -func (x *MsgDelegateResponse) Reset() { - *x = MsgDelegateResponse{} +func (x *MsgTokenizeSharesResponse) Reset() { + *x = MsgTokenizeSharesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[5] + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MsgDelegateResponse) String() string { +func (x *MsgTokenizeSharesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MsgDelegateResponse) ProtoMessage() {} +func (*MsgTokenizeSharesResponse) ProtoMessage() {} -// Deprecated: Use MsgDelegateResponse.ProtoReflect.Descriptor instead. -func (*MsgDelegateResponse) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{5} +// Deprecated: Use MsgTokenizeSharesResponse.ProtoReflect.Descriptor instead. +func (*MsgTokenizeSharesResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{17} } -// MsgBeginRedelegate defines a SDK message for performing a redelegation -// of coins from a delegator and source validator to a destination validator. -type MsgBeginRedelegate struct { +func (x *MsgTokenizeSharesResponse) GetAmount() *v1beta1.Coin { + if x != nil { + return x.Amount + } + return nil +} + +// MsgRedeemTokensForShares redeems a tokenized share back into a native delegation +type MsgRedeemTokensForShares struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DelegatorAddress string `protobuf:"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty"` - ValidatorSrcAddress string `protobuf:"bytes,2,opt,name=validator_src_address,json=validatorSrcAddress,proto3" json:"validator_src_address,omitempty"` - ValidatorDstAddress string `protobuf:"bytes,3,opt,name=validator_dst_address,json=validatorDstAddress,proto3" json:"validator_dst_address,omitempty"` - Amount *v1beta1.Coin `protobuf:"bytes,4,opt,name=amount,proto3" json:"amount,omitempty"` + DelegatorAddress string `protobuf:"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty"` + Amount *v1beta1.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"` } -func (x *MsgBeginRedelegate) Reset() { - *x = MsgBeginRedelegate{} +func (x *MsgRedeemTokensForShares) Reset() { + *x = MsgRedeemTokensForShares{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[6] + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MsgBeginRedelegate) String() string { +func (x *MsgRedeemTokensForShares) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MsgBeginRedelegate) ProtoMessage() {} +func (*MsgRedeemTokensForShares) ProtoMessage() {} -// Deprecated: Use MsgBeginRedelegate.ProtoReflect.Descriptor instead. -func (*MsgBeginRedelegate) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{6} +// Deprecated: Use MsgRedeemTokensForShares.ProtoReflect.Descriptor instead. +func (*MsgRedeemTokensForShares) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{18} } -func (x *MsgBeginRedelegate) GetDelegatorAddress() string { +func (x *MsgRedeemTokensForShares) GetDelegatorAddress() string { if x != nil { return x.DelegatorAddress } return "" } -func (x *MsgBeginRedelegate) GetValidatorSrcAddress() string { - if x != nil { - return x.ValidatorSrcAddress - } - return "" -} - -func (x *MsgBeginRedelegate) GetValidatorDstAddress() string { - if x != nil { - return x.ValidatorDstAddress - } - return "" -} - -func (x *MsgBeginRedelegate) GetAmount() *v1beta1.Coin { +func (x *MsgRedeemTokensForShares) GetAmount() *v1beta1.Coin { if x != nil { return x.Amount } return nil } -// MsgBeginRedelegateResponse defines the Msg/BeginRedelegate response type. -type MsgBeginRedelegateResponse struct { +// MsgRedeemTokensForSharesResponse defines the Msg/MsgRedeemTokensForShares response type. +type MsgRedeemTokensForSharesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CompletionTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=completion_time,json=completionTime,proto3" json:"completion_time,omitempty"` + Amount *v1beta1.Coin `protobuf:"bytes,1,opt,name=amount,proto3" json:"amount,omitempty"` } -func (x *MsgBeginRedelegateResponse) Reset() { - *x = MsgBeginRedelegateResponse{} +func (x *MsgRedeemTokensForSharesResponse) Reset() { + *x = MsgRedeemTokensForSharesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[7] + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MsgBeginRedelegateResponse) String() string { +func (x *MsgRedeemTokensForSharesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MsgBeginRedelegateResponse) ProtoMessage() {} +func (*MsgRedeemTokensForSharesResponse) ProtoMessage() {} -// Deprecated: Use MsgBeginRedelegateResponse.ProtoReflect.Descriptor instead. -func (*MsgBeginRedelegateResponse) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{7} +// Deprecated: Use MsgRedeemTokensForSharesResponse.ProtoReflect.Descriptor instead. +func (*MsgRedeemTokensForSharesResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{19} } -func (x *MsgBeginRedelegateResponse) GetCompletionTime() *timestamppb.Timestamp { +func (x *MsgRedeemTokensForSharesResponse) GetAmount() *v1beta1.Coin { if x != nil { - return x.CompletionTime + return x.Amount } return nil } -// MsgUndelegate defines a SDK message for performing an undelegation from a -// delegate and a validator. -type MsgUndelegate struct { +// MsgTransferTokenizeShareRecord transfer a tokenize share record +type MsgTransferTokenizeShareRecord struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DelegatorAddress string `protobuf:"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty"` - ValidatorAddress string `protobuf:"bytes,2,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"` - Amount *v1beta1.Coin `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount,omitempty"` + TokenizeShareRecordId uint64 `protobuf:"varint,1,opt,name=tokenize_share_record_id,json=tokenizeShareRecordId,proto3" json:"tokenize_share_record_id,omitempty"` + Sender string `protobuf:"bytes,2,opt,name=sender,proto3" json:"sender,omitempty"` + NewOwner string `protobuf:"bytes,3,opt,name=new_owner,json=newOwner,proto3" json:"new_owner,omitempty"` } -func (x *MsgUndelegate) Reset() { - *x = MsgUndelegate{} +func (x *MsgTransferTokenizeShareRecord) Reset() { + *x = MsgTransferTokenizeShareRecord{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[8] + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MsgUndelegate) String() string { +func (x *MsgTransferTokenizeShareRecord) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MsgUndelegate) ProtoMessage() {} +func (*MsgTransferTokenizeShareRecord) ProtoMessage() {} -// Deprecated: Use MsgUndelegate.ProtoReflect.Descriptor instead. -func (*MsgUndelegate) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{8} +// Deprecated: Use MsgTransferTokenizeShareRecord.ProtoReflect.Descriptor instead. +func (*MsgTransferTokenizeShareRecord) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{20} } -func (x *MsgUndelegate) GetDelegatorAddress() string { +func (x *MsgTransferTokenizeShareRecord) GetTokenizeShareRecordId() uint64 { if x != nil { - return x.DelegatorAddress + return x.TokenizeShareRecordId } - return "" + return 0 } -func (x *MsgUndelegate) GetValidatorAddress() string { +func (x *MsgTransferTokenizeShareRecord) GetSender() string { if x != nil { - return x.ValidatorAddress + return x.Sender } return "" } -func (x *MsgUndelegate) GetAmount() *v1beta1.Coin { +func (x *MsgTransferTokenizeShareRecord) GetNewOwner() string { if x != nil { - return x.Amount + return x.NewOwner } - return nil + return "" } -// MsgUndelegateResponse defines the Msg/Undelegate response type. -type MsgUndelegateResponse struct { +// MsgTransferTokenizeShareRecordResponse defines the Msg/MsgTransferTokenizeShareRecord response type. +type MsgTransferTokenizeShareRecordResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - CompletionTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=completion_time,json=completionTime,proto3" json:"completion_time,omitempty"` - // amount returns the amount of undelegated coins - // - // Since: cosmos-sdk 0.50 - Amount *v1beta1.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"` } -func (x *MsgUndelegateResponse) Reset() { - *x = MsgUndelegateResponse{} +func (x *MsgTransferTokenizeShareRecordResponse) Reset() { + *x = MsgTransferTokenizeShareRecordResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[9] + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MsgUndelegateResponse) String() string { +func (x *MsgTransferTokenizeShareRecordResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MsgUndelegateResponse) ProtoMessage() {} +func (*MsgTransferTokenizeShareRecordResponse) ProtoMessage() {} -// Deprecated: Use MsgUndelegateResponse.ProtoReflect.Descriptor instead. -func (*MsgUndelegateResponse) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{9} +// Deprecated: Use MsgTransferTokenizeShareRecordResponse.ProtoReflect.Descriptor instead. +func (*MsgTransferTokenizeShareRecordResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{21} } -func (x *MsgUndelegateResponse) GetCompletionTime() *timestamppb.Timestamp { - if x != nil { - return x.CompletionTime +// MsgDisableTokenizeShares prevents the tokenization of shares for a given address +type MsgDisableTokenizeShares struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DelegatorAddress string `protobuf:"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty"` +} + +func (x *MsgDisableTokenizeShares) Reset() { + *x = MsgDisableTokenizeShares{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *MsgUndelegateResponse) GetAmount() *v1beta1.Coin { +func (x *MsgDisableTokenizeShares) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgDisableTokenizeShares) ProtoMessage() {} + +// Deprecated: Use MsgDisableTokenizeShares.ProtoReflect.Descriptor instead. +func (*MsgDisableTokenizeShares) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{22} +} + +func (x *MsgDisableTokenizeShares) GetDelegatorAddress() string { if x != nil { - return x.Amount + return x.DelegatorAddress } - return nil + return "" } -// MsgCancelUnbondingDelegation defines the SDK message for performing a cancel unbonding delegation for delegator -// -// Since: cosmos-sdk 0.46 -type MsgCancelUnbondingDelegation struct { +// MsgDisableTokenizeSharesResponse defines the Msg/DisableTokenizeShares response type. +type MsgDisableTokenizeSharesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - DelegatorAddress string `protobuf:"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty"` - ValidatorAddress string `protobuf:"bytes,2,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"` - // amount is always less than or equal to unbonding delegation entry balance - Amount *v1beta1.Coin `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount,omitempty"` - // creation_height is the height which the unbonding took place. - CreationHeight int64 `protobuf:"varint,4,opt,name=creation_height,json=creationHeight,proto3" json:"creation_height,omitempty"` } -func (x *MsgCancelUnbondingDelegation) Reset() { - *x = MsgCancelUnbondingDelegation{} +func (x *MsgDisableTokenizeSharesResponse) Reset() { + *x = MsgDisableTokenizeSharesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[10] + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MsgCancelUnbondingDelegation) String() string { +func (x *MsgDisableTokenizeSharesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MsgCancelUnbondingDelegation) ProtoMessage() {} +func (*MsgDisableTokenizeSharesResponse) ProtoMessage() {} -// Deprecated: Use MsgCancelUnbondingDelegation.ProtoReflect.Descriptor instead. -func (*MsgCancelUnbondingDelegation) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{10} +// Deprecated: Use MsgDisableTokenizeSharesResponse.ProtoReflect.Descriptor instead. +func (*MsgDisableTokenizeSharesResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{23} } -func (x *MsgCancelUnbondingDelegation) GetDelegatorAddress() string { - if x != nil { - return x.DelegatorAddress - } - return "" +// MsgEnableTokenizeShares re-enables tokenization of shares for a given address +type MsgEnableTokenizeShares struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DelegatorAddress string `protobuf:"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty"` } -func (x *MsgCancelUnbondingDelegation) GetValidatorAddress() string { - if x != nil { - return x.ValidatorAddress +func (x *MsgEnableTokenizeShares) Reset() { + *x = MsgEnableTokenizeShares{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *MsgCancelUnbondingDelegation) GetAmount() *v1beta1.Coin { - if x != nil { - return x.Amount - } - return nil +func (x *MsgEnableTokenizeShares) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgEnableTokenizeShares) ProtoMessage() {} + +// Deprecated: Use MsgEnableTokenizeShares.ProtoReflect.Descriptor instead. +func (*MsgEnableTokenizeShares) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{24} } -func (x *MsgCancelUnbondingDelegation) GetCreationHeight() int64 { +func (x *MsgEnableTokenizeShares) GetDelegatorAddress() string { if x != nil { - return x.CreationHeight + return x.DelegatorAddress } - return 0 + return "" } -// MsgCancelUnbondingDelegationResponse -// -// Since: cosmos-sdk 0.46 -type MsgCancelUnbondingDelegationResponse struct { +// MsgEnableTokenizeSharesResponse defines the Msg/EnableTokenizeShares response type. +type MsgEnableTokenizeSharesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + CompletionTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=completion_time,json=completionTime,proto3" json:"completion_time,omitempty"` } -func (x *MsgCancelUnbondingDelegationResponse) Reset() { - *x = MsgCancelUnbondingDelegationResponse{} +func (x *MsgEnableTokenizeSharesResponse) Reset() { + *x = MsgEnableTokenizeSharesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[11] + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MsgCancelUnbondingDelegationResponse) String() string { +func (x *MsgEnableTokenizeSharesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MsgCancelUnbondingDelegationResponse) ProtoMessage() {} +func (*MsgEnableTokenizeSharesResponse) ProtoMessage() {} -// Deprecated: Use MsgCancelUnbondingDelegationResponse.ProtoReflect.Descriptor instead. -func (*MsgCancelUnbondingDelegationResponse) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{11} +// Deprecated: Use MsgEnableTokenizeSharesResponse.ProtoReflect.Descriptor instead. +func (*MsgEnableTokenizeSharesResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{25} } -// MsgUpdateParams is the Msg/UpdateParams request type. -// -// Since: cosmos-sdk 0.47 -type MsgUpdateParams struct { +func (x *MsgEnableTokenizeSharesResponse) GetCompletionTime() *timestamppb.Timestamp { + if x != nil { + return x.CompletionTime + } + return nil +} + +// MsgValidatorBond defines a SDK message for performing validator self-bond of delegated coins +// from a delegator to a validator. +type MsgValidatorBond struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // authority is the address that controls the module (defaults to x/gov unless overwritten). - Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` - // params defines the x/staking parameters to update. - // - // NOTE: All parameters must be supplied. - Params *Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params,omitempty"` + DelegatorAddress string `protobuf:"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty"` + ValidatorAddress string `protobuf:"bytes,2,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"` } -func (x *MsgUpdateParams) Reset() { - *x = MsgUpdateParams{} +func (x *MsgValidatorBond) Reset() { + *x = MsgValidatorBond{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[12] + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MsgUpdateParams) String() string { +func (x *MsgValidatorBond) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MsgUpdateParams) ProtoMessage() {} +func (*MsgValidatorBond) ProtoMessage() {} -// Deprecated: Use MsgUpdateParams.ProtoReflect.Descriptor instead. -func (*MsgUpdateParams) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{12} +// Deprecated: Use MsgValidatorBond.ProtoReflect.Descriptor instead. +func (*MsgValidatorBond) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{26} } -func (x *MsgUpdateParams) GetAuthority() string { +func (x *MsgValidatorBond) GetDelegatorAddress() string { if x != nil { - return x.Authority + return x.DelegatorAddress } return "" } -func (x *MsgUpdateParams) GetParams() *Params { +func (x *MsgValidatorBond) GetValidatorAddress() string { if x != nil { - return x.Params + return x.ValidatorAddress } - return nil + return "" } -// MsgUpdateParamsResponse defines the response structure for executing a -// MsgUpdateParams message. -// -// Since: cosmos-sdk 0.47 -type MsgUpdateParamsResponse struct { +// MsgValidatorBondResponse defines the Msg/ValidatorBond response type. +type MsgValidatorBondResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *MsgUpdateParamsResponse) Reset() { - *x = MsgUpdateParamsResponse{} +func (x *MsgValidatorBondResponse) Reset() { + *x = MsgValidatorBondResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[13] + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MsgUpdateParamsResponse) String() string { +func (x *MsgValidatorBondResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MsgUpdateParamsResponse) ProtoMessage() {} +func (*MsgValidatorBondResponse) ProtoMessage() {} -// Deprecated: Use MsgUpdateParamsResponse.ProtoReflect.Descriptor instead. -func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{13} +// Deprecated: Use MsgValidatorBondResponse.ProtoReflect.Descriptor instead. +func (*MsgValidatorBondResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{27} } var File_cosmos_staking_v1beta1_tx_proto protoreflect.FileDescriptor @@ -7793,7 +14460,7 @@ var file_cosmos_staking_v1beta1_tx_proto_rawDesc = []byte{ 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, - 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfb, 0x04, 0x0a, 0x12, 0x4d, 0x73, 0x67, + 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfd, 0x04, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x50, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, @@ -7805,249 +14472,427 @@ var file_cosmos_staking_v1beta1_tx_proto_rawDesc = []byte{ 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x60, 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x6c, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x62, 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x6c, 0x66, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x30, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, - 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xa8, - 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x11, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x6c, 0x66, 0x44, 0x65, 0x6c, - 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x1a, 0x18, 0x01, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, - 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x12, 0x4e, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, - 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, - 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x12, 0x46, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x42, 0x18, 0xca, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, - 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x3a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, - 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x40, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, + 0x28, 0x09, 0x42, 0x32, 0x18, 0x01, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, + 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, + 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x11, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x6c, 0x66, 0x44, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x11, 0x64, 0x65, 0x6c, + 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x18, 0x01, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x4e, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, + 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x46, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x42, 0x18, 0xca, 0xb4, 0x2d, 0x14, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x50, 0x75, 0x62, 0x4b, + 0x65, 0x79, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x3a, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x40, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, + 0x82, 0xe7, 0xb0, 0x2a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x8a, 0xe7, 0xb0, 0x2a, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x1c, 0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xab, 0x03, 0x0a, 0x10, 0x4d, 0x73, 0x67, 0x45, 0x64, + 0x69, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x50, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4e, 0x0a, + 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x56, 0x0a, + 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2d, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, + 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x61, 0x74, 0x65, 0x12, 0x5d, 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x6c, + 0x66, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x2d, 0x18, 0x01, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, + 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, + 0x74, 0x52, 0x11, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x6c, 0x66, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x3e, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x8a, 0xe7, 0xb0, 0x2a, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, - 0x73, 0x64, 0x6b, 0x2f, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x1c, 0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa5, 0x03, 0x0a, 0x10, 0x4d, 0x73, 0x67, 0x45, 0x64, 0x69, 0x74, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x50, 0x0a, 0x0b, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4e, 0x0a, 0x11, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x56, 0x0a, 0x0f, 0x63, - 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x2d, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, - 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x44, 0x65, 0x63, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x61, 0x74, 0x65, 0x12, 0x57, 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x6c, 0x66, 0x5f, - 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x27, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, - 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x11, 0x6d, 0x69, 0x6e, 0x53, 0x65, - 0x6c, 0x66, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x3e, 0x88, 0xa0, - 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x8a, 0xe7, 0xb0, 0x2a, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, + 0x73, 0x64, 0x6b, 0x2f, 0x4d, 0x73, 0x67, 0x45, 0x64, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x6f, 0x72, 0x22, 0x1a, 0x0a, 0x18, 0x4d, 0x73, 0x67, 0x45, 0x64, 0x69, 0x74, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x9d, 0x02, 0x0a, 0x0b, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, + 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, + 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4e, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3c, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, + 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x39, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x82, + 0xe7, 0xb0, 0x2a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x8a, 0xe7, 0xb0, 0x2a, 0x16, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, + 0x22, 0x15, 0x0a, 0x13, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x89, 0x03, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x42, + 0x65, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x45, + 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x55, 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x53, 0x72, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x55, 0x0a, 0x15, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, + 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, + 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x13, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x3c, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, + 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, + 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x3a, 0x40, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x11, + 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x8a, 0xe7, 0xb0, 0x2a, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, + 0x2f, 0x4d, 0x73, 0x67, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x65, 0x22, 0x70, 0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x52, + 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x52, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, + 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xa1, 0x02, 0x0a, 0x0d, 0x4d, 0x73, 0x67, 0x55, 0x6e, 0x64, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, + 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4e, + 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3c, + 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, + 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x3b, 0x88, 0xa0, + 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x8a, 0xe7, 0xb0, 0x2a, - 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x4d, 0x73, 0x67, 0x45, - 0x64, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x1a, 0x0a, 0x18, - 0x4d, 0x73, 0x67, 0x45, 0x64, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9d, 0x02, 0x0a, 0x0b, 0x4d, 0x73, 0x67, - 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, - 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, - 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x4e, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x3c, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, - 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x39, 0x88, - 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x11, 0x64, 0x65, 0x6c, 0x65, - 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x8a, 0xe7, 0xb0, - 0x2a, 0x16, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x4d, 0x73, 0x67, - 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x22, 0x15, 0x0a, 0x13, 0x4d, 0x73, 0x67, 0x44, - 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x89, 0x03, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x64, 0x65, - 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, + 0x18, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x4d, 0x73, 0x67, 0x55, + 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x22, 0xa9, 0x01, 0x0a, 0x15, 0x4d, 0x73, + 0x67, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, + 0x1f, 0x01, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, + 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xe8, 0x02, 0x0a, 0x1c, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, + 0x63, 0x65, 0x6c, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, + 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, - 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x55, 0x0a, - 0x15, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, - 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, - 0x13, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x72, 0x63, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x12, 0x55, 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, - 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, - 0x72, 0x44, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3c, 0x0a, 0x06, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, - 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x40, 0x88, 0xa0, 0x1f, 0x00, 0xe8, - 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, - 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x8a, 0xe7, 0xb0, 0x2a, 0x1d, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x4d, 0x73, 0x67, 0x42, 0x65, 0x67, 0x69, - 0x6e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x22, 0x70, 0x0a, 0x1a, 0x4d, - 0x73, 0x67, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0d, - 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0e, 0x63, - 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xa1, 0x02, - 0x0a, 0x0d, 0x4d, 0x73, 0x67, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, - 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4e, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3c, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, - 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x61, 0x6d, - 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x3b, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, + 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4e, 0x0a, + 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3c, 0x0a, + 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, + 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x3a, 0x4a, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x8a, 0xe7, 0xb0, 0x2a, 0x18, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, - 0x73, 0x64, 0x6b, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, - 0x65, 0x22, 0xa9, 0x01, 0x0a, 0x15, 0x4d, 0x73, 0x67, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x0f, 0x63, - 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, - 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x3c, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, - 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xe8, 0x02, - 0x0a, 0x1c, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x55, 0x6e, 0x62, 0x6f, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, - 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4e, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3c, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, - 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, - 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x4a, 0x88, 0xa0, + 0x72, 0x65, 0x73, 0x73, 0x8a, 0xe7, 0xb0, 0x2a, 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, + 0x73, 0x64, 0x6b, 0x2f, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x55, 0x6e, 0x62, + 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x26, 0x0a, 0x24, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x55, 0x6e, 0x62, + 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc5, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, + 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, + 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x37, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x24, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x78, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x12, + 0x4d, 0x73, 0x67, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x12, 0x3f, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x12, 0xf2, + 0xde, 0x1f, 0x0e, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x22, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x3a, 0x38, 0x82, 0xe7, 0xb0, 0x2a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x8a, 0xe7, 0xb0, 0x2a, 0x1d, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x6e, + 0x62, 0x6f, 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x1c, 0x0a, + 0x1a, 0x4d, 0x73, 0x67, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd7, 0x02, 0x0a, 0x11, + 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, + 0x73, 0x12, 0x49, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1c, 0xf2, 0xde, + 0x1f, 0x18, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, + 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, + 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x49, 0x0a, 0x11, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1c, 0xf2, 0xde, 0x1f, 0x18, 0x79, 0x61, 0x6d, + 0x6c, 0x3a, 0x22, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x22, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x37, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, + 0x69, 0x6e, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x32, 0x0a, 0x15, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x13, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4f, + 0x77, 0x6e, 0x65, 0x72, 0x3a, 0x3f, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, + 0xb0, 0x2a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x8a, 0xe7, 0xb0, 0x2a, 0x1c, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, + 0x73, 0x64, 0x6b, 0x2f, 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, + 0x68, 0x61, 0x72, 0x65, 0x73, 0x22, 0x54, 0x0a, 0x19, 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x04, 0xc8, + 0xde, 0x1f, 0x00, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xe6, 0x01, 0x0a, 0x18, + 0x4d, 0x73, 0x67, 0x52, 0x65, 0x64, 0x65, 0x65, 0x6d, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x46, + 0x6f, 0x72, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, + 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x1c, 0xf2, 0xde, 0x1f, 0x18, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x64, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x22, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x37, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, + 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x04, + 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x46, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x8a, 0xe7, 0xb0, 0x2a, - 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x4d, 0x73, 0x67, 0x43, - 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, - 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x26, 0x0a, 0x24, 0x4d, 0x73, 0x67, 0x43, - 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, - 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0xc5, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x41, 0x0a, 0x06, - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, - 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, - 0x37, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, - 0xe7, 0xb0, 0x2a, 0x24, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x78, - 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x32, 0x9d, 0x06, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x71, 0x0a, 0x0f, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2a, + 0x23, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x4d, 0x73, 0x67, 0x52, + 0x65, 0x64, 0x65, 0x65, 0x6d, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x46, 0x6f, 0x72, 0x53, 0x68, + 0x61, 0x72, 0x65, 0x73, 0x22, 0x5b, 0x0a, 0x20, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x64, 0x65, 0x65, + 0x6d, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x46, 0x6f, 0x72, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, + 0x6f, 0x69, 0x6e, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x22, 0xd1, 0x01, 0x0a, 0x1e, 0x4d, 0x73, 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x12, 0x37, 0x0a, 0x18, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, + 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x15, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, + 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, 0x6f, 0x77, 0x6e, + 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x4f, 0x77, 0x6e, + 0x65, 0x72, 0x3a, 0x41, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, + 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x29, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x4d, 0x73, 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x22, 0x28, 0x0a, 0x26, 0x4d, 0x73, 0x67, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, + 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0xad, 0x01, 0x0a, 0x18, 0x4d, 0x73, 0x67, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x11, + 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1c, 0xf2, 0xde, 0x1f, 0x18, 0x79, 0x61, 0x6d, + 0x6c, 0x3a, 0x22, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x22, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x46, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, + 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x8a, 0xe7, 0xb0, 0x2a, 0x23, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x4d, 0x73, 0x67, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x22, + 0x22, 0x0a, 0x20, 0x4d, 0x73, 0x67, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0xab, 0x01, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, + 0x49, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1c, 0xf2, 0xde, 0x1f, 0x18, + 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, + 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x45, 0x88, 0xa0, 0x1f, 0x00, + 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, + 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x8a, 0xe7, 0xb0, 0x2a, 0x22, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x4d, 0x73, 0x67, 0x45, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, + 0x73, 0x22, 0x70, 0x0a, 0x1f, 0x4d, 0x73, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xc8, 0xde, 0x1f, 0x00, 0x90, + 0xdf, 0x1f, 0x01, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x69, 0x6d, 0x65, 0x22, 0xe8, 0x01, 0x0a, 0x10, 0x4d, 0x73, 0x67, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x6f, 0x72, 0x42, 0x6f, 0x6e, 0x64, 0x12, 0x49, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, + 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x1c, 0xf2, 0xde, 0x1f, 0x18, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x64, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x22, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x49, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1c, + 0xf2, 0xde, 0x1f, 0x18, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x52, 0x10, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x3e, + 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x11, 0x64, 0x65, 0x6c, + 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x8a, 0xe7, + 0xb0, 0x2a, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x4d, 0x73, + 0x67, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x6f, 0x6e, 0x64, 0x22, 0x1a, + 0x0a, 0x18, 0x4d, 0x73, 0x67, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x6f, + 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x94, 0x0d, 0x0a, 0x03, 0x4d, + 0x73, 0x67, 0x12, 0x71, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2a, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, + 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, + 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, + 0x72, 0x1a, 0x32, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x0d, 0x45, 0x64, 0x69, 0x74, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x28, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x4d, 0x73, 0x67, 0x45, 0x64, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x1a, 0x30, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x64, 0x69, + 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x08, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x23, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x1a, 0x32, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, - 0x0a, 0x0d, 0x45, 0x64, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, - 0x28, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x64, 0x69, 0x74, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x1a, 0x30, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x65, 0x1a, 0x2b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, + 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, + 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x71, 0x0a, 0x0f, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x65, 0x12, 0x2a, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, + 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, + 0x42, 0x65, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x1a, + 0x32, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x42, 0x65, 0x67, 0x69, + 0x6e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x0a, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, + 0x65, 0x12, 0x25, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x6e, + 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x1a, 0x2d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x19, 0x43, 0x61, 0x6e, 0x63, + 0x65, 0x6c, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, + 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, + 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x3c, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x55, 0x6e, + 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x0c, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x64, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x08, 0x44, - 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x23, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x1a, 0x2b, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x0f, 0x42, 0x65, 0x67, - 0x69, 0x6e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x52, 0x65, - 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x1a, 0x32, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x1a, 0x2f, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x0f, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2a, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x4d, 0x73, 0x67, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x1a, 0x32, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, + 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x0e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, + 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x29, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, - 0x67, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x0a, - 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x25, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, - 0x65, 0x1a, 0x2d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x6e, - 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x8f, 0x01, 0x0a, 0x19, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x55, 0x6e, 0x62, 0x6f, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, + 0x72, 0x65, 0x73, 0x1a, 0x31, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, + 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x64, 0x65, 0x65, + 0x6d, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x46, 0x6f, 0x72, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, + 0x12, 0x30, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x64, + 0x65, 0x65, 0x6d, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x46, 0x6f, 0x72, 0x53, 0x68, 0x61, 0x72, + 0x65, 0x73, 0x1a, 0x38, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, + 0x65, 0x64, 0x65, 0x65, 0x6d, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x46, 0x6f, 0x72, 0x53, 0x68, + 0x61, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x95, 0x01, 0x0a, + 0x1b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, + 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x36, 0x2e, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x1a, 0x3e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, + 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, + 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, + 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x15, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x30, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, - 0x6c, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x3c, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, + 0x1a, 0x38, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x14, 0x45, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, + 0x72, 0x65, 0x73, 0x12, 0x2f, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, + 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, + 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, 0x68, + 0x61, 0x72, 0x65, 0x73, 0x1a, 0x37, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, - 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x68, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2f, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, - 0xb0, 0x2a, 0x01, 0x42, 0xd7, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x53, 0x58, 0xaa, 0x02, 0x16, 0x43, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, - 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x22, - 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c, 0x56, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xea, 0x02, 0x18, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x53, 0x74, 0x61, - 0x6b, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x53, + 0x68, 0x61, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, + 0x0d, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x6f, 0x6e, 0x64, 0x12, 0x28, + 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x6f, 0x72, 0x42, 0x6f, 0x6e, 0x64, 0x1a, 0x30, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x6f, + 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, + 0x01, 0x42, 0xd7, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x3b, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x53, 0x58, 0xaa, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0xca, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, + 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x22, 0x43, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0xea, 0x02, 0x18, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x53, 0x74, 0x61, 0x6b, 0x69, + 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -8062,62 +14907,95 @@ func file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP() []byte { return file_cosmos_staking_v1beta1_tx_proto_rawDescData } -var file_cosmos_staking_v1beta1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 14) +var file_cosmos_staking_v1beta1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 28) var file_cosmos_staking_v1beta1_tx_proto_goTypes = []interface{}{ - (*MsgCreateValidator)(nil), // 0: cosmos.staking.v1beta1.MsgCreateValidator - (*MsgCreateValidatorResponse)(nil), // 1: cosmos.staking.v1beta1.MsgCreateValidatorResponse - (*MsgEditValidator)(nil), // 2: cosmos.staking.v1beta1.MsgEditValidator - (*MsgEditValidatorResponse)(nil), // 3: cosmos.staking.v1beta1.MsgEditValidatorResponse - (*MsgDelegate)(nil), // 4: cosmos.staking.v1beta1.MsgDelegate - (*MsgDelegateResponse)(nil), // 5: cosmos.staking.v1beta1.MsgDelegateResponse - (*MsgBeginRedelegate)(nil), // 6: cosmos.staking.v1beta1.MsgBeginRedelegate - (*MsgBeginRedelegateResponse)(nil), // 7: cosmos.staking.v1beta1.MsgBeginRedelegateResponse - (*MsgUndelegate)(nil), // 8: cosmos.staking.v1beta1.MsgUndelegate - (*MsgUndelegateResponse)(nil), // 9: cosmos.staking.v1beta1.MsgUndelegateResponse - (*MsgCancelUnbondingDelegation)(nil), // 10: cosmos.staking.v1beta1.MsgCancelUnbondingDelegation - (*MsgCancelUnbondingDelegationResponse)(nil), // 11: cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse - (*MsgUpdateParams)(nil), // 12: cosmos.staking.v1beta1.MsgUpdateParams - (*MsgUpdateParamsResponse)(nil), // 13: cosmos.staking.v1beta1.MsgUpdateParamsResponse - (*Description)(nil), // 14: cosmos.staking.v1beta1.Description - (*CommissionRates)(nil), // 15: cosmos.staking.v1beta1.CommissionRates - (*anypb.Any)(nil), // 16: google.protobuf.Any - (*v1beta1.Coin)(nil), // 17: cosmos.base.v1beta1.Coin - (*timestamppb.Timestamp)(nil), // 18: google.protobuf.Timestamp - (*Params)(nil), // 19: cosmos.staking.v1beta1.Params + (*MsgCreateValidator)(nil), // 0: cosmos.staking.v1beta1.MsgCreateValidator + (*MsgCreateValidatorResponse)(nil), // 1: cosmos.staking.v1beta1.MsgCreateValidatorResponse + (*MsgEditValidator)(nil), // 2: cosmos.staking.v1beta1.MsgEditValidator + (*MsgEditValidatorResponse)(nil), // 3: cosmos.staking.v1beta1.MsgEditValidatorResponse + (*MsgDelegate)(nil), // 4: cosmos.staking.v1beta1.MsgDelegate + (*MsgDelegateResponse)(nil), // 5: cosmos.staking.v1beta1.MsgDelegateResponse + (*MsgBeginRedelegate)(nil), // 6: cosmos.staking.v1beta1.MsgBeginRedelegate + (*MsgBeginRedelegateResponse)(nil), // 7: cosmos.staking.v1beta1.MsgBeginRedelegateResponse + (*MsgUndelegate)(nil), // 8: cosmos.staking.v1beta1.MsgUndelegate + (*MsgUndelegateResponse)(nil), // 9: cosmos.staking.v1beta1.MsgUndelegateResponse + (*MsgCancelUnbondingDelegation)(nil), // 10: cosmos.staking.v1beta1.MsgCancelUnbondingDelegation + (*MsgCancelUnbondingDelegationResponse)(nil), // 11: cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse + (*MsgUpdateParams)(nil), // 12: cosmos.staking.v1beta1.MsgUpdateParams + (*MsgUpdateParamsResponse)(nil), // 13: cosmos.staking.v1beta1.MsgUpdateParamsResponse + (*MsgUnbondValidator)(nil), // 14: cosmos.staking.v1beta1.MsgUnbondValidator + (*MsgUnbondValidatorResponse)(nil), // 15: cosmos.staking.v1beta1.MsgUnbondValidatorResponse + (*MsgTokenizeShares)(nil), // 16: cosmos.staking.v1beta1.MsgTokenizeShares + (*MsgTokenizeSharesResponse)(nil), // 17: cosmos.staking.v1beta1.MsgTokenizeSharesResponse + (*MsgRedeemTokensForShares)(nil), // 18: cosmos.staking.v1beta1.MsgRedeemTokensForShares + (*MsgRedeemTokensForSharesResponse)(nil), // 19: cosmos.staking.v1beta1.MsgRedeemTokensForSharesResponse + (*MsgTransferTokenizeShareRecord)(nil), // 20: cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord + (*MsgTransferTokenizeShareRecordResponse)(nil), // 21: cosmos.staking.v1beta1.MsgTransferTokenizeShareRecordResponse + (*MsgDisableTokenizeShares)(nil), // 22: cosmos.staking.v1beta1.MsgDisableTokenizeShares + (*MsgDisableTokenizeSharesResponse)(nil), // 23: cosmos.staking.v1beta1.MsgDisableTokenizeSharesResponse + (*MsgEnableTokenizeShares)(nil), // 24: cosmos.staking.v1beta1.MsgEnableTokenizeShares + (*MsgEnableTokenizeSharesResponse)(nil), // 25: cosmos.staking.v1beta1.MsgEnableTokenizeSharesResponse + (*MsgValidatorBond)(nil), // 26: cosmos.staking.v1beta1.MsgValidatorBond + (*MsgValidatorBondResponse)(nil), // 27: cosmos.staking.v1beta1.MsgValidatorBondResponse + (*Description)(nil), // 28: cosmos.staking.v1beta1.Description + (*CommissionRates)(nil), // 29: cosmos.staking.v1beta1.CommissionRates + (*anypb.Any)(nil), // 30: google.protobuf.Any + (*v1beta1.Coin)(nil), // 31: cosmos.base.v1beta1.Coin + (*timestamppb.Timestamp)(nil), // 32: google.protobuf.Timestamp + (*Params)(nil), // 33: cosmos.staking.v1beta1.Params } var file_cosmos_staking_v1beta1_tx_proto_depIdxs = []int32{ - 14, // 0: cosmos.staking.v1beta1.MsgCreateValidator.description:type_name -> cosmos.staking.v1beta1.Description - 15, // 1: cosmos.staking.v1beta1.MsgCreateValidator.commission:type_name -> cosmos.staking.v1beta1.CommissionRates - 16, // 2: cosmos.staking.v1beta1.MsgCreateValidator.pubkey:type_name -> google.protobuf.Any - 17, // 3: cosmos.staking.v1beta1.MsgCreateValidator.value:type_name -> cosmos.base.v1beta1.Coin - 14, // 4: cosmos.staking.v1beta1.MsgEditValidator.description:type_name -> cosmos.staking.v1beta1.Description - 17, // 5: cosmos.staking.v1beta1.MsgDelegate.amount:type_name -> cosmos.base.v1beta1.Coin - 17, // 6: cosmos.staking.v1beta1.MsgBeginRedelegate.amount:type_name -> cosmos.base.v1beta1.Coin - 18, // 7: cosmos.staking.v1beta1.MsgBeginRedelegateResponse.completion_time:type_name -> google.protobuf.Timestamp - 17, // 8: cosmos.staking.v1beta1.MsgUndelegate.amount:type_name -> cosmos.base.v1beta1.Coin - 18, // 9: cosmos.staking.v1beta1.MsgUndelegateResponse.completion_time:type_name -> google.protobuf.Timestamp - 17, // 10: cosmos.staking.v1beta1.MsgUndelegateResponse.amount:type_name -> cosmos.base.v1beta1.Coin - 17, // 11: cosmos.staking.v1beta1.MsgCancelUnbondingDelegation.amount:type_name -> cosmos.base.v1beta1.Coin - 19, // 12: cosmos.staking.v1beta1.MsgUpdateParams.params:type_name -> cosmos.staking.v1beta1.Params - 0, // 13: cosmos.staking.v1beta1.Msg.CreateValidator:input_type -> cosmos.staking.v1beta1.MsgCreateValidator - 2, // 14: cosmos.staking.v1beta1.Msg.EditValidator:input_type -> cosmos.staking.v1beta1.MsgEditValidator - 4, // 15: cosmos.staking.v1beta1.Msg.Delegate:input_type -> cosmos.staking.v1beta1.MsgDelegate - 6, // 16: cosmos.staking.v1beta1.Msg.BeginRedelegate:input_type -> cosmos.staking.v1beta1.MsgBeginRedelegate - 8, // 17: cosmos.staking.v1beta1.Msg.Undelegate:input_type -> cosmos.staking.v1beta1.MsgUndelegate - 10, // 18: cosmos.staking.v1beta1.Msg.CancelUnbondingDelegation:input_type -> cosmos.staking.v1beta1.MsgCancelUnbondingDelegation - 12, // 19: cosmos.staking.v1beta1.Msg.UpdateParams:input_type -> cosmos.staking.v1beta1.MsgUpdateParams - 1, // 20: cosmos.staking.v1beta1.Msg.CreateValidator:output_type -> cosmos.staking.v1beta1.MsgCreateValidatorResponse - 3, // 21: cosmos.staking.v1beta1.Msg.EditValidator:output_type -> cosmos.staking.v1beta1.MsgEditValidatorResponse - 5, // 22: cosmos.staking.v1beta1.Msg.Delegate:output_type -> cosmos.staking.v1beta1.MsgDelegateResponse - 7, // 23: cosmos.staking.v1beta1.Msg.BeginRedelegate:output_type -> cosmos.staking.v1beta1.MsgBeginRedelegateResponse - 9, // 24: cosmos.staking.v1beta1.Msg.Undelegate:output_type -> cosmos.staking.v1beta1.MsgUndelegateResponse - 11, // 25: cosmos.staking.v1beta1.Msg.CancelUnbondingDelegation:output_type -> cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse - 13, // 26: cosmos.staking.v1beta1.Msg.UpdateParams:output_type -> cosmos.staking.v1beta1.MsgUpdateParamsResponse - 20, // [20:27] is the sub-list for method output_type - 13, // [13:20] is the sub-list for method input_type - 13, // [13:13] is the sub-list for extension type_name - 13, // [13:13] is the sub-list for extension extendee - 0, // [0:13] is the sub-list for field type_name + 28, // 0: cosmos.staking.v1beta1.MsgCreateValidator.description:type_name -> cosmos.staking.v1beta1.Description + 29, // 1: cosmos.staking.v1beta1.MsgCreateValidator.commission:type_name -> cosmos.staking.v1beta1.CommissionRates + 30, // 2: cosmos.staking.v1beta1.MsgCreateValidator.pubkey:type_name -> google.protobuf.Any + 31, // 3: cosmos.staking.v1beta1.MsgCreateValidator.value:type_name -> cosmos.base.v1beta1.Coin + 28, // 4: cosmos.staking.v1beta1.MsgEditValidator.description:type_name -> cosmos.staking.v1beta1.Description + 31, // 5: cosmos.staking.v1beta1.MsgDelegate.amount:type_name -> cosmos.base.v1beta1.Coin + 31, // 6: cosmos.staking.v1beta1.MsgBeginRedelegate.amount:type_name -> cosmos.base.v1beta1.Coin + 32, // 7: cosmos.staking.v1beta1.MsgBeginRedelegateResponse.completion_time:type_name -> google.protobuf.Timestamp + 31, // 8: cosmos.staking.v1beta1.MsgUndelegate.amount:type_name -> cosmos.base.v1beta1.Coin + 32, // 9: cosmos.staking.v1beta1.MsgUndelegateResponse.completion_time:type_name -> google.protobuf.Timestamp + 31, // 10: cosmos.staking.v1beta1.MsgUndelegateResponse.amount:type_name -> cosmos.base.v1beta1.Coin + 31, // 11: cosmos.staking.v1beta1.MsgCancelUnbondingDelegation.amount:type_name -> cosmos.base.v1beta1.Coin + 33, // 12: cosmos.staking.v1beta1.MsgUpdateParams.params:type_name -> cosmos.staking.v1beta1.Params + 31, // 13: cosmos.staking.v1beta1.MsgTokenizeShares.amount:type_name -> cosmos.base.v1beta1.Coin + 31, // 14: cosmos.staking.v1beta1.MsgTokenizeSharesResponse.amount:type_name -> cosmos.base.v1beta1.Coin + 31, // 15: cosmos.staking.v1beta1.MsgRedeemTokensForShares.amount:type_name -> cosmos.base.v1beta1.Coin + 31, // 16: cosmos.staking.v1beta1.MsgRedeemTokensForSharesResponse.amount:type_name -> cosmos.base.v1beta1.Coin + 32, // 17: cosmos.staking.v1beta1.MsgEnableTokenizeSharesResponse.completion_time:type_name -> google.protobuf.Timestamp + 0, // 18: cosmos.staking.v1beta1.Msg.CreateValidator:input_type -> cosmos.staking.v1beta1.MsgCreateValidator + 2, // 19: cosmos.staking.v1beta1.Msg.EditValidator:input_type -> cosmos.staking.v1beta1.MsgEditValidator + 4, // 20: cosmos.staking.v1beta1.Msg.Delegate:input_type -> cosmos.staking.v1beta1.MsgDelegate + 6, // 21: cosmos.staking.v1beta1.Msg.BeginRedelegate:input_type -> cosmos.staking.v1beta1.MsgBeginRedelegate + 8, // 22: cosmos.staking.v1beta1.Msg.Undelegate:input_type -> cosmos.staking.v1beta1.MsgUndelegate + 10, // 23: cosmos.staking.v1beta1.Msg.CancelUnbondingDelegation:input_type -> cosmos.staking.v1beta1.MsgCancelUnbondingDelegation + 12, // 24: cosmos.staking.v1beta1.Msg.UpdateParams:input_type -> cosmos.staking.v1beta1.MsgUpdateParams + 14, // 25: cosmos.staking.v1beta1.Msg.UnbondValidator:input_type -> cosmos.staking.v1beta1.MsgUnbondValidator + 16, // 26: cosmos.staking.v1beta1.Msg.TokenizeShares:input_type -> cosmos.staking.v1beta1.MsgTokenizeShares + 18, // 27: cosmos.staking.v1beta1.Msg.RedeemTokensForShares:input_type -> cosmos.staking.v1beta1.MsgRedeemTokensForShares + 20, // 28: cosmos.staking.v1beta1.Msg.TransferTokenizeShareRecord:input_type -> cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord + 22, // 29: cosmos.staking.v1beta1.Msg.DisableTokenizeShares:input_type -> cosmos.staking.v1beta1.MsgDisableTokenizeShares + 24, // 30: cosmos.staking.v1beta1.Msg.EnableTokenizeShares:input_type -> cosmos.staking.v1beta1.MsgEnableTokenizeShares + 26, // 31: cosmos.staking.v1beta1.Msg.ValidatorBond:input_type -> cosmos.staking.v1beta1.MsgValidatorBond + 1, // 32: cosmos.staking.v1beta1.Msg.CreateValidator:output_type -> cosmos.staking.v1beta1.MsgCreateValidatorResponse + 3, // 33: cosmos.staking.v1beta1.Msg.EditValidator:output_type -> cosmos.staking.v1beta1.MsgEditValidatorResponse + 5, // 34: cosmos.staking.v1beta1.Msg.Delegate:output_type -> cosmos.staking.v1beta1.MsgDelegateResponse + 7, // 35: cosmos.staking.v1beta1.Msg.BeginRedelegate:output_type -> cosmos.staking.v1beta1.MsgBeginRedelegateResponse + 9, // 36: cosmos.staking.v1beta1.Msg.Undelegate:output_type -> cosmos.staking.v1beta1.MsgUndelegateResponse + 11, // 37: cosmos.staking.v1beta1.Msg.CancelUnbondingDelegation:output_type -> cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse + 13, // 38: cosmos.staking.v1beta1.Msg.UpdateParams:output_type -> cosmos.staking.v1beta1.MsgUpdateParamsResponse + 15, // 39: cosmos.staking.v1beta1.Msg.UnbondValidator:output_type -> cosmos.staking.v1beta1.MsgUnbondValidatorResponse + 17, // 40: cosmos.staking.v1beta1.Msg.TokenizeShares:output_type -> cosmos.staking.v1beta1.MsgTokenizeSharesResponse + 19, // 41: cosmos.staking.v1beta1.Msg.RedeemTokensForShares:output_type -> cosmos.staking.v1beta1.MsgRedeemTokensForSharesResponse + 21, // 42: cosmos.staking.v1beta1.Msg.TransferTokenizeShareRecord:output_type -> cosmos.staking.v1beta1.MsgTransferTokenizeShareRecordResponse + 23, // 43: cosmos.staking.v1beta1.Msg.DisableTokenizeShares:output_type -> cosmos.staking.v1beta1.MsgDisableTokenizeSharesResponse + 25, // 44: cosmos.staking.v1beta1.Msg.EnableTokenizeShares:output_type -> cosmos.staking.v1beta1.MsgEnableTokenizeSharesResponse + 27, // 45: cosmos.staking.v1beta1.Msg.ValidatorBond:output_type -> cosmos.staking.v1beta1.MsgValidatorBondResponse + 32, // [32:46] is the sub-list for method output_type + 18, // [18:32] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name } func init() { file_cosmos_staking_v1beta1_tx_proto_init() } @@ -8295,6 +15173,174 @@ func file_cosmos_staking_v1beta1_tx_proto_init() { return nil } } + file_cosmos_staking_v1beta1_tx_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgUnbondValidator); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_tx_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgUnbondValidatorResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_tx_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgTokenizeShares); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_tx_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgTokenizeSharesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_tx_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgRedeemTokensForShares); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_tx_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgRedeemTokensForSharesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_tx_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgTransferTokenizeShareRecord); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_tx_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgTransferTokenizeShareRecordResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_tx_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgDisableTokenizeShares); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_tx_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgDisableTokenizeSharesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_tx_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgEnableTokenizeShares); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_tx_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgEnableTokenizeSharesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_tx_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgValidatorBond); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_tx_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgValidatorBondResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -8302,7 +15348,7 @@ func file_cosmos_staking_v1beta1_tx_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_cosmos_staking_v1beta1_tx_proto_rawDesc, NumEnums: 0, - NumMessages: 14, + NumMessages: 28, NumExtensions: 0, NumServices: 1, }, diff --git a/api/cosmos/staking/v1beta1/tx_grpc.pb.go b/api/cosmos/staking/v1beta1/tx_grpc.pb.go index 84a8c06e8998..f68b6e65b2d6 100644 --- a/api/cosmos/staking/v1beta1/tx_grpc.pb.go +++ b/api/cosmos/staking/v1beta1/tx_grpc.pb.go @@ -19,13 +19,20 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - Msg_CreateValidator_FullMethodName = "/cosmos.staking.v1beta1.Msg/CreateValidator" - Msg_EditValidator_FullMethodName = "/cosmos.staking.v1beta1.Msg/EditValidator" - Msg_Delegate_FullMethodName = "/cosmos.staking.v1beta1.Msg/Delegate" - Msg_BeginRedelegate_FullMethodName = "/cosmos.staking.v1beta1.Msg/BeginRedelegate" - Msg_Undelegate_FullMethodName = "/cosmos.staking.v1beta1.Msg/Undelegate" - Msg_CancelUnbondingDelegation_FullMethodName = "/cosmos.staking.v1beta1.Msg/CancelUnbondingDelegation" - Msg_UpdateParams_FullMethodName = "/cosmos.staking.v1beta1.Msg/UpdateParams" + Msg_CreateValidator_FullMethodName = "/cosmos.staking.v1beta1.Msg/CreateValidator" + Msg_EditValidator_FullMethodName = "/cosmos.staking.v1beta1.Msg/EditValidator" + Msg_Delegate_FullMethodName = "/cosmos.staking.v1beta1.Msg/Delegate" + Msg_BeginRedelegate_FullMethodName = "/cosmos.staking.v1beta1.Msg/BeginRedelegate" + Msg_Undelegate_FullMethodName = "/cosmos.staking.v1beta1.Msg/Undelegate" + Msg_CancelUnbondingDelegation_FullMethodName = "/cosmos.staking.v1beta1.Msg/CancelUnbondingDelegation" + Msg_UpdateParams_FullMethodName = "/cosmos.staking.v1beta1.Msg/UpdateParams" + Msg_UnbondValidator_FullMethodName = "/cosmos.staking.v1beta1.Msg/UnbondValidator" + Msg_TokenizeShares_FullMethodName = "/cosmos.staking.v1beta1.Msg/TokenizeShares" + Msg_RedeemTokensForShares_FullMethodName = "/cosmos.staking.v1beta1.Msg/RedeemTokensForShares" + Msg_TransferTokenizeShareRecord_FullMethodName = "/cosmos.staking.v1beta1.Msg/TransferTokenizeShareRecord" + Msg_DisableTokenizeShares_FullMethodName = "/cosmos.staking.v1beta1.Msg/DisableTokenizeShares" + Msg_EnableTokenizeShares_FullMethodName = "/cosmos.staking.v1beta1.Msg/EnableTokenizeShares" + Msg_ValidatorBond_FullMethodName = "/cosmos.staking.v1beta1.Msg/ValidatorBond" ) // MsgClient is the client API for Msg service. @@ -54,6 +61,26 @@ type MsgClient interface { // parameters. // Since: cosmos-sdk 0.47 UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) + // UnbondValidator defines a method for performing the status transition for a validator + // from bonded to unbonding + // This allows a validator to stop their services and jail themselves without + // experiencing a slash + UnbondValidator(ctx context.Context, in *MsgUnbondValidator, opts ...grpc.CallOption) (*MsgUnbondValidatorResponse, error) + // TokenizeShares defines a method for tokenizing shares from a validator. + TokenizeShares(ctx context.Context, in *MsgTokenizeShares, opts ...grpc.CallOption) (*MsgTokenizeSharesResponse, error) + // RedeemTokensForShares defines a method for redeeming tokens from a validator for + // shares. + RedeemTokensForShares(ctx context.Context, in *MsgRedeemTokensForShares, opts ...grpc.CallOption) (*MsgRedeemTokensForSharesResponse, error) + // TransferTokenizeShareRecord defines a method to transfer ownership of + // TokenizeShareRecord + TransferTokenizeShareRecord(ctx context.Context, in *MsgTransferTokenizeShareRecord, opts ...grpc.CallOption) (*MsgTransferTokenizeShareRecordResponse, error) + // DisableTokenizeShares defines a method to prevent the tokenization of an addresses stake + DisableTokenizeShares(ctx context.Context, in *MsgDisableTokenizeShares, opts ...grpc.CallOption) (*MsgDisableTokenizeSharesResponse, error) + // EnableTokenizeShares defines a method to re-enable the tokenization of an addresseses stake + // after it has been disabled + EnableTokenizeShares(ctx context.Context, in *MsgEnableTokenizeShares, opts ...grpc.CallOption) (*MsgEnableTokenizeSharesResponse, error) + // ValidatorBond defines a method for performing a validator self-bond + ValidatorBond(ctx context.Context, in *MsgValidatorBond, opts ...grpc.CallOption) (*MsgValidatorBondResponse, error) } type msgClient struct { @@ -127,6 +154,69 @@ func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts return out, nil } +func (c *msgClient) UnbondValidator(ctx context.Context, in *MsgUnbondValidator, opts ...grpc.CallOption) (*MsgUnbondValidatorResponse, error) { + out := new(MsgUnbondValidatorResponse) + err := c.cc.Invoke(ctx, Msg_UnbondValidator_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) TokenizeShares(ctx context.Context, in *MsgTokenizeShares, opts ...grpc.CallOption) (*MsgTokenizeSharesResponse, error) { + out := new(MsgTokenizeSharesResponse) + err := c.cc.Invoke(ctx, Msg_TokenizeShares_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) RedeemTokensForShares(ctx context.Context, in *MsgRedeemTokensForShares, opts ...grpc.CallOption) (*MsgRedeemTokensForSharesResponse, error) { + out := new(MsgRedeemTokensForSharesResponse) + err := c.cc.Invoke(ctx, Msg_RedeemTokensForShares_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) TransferTokenizeShareRecord(ctx context.Context, in *MsgTransferTokenizeShareRecord, opts ...grpc.CallOption) (*MsgTransferTokenizeShareRecordResponse, error) { + out := new(MsgTransferTokenizeShareRecordResponse) + err := c.cc.Invoke(ctx, Msg_TransferTokenizeShareRecord_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) DisableTokenizeShares(ctx context.Context, in *MsgDisableTokenizeShares, opts ...grpc.CallOption) (*MsgDisableTokenizeSharesResponse, error) { + out := new(MsgDisableTokenizeSharesResponse) + err := c.cc.Invoke(ctx, Msg_DisableTokenizeShares_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) EnableTokenizeShares(ctx context.Context, in *MsgEnableTokenizeShares, opts ...grpc.CallOption) (*MsgEnableTokenizeSharesResponse, error) { + out := new(MsgEnableTokenizeSharesResponse) + err := c.cc.Invoke(ctx, Msg_EnableTokenizeShares_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) ValidatorBond(ctx context.Context, in *MsgValidatorBond, opts ...grpc.CallOption) (*MsgValidatorBondResponse, error) { + out := new(MsgValidatorBondResponse) + err := c.cc.Invoke(ctx, Msg_ValidatorBond_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MsgServer is the server API for Msg service. // All implementations must embed UnimplementedMsgServer // for forward compatibility @@ -153,6 +243,26 @@ type MsgServer interface { // parameters. // Since: cosmos-sdk 0.47 UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) + // UnbondValidator defines a method for performing the status transition for a validator + // from bonded to unbonding + // This allows a validator to stop their services and jail themselves without + // experiencing a slash + UnbondValidator(context.Context, *MsgUnbondValidator) (*MsgUnbondValidatorResponse, error) + // TokenizeShares defines a method for tokenizing shares from a validator. + TokenizeShares(context.Context, *MsgTokenizeShares) (*MsgTokenizeSharesResponse, error) + // RedeemTokensForShares defines a method for redeeming tokens from a validator for + // shares. + RedeemTokensForShares(context.Context, *MsgRedeemTokensForShares) (*MsgRedeemTokensForSharesResponse, error) + // TransferTokenizeShareRecord defines a method to transfer ownership of + // TokenizeShareRecord + TransferTokenizeShareRecord(context.Context, *MsgTransferTokenizeShareRecord) (*MsgTransferTokenizeShareRecordResponse, error) + // DisableTokenizeShares defines a method to prevent the tokenization of an addresses stake + DisableTokenizeShares(context.Context, *MsgDisableTokenizeShares) (*MsgDisableTokenizeSharesResponse, error) + // EnableTokenizeShares defines a method to re-enable the tokenization of an addresseses stake + // after it has been disabled + EnableTokenizeShares(context.Context, *MsgEnableTokenizeShares) (*MsgEnableTokenizeSharesResponse, error) + // ValidatorBond defines a method for performing a validator self-bond + ValidatorBond(context.Context, *MsgValidatorBond) (*MsgValidatorBondResponse, error) mustEmbedUnimplementedMsgServer() } @@ -181,6 +291,27 @@ func (UnimplementedMsgServer) CancelUnbondingDelegation(context.Context, *MsgCan func (UnimplementedMsgServer) UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") } +func (UnimplementedMsgServer) UnbondValidator(context.Context, *MsgUnbondValidator) (*MsgUnbondValidatorResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UnbondValidator not implemented") +} +func (UnimplementedMsgServer) TokenizeShares(context.Context, *MsgTokenizeShares) (*MsgTokenizeSharesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TokenizeShares not implemented") +} +func (UnimplementedMsgServer) RedeemTokensForShares(context.Context, *MsgRedeemTokensForShares) (*MsgRedeemTokensForSharesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RedeemTokensForShares not implemented") +} +func (UnimplementedMsgServer) TransferTokenizeShareRecord(context.Context, *MsgTransferTokenizeShareRecord) (*MsgTransferTokenizeShareRecordResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TransferTokenizeShareRecord not implemented") +} +func (UnimplementedMsgServer) DisableTokenizeShares(context.Context, *MsgDisableTokenizeShares) (*MsgDisableTokenizeSharesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DisableTokenizeShares not implemented") +} +func (UnimplementedMsgServer) EnableTokenizeShares(context.Context, *MsgEnableTokenizeShares) (*MsgEnableTokenizeSharesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method EnableTokenizeShares not implemented") +} +func (UnimplementedMsgServer) ValidatorBond(context.Context, *MsgValidatorBond) (*MsgValidatorBondResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ValidatorBond not implemented") +} func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {} // UnsafeMsgServer may be embedded to opt out of forward compatibility for this service. @@ -320,6 +451,132 @@ func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(in return interceptor(ctx, in, info, handler) } +func _Msg_UnbondValidator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUnbondValidator) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UnbondValidator(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_UnbondValidator_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UnbondValidator(ctx, req.(*MsgUnbondValidator)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_TokenizeShares_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgTokenizeShares) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).TokenizeShares(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_TokenizeShares_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).TokenizeShares(ctx, req.(*MsgTokenizeShares)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_RedeemTokensForShares_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgRedeemTokensForShares) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).RedeemTokensForShares(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_RedeemTokensForShares_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).RedeemTokensForShares(ctx, req.(*MsgRedeemTokensForShares)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_TransferTokenizeShareRecord_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgTransferTokenizeShareRecord) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).TransferTokenizeShareRecord(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_TransferTokenizeShareRecord_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).TransferTokenizeShareRecord(ctx, req.(*MsgTransferTokenizeShareRecord)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_DisableTokenizeShares_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgDisableTokenizeShares) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).DisableTokenizeShares(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_DisableTokenizeShares_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).DisableTokenizeShares(ctx, req.(*MsgDisableTokenizeShares)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_EnableTokenizeShares_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgEnableTokenizeShares) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).EnableTokenizeShares(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_EnableTokenizeShares_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).EnableTokenizeShares(ctx, req.(*MsgEnableTokenizeShares)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_ValidatorBond_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgValidatorBond) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).ValidatorBond(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_ValidatorBond_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).ValidatorBond(ctx, req.(*MsgValidatorBond)) + } + return interceptor(ctx, in, info, handler) +} + // Msg_ServiceDesc is the grpc.ServiceDesc for Msg service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -355,6 +612,34 @@ var Msg_ServiceDesc = grpc.ServiceDesc{ MethodName: "UpdateParams", Handler: _Msg_UpdateParams_Handler, }, + { + MethodName: "UnbondValidator", + Handler: _Msg_UnbondValidator_Handler, + }, + { + MethodName: "TokenizeShares", + Handler: _Msg_TokenizeShares_Handler, + }, + { + MethodName: "RedeemTokensForShares", + Handler: _Msg_RedeemTokensForShares_Handler, + }, + { + MethodName: "TransferTokenizeShareRecord", + Handler: _Msg_TransferTokenizeShareRecord_Handler, + }, + { + MethodName: "DisableTokenizeShares", + Handler: _Msg_DisableTokenizeShares_Handler, + }, + { + MethodName: "EnableTokenizeShares", + Handler: _Msg_EnableTokenizeShares_Handler, + }, + { + MethodName: "ValidatorBond", + Handler: _Msg_ValidatorBond_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "cosmos/staking/v1beta1/tx.proto", diff --git a/api/go.mod b/api/go.mod index acfb2b18b58d..fd367a920e81 100644 --- a/api/go.mod +++ b/api/go.mod @@ -4,9 +4,9 @@ go 1.20 require ( github.com/cosmos/cosmos-proto v1.0.0-beta.5 - github.com/cosmos/gogoproto v1.4.12 - google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f - google.golang.org/grpc v1.61.1 + github.com/cosmos/gogoproto v1.5.0 + google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 + google.golang.org/grpc v1.62.1 google.golang.org/protobuf v1.33.0 ) @@ -17,6 +17,6 @@ require ( golang.org/x/net v0.20.0 // indirect golang.org/x/sys v0.16.0 // indirect golang.org/x/text v0.14.0 // indirect - google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 // indirect + google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect ) diff --git a/api/go.sum b/api/go.sum index 7db12cc22430..532da0241093 100644 --- a/api/go.sum +++ b/api/go.sum @@ -1,7 +1,7 @@ github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= -github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= -github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= +github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= +github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= @@ -14,13 +14,13 @@ golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3 h1:1hfbdAfFbkmpg41000wDVqr7jUpK/Yo+LPnIxxGzmkg= -google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3/go.mod h1:5RBcpGRxr25RbDzY5w+dmaqpSEvl8Gwl1x2CICf60ic= -google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f h1:2yNACc1O40tTnrsbk9Cv6oxiW8pxI/pXj0wRtdlYmgY= -google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f/go.mod h1:Uy9bTZJqmfrw2rIBxgGLnamc78euZULUBrLZ9XTITKI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 h1:/jFB8jK5R3Sq3i/lmeZO0cATSzFfZaJq1J2Euan3XKU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0/go.mod h1:FUoWkonphQm3RhTS+kOEhF8h0iDpm4tdXolVCeZ9KKA= -google.golang.org/grpc v1.61.1 h1:kLAiWrZs7YeDM6MumDe7m3y4aM6wacLzM1Y/wiLP9XY= -google.golang.org/grpc v1.61.1/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= +google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ= +google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= +google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 h1:Lj5rbfG876hIAYFjqiJnPHfhXbv+nzTWfm04Fg/XSVU= +google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= +google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= +google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= diff --git a/baseapp/baseapp.go b/baseapp/baseapp.go index 210583228b91..a89b48bcbafc 100644 --- a/baseapp/baseapp.go +++ b/baseapp/baseapp.go @@ -91,6 +91,7 @@ type BaseApp struct { addrPeerFilter sdk.PeerFilter // filter peers by address and port idPeerFilter sdk.PeerFilter // filter peers by node ID fauxMerkleMode bool // if true, IAVL MountStores uses MountStoresDB for simulation speed. + sigverifyTx bool // in the simulation test, since the account does not have a private key, we have to ignore the tx sigverify. // manages snapshots, i.e. dumps of app state at certain intervals snapshotManager *snapshots.Manager @@ -211,6 +212,7 @@ func NewBaseApp( msgServiceRouter: NewMsgServiceRouter(), txDecoder: txDecoder, fauxMerkleMode: false, + sigverifyTx: true, queryGasLimit: math.MaxUint64, } @@ -667,6 +669,8 @@ func (app *BaseApp) getContextForTx(mode execMode, txBytes []byte) sdk.Context { WithGasMeter(storetypes.NewInfiniteGasMeter()) // WithVoteInfos(app.voteInfos) // TODO: identify if this is needed + ctx = ctx.WithIsSigverifyTx(app.sigverifyTx) + ctx = ctx.WithConsensusParams(app.GetConsensusParams(ctx)) if mode == execModeReCheck { diff --git a/baseapp/options.go b/baseapp/options.go index 84ff5d456227..7218a283e794 100644 --- a/baseapp/options.go +++ b/baseapp/options.go @@ -260,6 +260,11 @@ func (app *BaseApp) SetFauxMerkleMode() { app.fauxMerkleMode = true } +// SetNotSigverify during simulation testing, transaction signature verification needs to be ignored. +func (app *BaseApp) SetNotSigverifyTx() { + app.sigverifyTx = false +} + // SetCommitMultiStoreTracer sets the store tracer on the BaseApp's underlying // CommitMultiStore. func (app *BaseApp) SetCommitMultiStoreTracer(w io.Writer) { diff --git a/baseapp/test_helpers.go b/baseapp/test_helpers.go index db603f2f2982..a8f7853f224b 100644 --- a/baseapp/test_helpers.go +++ b/baseapp/test_helpers.go @@ -35,6 +35,7 @@ func (app *BaseApp) SimDeliver(txEncoder sdk.TxEncoder, tx sdk.Tx) (sdk.GasInfo, if err != nil { return sdk.GasInfo{}, nil, errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "%s", err) } + gasInfo, result, _, err := app.runTx(execModeFinalize, bz) return gasInfo, result, err } diff --git a/client/keys/add.go b/client/keys/add.go index b98c5c9b7cc5..b64db8afdc10 100644 --- a/client/keys/add.go +++ b/client/keys/add.go @@ -7,6 +7,8 @@ import ( "encoding/json" "errors" "fmt" + "io" + "os" "sort" "github.com/cosmos/go-bip39" @@ -35,6 +37,7 @@ const ( flagNoSort = "nosort" flagHDPath = "hd-path" flagPubKeyBase64 = "pubkey-base64" + flagMnemonicSrc = "source" // DefaultKeyPass contains the default key password for genesis transactions DefaultKeyPass = "12345678" @@ -57,6 +60,11 @@ local keystore. Use the --pubkey flag to add arbitrary public keys to the keystore for constructing multisig transactions. +Use the --source flag to import mnemonic from a file in recover or interactive mode. +Example: + + keys add testing --recover --source ./mnemonic.txt + You can create and store a multisig key by passing the list of key names stored in a keyring and the minimum number of signatures required through --multisig-threshold. The keys are sorted by address, unless the flag --nosort is set. @@ -83,6 +91,7 @@ Example: f.Uint32(flagAccount, 0, "Account number for HD derivation (less than equal 2147483647)") f.Uint32(flagIndex, 0, "Address index number for HD derivation (less than equal 2147483647)") f.String(flags.FlagKeyType, string(hd.Secp256k1Type), "Key signing algorithm to generate keys for") + f.String(flagMnemonicSrc, "", "Import mnemonic from a file (only usable when recover or interactive is passed)") // support old flags name for backwards compatibility f.SetNormalizeFunc(func(f *pflag.FlagSet, name string) pflag.NormalizedName { @@ -270,19 +279,34 @@ func runAddCmd(ctx client.Context, cmd *cobra.Command, args []string, inBuf *buf var mnemonic, bip39Passphrase string recoverFlag, _ := cmd.Flags().GetBool(flagRecover) + mnemonicSrc, _ := cmd.Flags().GetString(flagMnemonicSrc) if recoverFlag { - mnemonic, err = input.GetString("Enter your bip39 mnemonic", inBuf) - if err != nil { - return err + if mnemonicSrc != "" { + mnemonic, err = readMnemonicFromFile(mnemonicSrc) + if err != nil { + return err + } + } else { + mnemonic, err = input.GetString("Enter your bip39 mnemonic", inBuf) + if err != nil { + return err + } } if !bip39.IsMnemonicValid(mnemonic) { return errors.New("invalid mnemonic") } } else if interactive { - mnemonic, err = input.GetString("Enter your bip39 mnemonic, or hit enter to generate one.", inBuf) - if err != nil { - return err + if mnemonicSrc != "" { + mnemonic, err = readMnemonicFromFile(mnemonicSrc) + if err != nil { + return err + } + } else { + mnemonic, err = input.GetString("Enter your bip39 mnemonic, or hit enter to generate one.", inBuf) + if err != nil { + return err + } } if !bip39.IsMnemonicValid(mnemonic) && mnemonic != "" { @@ -377,3 +401,17 @@ func printCreate(cmd *cobra.Command, k *keyring.Record, showMnemonic bool, mnemo return nil } + +func readMnemonicFromFile(filePath string) (string, error) { + file, err := os.Open(filePath) + if err != nil { + return "", err + } + defer file.Close() + + bz, err := io.ReadAll(file) + if err != nil { + return "", err + } + return string(bz), nil +} diff --git a/client/keys/output_test.go b/client/keys/output_test.go index 283734b848b3..fc8e4bf3214c 100644 --- a/client/keys/output_test.go +++ b/client/keys/output_test.go @@ -44,6 +44,30 @@ func TestBech32KeysOutput(t *testing.T) { require.Equal(t, "{Name:multisig Type:multi Address:cosmos1nf8lf6n4wa43rzmdzwe6hkrnw5guekhqt595cw PubKey:{\"@type\":\"/cosmos.crypto.multisig.LegacyAminoPubKey\",\"threshold\":1,\"public_keys\":[{\"@type\":\"/cosmos.crypto.secp256k1.PubKey\",\"key\":\"AurroA7jvfPd1AadmmOvWM2rJSwipXfRf8yD6pLbA2DJ\"}]} Mnemonic:}", fmt.Sprintf("%+v", out)) } +// TestBech32KeysOutputNestedMsig tests that the output of a nested multisig key is correct +func TestBech32KeysOutputNestedMsig(t *testing.T) { + sk := secp256k1.PrivKey{Key: []byte{154, 49, 3, 117, 55, 232, 249, 20, 205, 216, 102, 7, 136, 72, 177, 2, 131, 202, 234, 81, 31, 208, 46, 244, 179, 192, 167, 163, 142, 117, 246, 13}} + tmpKey := sk.PubKey() + nestedMultiSig := kmultisig.NewLegacyAminoPubKey(1, []types.PubKey{tmpKey}) + multisigPk := kmultisig.NewLegacyAminoPubKey(2, []types.PubKey{tmpKey, nestedMultiSig}) + k, err := keyring.NewMultiRecord("multisig", multisigPk) + require.NotNil(t, k) + require.NoError(t, err) + + pubKey, err := k.GetPubKey() + require.NoError(t, err) + + accAddr := sdk.AccAddress(pubKey.Address()) + expectedOutput, err := NewKeyOutput(k.Name, k.GetType(), accAddr, multisigPk) + require.NoError(t, err) + + out, err := MkAccKeyOutput(k) + require.NoError(t, err) + + require.Equal(t, expectedOutput, out) + require.Equal(t, "{Name:multisig Type:multi Address:cosmos1nffp6v2j7wva4y4975exlrv8x5vh39axxt3swz PubKey:{\"@type\":\"/cosmos.crypto.multisig.LegacyAminoPubKey\",\"threshold\":2,\"public_keys\":[{\"@type\":\"/cosmos.crypto.secp256k1.PubKey\",\"key\":\"AurroA7jvfPd1AadmmOvWM2rJSwipXfRf8yD6pLbA2DJ\"},{\"@type\":\"/cosmos.crypto.multisig.LegacyAminoPubKey\",\"threshold\":1,\"public_keys\":[{\"@type\":\"/cosmos.crypto.secp256k1.PubKey\",\"key\":\"AurroA7jvfPd1AadmmOvWM2rJSwipXfRf8yD6pLbA2DJ\"}]}]} Mnemonic:}", fmt.Sprintf("%+v", out)) +} + func TestProtoMarshalJSON(t *testing.T) { require := require.New(t) pubkeys := generatePubKeys(3) diff --git a/client/rpc/tx.go b/client/rpc/tx.go index c22af90a8d8f..429dff59caa2 100644 --- a/client/rpc/tx.go +++ b/client/rpc/tx.go @@ -102,10 +102,10 @@ func WaitTxCmd() *cobra.Command { Short: "Wait for a transaction to be included in a block", Long: `Subscribes to a CometBFT WebSocket connection and waits for a transaction event with the given hash.`, Example: fmt.Sprintf(`By providing the transaction hash: -$ %[1]sd q wait-tx [hash] +$ %[1]s q wait-tx [hash] Or, by piping a "tx" command: -$ %[1]sd tx [flags] | %[1]sd q wait-tx +$ %[1]s tx [flags] | %[1]s q wait-tx `, version.AppName), Args: cobra.MaximumNArgs(1), RunE: func(cmd *cobra.Command, args []string) error { @@ -200,13 +200,21 @@ $ %[1]sd tx [flags] | %[1]sd q wait-tx } func parseHashFromInput(in []byte) ([]byte, error) { - var resultTx coretypes.ResultTx - if err := json.Unmarshal(in, &resultTx); err == nil { + // The content of in is expected to be the result of a tx command which should be using GenerateOrBroadcastTxCLI. + // That outputs a sdk.TxResponse as either the json or yaml. As json, we can't unmarshal it back into that struct, + // though, because the height field ends up quoted which confuses json.Unmarshal (because it's for an int64 field). + + // Try to find the txhash from json ouptut. + resultTx := make(map[string]json.RawMessage) + if err := json.Unmarshal(in, &resultTx); err == nil && len(resultTx["txhash"]) > 0 { // input was JSON, return the hash - return resultTx.Hash, nil + hash := strings.Trim(strings.TrimSpace(string(resultTx["txhash"])), `"`) + if len(hash) > 0 { + return hex.DecodeString(hash) + } } - // try to parse the hash from the output of a tx command + // Try to find the txhash from yaml output. lines := strings.Split(string(in), "\n") for _, line := range lines { if strings.HasPrefix(line, "txhash:") { diff --git a/client/v2/CHANGELOG.md b/client/v2/CHANGELOG.md index c86146bcb545..d90d47e16157 100644 --- a/client/v2/CHANGELOG.md +++ b/client/v2/CHANGELOG.md @@ -36,10 +36,21 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## [Unreleased] -## [v2.0.0-beta.2] - 2024-XX-XX +## [v2.0.0-beta.3] - 2024-07-15 + +### Features + +* [#20771](https://github.com/cosmos/cosmos-sdk/pull/20771) Add `GetNodeHomeDirectory` helper in `client/v2/helpers`. + +## [v2.0.0-beta.2] - 2024-06-19 + +### Features + +* [#19039](https://github.com/cosmos/cosmos-sdk/pull/19039) Add support for pubkey in autocli. ### Improvements +* [#19646](https://github.com/cosmos/cosmos-sdk/pull/19646) Use keyring from command context. * (deps) [#19810](https://github.com/cosmos/cosmos-sdk/pull/19810) Upgrade SDK version due to prometheus breaking change. * (deps) [#19810](https://github.com/cosmos/cosmos-sdk/pull/19810) Bump `cosmossdk.io/store` to v1.1.0. * [#20083](https://github.com/cosmos/cosmos-sdk/pull/20083) Integrate latest version of cosmos-proto and improve version filtering. @@ -56,6 +67,10 @@ Ref: https://keepachangelog.com/en/1.0.0/ * [#19060](https://github.com/cosmos/cosmos-sdk/pull/19060) Simplify key flag parsing logic in flag handler. * [#20033](https://github.com/cosmos/cosmos-sdk/pull/20033) Respect output format from client ctx. +### API Breaking Changes + +* [#19646](https://github.com/cosmos/cosmos-sdk/pull/19646) Remove keyring from `autocli.AppOptions` and `flag.Builder` options. + ## [v2.0.0-beta.1] - 2023-11-07 This is the first tagged version of client/v2. diff --git a/client/v2/README.md b/client/v2/README.md index ea917ce20a7a..5bdce3e554e1 100644 --- a/client/v2/README.md +++ b/client/v2/README.md @@ -75,10 +75,10 @@ if err := rootCmd.Execute(); err != nil { ### Keyring -`autocli` uses a keyring for key name resolving and signing transactions. Providing a keyring is optional, but if you want to use the `autocli` generated commands to sign transactions, you must provide a keyring. +`autocli` uses a keyring for key name resolving names and signing transactions. :::tip -This provides a better UX as it allows to resolve key names directly from the keyring in all transactions and commands. +AutoCLI provides a better UX than normal CLI as it allows to resolve key names directly from the keyring in all transactions and commands. ```sh q bank balances alice @@ -87,8 +87,9 @@ This provides a better UX as it allows to resolve key names directly from the ke ::: -The keyring to be provided to `client/v2` must match the `client/v2` keyring interface. -The keyring should be provided in the `appOptions` struct as follows, and can be gotten from the client context: +The keyring used for resolving names and signing transactions is provided via the `client.Context`. +The keyring is then converted to the `client/v2/autocli/keyring` interface. +If no keyring is provided, the `autocli` generated command will not be able to sign transactions, but will still be able to query the chain. :::tip The Cosmos SDK keyring and Hubl keyring both implement the `client/v2/autocli/keyring` interface, thanks to the following wrapper: @@ -99,18 +100,6 @@ keyring.NewAutoCLIKeyring(kb) ::: -:::warning -When using AutoCLI the keyring will only be created once and before any command flag parsing. -::: - -```go -// Set the keyring in the appOptions -appOptions.Keyring = keyring - -err := autoCliOpts.EnhanceRootCommand(rootCmd) -... -``` - ## Signing `autocli` supports signing transactions with the keyring. diff --git a/client/v2/autocli/app.go b/client/v2/autocli/app.go index db8adf4e4bae..c3bccd557306 100644 --- a/client/v2/autocli/app.go +++ b/client/v2/autocli/app.go @@ -7,7 +7,6 @@ import ( autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" "cosmossdk.io/client/v2/autocli/flag" - "cosmossdk.io/client/v2/autocli/keyring" "cosmossdk.io/core/address" "cosmossdk.io/core/appmodule" "cosmossdk.io/depinject" @@ -42,9 +41,6 @@ type AppOptions struct { ValidatorAddressCodec runtime.ValidatorAddressCodec ConsensusAddressCodec runtime.ConsensusAddressCodec - // Keyring is the keyring to use for client/v2. - Keyring keyring.Keyring `optional:"true"` - // ClientCtx contains the necessary information needed to execute the commands. ClientCtx client.Context } @@ -72,7 +68,6 @@ func (appOptions AppOptions) EnhanceRootCommand(rootCmd *cobra.Command) error { AddressCodec: appOptions.AddressCodec, ValidatorAddressCodec: appOptions.ValidatorAddressCodec, ConsensusAddressCodec: appOptions.ConsensusAddressCodec, - Keyring: appOptions.Keyring, }, GetClientConn: func(cmd *cobra.Command) (grpc.ClientConnInterface, error) { return client.GetClientQueryContext(cmd) diff --git a/client/v2/autocli/common.go b/client/v2/autocli/common.go index de6b06d677a2..5c32f16ca32a 100644 --- a/client/v2/autocli/common.go +++ b/client/v2/autocli/common.go @@ -2,6 +2,7 @@ package autocli import ( "fmt" + "strings" "github.com/spf13/cobra" "google.golang.org/protobuf/reflect/protoreflect" @@ -52,14 +53,18 @@ func (b *Builder) buildMethodCommandCommon(descriptor protoreflect.MethodDescrip Version: options.Version, } - binder, err := b.AddMessageFlags(cmd.Context(), cmd.Flags(), inputType, options) + // we need to use a pointer to the context as the correct context is set in the RunE function + // however we need to set the flags before the RunE function is called + ctx := cmd.Context() + binder, err := b.AddMessageFlags(&ctx, cmd.Flags(), inputType, options) if err != nil { return nil, err } - cmd.Args = binder.CobraArgs cmd.RunE = func(cmd *cobra.Command, args []string) error { + ctx = cmd.Context() + input, err := binder.BuildMessage(args) if err != nil { return err @@ -67,23 +72,16 @@ func (b *Builder) buildMethodCommandCommon(descriptor protoreflect.MethodDescrip // signer related logic, triggers only when there is a signer defined if binder.SignerInfo.FieldName != "" { - // mark the signer flag as required if defined - // TODO(@julienrbrt): UX improvement by only marking the flag as required when there is more than one key in the keyring; - // when there is only one key, use that key by default. if binder.SignerInfo.IsFlag { - if err := cmd.MarkFlagRequired(binder.SignerInfo.FieldName); err != nil { - return err - } - // the client context uses the from flag to determine the signer. // this sets the signer flags to the from flag value if a custom signer flag is set. - if binder.SignerInfo.FieldName != flags.FlagFrom { - signer, err := cmd.Flags().GetString(binder.SignerInfo.FieldName) - if err != nil { - return fmt.Errorf("failed to get signer flag: %w", err) + // marks the custom flag as required. + if binder.SignerInfo.FlagName != flags.FlagFrom { + if err := cmd.MarkFlagRequired(binder.SignerInfo.FlagName); err != nil { + return err } - if err := cmd.Flags().Set(flags.FlagFrom, signer); err != nil { + if err := cmd.Flags().Set(flags.FlagFrom, cmd.Flag(binder.SignerInfo.FlagName).Value.String()); err != nil { return err } } @@ -251,6 +249,6 @@ func (b *Builder) outOrStdoutFormat(cmd *cobra.Command, out []byte) error { } } - _, err = fmt.Fprintln(cmd.OutOrStdout(), string(out)) - return err + cmd.Println(strings.TrimSpace(string(out))) + return nil } diff --git a/client/v2/autocli/common_test.go b/client/v2/autocli/common_test.go index 31dc43d3af62..bcd14360428f 100644 --- a/client/v2/autocli/common_test.go +++ b/client/v2/autocli/common_test.go @@ -55,9 +55,6 @@ func initFixture(t *testing.T) *fixture { kr, err := sdkkeyring.New(sdk.KeyringServiceName(), sdkkeyring.BackendMemory, home, nil, encodingConfig.Codec) assert.NilError(t, err) - akr, err := sdkkeyring.NewAutoCLIKeyring(kr) - assert.NilError(t, err) - interfaceRegistry := encodingConfig.Codec.InterfaceRegistry() banktypes.RegisterInterfaces(interfaceRegistry) @@ -76,7 +73,6 @@ func initFixture(t *testing.T) *fixture { Builder: flag.Builder{ TypeResolver: protoregistry.GlobalTypes, FileResolver: protoregistry.GlobalFiles, - Keyring: akr, AddressCodec: addresscodec.NewBech32Codec("cosmos"), ValidatorAddressCodec: addresscodec.NewBech32Codec("cosmosvaloper"), ConsensusAddressCodec: addresscodec.NewBech32Codec("cosmosvalcons"), diff --git a/client/v2/autocli/flag/address.go b/client/v2/autocli/flag/address.go index 99d1a9c3284b..58108d094990 100644 --- a/client/v2/autocli/flag/address.go +++ b/client/v2/autocli/flag/address.go @@ -9,16 +9,18 @@ import ( "cosmossdk.io/client/v2/autocli/keyring" "cosmossdk.io/core/address" + "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec/types" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" + sdkkeyring "github.com/cosmos/cosmos-sdk/crypto/keyring" cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" ) type addressStringType struct{} -func (a addressStringType) NewValue(_ context.Context, b *Builder) Value { - return &addressValue{addressCodec: b.AddressCodec, keyring: b.Keyring} +func (a addressStringType) NewValue(ctx *context.Context, b *Builder) Value { + return &addressValue{addressCodec: b.AddressCodec, ctx: ctx} } func (a addressStringType) DefaultValue() string { @@ -27,8 +29,8 @@ func (a addressStringType) DefaultValue() string { type validatorAddressStringType struct{} -func (a validatorAddressStringType) NewValue(_ context.Context, b *Builder) Value { - return &addressValue{addressCodec: b.ValidatorAddressCodec, keyring: b.Keyring} +func (a validatorAddressStringType) NewValue(ctx *context.Context, b *Builder) Value { + return &addressValue{addressCodec: b.ValidatorAddressCodec, ctx: ctx} } func (a validatorAddressStringType) DefaultValue() string { @@ -36,9 +38,10 @@ func (a validatorAddressStringType) DefaultValue() string { } type addressValue struct { - value string + ctx *context.Context addressCodec address.Codec - keyring keyring.Keyring + + value string } func (a addressValue) Get(protoreflect.Value) (protoreflect.Value, error) { @@ -51,7 +54,9 @@ func (a addressValue) String() string { // Set implements the flag.Value interface for addressValue. func (a *addressValue) Set(s string) error { - addr, err := a.keyring.LookupAddressByKeyName(s) + // we get the keyring on set, as in NewValue the context is the parent context (before RunE) + keyring := getKeyringFromCtx(a.ctx) + addr, err := keyring.LookupAddressByKeyName(s) if err == nil { addrStr, err := a.addressCodec.BytesToString(addr) if err != nil { @@ -62,9 +67,11 @@ func (a *addressValue) Set(s string) error { return nil } - // failed all validation, just accept the input. - // TODO(@julienrbrt), for final client/v2 2.0.0 revert the logic and - // do a better keyring instantiation. + _, err = a.addressCodec.StringToBytes(s) + if err != nil { + return fmt.Errorf("invalid account address or key name: %w", err) + } + a.value = s return nil @@ -76,11 +83,11 @@ func (a addressValue) Type() string { type consensusAddressStringType struct{} -func (a consensusAddressStringType) NewValue(ctx context.Context, b *Builder) Value { +func (a consensusAddressStringType) NewValue(ctx *context.Context, b *Builder) Value { return &consensusAddressValue{ addressValue: addressValue{ addressCodec: b.ConsensusAddressCodec, - keyring: b.Keyring, + ctx: ctx, }, } } @@ -102,7 +109,9 @@ func (a consensusAddressValue) String() string { } func (a *consensusAddressValue) Set(s string) error { - addr, err := a.keyring.LookupAddressByKeyName(s) + // we get the keyring on set, as in NewValue the context is the parent context (before RunE) + keyring := getKeyringFromCtx(a.ctx) + addr, err := keyring.LookupAddressByKeyName(s) if err == nil { addrStr, err := a.addressCodec.BytesToString(addr) if err != nil { @@ -127,11 +136,7 @@ func (a *consensusAddressValue) Set(s string) error { var pk cryptotypes.PubKey err2 := cdc.UnmarshalInterfaceJSON([]byte(s), &pk) if err2 != nil { - // failed all validation, just accept the input. - // TODO(@julienrbrt), for final client/v2 2.0.0 revert the logic and - // do a better keyring instantiation. - a.value = s - return nil + return fmt.Errorf("input isn't a pubkey (%w) or is an invalid account address (%w)", err, err2) } a.value, err = a.addressCodec.BytesToString(pk.Address()) @@ -141,3 +146,21 @@ func (a *consensusAddressValue) Set(s string) error { return nil } + +func getKeyringFromCtx(ctx *context.Context) keyring.Keyring { + dctx := *ctx + if dctx != nil { + if clientCtx := dctx.Value(client.ClientContextKey); clientCtx != nil { + k, err := sdkkeyring.NewAutoCLIKeyring(clientCtx.(*client.Context).Keyring) + if err != nil { + panic(fmt.Errorf("failed to create keyring: %w", err)) + } + + return k + } else if k := dctx.Value(keyring.KeyringContextKey); k != nil { + return k.(*keyring.KeyringImpl) + } + } + + return keyring.NoKeyring{} +} diff --git a/client/v2/autocli/flag/binary.go b/client/v2/autocli/flag/binary.go index a1a93179f290..7bd1c23293f7 100644 --- a/client/v2/autocli/flag/binary.go +++ b/client/v2/autocli/flag/binary.go @@ -14,7 +14,7 @@ type binaryType struct{} var _ Value = (*fileBinaryValue)(nil) -func (f binaryType) NewValue(context.Context, *Builder) Value { +func (f binaryType) NewValue(*context.Context, *Builder) Value { return &fileBinaryValue{} } diff --git a/client/v2/autocli/flag/builder.go b/client/v2/autocli/flag/builder.go index d797029fa2b9..e5f40a728c99 100644 --- a/client/v2/autocli/flag/builder.go +++ b/client/v2/autocli/flag/builder.go @@ -16,7 +16,6 @@ import ( autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" msgv1 "cosmossdk.io/api/cosmos/msg/v1" - "cosmossdk.io/client/v2/autocli/keyring" "cosmossdk.io/client/v2/internal/flags" "cosmossdk.io/client/v2/internal/util" "cosmossdk.io/core/address" @@ -28,6 +27,7 @@ const ( AddressStringScalarType = "cosmos.AddressString" ValidatorAddressStringScalarType = "cosmos.ValidatorAddressString" ConsensusAddressStringScalarType = "cosmos.ConsensusAddressString" + PubkeyScalarType = "cosmos.Pubkey" ) // Builder manages options for building pflag flags for protobuf messages. @@ -49,9 +49,6 @@ type Builder struct { messageFlagTypes map[protoreflect.FullName]Type scalarFlagTypes map[string]Type - // Keyring is the keyring to use for client/v2. - Keyring keyring.Keyring - // Address Codecs are the address codecs to use for client/v2. AddressCodec address.Codec ValidatorAddressCodec runtime.ValidatorAddressCodec @@ -71,6 +68,7 @@ func (b *Builder) init() { b.scalarFlagTypes[AddressStringScalarType] = addressStringType{} b.scalarFlagTypes[ValidatorAddressStringScalarType] = validatorAddressStringType{} b.scalarFlagTypes[ConsensusAddressStringScalarType] = consensusAddressStringType{} + b.scalarFlagTypes[PubkeyScalarType] = pubkeyType{} } } @@ -90,10 +88,6 @@ func (b *Builder) ValidateAndComplete() error { return errors.New("consensus address codec is required in flag builder") } - if b.Keyring == nil { - b.Keyring = keyring.NoKeyring{} - } - if b.TypeResolver == nil { return errors.New("type resolver is required in flag builder") } @@ -118,12 +112,12 @@ func (b *Builder) DefineScalarFlagType(scalarName string, flagType Type) { } // AddMessageFlags adds flags for each field in the message to the flag set. -func (b *Builder) AddMessageFlags(ctx context.Context, flagSet *pflag.FlagSet, messageType protoreflect.MessageType, commandOptions *autocliv1.RpcCommandOptions) (*MessageBinder, error) { +func (b *Builder) AddMessageFlags(ctx *context.Context, flagSet *pflag.FlagSet, messageType protoreflect.MessageType, commandOptions *autocliv1.RpcCommandOptions) (*MessageBinder, error) { return b.addMessageFlags(ctx, flagSet, messageType, commandOptions, namingOptions{}) } // addMessageFlags adds flags for each field in the message to the flag set. -func (b *Builder) addMessageFlags(ctx context.Context, flagSet *pflag.FlagSet, messageType protoreflect.MessageType, commandOptions *autocliv1.RpcCommandOptions, options namingOptions) (*MessageBinder, error) { +func (b *Builder) addMessageFlags(ctx *context.Context, flagSet *pflag.FlagSet, messageType protoreflect.MessageType, commandOptions *autocliv1.RpcCommandOptions, options namingOptions) (*MessageBinder, error) { messageBinder := &MessageBinder{ messageType: messageType, // positional args are also parsed using a FlagSet so that we can reuse all the same parsers @@ -135,7 +129,7 @@ func (b *Builder) addMessageFlags(ctx context.Context, flagSet *pflag.FlagSet, m isPositional := map[string]bool{} - lengthPositionalArgsOptions := len(commandOptions.PositionalArgs) + positionalArgsLen := len(commandOptions.PositionalArgs) for i, arg := range commandOptions.PositionalArgs { isPositional[arg.ProtoField] = true @@ -147,17 +141,12 @@ func (b *Builder) addMessageFlags(ctx context.Context, flagSet *pflag.FlagSet, m } } - field := fields.ByName(protoreflect.Name(arg.ProtoField)) - if field == nil { - return nil, fmt.Errorf("can't find field %s on %s", arg.ProtoField, messageType.Descriptor().FullName()) - } - if arg.Optional && arg.Varargs { return nil, fmt.Errorf("positional argument %s can't be both optional and varargs", arg.ProtoField) } if arg.Varargs { - if i != lengthPositionalArgsOptions-1 { + if i != positionalArgsLen-1 { return nil, fmt.Errorf("varargs positional argument %s must be the last argument", arg.ProtoField) } @@ -165,13 +154,18 @@ func (b *Builder) addMessageFlags(ctx context.Context, flagSet *pflag.FlagSet, m } if arg.Optional { - if i != lengthPositionalArgsOptions-1 { + if i != positionalArgsLen-1 { return nil, fmt.Errorf("optional positional argument %s must be the last argument", arg.ProtoField) } messageBinder.hasOptional = true } + field := fields.ByName(protoreflect.Name(arg.ProtoField)) + if field == nil { + return nil, fmt.Errorf("can't find field %s on %s", arg.ProtoField, messageType.Descriptor().FullName()) + } + _, hasValue, err := b.addFieldFlag( ctx, messageBinder.positionalFlagSet, @@ -189,19 +183,20 @@ func (b *Builder) addMessageFlags(ctx context.Context, flagSet *pflag.FlagSet, m }) } - if messageBinder.hasVarargs { - messageBinder.CobraArgs = cobra.MinimumNArgs(lengthPositionalArgsOptions - 1) - messageBinder.mandatoryArgUntil = lengthPositionalArgsOptions - 1 - } else if messageBinder.hasOptional { - messageBinder.CobraArgs = cobra.RangeArgs(lengthPositionalArgsOptions-1, lengthPositionalArgsOptions) - messageBinder.mandatoryArgUntil = lengthPositionalArgsOptions - 1 - } else { - messageBinder.CobraArgs = cobra.ExactArgs(lengthPositionalArgsOptions) - messageBinder.mandatoryArgUntil = lengthPositionalArgsOptions + switch { + case messageBinder.hasVarargs: + messageBinder.CobraArgs = cobra.MinimumNArgs(positionalArgsLen - 1) + messageBinder.mandatoryArgUntil = positionalArgsLen - 1 + case messageBinder.hasOptional: + messageBinder.CobraArgs = cobra.RangeArgs(positionalArgsLen-1, positionalArgsLen) + messageBinder.mandatoryArgUntil = positionalArgsLen - 1 + default: + messageBinder.CobraArgs = cobra.ExactArgs(positionalArgsLen) + messageBinder.mandatoryArgUntil = positionalArgsLen } // validate flag options - for name := range commandOptions.FlagOptions { + for name, opts := range commandOptions.FlagOptions { if fields.ByName(protoreflect.Name(name)) == nil { return nil, fmt.Errorf("can't find field %s on %s specified as a flag", name, messageType.Descriptor().FullName()) } @@ -210,14 +205,15 @@ func (b *Builder) addMessageFlags(ctx context.Context, flagSet *pflag.FlagSet, m if name == signerFieldName { messageBinder.SignerInfo = SignerInfo{ FieldName: name, - IsFlag: false, + IsFlag: true, + FlagName: opts.Name, } } } // if signer has not been specified as positional arguments, // add it as `--from` flag (instead of --field-name flags) - if signerFieldName != "" && messageBinder.SignerInfo.FieldName == "" { + if signerFieldName != "" && messageBinder.SignerInfo == (SignerInfo{}) { if commandOptions.FlagOptions == nil { commandOptions.FlagOptions = make(map[string]*autocliv1.FlagOptions) } @@ -229,8 +225,9 @@ func (b *Builder) addMessageFlags(ctx context.Context, flagSet *pflag.FlagSet, m } messageBinder.SignerInfo = SignerInfo{ - FieldName: flags.FlagFrom, + FieldName: signerFieldName, IsFlag: true, + FlagName: flags.FlagFrom, } } @@ -238,13 +235,15 @@ func (b *Builder) addMessageFlags(ctx context.Context, flagSet *pflag.FlagSet, m flagOptsByFlagName := map[string]*autocliv1.FlagOptions{} for i := 0; i < fields.Len(); i++ { field := fields.Get(i) + fieldName := string(field.Name()) + // skips positional args and signer field if already set - if isPositional[string(field.Name())] || - (string(field.Name()) == signerFieldName && messageBinder.SignerInfo.FieldName == flags.FlagFrom) { + if isPositional[fieldName] || + (fieldName == signerFieldName && messageBinder.SignerInfo.FlagName == flags.FlagFrom) { continue } - flagOpts := commandOptions.FlagOptions[string(field.Name())] + flagOpts := commandOptions.FlagOptions[fieldName] name, hasValue, err := b.addFieldFlag(ctx, flagSet, field, flagOpts, options) flagOptsByFlagName[name] = flagOpts if err != nil { @@ -274,7 +273,7 @@ func (b *Builder) addMessageFlags(ctx context.Context, flagSet *pflag.FlagSet, m } // bindPageRequest create a flag for pagination -func (b *Builder) bindPageRequest(ctx context.Context, flagSet *pflag.FlagSet, field protoreflect.FieldDescriptor) (HasValue, error) { +func (b *Builder) bindPageRequest(ctx *context.Context, flagSet *pflag.FlagSet, field protoreflect.FieldDescriptor) (HasValue, error) { return b.addMessageFlags( ctx, flagSet, @@ -291,7 +290,7 @@ type namingOptions struct { } // addFieldFlag adds a flag for the provided field to the flag set. -func (b *Builder) addFieldFlag(ctx context.Context, flagSet *pflag.FlagSet, field protoreflect.FieldDescriptor, opts *autocliv1.FlagOptions, options namingOptions) (name string, hasValue HasValue, err error) { +func (b *Builder) addFieldFlag(ctx *context.Context, flagSet *pflag.FlagSet, field protoreflect.FieldDescriptor, opts *autocliv1.FlagOptions, options namingOptions) (name string, hasValue HasValue, err error) { if opts == nil { opts = &autocliv1.FlagOptions{} } diff --git a/client/v2/autocli/flag/coin.go b/client/v2/autocli/flag/coin.go index 3cf5afc5818b..57c0e85983e4 100644 --- a/client/v2/autocli/flag/coin.go +++ b/client/v2/autocli/flag/coin.go @@ -17,7 +17,7 @@ type coinValue struct { value *basev1beta1.Coin } -func (c coinType) NewValue(context.Context, *Builder) Value { +func (c coinType) NewValue(*context.Context, *Builder) Value { return &coinValue{} } diff --git a/client/v2/autocli/flag/duration.go b/client/v2/autocli/flag/duration.go index cf9fe67af495..df02cba700f7 100644 --- a/client/v2/autocli/flag/duration.go +++ b/client/v2/autocli/flag/duration.go @@ -10,7 +10,7 @@ import ( type durationType struct{} -func (d durationType) NewValue(context.Context, *Builder) Value { +func (d durationType) NewValue(*context.Context, *Builder) Value { return &durationValue{} } diff --git a/client/v2/autocli/flag/enum.go b/client/v2/autocli/flag/enum.go index 8b555d9232ec..72b27528a9a5 100644 --- a/client/v2/autocli/flag/enum.go +++ b/client/v2/autocli/flag/enum.go @@ -14,7 +14,7 @@ type enumType struct { enum protoreflect.EnumDescriptor } -func (b enumType) NewValue(context.Context, *Builder) Value { +func (b enumType) NewValue(*context.Context, *Builder) Value { val := &enumValue{ enum: b.enum, valMap: map[string]protoreflect.EnumValueDescriptor{}, diff --git a/client/v2/autocli/flag/interface.go b/client/v2/autocli/flag/interface.go index c7bb61b9d148..1d983c09c630 100644 --- a/client/v2/autocli/flag/interface.go +++ b/client/v2/autocli/flag/interface.go @@ -9,9 +9,8 @@ import ( // Type specifies a custom flag type. type Type interface { - // NewValue returns a new pflag.Value which must also implement either - // SimpleValue or ListValue. - NewValue(context.Context, *Builder) Value + // NewValue returns a new pflag.Value which must also implement either SimpleValue or ListValue. + NewValue(*context.Context, *Builder) Value // DefaultValue is the default value for this type. DefaultValue() string diff --git a/client/v2/autocli/flag/json_message.go b/client/v2/autocli/flag/json_message.go index 4e93792aaf23..437388994ee9 100644 --- a/client/v2/autocli/flag/json_message.go +++ b/client/v2/autocli/flag/json_message.go @@ -20,7 +20,7 @@ type jsonMessageFlagType struct { messageDesc protoreflect.MessageDescriptor } -func (j jsonMessageFlagType) NewValue(_ context.Context, builder *Builder) Value { +func (j jsonMessageFlagType) NewValue(_ *context.Context, builder *Builder) Value { return &jsonMessageFlagValue{ messageType: util.ResolveMessageType(builder.TypeResolver, j.messageDesc), jsonMarshalOptions: protojson.MarshalOptions{Resolver: builder.TypeResolver}, diff --git a/client/v2/autocli/flag/list.go b/client/v2/autocli/flag/list.go index 72f84c8be3ee..d30f2992ebd9 100644 --- a/client/v2/autocli/flag/list.go +++ b/client/v2/autocli/flag/list.go @@ -52,7 +52,7 @@ type compositeListType struct { simpleType Type } -func (t compositeListType) NewValue(ctx context.Context, opts *Builder) Value { +func (t compositeListType) NewValue(ctx *context.Context, opts *Builder) Value { return &compositeListValue{ simpleType: t.simpleType, values: nil, @@ -68,7 +68,7 @@ func (t compositeListType) DefaultValue() string { type compositeListValue struct { simpleType Type values []protoreflect.Value - ctx context.Context + ctx *context.Context opts *Builder } diff --git a/client/v2/autocli/flag/map.go b/client/v2/autocli/flag/map.go index c2f512503dfa..a5d70c7f7fce 100644 --- a/client/v2/autocli/flag/map.go +++ b/client/v2/autocli/flag/map.go @@ -180,7 +180,7 @@ type compositeMapValue[T comparable] struct { keyType string valueType Type values map[T]protoreflect.Value - ctx context.Context + ctx *context.Context opts *Builder } @@ -188,7 +188,7 @@ func (m compositeMapType[T]) DefaultValue() string { return "" } -func (m compositeMapType[T]) NewValue(ctx context.Context, opts *Builder) Value { +func (m compositeMapType[T]) NewValue(ctx *context.Context, opts *Builder) Value { return &compositeMapValue[T]{ keyValueResolver: m.keyValueResolver, valueType: m.valueType, diff --git a/client/v2/autocli/flag/messager_binder.go b/client/v2/autocli/flag/messager_binder.go index ecd822395030..46a28baa285a 100644 --- a/client/v2/autocli/flag/messager_binder.go +++ b/client/v2/autocli/flag/messager_binder.go @@ -15,7 +15,9 @@ import ( type SignerInfo struct { PositionalArgIndex int IsFlag bool - FieldName string + + FieldName string + FlagName string // flag name (always set if IsFlag is true) } // MessageBinder binds multiple flags in a flag set to a protobuf message. @@ -25,12 +27,12 @@ type MessageBinder struct { positionalFlagSet *pflag.FlagSet positionalArgs []fieldBinding + flagBindings []fieldBinding + messageType protoreflect.MessageType + hasVarargs bool hasOptional bool mandatoryArgUntil int - - flagBindings []fieldBinding - messageType protoreflect.MessageType } // BuildMessage builds and returns a new message for the bound flags. diff --git a/client/v2/autocli/flag/pubkey.go b/client/v2/autocli/flag/pubkey.go new file mode 100644 index 000000000000..adc07956f690 --- /dev/null +++ b/client/v2/autocli/flag/pubkey.go @@ -0,0 +1,60 @@ +package flag + +import ( + "context" + "fmt" + + "google.golang.org/protobuf/reflect/protoreflect" + + "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/codec/types" + cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" +) + +type pubkeyType struct{} + +func (a pubkeyType) NewValue(_ *context.Context, _ *Builder) Value { + return &pubkeyValue{} +} + +func (a pubkeyType) DefaultValue() string { + return "" +} + +type pubkeyValue struct { + value *types.Any +} + +func (a pubkeyValue) Get(protoreflect.Value) (protoreflect.Value, error) { + return protoreflect.ValueOf(a.value), nil +} + +func (a pubkeyValue) String() string { + return a.value.String() +} + +func (a *pubkeyValue) Set(s string) error { + registry := types.NewInterfaceRegistry() + cryptocodec.RegisterInterfaces(registry) + cdc := codec.NewProtoCodec(registry) + + var pk cryptotypes.PubKey + err := cdc.UnmarshalInterfaceJSON([]byte(s), &pk) + if err != nil { + return fmt.Errorf("input isn't a pubkey: %w", err) + } + + any, err := types.NewAnyWithValue(pk) + if err != nil { + return fmt.Errorf("error converting to any type") + } + + a.value = any + + return nil +} + +func (a pubkeyValue) Type() string { + return "pubkey" +} diff --git a/client/v2/autocli/flag/timestamp.go b/client/v2/autocli/flag/timestamp.go index c759c70f2178..d77f0293bd97 100644 --- a/client/v2/autocli/flag/timestamp.go +++ b/client/v2/autocli/flag/timestamp.go @@ -10,7 +10,7 @@ import ( type timestampType struct{} -func (t timestampType) NewValue(context.Context, *Builder) Value { +func (t timestampType) NewValue(*context.Context, *Builder) Value { return ×tampValue{} } diff --git a/client/v2/autocli/keyring/keyring.go b/client/v2/autocli/keyring/keyring.go new file mode 100644 index 000000000000..601163aac690 --- /dev/null +++ b/client/v2/autocli/keyring/keyring.go @@ -0,0 +1,48 @@ +package keyring + +import ( + "context" + + signingv1beta1 "cosmossdk.io/api/cosmos/tx/signing/v1beta1" + + "github.com/cosmos/cosmos-sdk/crypto/types" +) + +// KeyringContextKey is the key used to store the keyring in the context. +// The keyring must be wrapped using the KeyringImpl. +var KeyringContextKey struct{} + +var _ Keyring = &KeyringImpl{} + +type KeyringImpl struct { //nolint:revive // stuttering is fine + k Keyring +} + +// NewKeyringInContext returns a new context with the keyring set. +func NewKeyringInContext(ctx context.Context, k Keyring) context.Context { + return context.WithValue(ctx, KeyringContextKey, NewKeyringImpl(k)) +} + +func NewKeyringImpl(k Keyring) *KeyringImpl { + return &KeyringImpl{k: k} +} + +// GetPubKey implements Keyring. +func (k *KeyringImpl) GetPubKey(name string) (types.PubKey, error) { + return k.k.GetPubKey(name) +} + +// List implements Keyring. +func (k *KeyringImpl) List() ([]string, error) { + return k.k.List() +} + +// LookupAddressByKeyName implements Keyring. +func (k *KeyringImpl) LookupAddressByKeyName(name string) ([]byte, error) { + return k.k.LookupAddressByKeyName(name) +} + +// Sign implements Keyring. +func (k *KeyringImpl) Sign(name string, msg []byte, signMode signingv1beta1.SignMode) ([]byte, error) { + return k.k.Sign(name, msg, signMode) +} diff --git a/client/v2/autocli/msg.go b/client/v2/autocli/msg.go index 5bcbd9baa33a..5459c245a228 100644 --- a/client/v2/autocli/msg.go +++ b/client/v2/autocli/msg.go @@ -4,7 +4,6 @@ import ( "context" "fmt" - "github.com/cockroachdb/errors" "github.com/spf13/cobra" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/reflect/protoreflect" @@ -60,7 +59,7 @@ func (b *Builder) AddMsgServiceCommands(cmd *cobra.Command, cmdDescriptor *autoc descriptor, err := b.FileResolver.FindDescriptorByName(protoreflect.FullName(cmdDescriptor.Service)) if err != nil { - return errors.Errorf("can't find service %s: %v", cmdDescriptor.Service, err) + return fmt.Errorf("can't find service %s: %w", cmdDescriptor.Service, err) } service := descriptor.(protoreflect.ServiceDescriptor) methods := service.Methods() @@ -102,9 +101,7 @@ func (b *Builder) AddMsgServiceCommands(cmd *cobra.Command, cmdDescriptor *autoc continue } - if methodCmd != nil { - cmd.AddCommand(methodCmd) - } + cmd.AddCommand(methodCmd) } return nil @@ -112,7 +109,7 @@ func (b *Builder) AddMsgServiceCommands(cmd *cobra.Command, cmdDescriptor *autoc // BuildMsgMethodCommand returns a command that outputs the JSON representation of the message. func (b *Builder) BuildMsgMethodCommand(descriptor protoreflect.MethodDescriptor, options *autocliv1.RpcCommandOptions) (*cobra.Command, error) { - cmd, err := b.buildMethodCommandCommon(descriptor, options, func(cmd *cobra.Command, input protoreflect.Message) error { + execFunc := func(cmd *cobra.Command, input protoreflect.Message) error { clientCtx, err := client.GetClientTxContext(cmd) if err != nil { return err @@ -121,11 +118,11 @@ func (b *Builder) BuildMsgMethodCommand(descriptor protoreflect.MethodDescriptor clientCtx = clientCtx.WithCmdContext(cmd.Context()) clientCtx = clientCtx.WithOutput(cmd.OutOrStdout()) - // set signer to signer field if empty fd := input.Descriptor().Fields().ByName(protoreflect.Name(flag.GetSignerFieldName(input.Descriptor()))) - if addr := input.Get(fd).String(); addr == "" { - addressCodec := b.Builder.AddressCodec + addressCodec := b.Builder.AddressCodec + // set signer to signer field if empty + if addr := input.Get(fd).String(); addr == "" { scalarType, ok := flag.GetScalarType(fd) if ok { // override address codec if validator or consensus address @@ -153,16 +150,19 @@ func (b *Builder) BuildMsgMethodCommand(descriptor protoreflect.MethodDescriptor proto.Merge(msg, input.Interface()) return clienttx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }) + } + + cmd, err := b.buildMethodCommandCommon(descriptor, options, execFunc) + if err != nil { + return nil, err + } if b.AddTxConnFlags != nil { b.AddTxConnFlags(cmd) } // silence usage only for inner txs & queries commands - if cmd != nil { - cmd.SilenceUsage = true - } + cmd.SilenceUsage = true - return cmd, err + return cmd, nil } diff --git a/client/v2/autocli/msg_test.go b/client/v2/autocli/msg_test.go index 5937ba24dbc7..612207b6a42e 100644 --- a/client/v2/autocli/msg_test.go +++ b/client/v2/autocli/msg_test.go @@ -55,6 +55,25 @@ func TestMsg(t *testing.T) { assert.NilError(t, err) golden.Assert(t, out.String(), "msg-output.golden") + out, err = runCmd(fixture, buildCustomModuleMsgCommand(&autocliv1.ServiceCommandDescriptor{ + Service: bankv1beta1.Msg_ServiceDesc.ServiceName, + RpcCommandOptions: []*autocliv1.RpcCommandOptions{ + { + RpcMethod: "Send", + Use: "send [from_key_or_address] [to_address] [amount] [flags]", + Short: "Send coins from one account to another", + PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "from_address"}, {ProtoField: "to_address"}, {ProtoField: "amount"}}, + }, + }, + EnhanceCustomCommand: true, + }), "send", + "cosmos1y74p8wyy4enfhfn342njve6cjmj5c8dtl6emdk", "cosmos1y74p8wyy4enfhfn342njve6cjmj5c8dtl6emdk", "1foo", + "--generate-only", + "--output", "json", + ) + assert.NilError(t, err) + golden.Assert(t, out.String(), "msg-output.golden") + out, err = runCmd(fixture, buildCustomModuleMsgCommand(&autocliv1.ServiceCommandDescriptor{ Service: bankv1beta1.Msg_ServiceDesc.ServiceName, RpcCommandOptions: []*autocliv1.RpcCommandOptions{ diff --git a/client/v2/autocli/query_test.go b/client/v2/autocli/query_test.go index 07d6354928e0..c949ea021a0a 100644 --- a/client/v2/autocli/query_test.go +++ b/client/v2/autocli/query_test.go @@ -684,7 +684,7 @@ func TestNotFoundErrorsQuery(t *testing.T) { b.AddQueryConnFlags = nil b.AddTxConnFlags = nil - buildModuleQueryCommand := func(moduleName string, cmdDescriptor *autocliv1.ServiceCommandDescriptor) (*cobra.Command, error) { + buildModuleQueryCommand := func(_ string, cmdDescriptor *autocliv1.ServiceCommandDescriptor) (*cobra.Command, error) { cmd := topLevelCmd(context.Background(), "query", "Querying subcommands") err := b.AddMsgServiceCommands(cmd, cmdDescriptor) return cmd, err diff --git a/client/v2/go.mod b/client/v2/go.mod index 113837041719..71b3dfd94210 100644 --- a/client/v2/go.mod +++ b/client/v2/go.mod @@ -39,13 +39,13 @@ require ( github.com/cockroachdb/pebble v1.1.0 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect - github.com/cometbft/cometbft v0.38.7 // indirect + github.com/cometbft/cometbft v0.38.9 // indirect github.com/cometbft/cometbft-db v0.9.1 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.0.2 // indirect github.com/cosmos/go-bip39 v1.0.0 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect - github.com/cosmos/gogoproto v1.4.12 // indirect + github.com/cosmos/gogoproto v1.5.0 // indirect github.com/cosmos/iavl v1.1.2 // indirect github.com/cosmos/ics23/go v0.10.0 // indirect github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect @@ -87,6 +87,7 @@ require ( github.com/hashicorp/go-metrics v0.5.3 // indirect github.com/hashicorp/go-plugin v1.5.2 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.1.0 // indirect diff --git a/client/v2/go.sum b/client/v2/go.sum index 3567a0e69d81..4308f10ea049 100644 --- a/client/v2/go.sum +++ b/client/v2/go.sum @@ -125,8 +125,8 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/cometbft/cometbft v0.38.7 h1:ULhIOJ9+LgSy6nLekhq9ae3juX3NnQUMMPyVdhZV6Hk= -github.com/cometbft/cometbft v0.38.7/go.mod h1:HIyf811dFMI73IE0F7RrnY/Fr+d1+HuJAgtkEpQjCMY= +github.com/cometbft/cometbft v0.38.9 h1:cJBJBG0mPKz+sqelCi/hlfZjadZQGdDNnu6YQ1ZsUHQ= +github.com/cometbft/cometbft v0.38.9/go.mod h1:xOoGZrtUT+A5izWfHSJgl0gYZUE7lu7Z2XIS1vWG/QQ= github.com/cometbft/cometbft-db v0.9.1 h1:MIhVX5ja5bXNHF8EYrThkG9F7r9kSfv8BX4LWaxWJ4M= github.com/cometbft/cometbft-db v0.9.1/go.mod h1:iliyWaoV0mRwBJoizElCwwRA9Tf7jZJOURcRZF9m60U= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= @@ -150,8 +150,8 @@ github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4x github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= -github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= -github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= +github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= +github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= github.com/cosmos/iavl v1.1.2 h1:zL9FK7C4L/P4IF1Dm5fIwz0WXCnn7Bp1M2FxH0ayM7Y= github.com/cosmos/iavl v1.1.2/go.mod h1:jLeUvm6bGT1YutCaL2fIar/8vGUE8cPZvh/gXEWDaDM= github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= @@ -389,6 +389,8 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= diff --git a/client/v2/helpers/home.go b/client/v2/helpers/home.go new file mode 100644 index 000000000000..f62ff30490e9 --- /dev/null +++ b/client/v2/helpers/home.go @@ -0,0 +1,36 @@ +package helpers + +import ( + "os" + "path/filepath" + "strings" +) + +// GetNodeHomeDirectory gets the home directory of the node (where the config is located). +// It parses the home flag if set if the `NODE_HOME` environment variable if set (and ignores name). +// Otherwise, it returns the default home directory given its name. +func GetNodeHomeDirectory(name string) (string, error) { + // get the home directory from the flag + args := os.Args + for i := 0; i < len(args); i++ { + if args[i] == "--home" && i+1 < len(args) { + return filepath.Clean(args[i+1]), nil + } else if strings.HasPrefix(args[i], "--home=") { + return filepath.Clean(args[i][7:]), nil + } + } + + // get the home directory from the environment variable + homeDir := os.Getenv("NODE_HOME") + if homeDir != "" { + return filepath.Clean(homeDir), nil + } + + // return the default home directory + userHomeDir, err := os.UserHomeDir() + if err != nil { + return "", err + } + + return filepath.Join(userHomeDir, name), nil +} diff --git a/core/go.mod b/core/go.mod index 350dbad672e2..3382753414e0 100644 --- a/core/go.mod +++ b/core/go.mod @@ -9,7 +9,7 @@ require ( github.com/cosmos/cosmos-db v1.0.2 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/stretchr/testify v1.9.0 - google.golang.org/grpc v1.61.1 + google.golang.org/grpc v1.62.1 google.golang.org/protobuf v1.33.0 gotest.tools/v3 v3.5.1 sigs.k8s.io/yaml v1.4.0 @@ -24,7 +24,7 @@ require ( github.com/cockroachdb/pebble v1.1.0 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect - github.com/cosmos/gogoproto v1.4.12 // indirect + github.com/cosmos/gogoproto v1.5.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/getsentry/sentry-go v0.27.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect @@ -49,8 +49,8 @@ require ( golang.org/x/net v0.20.0 // indirect golang.org/x/sys v0.17.0 // indirect golang.org/x/text v0.14.0 // indirect - google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 // indirect + google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/core/go.sum b/core/go.sum index 80faea6e362c..70e688aa9949 100644 --- a/core/go.sum +++ b/core/go.sum @@ -28,8 +28,8 @@ github.com/cosmos/cosmos-db v1.0.2 h1:hwMjozuY1OlJs/uh6vddqnk9j7VamLv+0DBlbEXbAK github.com/cosmos/cosmos-db v1.0.2/go.mod h1:Z8IXcFJ9PqKK6BIsVOB3QXtkKoqUOp1vRvPT39kOXEA= github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= -github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= -github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= +github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= +github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -144,7 +144,7 @@ golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -181,14 +181,14 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3 h1:1hfbdAfFbkmpg41000wDVqr7jUpK/Yo+LPnIxxGzmkg= -google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3/go.mod h1:5RBcpGRxr25RbDzY5w+dmaqpSEvl8Gwl1x2CICf60ic= -google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f h1:2yNACc1O40tTnrsbk9Cv6oxiW8pxI/pXj0wRtdlYmgY= -google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f/go.mod h1:Uy9bTZJqmfrw2rIBxgGLnamc78euZULUBrLZ9XTITKI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 h1:/jFB8jK5R3Sq3i/lmeZO0cATSzFfZaJq1J2Euan3XKU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0/go.mod h1:FUoWkonphQm3RhTS+kOEhF8h0iDpm4tdXolVCeZ9KKA= -google.golang.org/grpc v1.61.1 h1:kLAiWrZs7YeDM6MumDe7m3y4aM6wacLzM1Y/wiLP9XY= -google.golang.org/grpc v1.61.1/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= +google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ= +google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= +google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 h1:Lj5rbfG876hIAYFjqiJnPHfhXbv+nzTWfm04Fg/XSVU= +google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= +google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= +google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/crypto/keys/multisig/multisig.go b/crypto/keys/multisig/multisig.go index 10f7d2e04000..e28aa012d813 100644 --- a/crypto/keys/multisig/multisig.go +++ b/crypto/keys/multisig/multisig.go @@ -169,6 +169,11 @@ func packPubKeys(pubKeys []cryptotypes.PubKey) ([]*types.Any, error) { return nil, err } anyPubKeys[i] = any + + // sets the compat.aminoBz value + if err := anyPubKeys[i].UnmarshalAmino(pubKeys[i].Bytes()); err != nil { + return nil, err + } } return anyPubKeys, nil } diff --git a/docs/architecture/adr-061-liquid-staking.md b/docs/architecture/adr-061-liquid-staking.md index fcfeda0d3ed2..c069b104c327 100644 --- a/docs/architecture/adr-061-liquid-staking.md +++ b/docs/architecture/adr-061-liquid-staking.md @@ -1,8 +1,9 @@ -# ADR ADR-061: Liquid Staking +# ADR 061: Liquid Staking Module ## Changelog * 2022-09-10: Initial Draft (@zmanian) +* 2023-07-10: (@zmanian, @sampocs, @rileyedmunds, @mpoke) ## Status @@ -10,7 +11,7 @@ ACCEPTED ## Abstract -Add a semi-fungible liquid staking primitive to the default Cosmos SDK staking module. This upgrades proof of stake to enable safe designs with lower overall monetary issuance and integration with numerous liquid staking protocols like Stride, Persistence, Quicksilver, Lido etc. +Add a semi-fungible liquid staking primitive to the default Cosmos SDK staking module. While implemented as changes to existing modules, these additional features are hereinafter referred to as the liquid staking module (LSM). This upgrades proof of stake to enable safe designs with lower overall monetary issuance and integration with numerous liquid staking protocols like Stride, Persistence, Quicksilver, Lido etc. ## Context @@ -24,59 +25,387 @@ The Osmosis team has adopted the idea of Superfluid and Interfluid staking where It's also important to note that Interchain Accounts are available in the default IBC implementation and can be used to [rehypothecate](https://www.investopedia.com/terms/h/hypothecation.asp#toc-what-is-rehypothecation) delegations. Thus liquid staking is already possible and these changes merely improve the UX of liquid staking. Centralized exchanges also rehypothecate staked assets, posing challenges for decentralization. This ADR takes the position that adoption of in-protocol liquid staking is the preferable outcome and provides new levers to incentivize decentralization of stake. -These changes to the staking module have been in development for more than a year and have seen substantial industry adoption who plan to build staking UX. The internal economics at Informal team has also done a review of the impacts of these changes and this review led to the development of the exempt delegation system. This system provides governance with a tuneable parameter for modulating the risks of principal agent problem called the exemption factor. +These changes to the staking module have been in development for more than a year and have seen substantial industry adoption by protocols who plan to build staking UX. The internal economics team at Informal has also done a review of the impact of these changes and this review led to the development of the validator bond system. This system provides governance with a tuneable parameter for modulating the risks of principal agent problem called the validator bond factor. + +Liquid proof of stake systems exacerbate the risk that a single entity - the liquid staking provider - amasses more than ⅓ the total staked supply on a given chain, giving it the power to halt that chain’s block production or censor transactions and proposals. + +Liquid proof of stake may also exacerbate the principal agent risk that exists at the heart of the delegated proof of stake system. The core of the problem is that validators do not actually own the stake that is delegated to them. This leaves them open to perverse incentives to attack the consensus system. Cosmos introduced the idea of min self bond in the staking. This creates a minimum amount of stake the must be bonded by the validators operator key. This feature has very little effect on the behavior of delegates. ## Decision -We implement the semi-fungible liquid staking system and exemption factor system within the cosmos sdk. Though registered as fungible assets, these tokenized shares have extremely limited fungibility, only among the specific delegation record that was created when shares were tokenized. These assets can be used for OTC trades but composability with DeFi is limited. The primary expected use case is improving the user experience of liquid staking providers. +We implement the semi-fungible liquid staking system and validator bond factor system within the cosmos sdk. Though registered as fungible assets, these tokenized shares have extremely limited fungibility, only among the specific delegation record that was created when shares were tokenized. These assets can be used for OTC trades but composability with DeFi is limited. The primary expected use case is improving the user experience of liquid staking providers. + +The LSM is designed to safely and efficiently facilitate the adoption of liquid staking. + +The LSM mitigates liquid staking risks by limiting the total amount of tokens that can be liquid staked to X% of all staked tokens (in the case of the Cosmos Hub, 25% as decided by Governance). + +As additional risk-mitigation features, the LSM introduces a requirement that validators self-bond tokens to be eligible for delegations from liquid staking providers, and that the portion of their liquid staked shares must not exceed X% of their total shares (50% on the Cosmos Hub). -A new governance parameter is introduced that defines the ratio of exempt to issued tokenized shares. This is called the exemption factor. A larger exemption factor allows more tokenized shares to be issued for a smaller amount of exempt delegations. If governance is comfortable with how the liquid staking market is evolving, it makes sense to increase this value. +A new governance parameter is introduced that defines the ratio of validator bonded tokens to issued tokenized shares. This is called the _validator bond factor_. A larger validator bond factor allows more tokenized shares to be issued for a smaller amount of validator bond. If governance is comfortable with how the liquid staking market is evolving, it makes sense to increase this value. -Min self delegation is removed from the staking system with the expectation that it will be replaced by the exempt delegations system. The exempt delegation system allows multiple accounts to demonstrate economic alignment with the validator operator as team members, partners etc. without co-mingling funds. Delegation exemption will likely be required to grow the validators' business under widespread adoption of liquid staking once governance has adjusted the exemption factor. +Min self delegation is removed from the staking system with the expectation that it will be replaced by the validator bond system. The validator bond system allows multiple accounts to demonstrate economic alignment with the validator operator as team members, partners etc. without co-mingling funds. Validator bonding will likely be required to grow the validators' business under widespread adoption of liquid staking once governance has adjusted the validator bond factor. When shares are tokenized, the underlying shares are transferred to a module account and rewards go to the module account for the TokenizedShareRecord. There is no longer a mechanism to override the validators vote for TokenizedShares. +Delegations from 32-length addresses and LSM tokenized shares are tracked against the global liquid staking, validator liquid staking cap, and validator bond caps. This requires changing the standard staking transactions to track these variables and ensure safety limits are enforced. The reason for checking the account type is because ICAs and tokenize share record module accounts have 32-length addresses, so in practice this limits liquid staking. To be clear, any ICA or module account staking is counted against this cap - not just ICA delegations from liquid staking providers. -### `MsgTokenizeShares` +### Limiting liquid staking -The MsgTokenizeShares message is used to create tokenize delegated tokens. This message can be executed by any delegator who has positive amount of delegation and after execution the specific amount of delegation disappear from the account and share tokens are provided. Share tokens are denominated in the validator and record id of the underlying delegation. -A user may tokenize some or all of their delegation. +The LSM would limit the percentage of liquid staked tokens by all liquid staking providers to 25% of the total supply of staked tokens. For example, if 100M tokens were currently staked, and if the LSM were installed today then the total liquid staked supply would be limited to a maximum of 25M tokens. -They will receive shares with the denom of `cosmosvaloper1xxxx/5` where 5 is the record id for the validator operator. +This is a key safety feature, as it would prevent liquid staking providers from collectively controlling more than ⅓ of the total staked token supply, which is the threshold at which a group of bad actors could halt block production. -MsgTokenizeShares fails if the account is a VestingAccount. Users will have to move vested tokens to a new account and endure the unbonding period. We view this as an acceptable tradeoff vs. the complex book keeping required to track vested tokens. +Additionally, a separate cap is enforced on each validator's portion of liquid staked shares. Once X% of shares (on the Cosmoshub, 50% based on the parameter value chosen by governance) are liquid, the validator is unable to accept additional liquid stakes. -The total amount of outstanding tokenized shares for the validator is checked against the sum of exempt delegations multiplied by the exemption factor. If the tokenized shares exceeds this limit, execution fails. +Technically speaking, this cap on liquid staked tokens is enforced by limiting the total number of tokens that can be staked via interchain accounts plus the number of tokens that can be tokenized using LSM. Once this joint cap is reached, the LSM prevents interchain accounts from staking any more tokens and prevents tokenization of delegations using LSM. -MsgTokenizeSharesResponse provides the number of tokens generated and their denom. +Note that the limit of the percentage of liquid staked tokens will not fully hold if the total stake is dropping. As an example, a 25% cap leaves room for over 33% of the non-LS ATOM to unbond before the share of voting power held by liquid staking providers would reach 33%. For example, say there are 100 ATOM total staked, 25 of which are liquid staked; 25 of the 75 remaining ATOM need to unbond for the liquid staked voting power to rise to 33%. + + +### Validator bond + +As an additional security feature, validators who want to receive delegations from liquid staking providers would be required to self-bond a certain amount of tokens. The validator self-bond, or “validator-bond,” means that validators need to have “skin in the game” in order to be entrusted with delegations from liquid staking providers. This disincentivizes malicious behavior and enables the validator to negotiate its relationship with liquid staking providers. + +Technically speaking, the validator-bond is tracked by the LSM. The maximum number of tokens that can be delegated to a validator by a liquid staking provider is equal to the validator-bond multiplied by the “validator-bond factor.” The initial validator bond factor would be set at 250, but can be configured by governance. + +With a validator-bond factor of 250, for every 1 token a validator self-bonds, that validator is eligible to receive up to two-hundred-and-fifty tokens delegated from liquid staking providers. The validator-bond has no impact on anything other than eligibility for delegations from liquid staking providers. + +Without self-bonding tokens, a validator can’t receive delegations from liquid staking providers. And if a validator’s maximum amount of delegated tokens from liquid staking providers has been met, it would have to self-bond more tokens to become eligible for additional liquid staking provider delegations. + +### Instantly liquid staking tokens that are already staked + +Next, let’s discuss how the LSM makes the adoption of liquid staking more efficient, and can help the blockchain that installs it build strong relationships with liquid staking providers. The LSM enables users to instantly liquid stake their staked tokens, without having to wait the unbonding period. This is important, because a very large portion of the token supply on most Cosmos blockchains is currently staked. Liquid staking tokens that are already staked incur a switching cost in the form of forfeited staking rewards over the chain's unbonding period. The LSM eliminates this switching cost. + + +A user would be able to visit any liquid staking provider that has integrated with the LSM and click a button to convert his staked tokens to liquid staked tokens. It would be as easy as liquid staking unstaked tokens. +Technically speaking, this is accomplished by using something called an “LSM share.” Using the liquid staking module, a user can tokenize their staked tokens and turn it into LSM shares. LSM shares can be redeemed for underlying staked tokens and are transferable. After staked tokens are tokenized they can be immediately transferred to a liquid staking provider in exchange for liquid staking tokens - without having to wait for the unbonding period. -### `MsgRedeemTokensforShares` +### LSM share token -The MsgRedeemTokensforShares message is used to redeem the delegation from share tokens. This message can be executed by any user who owns share tokens. After execution delegations will appear to the user. +When tokenizing a delegation, the returned token has a denom of the format `{validatorAddress}/{recordId}`, where `recordId` is a monotonically increasing number that increments every tokenization. As a result, two successive tokenizations to the same validator will yield different denom's. +Additionally, the share tokens returned will map 1:1 with the number of shares of the underlying delegation (e.g. if the delegation of X shares is tokenized, X share tokens be returned). This reduces ambiguity with respect to the value of the token if a slash occurs after tokenization. -### `MsgTransferTokenizeShareRecord` +### Toggling the ability to tokenize shares -The MsgTransferTokenizeShareRecord message is used to transfer the ownership of rewards generated from the tokenized amount of delegation. The tokenize share record is created when a user tokenize his/her delegation and deleted when the full amount of share tokens are redeemed. +Currently LSM facilitates the immediate conversion of staked assets into liquid staked tokens (referred to as "tokenization"). Despite the many benefits that come with this capability, it does inadvertently negate a protective measure available via traditional staking, where an account can stake their tokens to render them illiquid in the event that their wallet is compromised (the attacker would first need to unbond, then transfer out the tokens). -This is designed to work with liquid staking designs that do not redeem the tokenized shares and may instead want to keep the shares tokenized. +LSM would obviate this safety measure, as an attacker could tokenize and immediately transfer staked tokens to another wallet. So, as an additional protective measure, this proposal incorporates a feature to permit accounts to selectively disable the tokenization of their stake. +The LSM grants the ability to enable and disable the ability to tokenizate their stake. When tokenization is disabled, a lock is placed on the account, effectively preventing the conversion of any of their delegations. Re-enabling tokenization would initiate the removal of the lock, but the process is not immediate. The lock removal is queued, with the lock itself persisting throughout the unbonding period. Following the completion of the unbonding period, the lock would be completely removed, restoring the account's ablility to tokenize. For LST protocols that enable the lock, this delay better positions the base layer to coordinate a recovery in the event of an exploit. -### `MsgExemptDelegation` +## Economics -The MsgExemptDelegation message is used to exempt a delegation to a validator. If the exemption factor is greater than 0, this will allow more delegation shares to be issued from the validator. +We expect that eventually governance may decide that the principal agent problems between validators and liquid staking are resolved through the existence of mature liquid staking synthetic asset systems and their associate risk framework. Governance can effectively disable the feature by setting the scalar value to -1 and allow unlimited minting and all liquid delegations to be freely undelegated. -This design allows the chain to force an amount of self-delegation by validators participating in liquid staking schemes. +During the transitionary period, this creates a market for liquid shares that may serve to help further decentralize the validator set. -## Consequences +It also allows multiple participants in a validator business to hold their personal stakes in segregated accounts but all collectively contribute towards demonstrating alignment with the safety of the protocol. -### Backwards Compatibility +## Instructions for validators +Once delegated to a validator, a delegator (or validator operator) can convert their delegation to a validator into Validator Bond by signing a ValidatorBond message. -By setting the exemption factor to zero, this module works like legacy staking. The only substantial change is the removal of min-self-bond and without any tokenized shares, there is no incentive to exempt delegation. +The ValidatorBond message is exposed by the staking module and can be executed as follows: +``` +gaiad tx staking validator-bond cosmosvaloper13h5xdxhsdaugwdrkusf8lkgu406h8t62jkqv3h --from mykey +``` +There are no partial Validator Bonds: when a delegator or validator converts their shares to a particular validator into Validator Bond, their entire delegation to that validator is converted to Validator Bond. If a validator or delegator wishes to convert only some of their delegation to Validator Bond, they should transfer those funds to a separate address and Validator Bond from that address, or redelegate the funds that they do not wish to validator bond to another validator before converting their delegation to validator bond. -### Positive +To convert Validator Bond back into a standard delegation, simply unbond the shares. + +## Technical Spec: + +### Software parameters + +New governance parameters are introduced that define the cap on the percentage of delegated shares than can be liquid, namely the `GlobalLiquidStakingCap` and `ValidatorLiquidStakingCap`. The `ValidatorBondFactor` governance parameter defines the number of tokens that can be liquid staked, relative to a validator's validator bond. + +```proto +// Params defines the parameters for the staking module. +message Params { + // ... existing params... + // validator_bond_factor is required as a safety check for tokenizing shares and + // delegations from liquid staking providers + string validator_bond_factor = 7 [ + (gogoproto.moretags) = "yaml:\"validator_bond_factor\"", + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false + ]; + // global_liquid_staking_cap represents a cap on the portion of stake that + // comes from liquid staking providers + string global_liquid_staking_cap = 8 [ + (gogoproto.moretags) = "yaml:\"global_liquid_staking_cap\"", + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false + ]; + // validator_liquid_staking_cap represents a cap on the portion of stake that + // comes from liquid staking providers for a specific validator + string validator_liquid_staking_cap = 9 [ + (gogoproto.moretags) = "yaml:\"validator_liquid_staking_cap\"", + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false + ]; +} +``` + +### Data structures + +#### Validator +The `ValidatorBondShares` and `LiquidShares` attributes were added to the `Validator` struct. + +```proto +message Validator { + // ...existing attributes... + // Number of shares self bonded from the validator + string validator_bond_shares = 11 [ + (cosmos_proto.scalar) = "cosmos.Dec", + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false + ]; + // Number of shares either tokenized or owned by a liquid staking provider + string liquid_shares = 12 [ + (cosmos_proto.scalar) = "cosmos.Dec", + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false + ]; +} +``` + +#### Delegation +The `ValidatorBond` attribute was added to the `Delegation` struct. + +```proto +// Delegation represents the bond with tokens held by an account. It is +// owned by one delegator, and is associated with the voting power of one +// validator. +message Delegation { + // ...existing attributes... + // has this delegation been marked as a validator self bond. + bool validator_bond = 4; +} +``` + +#### Toggling the ability to tokenize shares +```proto +// PendingTokenizeShareAuthorizations stores a list of addresses that have their +// tokenize share re-enablement in progress +message PendingTokenizeShareAuthorizations { + repeated string addresses = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; +} +// Prevents an address from tokenizing any of their delegations +message MsgDisableTokenizeShares { + string delegator_address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; +} + +// EnableTokenizeShares begins the re-allowing of tokenizing shares for an address, +// which will complete after the unbonding period +// The time at which the lock is completely removed is returned in the response +message MsgEnableTokenizeShares { + string delegator_address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; +} +``` + + +### Tracking total liquid stake +To monitor the progress towards the global liquid staking cap, the module needs to know two things: the total amount of staked tokens and the total amount of *liquid staked* tokens. The total staked tokens can be found by checking the balance of the "Bonded" pool. The total *liquid staked* tokens are stored separately and can be found under the `TotalLiquidStakedTokensKey` prefix (`[]byte{0x65}`). The value is managed by the following keeper functions: +```go +func (k Keeper) SetTotalLiquidStakedTokens(ctx sdk.Context, tokens sdk.Dec) +func (k Keeper) GetTotalLiquidStakedTokens(ctx sdk.Context) sdk.Dec +``` + +### Tokenizing shares + +The MsgTokenizeShares message is used to create tokenize delegated tokens. This message can be executed by any delegator who has positive amount of delegation and after execution the specific amount of delegation disappear from the account and share tokens are provided. Share tokens are denominated in the validator and record id of the underlying delegation. + +A user may tokenize some or all of their delegation. + +They will receive shares with the denom of `cosmosvaloper1xxxx/5` where 5 is the record id for the validator operator. + +MsgTokenizeShares fails if the account is a VestingAccount and the user does not have enough free delegation to complete the tokenization. + +The total amount of outstanding tokenized shares for the validator is checked against the sum of validator bond delegations multiplied by the validator bond factor. If the tokenized shares exceeds this limit, execution fails. + +MsgTokenizeSharesResponse provides the number of tokens generated and their denom. This approach should enable integration with liquid staking providers and improved user experience. It provides a pathway to security under non-exponential issuance policies in the baseline staking module. + +### Helper functions +In order to identify whether a liquid stake transaction will exceed either the global liquid staking cap or the validator bond cap, the following functions were added: + +```go +// Check if an account is a owned by a liquid staking provider +// Checking for a 32-length address will capture +// ICA accounts, as well as tokenized delegations which are owned by module accounts under the hood +// which will identify the following scenarios: +// - An account has tokenized their shares, and thus the delegation is +// owned by the tokenize share record module account +// - A liquid staking provider is delegating through an ICA account +// +// Both ICA accounts and tokenize share record module accounts have 32-length addresses +func (k Keeper) DelegatorIsLiquidStaker(address sdk.AccAddress) bool + +// SafelyIncreaseTotalLiquidStakedTokens increments the total liquid staked tokens +// if the caps are enabled and the global cap is not surpassed by this delegation +func (k Keeper) SafelyIncreaseTotalLiquidStakedTokens(ctx sdk.Context, amount sdk.Int) error + +// DecreaseTotalLiquidStakedTokens decrements the total liquid staked tokens +// if the caps are enabled +func (k Keeper) DecreaseTotalLiquidStakedTokens(ctx sdk.Context, amount sdk.Int) error + +// SafelyIncreaseValidatorLiquidShares increments the liquid shares on a validator +// if the caps are enabled and the validator bond cap is not surpassed by this delegation +func (k Keeper) SafelyIncreaseValidatorLiquidShares(ctx sdk.Context, validator types.Validator, shares sdk.Dec) error + +// DecreaseValidatorLiquidShares decrements the liquid shares on a validator +// if the caps are enabled +func (k Keeper) DecreaseValidatorLiquidShares(ctx sdk.Context, validator types.Validator, shares sdk.Dec) error + +// SafelyDecreaseValidatorBond decrements the validator's self bond +// so long as it will not cause the current delegations to exceed the threshold +// set by validator bond factor +func (k Keeper) SafelyDecreaseValidatorBond(ctx sdk.Context, validator types.Validator, shares sdk.Dec) error +``` + +### Accounting +Tracking the total liquid stake and total liquid validator shares requires additional accounting changes in the following transactions/events: + +```go +func Delegate() { + ... + // If delegator is a liquid staking provider + // Increment total liquid staked + // Increment validator liquid shares +} + +func Undelegate() { + ... + // If delegator is a liquid staking provider + // Decrement total liquid staked + // Decrement validator liquid shares +} + +func BeginRedelegate() { + ... + // If delegator is a liquid staking provider + // Decrement source validator liquid shares + // Increment destination validator liquid shares +} + +func TokenizeShares() { + ... + // If delegator is a NOT liquid staking provider (otherwise the shares are already included) + // Increment total liquid staked + // Increment validator liquid shares +} + +func RedeemTokens() { + ... + // If delegator is a NOT liquid staking provider + // Decrement total liquid staked + // Decrement validator liquid shares +} + +func Slash() { + ... + // Decrement's the total liquid staked tokens + // The total should be adjusted by slash amount * liquid percentage + // Since a slash only modifies a validator's tokens and not their shares, + // the validator's LiquidShares do not have to be changed during a slash +} +``` + +### Transaction failure cases +With the liquid staking caps in consideration, there are additional scenarios that should cause a transaction to fail: +```go + +func Delegate() { + ... + // If delegator is a liquid staking provider + // Fail transaction if delegation exceeds global liquid staking cap + // Fail transaction if delegation exceeds validator liquid staking cap + // Fail transaction if delegation exceeds validator bond cap +} + +func Undelegate() { + ... + // If the unbonded delegation is a ValidatorBond + // Fail transaction if the reduction in validator bond would cause the + // existing liquid delegation to exceed the cap +} + +func BeginRedelegate() { + ... + // If the delegation is a ValidatorBond + // Fail transaction if the reduction in validator bond would cause the + // existing liquid delegation to exceed the cap + + // If delegator is a liquid staking provider + // Fail transaction if delegation exceeds global liquid staking cap + // Fail transaction if delegation exceeds validator liquid staking cap + // Fail transaction if delegation exceeds validator bond cap +} + +func TokenizeShares() { + ... + // If the delegation is a ValidatorBond + // Fail transaction - ValidatorBond's cannot be tokenized + + // If the sender is NOT a liquid staking provider + // Fail transaction if tokenized shares would exceed the global liquid staking cap + // Fail transaction if tokenized shares would exceed the validator liquid staking cap + // Fail transaction if tokenized shares would exceed the validator bond cap +} +``` + +### Bootstrapping total liquid stake +When upgrading to enable the liquid staking module, the total global liquid stake and total liquid validator shares must be determined. This can be done in the upgrade handler by looping through delegation records and including the delegation in the total if the delegator has a 32-length address. This is implemented by the following function: +```go +func RefreshTotalLiquidStaked() { + // Resets all validator LiquidShares to 0 + // Loops delegation records + // For each delegation, determines if the delegation was from a 32-length address + // If so, increments the global liquid staking cap and validator liquid shares +} +``` + +### Toggling the ability to tokenize shares + +```go +// Adds a lock that prevents tokenizing shares for an account +// The tokenize share lock store is implemented by keying on the account address +// and storing a timestamp as the value. The timestamp is empty when the lock is +// set and gets populated with the unlock completion time once the unlock has started +func AddTokenizeSharesLock(address sdk.AccAddress) + +// Removes the tokenize share lock for an account to enable tokenizing shares +func RemoveTokenizeSharesLock(address sdk.AccAddress) + +// Updates the timestamp associated with a lock to the time at which the lock expires +func SetTokenizeShareUnlockTime(address sdk.AccAddress, completionTime time.Time) + +// Checks if there is currently a tokenize share lock for a given account +// Returns a bool indicating if the account is locked, as well as the unlock time +// which may be empty if an unlock has not been initiated +func IsTokenizeSharesDisabled(address sdk.AccAddress) (disabled bool, unlockTime time.Time) + +// Stores a list of addresses pending tokenize share unlocking at the same time +func SetPendingTokenizeShareAuthorizations(completionTime time.Time, authorizations types.PendingTokenizeShareAuthorizations) + +// Returns a list of addresses pending tokenize share unlocking at the same time +func GetPendingTokenizeShareAuthorizations() PendingTokenizeShareAuthorizations + +// Inserts the address into a queue where it will sit for 1 unbonding period +// before the tokenize share lock is removed +// Returns the completion time +func QueueTokenizeSharesAuthorization(address sdk.AccAddress) time.Time + +// Unlocks all queued tokenize share authorizations that have matured +// (i.e. have waited the full unbonding period) +func RemoveExpiredTokenizeShareLocks(blockTime time.Time) (unlockedAddresses []string) +``` + +## References + +Please see this document for a technical spec for the LSM: https://docs.google.com/document/d/1WYPUHmQii4o-q2225D_XyqE6-1bvM7Q128Y9amqRwqY/edit#heading=h.zcpx47mn67kl diff --git a/docs/docs/learn/advanced/05-encoding.md b/docs/docs/learn/advanced/05-encoding.md index c7da94bf952d..707568fdbcdf 100644 --- a/docs/docs/learn/advanced/05-encoding.md +++ b/docs/docs/learn/advanced/05-encoding.md @@ -49,8 +49,6 @@ for their types, this is autogenerated via [buf](https://buf.build/) If modules use [Collections](../../build/packages/02-collections.md) or [ORM](../../build/packages/03-orm.md), encoding and decoding are handled, marshal and unmarshal should not be handled manually unless for specific cases identified by the developer. -```go reference - ### Gogoproto Modules are encouraged to utilize Protobuf encoding for their respective types. In the Cosmos SDK, we use the [Gogoproto](https://github.com/cosmos/gogoproto) specific implementation of the Protobuf spec that offers speed and DX improvements compared to the official [Google protobuf implementation](https://github.com/protocolbuffers/protobuf). diff --git a/docs/docs/learn/advanced/07-cli.md b/docs/docs/learn/advanced/07-cli.md index 2762d83e62a1..3ee93c0524e0 100644 --- a/docs/docs/learn/advanced/07-cli.md +++ b/docs/docs/learn/advanced/07-cli.md @@ -153,7 +153,7 @@ Flags are added to commands directly (generally in the [module's CLI file](../.. ## Environment variables -Each flag is bound to its respective named environment variable. Then name of the environment variable consist of two parts - capital case `basename` followed by flag name of the flag. `-` must be substituted with `_`. For example flag `--home` for application with basename `GAIA` is bound to `GAIA_HOME`. It allows reducing the amount of flags typed for routine operations. For example instead of: +Each flag is bound to its respective named environment variable. Then name of the environment variable consist of two parts - capital case `basename` followed by flag name of the flag. `-` must be substituted with `_`. For example flag `--node` for application with basename `GAIA` is bound to `GAIA_NODE`. It allows reducing the amount of flags typed for routine operations. For example instead of: ```shell gaia --home=./ --node= --chain-id="testchain-1" --keyring-backend=test tx ... --from= @@ -163,7 +163,7 @@ this will be more convenient: ```shell # define env variables in .env, .envrc etc -GAIA_HOME= +NODE_HOME= GAIA_NODE= GAIA_CHAIN_ID="testchain-1" GAIA_KEYRING_BACKEND="test" diff --git a/docs/docs/learn/intro/00-overview.md b/docs/docs/learn/intro/00-overview.md index 616d3316921f..a424dfdfe113 100644 --- a/docs/docs/learn/intro/00-overview.md +++ b/docs/docs/learn/intro/00-overview.md @@ -4,9 +4,16 @@ sidebar_position: 1 # What is the Cosmos SDK -The [Cosmos SDK](https://github.com/cosmos/cosmos-sdk) is an open-source framework for building multi-asset public Proof-of-Stake (PoS) blockchains, like the Cosmos Hub, as well as permissioned Proof-of-Authority (PoA) blockchains. Blockchains built with the Cosmos SDK are generally referred to as **application-specific blockchains**. +The [Cosmos SDK](https://github.com/cosmos/cosmos-sdk) is an open-source toolkit for building multi-asset public Proof-of-Stake (PoS) blockchains, like the Cosmos Hub, as well as permissioned Proof-of-Authority (PoA) blockchains. Blockchains built with the Cosmos SDK are generally referred to as **application-specific blockchains**. -The goal of the Cosmos SDK is to allow developers to easily create custom blockchains from scratch that can natively interoperate with other blockchains. We envision the Cosmos SDK as the npm-like framework to build secure blockchain applications on top of [CometBFT](https://github.com/cometbft/cometbft). SDK-based blockchains are built out of composable [modules](../../build/building-modules/00-intro.md), most of which are open-source and readily available for any developers to use. Anyone can create a module for the Cosmos SDK, and integrating already-built modules is as simple as importing them into your blockchain application. What's more, the Cosmos SDK is a capabilities-based system that allows developers to better reason about the security of interactions between modules. For a deeper look at capabilities, jump to [Object-Capability Model](../advanced/10-ocap.md). +The goal of the Cosmos SDK is to allow developers to easily create custom blockchains from scratch that can natively interoperate with other blockchains. +We further this modular approach by allowing developers to plug and play with different consensus engines this can range from the [CometBFT](https://github.com/cometbft/cometbft) or [Rollkit](https://rollkit.dev/). + +SDK-based blockchains have the choice to use the predefined modules or to build their own modules. What this means is that developers can build a blockchain that is tailored to their specific use case, without having to worry about the low-level details of building a blockchain from scratch. Predefined modules include staking, governance, and token issuance, among others. + +What's more, the Cosmos SDK is a capabilities-based system that allows developers to better reason about the security of interactions between modules. For a deeper look at capabilities, jump to [Object-Capability Model](../advanced/10-ocap.md). + +How you can look at this is if we imagine that the SDK is like a lego kit. You can choose to build the basic house from the instructions or you can choose to modify your house and add more floors, more doors, more windows. The choice is yours. ## What are Application-Specific Blockchains @@ -16,12 +23,17 @@ Application-specific blockchains offer a radically different development paradig Learn more about [application-specific blockchains](./01-why-app-specific.md). +## What is Modularity + +Today there is a lot of talk around modularity and discussions between monolithic and modular. Originally the Cosmos SDK was built with a vision of modularity in mind. Modularity is derived from splitting a blockchain into customizable layers of execution, consensus, settlement and data availability, which is what the Cosmos SDK enables. This means that developers can plug and play, making their blockchain customisable by using different software for different layers. For example you can choose to build a vanilla chain and use the Cosmos SDK with CometBFT. CometBFT will be your consensus layer and the chain itself would be the settlement and execution layer. Another route could be to use the SDK with Rollkit and Celestia as your consensus and data availability layer. The benefit of modularity is that you can customize your chain to your specific use case. + ## Why the Cosmos SDK -The Cosmos SDK is the most advanced framework for building custom application-specific blockchains today. Here are a few reasons why you might want to consider building your decentralized application with the Cosmos SDK: +The Cosmos SDK is the most advanced framework for building custom modular application-specific blockchains today. Here are a few reasons why you might want to consider building your decentralized application with the Cosmos SDK: -* The default consensus engine available within the Cosmos SDK is [CometBFT](https://github.com/cometbft/cometbft). CometBFT is the most (and only) mature BFT consensus engine in existence. It is widely used across the industry and is considered the gold standard consensus engine for building Proof-of-Stake systems. -* The Cosmos SDK is open-source and designed to make it easy to build blockchains out of composable [modules](../modules). As the ecosystem of open-source Cosmos SDK modules grows, it will become increasingly easier to build complex decentralized platforms with it. +* It allows you to plug and play and customize your consensus layer. As above you can use Rollkit and Celestia as your consensus and data availability layer. This offers a lot of flexibility and customisation. +* Previously the default consensus engine available within the Cosmos SDK is [CometBFT](https://github.com/cometbft/cometbft). CometBFT is the most (and only) mature BFT consensus engine in existence. It is widely used across the industry and is considered the gold standard consensus engine for building Proof-of-Stake systems. +* The Cosmos SDK is open-source and designed to make it easy to build blockchains out of composable [modules](../../build/modules). As the ecosystem of open-source Cosmos SDK modules grows, it will become increasingly easier to build complex decentralized platforms with it. * The Cosmos SDK is inspired by capabilities-based security, and informed by years of wrestling with blockchain state-machines. This makes the Cosmos SDK a very secure environment to build blockchains. * Most importantly, the Cosmos SDK has already been used to build many application-specific blockchains that are already in production. Among others, we can cite [Cosmos Hub](https://hub.cosmos.network), [IRIS Hub](https://irisnet.org), [Binance Chain](https://docs.binance.org/), [Terra](https://terra.money/) or [Kava](https://www.kava.io/). [Many more](https://cosmos.network/ecosystem) are building on the Cosmos SDK. diff --git a/go.mod b/go.mod index 87677ef1c945..25572ec9f227 100644 --- a/go.mod +++ b/go.mod @@ -18,13 +18,13 @@ require ( github.com/chzyer/readline v1.5.1 github.com/cockroachdb/apd/v2 v2.0.2 github.com/cockroachdb/errors v1.11.1 - github.com/cometbft/cometbft v0.38.7 + github.com/cometbft/cometbft v0.38.9 github.com/cosmos/btcutil v1.0.5 github.com/cosmos/cosmos-db v1.0.2 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/gogogateway v1.2.0 - github.com/cosmos/gogoproto v1.4.12 + github.com/cosmos/gogoproto v1.5.0 github.com/cosmos/ledger-cosmos-go v0.13.3 github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 github.com/golang/mock v1.6.0 @@ -59,6 +59,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de google.golang.org/grpc v1.63.2 google.golang.org/protobuf v1.33.0 + gopkg.in/yaml.v2 v2.4.0 gotest.tools/v3 v3.5.1 pgregory.net/rapid v1.1.0 sigs.k8s.io/yaml v1.4.0 @@ -110,6 +111,7 @@ require ( github.com/hashicorp/go-hclog v1.5.0 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-plugin v1.5.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/iancoleman/strcase v0.3.0 // indirect diff --git a/go.sum b/go.sum index d31f4a5f6e75..e3c0eb5c3b20 100644 --- a/go.sum +++ b/go.sum @@ -133,8 +133,8 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/cometbft/cometbft v0.38.7 h1:ULhIOJ9+LgSy6nLekhq9ae3juX3NnQUMMPyVdhZV6Hk= -github.com/cometbft/cometbft v0.38.7/go.mod h1:HIyf811dFMI73IE0F7RrnY/Fr+d1+HuJAgtkEpQjCMY= +github.com/cometbft/cometbft v0.38.9 h1:cJBJBG0mPKz+sqelCi/hlfZjadZQGdDNnu6YQ1ZsUHQ= +github.com/cometbft/cometbft v0.38.9/go.mod h1:xOoGZrtUT+A5izWfHSJgl0gYZUE7lu7Z2XIS1vWG/QQ= github.com/cometbft/cometbft-db v0.9.1 h1:MIhVX5ja5bXNHF8EYrThkG9F7r9kSfv8BX4LWaxWJ4M= github.com/cometbft/cometbft-db v0.9.1/go.mod h1:iliyWaoV0mRwBJoizElCwwRA9Tf7jZJOURcRZF9m60U= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= @@ -156,8 +156,8 @@ github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4x github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= -github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= -github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= +github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= +github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= github.com/cosmos/iavl v1.1.2 h1:zL9FK7C4L/P4IF1Dm5fIwz0WXCnn7Bp1M2FxH0ayM7Y= github.com/cosmos/iavl v1.1.2/go.mod h1:jLeUvm6bGT1YutCaL2fIar/8vGUE8cPZvh/gXEWDaDM= github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= @@ -392,6 +392,8 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= @@ -1032,6 +1034,8 @@ gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/math/CHANGELOG.md b/math/CHANGELOG.md index 10dbe4a437c5..81e2410452a5 100644 --- a/math/CHANGELOG.md +++ b/math/CHANGELOG.md @@ -39,7 +39,9 @@ Ref: https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.j ### Bug Fixes * [#16266](https://github.com/cosmos/cosmos-sdk/pull/16266) fix: legacy dec power mut zero exponent precision. +* [#17352](https://github.com/cosmos/cosmos-sdk/pull/17352) fix(math): defend NewIntFromBigInt argument mutation. * [#18211](https://github.com/cosmos/cosmos-sdk/pull/18211) RelativePow now returns 1 when 0^0, before it was returning the scale factor. +* [#18214](https://github.com/cosmos/cosmos-sdk/pull/18214) fix(math): NewUintFromBigInt argument mutation. ## [math/v1.0.1](https://github.com/cosmos/cosmos-sdk/releases/tag/math/v1.0.1) - 2023-05-15 diff --git a/math/int.go b/math/int.go index dc945b13d283..9cfab3175471 100644 --- a/math/int.go +++ b/math/int.go @@ -105,6 +105,7 @@ func NewIntFromUint64(n uint64) Int { // NewIntFromBigInt constructs Int from big.Int. If the provided big.Int is nil, // it returns an empty instance. This function panics if the bit length is > 256. +// Note, the caller can safely mutate the argument after this function returns. func NewIntFromBigInt(i *big.Int) Int { if i == nil { return Int{} @@ -113,7 +114,7 @@ func NewIntFromBigInt(i *big.Int) Int { if i.BitLen() > MaxBitLen { panic("NewIntFromBigInt() out of bound") } - return Int{i} + return Int{new(big.Int).Set(i)} } // NewIntFromString constructs Int from string diff --git a/math/int_test.go b/math/int_test.go index 56b05cc69f94..8daea2f25e9d 100644 --- a/math/int_test.go +++ b/math/int_test.go @@ -43,6 +43,19 @@ func (s *intTestSuite) TestFromUint64() { } } +func (s *intTestSuite) TestNewIntFromBigInt() { + i := math.NewIntFromBigInt(nil) + s.Require().True(i.IsNil()) + + r := big.NewInt(42) + i = math.NewIntFromBigInt(r) + s.Require().Equal(r, i.BigInt()) + + // modify r and ensure i doesn't change + r = r.SetInt64(100) + s.Require().NotEqual(r, i.BigInt()) +} + func (s *intTestSuite) TestIntPanic() { // Max Int = 2^256-1 = 1.1579209e+77 // Min Int = -(2^256-1) = -1.1579209e+77 diff --git a/math/uint.go b/math/uint.go index 0a61646ae188..b347a84653dd 100644 --- a/math/uint.go +++ b/math/uint.go @@ -235,7 +235,7 @@ func checkNewUint(i *big.Int) (Uint, error) { if err := UintOverflow(i); err != nil { return Uint{}, err } - return Uint{i}, nil + return Uint{new(big.Int).Set(i)}, nil } // RelativePow raises x to the power of n, where x (and the result, z) are scaled by factor b diff --git a/math/uint_test.go b/math/uint_test.go index 0c464433a074..3ae815e0e662 100644 --- a/math/uint_test.go +++ b/math/uint_test.go @@ -261,6 +261,16 @@ func (s *uintTestSuite) TestParseUint() { } } +func (s *uintTestSuite) TestNewUintFromBigInt() { + r := big.NewInt(42) + i := sdkmath.NewUintFromBigInt(r) + s.Require().Equal(r, i.BigInt()) + + // modify r and ensure i doesn't change + r = r.SetInt64(100) + s.Require().NotEqual(r, i.BigInt()) +} + func randuint() sdkmath.Uint { return sdkmath.NewUint(rand.Uint64()) } diff --git a/orm/go.mod b/orm/go.mod index d6a89325bcfb..ca2189b4920b 100644 --- a/orm/go.mod +++ b/orm/go.mod @@ -15,7 +15,7 @@ require ( github.com/regen-network/gocuke v0.6.2 github.com/stretchr/testify v1.9.0 golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 - google.golang.org/grpc v1.61.1 + google.golang.org/grpc v1.62.1 google.golang.org/protobuf v1.33.0 gotest.tools/v3 v3.5.1 pgregory.net/rapid v1.1.0 @@ -32,7 +32,7 @@ require ( github.com/cockroachdb/pebble v1.1.0 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect - github.com/cosmos/gogoproto v1.4.12 // indirect + github.com/cosmos/gogoproto v1.5.0 // indirect github.com/cucumber/common/gherkin/go/v22 v22.0.0 // indirect github.com/cucumber/common/messages/go/v17 v17.1.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -61,9 +61,9 @@ require ( golang.org/x/net v0.20.0 // indirect golang.org/x/sys v0.17.0 // indirect golang.org/x/text v0.14.0 // indirect - google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 // indirect + google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.3.0 // indirect diff --git a/orm/go.sum b/orm/go.sum index 6415ce0f9f42..476220ac1bb6 100644 --- a/orm/go.sum +++ b/orm/go.sum @@ -36,8 +36,8 @@ github.com/cosmos/cosmos-db v1.0.2 h1:hwMjozuY1OlJs/uh6vddqnk9j7VamLv+0DBlbEXbAK github.com/cosmos/cosmos-db v1.0.2/go.mod h1:Z8IXcFJ9PqKK6BIsVOB3QXtkKoqUOp1vRvPT39kOXEA= github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= -github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= -github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= +github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= +github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cucumber/common/gherkin/go/v22 v22.0.0 h1:4K8NqptbvdOrjL9DEea6HFjSpbdT9+Q5kgLpmmsHYl0= github.com/cucumber/common/gherkin/go/v22 v22.0.0/go.mod h1:3mJT10B2GGn3MvVPd3FwR7m2u4tLhSRhWUqJU4KN4Fg= @@ -175,7 +175,7 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -216,14 +216,14 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3 h1:1hfbdAfFbkmpg41000wDVqr7jUpK/Yo+LPnIxxGzmkg= -google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3/go.mod h1:5RBcpGRxr25RbDzY5w+dmaqpSEvl8Gwl1x2CICf60ic= -google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f h1:2yNACc1O40tTnrsbk9Cv6oxiW8pxI/pXj0wRtdlYmgY= -google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f/go.mod h1:Uy9bTZJqmfrw2rIBxgGLnamc78euZULUBrLZ9XTITKI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 h1:/jFB8jK5R3Sq3i/lmeZO0cATSzFfZaJq1J2Euan3XKU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0/go.mod h1:FUoWkonphQm3RhTS+kOEhF8h0iDpm4tdXolVCeZ9KKA= -google.golang.org/grpc v1.61.1 h1:kLAiWrZs7YeDM6MumDe7m3y4aM6wacLzM1Y/wiLP9XY= -google.golang.org/grpc v1.61.1/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= +google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ= +google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= +google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 h1:Lj5rbfG876hIAYFjqiJnPHfhXbv+nzTWfm04Fg/XSVU= +google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= +google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= +google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/proto/cosmos/distribution/v1beta1/distribution.proto b/proto/cosmos/distribution/v1beta1/distribution.proto index 0c20286f9a09..0d56aaa9dd38 100644 --- a/proto/cosmos/distribution/v1beta1/distribution.proto +++ b/proto/cosmos/distribution/v1beta1/distribution.proto @@ -123,6 +123,17 @@ message FeePool { ]; } +// TokenizeShareRecordReward represents the properties of tokenize share +message TokenizeShareRecordReward { + option (gogoproto.goproto_getters) = false; + option (gogoproto.goproto_stringer) = true; + + uint64 record_id = 1; + + repeated cosmos.base.v1beta1.DecCoin reward = 2 + [(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins", (gogoproto.nullable) = false]; +} + // CommunityPoolSpendProposal details a proposal for use of community funds, // together with how many coins are proposed to be spent, and to which // recipient account. diff --git a/proto/cosmos/distribution/v1beta1/query.proto b/proto/cosmos/distribution/v1beta1/query.proto index ffb8912135a0..c80176491da5 100644 --- a/proto/cosmos/distribution/v1beta1/query.proto +++ b/proto/cosmos/distribution/v1beta1/query.proto @@ -70,6 +70,12 @@ service Query { rpc CommunityPool(QueryCommunityPoolRequest) returns (QueryCommunityPoolResponse) { option (google.api.http).get = "/cosmos/distribution/v1beta1/community_pool"; } + + // TokenizeShareRecordReward queries the tokenize share record rewards + rpc TokenizeShareRecordReward(QueryTokenizeShareRecordRewardRequest) + returns (QueryTokenizeShareRecordRewardResponse) { + option (google.api.http).get = "/cosmos/distribution/v1beta1/{owner_address}/tokenize_share_record_rewards"; + } } // QueryParamsRequest is the request type for the Query/Params RPC method. @@ -253,3 +259,22 @@ message QueryCommunityPoolResponse { (amino.dont_omitempty) = true ]; } + +// QueryTokenizeShareRecordRewardRequest is the request type for the Query/TokenizeShareRecordReward RPC +// method. +message QueryTokenizeShareRecordRewardRequest { + option (gogoproto.equal) = false; + option (gogoproto.goproto_getters) = false; + + string owner_address = 1 [(gogoproto.moretags) = "yaml:\"owner_address\""]; +} + +// QueryTokenizeShareRecordRewardResponse is the response type for the Query/TokenizeShareRecordReward +// RPC method. +message QueryTokenizeShareRecordRewardResponse { + // rewards defines all the rewards accrued by a delegator. + repeated TokenizeShareRecordReward rewards = 1 [(gogoproto.nullable) = false]; + // total defines the sum of all the rewards. + repeated cosmos.base.v1beta1.DecCoin total = 2 + [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins"]; +} diff --git a/proto/cosmos/distribution/v1beta1/tx.proto b/proto/cosmos/distribution/v1beta1/tx.proto index 32318bd81219..b427e38c0a44 100644 --- a/proto/cosmos/distribution/v1beta1/tx.proto +++ b/proto/cosmos/distribution/v1beta1/tx.proto @@ -50,6 +50,14 @@ service Msg { // // Since: cosmos-sdk 0.50 rpc DepositValidatorRewardsPool(MsgDepositValidatorRewardsPool) returns (MsgDepositValidatorRewardsPoolResponse); + + // WithdrawTokenizeShareRecordReward defines a method to withdraw reward for an owning TokenizeShareRecord + rpc WithdrawTokenizeShareRecordReward(MsgWithdrawTokenizeShareRecordReward) + returns (MsgWithdrawTokenizeShareRecordRewardResponse); + + // WithdrawAllTokenizeShareRecordReward defines a method to withdraw reward for all owning TokenizeShareRecord + rpc WithdrawAllTokenizeShareRecordReward(MsgWithdrawAllTokenizeShareRecordReward) + returns (MsgWithdrawAllTokenizeShareRecordRewardResponse); } // MsgSetWithdrawAddress sets the withdraw address for @@ -181,6 +189,36 @@ message MsgCommunityPoolSpend { ]; } +// MsgWithdrawTokenizeShareRecordReward withdraws tokenize share rewards for a specific record +message MsgWithdrawTokenizeShareRecordReward { + option (cosmos.msg.v1.signer) = "owner_address"; + option (amino.name) = "cosmos-sdk/distr/MsgWithdrawTokenizeShareRecordReward"; + + option (gogoproto.equal) = false; + option (gogoproto.goproto_getters) = false; + + string owner_address = 1 [(gogoproto.moretags) = "yaml:\"owner_address\""]; + uint64 record_id = 2; +} + +// MsgWithdrawTokenizeShareRecordReward defines the Msg/WithdrawTokenizeShareRecordReward response type. +message MsgWithdrawTokenizeShareRecordRewardResponse {} + +// MsgWithdrawAllTokenizeShareRecordReward withdraws tokenize share rewards or all +// records owned by the designated owner +message MsgWithdrawAllTokenizeShareRecordReward { + option (cosmos.msg.v1.signer) = "owner_address"; + option (amino.name) = "cosmos-sdk/distr/MsgWithdrawAllTokenizeShareRecordReward"; + + option (gogoproto.equal) = false; + option (gogoproto.goproto_getters) = false; + + string owner_address = 1 [(gogoproto.moretags) = "yaml:\"owner_address\""]; +} + +// MsgWithdrawAllTokenizeShareRecordRewardResponse defines the Msg/WithdrawTokenizeShareRecordReward response type. +message MsgWithdrawAllTokenizeShareRecordRewardResponse {} + // MsgCommunityPoolSpendResponse defines the response to executing a // MsgCommunityPoolSpend message. // diff --git a/proto/cosmos/staking/v1beta1/genesis.proto b/proto/cosmos/staking/v1beta1/genesis.proto index c3f1ce5dee91..89b8a15383ff 100644 --- a/proto/cosmos/staking/v1beta1/genesis.proto +++ b/proto/cosmos/staking/v1beta1/genesis.proto @@ -7,6 +7,7 @@ import "gogoproto/gogo.proto"; import "cosmos/staking/v1beta1/staking.proto"; import "cosmos_proto/cosmos.proto"; import "amino/amino.proto"; +import "google/protobuf/timestamp.proto"; // GenesisState defines the staking module's genesis state. message GenesisState { @@ -40,6 +41,33 @@ message GenesisState { // exported defines a bool to identify whether the chain dealing with exported or initialized genesis. bool exported = 8; + + // store tokenize share records to provide reward to record owners + repeated TokenizeShareRecord tokenize_share_records = 9 [(gogoproto.nullable) = false]; + + // last tokenize share record id, used for next share record id calculation + uint64 last_tokenize_share_record_id = 10; + + // total number of liquid staked tokens at genesis + bytes total_liquid_staked_tokens = 11 [ + (gogoproto.customtype) = "cosmossdk.io/math.Int", + (gogoproto.moretags) = "yaml:\"total_liquid_staked_tokens\"", + (gogoproto.nullable) = false + ]; + + // tokenize shares locks at genesis + repeated TokenizeShareLock tokenize_share_locks = 12 [(gogoproto.nullable) = false]; +} + +// TokenizeSharesLock required for specifying account locks at genesis +message TokenizeShareLock { + // Address of the account that is locked + string address = 1; + // Status of the lock (LOCKED or LOCK_EXPIRING) + string status = 2; + // Completion time if the lock is expiring + google.protobuf.Timestamp completion_time = 3 + [(gogoproto.nullable) = false, (gogoproto.stdtime) = true, (gogoproto.moretags) = "yaml:\"completion_time\""]; } // LastValidatorPower required for validator set update logic. diff --git a/proto/cosmos/staking/v1beta1/query.proto b/proto/cosmos/staking/v1beta1/query.proto index 08eb9f3245fb..ed3bb47afeda 100644 --- a/proto/cosmos/staking/v1beta1/query.proto +++ b/proto/cosmos/staking/v1beta1/query.proto @@ -5,6 +5,7 @@ import "cosmos/base/query/v1beta1/pagination.proto"; import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "cosmos/staking/v1beta1/staking.proto"; +import "cosmos/base/v1beta1/coin.proto"; import "cosmos_proto/cosmos.proto"; import "cosmos/query/v1/query.proto"; import "amino/amino.proto"; @@ -111,6 +112,50 @@ service Query { "{validator_addr}"; } + // Query for individual tokenize share record information by share by id + rpc TokenizeShareRecordById(QueryTokenizeShareRecordByIdRequest) returns (QueryTokenizeShareRecordByIdResponse) { + option (google.api.http).get = "/cosmos/staking/v1beta1/tokenize_share_record_by_id/{id}"; + } + + // Query for individual tokenize share record information by share denom + rpc TokenizeShareRecordByDenom(QueryTokenizeShareRecordByDenomRequest) + returns (QueryTokenizeShareRecordByDenomResponse) { + option (google.api.http).get = "/cosmos/staking/v1beta1/tokenize_share_record_by_denom/{denom}"; + } + + // Query tokenize share records by address + rpc TokenizeShareRecordsOwned(QueryTokenizeShareRecordsOwnedRequest) + returns (QueryTokenizeShareRecordsOwnedResponse) { + option (google.api.http).get = "/cosmos/staking/v1beta1/tokenize_share_record_owned/{owner}"; + } + + // Query for all tokenize share records + rpc AllTokenizeShareRecords(QueryAllTokenizeShareRecordsRequest) returns (QueryAllTokenizeShareRecordsResponse) { + option (google.api.http).get = "/cosmos/staking/v1beta1/tokenize_share_records"; + } + + // Query for last tokenize share record id + rpc LastTokenizeShareRecordId(QueryLastTokenizeShareRecordIdRequest) + returns (QueryLastTokenizeShareRecordIdResponse) { + option (google.api.http).get = "/cosmos/staking/v1beta1/last_tokenize_share_record_id"; + } + + // Query for total tokenized staked assets + rpc TotalTokenizeSharedAssets(QueryTotalTokenizeSharedAssetsRequest) + returns (QueryTotalTokenizeSharedAssetsResponse) { + option (google.api.http).get = "/cosmos/staking/v1beta1/total_tokenize_shared_assets"; + } + + // Query for total liquid staked (including tokenized shares or owned by an liquid staking provider) + rpc TotalLiquidStaked(QueryTotalLiquidStaked) returns (QueryTotalLiquidStakedResponse) { + option (google.api.http).get = "/cosmos/staking/v1beta1/total_liquid_staked"; + } + + // Query tokenize share locks + rpc TokenizeShareLockInfo(QueryTokenizeShareLockInfo) returns (QueryTokenizeShareLockInfoResponse) { + option (google.api.http).get = "/cosmos/staking/v1beta1/tokenize_share_lock_info/{address}"; + } + // HistoricalInfo queries the historical info for given height. rpc HistoricalInfo(QueryHistoricalInfoRequest) returns (QueryHistoricalInfoResponse) { option (cosmos.query.v1.module_query_safe) = true; @@ -385,3 +430,96 @@ message QueryParamsResponse { // params holds all the parameters of this module. Params params = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; } + +// QueryTokenizeShareRecordByIdRequest is request type for the +// Query/QueryTokenizeShareRecordById RPC method. +message QueryTokenizeShareRecordByIdRequest { + uint64 id = 1; +} + +// QueryTokenizeShareRecordByIdRequest is response type for the +// Query/QueryTokenizeShareRecordById RPC method. +message QueryTokenizeShareRecordByIdResponse { + TokenizeShareRecord record = 1 [(gogoproto.nullable) = false]; +} + +// QueryTokenizeShareRecordByDenomRequest is request type for the +// Query/QueryTokenizeShareRecordByDenom RPC method. +message QueryTokenizeShareRecordByDenomRequest { + string denom = 1; +} + +// QueryTokenizeShareRecordByDenomResponse is response type for the +// Query/QueryTokenizeShareRecordByDenom RPC method. +message QueryTokenizeShareRecordByDenomResponse { + TokenizeShareRecord record = 1 [(gogoproto.nullable) = false]; +} + +// QueryTokenizeShareRecordsOwnedRequest is request type for the +// Query/QueryTokenizeShareRecordsOwned RPC method. +message QueryTokenizeShareRecordsOwnedRequest { + string owner = 1; +} + +// QueryTokenizeShareRecordsOwnedResponse is response type for the +// Query/QueryTokenizeShareRecordsOwned RPC method. +message QueryTokenizeShareRecordsOwnedResponse { + repeated TokenizeShareRecord records = 1 [(gogoproto.nullable) = false]; +} + +// QueryAllTokenizeShareRecordsRequest is request type for the +// Query/QueryAllTokenizeShareRecords RPC method. +message QueryAllTokenizeShareRecordsRequest { + // pagination defines an optional pagination for the request. + cosmos.base.query.v1beta1.PageRequest pagination = 1; +} + +// QueryAllTokenizeShareRecordsResponse is response type for the +// Query/QueryAllTokenizeShareRecords RPC method. +message QueryAllTokenizeShareRecordsResponse { + repeated TokenizeShareRecord records = 1 [(gogoproto.nullable) = false]; + // pagination defines the pagination in the response. + cosmos.base.query.v1beta1.PageResponse pagination = 2; +} + +// QueryLastTokenizeShareRecordIdRequest is request type for the +// Query/QueryLastTokenizeShareRecordId RPC method. +message QueryLastTokenizeShareRecordIdRequest {} + +// QueryLastTokenizeShareRecordIdResponse is response type for the +// Query/QueryLastTokenizeShareRecordId RPC method. +message QueryLastTokenizeShareRecordIdResponse { + uint64 id = 1; +} + +// QueryTotalTokenizeSharedAssetsRequest is request type for the +// Query/QueryTotalTokenizeSharedAssets RPC method. +message QueryTotalTokenizeSharedAssetsRequest {} + +// QueryTotalTokenizeSharedAssetsResponse is response type for the +// Query/QueryTotalTokenizeSharedAssets RPC method. +message QueryTotalTokenizeSharedAssetsResponse { + cosmos.base.v1beta1.Coin value = 1 [(gogoproto.nullable) = false]; +} + +// QueryTotalLiquidStakedRequest is request type for the +// Query/QueryQueryTotalLiquidStaked RPC method. +message QueryTotalLiquidStaked {} + +// QueryTotalLiquidStakedResponse is response type for the +// Query/QueryQueryTotalLiquidStaked RPC method. +message QueryTotalLiquidStakedResponse { + string tokens = 1; +} + +// QueryTokenizeShareLockInfo queries the tokenize share lock information +// associated with given account +message QueryTokenizeShareLockInfo { + string address = 1; +} +// QueryTokenizeShareLockInfoResponse is the response from the +// QueryTokenizeShareLockInfo query +message QueryTokenizeShareLockInfoResponse { + string status = 1; + string expiration_time = 2; +} \ No newline at end of file diff --git a/proto/cosmos/staking/v1beta1/staking.proto b/proto/cosmos/staking/v1beta1/staking.proto index 24ec65d10202..3d6effa04c26 100644 --- a/proto/cosmos/staking/v1beta1/staking.proto +++ b/proto/cosmos/staking/v1beta1/staking.proto @@ -120,10 +120,9 @@ message Validator { [(gogoproto.nullable) = false, (amino.dont_omitempty) = true, (gogoproto.stdtime) = true]; // commission defines the commission parameters. Commission commission = 10 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; - // min_self_delegation is the validator's self declared minimum self delegation. - // - // Since: cosmos-sdk 0.46 + // Deprecated: This field has been deprecated with LSM in favor of the validator bond string min_self_delegation = 11 [ + deprecated = true, (cosmos_proto.scalar) = "cosmos.Int", (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false @@ -134,6 +133,19 @@ message Validator { // list of unbonding ids, each uniquely identifing an unbonding of this validator repeated uint64 unbonding_ids = 13; + + // Number of shares self bonded from the validator + string validator_bond_shares = 14 [ + (gogoproto.moretags) = "yaml:\"validator_bond_shares\"", + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", + (gogoproto.nullable) = false + ]; + // Number of shares either tokenized or owned by a liquid staking provider + string liquid_shares = 15 [ + (gogoproto.moretags) = "yaml:\"liquid_shares\"", + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", + (gogoproto.nullable) = false + ]; } // BondStatus is the status of a validator. @@ -206,6 +218,8 @@ message Delegation { (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", (gogoproto.nullable) = false ]; + // has this delegation been marked as a validator self bond. + bool validator_bond = 4; } // UnbondingDelegation stores all of a single delegator's unbonding bonds @@ -320,6 +334,34 @@ message Params { (amino.dont_omitempty) = true, (cosmos_proto.scalar) = "cosmos.Dec" ]; + + // validator_bond_factor is required as a safety check for tokenizing shares and + // delegations from liquid staking providers + string validator_bond_factor = 7 [ + (gogoproto.moretags) = "yaml:\"validator_bond_factor\"", + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true, + (cosmos_proto.scalar) = "cosmos.Dec" + ]; + // global_liquid_staking_cap represents a cap on the portion of stake that + // comes from liquid staking providers + string global_liquid_staking_cap = 8 [ + (gogoproto.moretags) = "yaml:\"global_liquid_staking_cap\"", + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true, + (cosmos_proto.scalar) = "cosmos.Dec" + ]; + // validator_liquid_staking_cap represents a cap on the portion of stake that + // comes from liquid staking providers for a specific validator + string validator_liquid_staking_cap = 9 [ + (gogoproto.moretags) = "yaml:\"validator_liquid_staking_cap\"", + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true, + (cosmos_proto.scalar) = "cosmos.Dec" + ]; } // DelegationResponse is equivalent to Delegation except that it contains a @@ -392,3 +434,34 @@ enum Infraction { message ValidatorUpdates { repeated tendermint.abci.ValidatorUpdate updates = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; } + +// TokenizeShareRecord represents a tokenized delegation +message TokenizeShareRecord { + option (gogoproto.equal) = true; + + uint64 id = 1; + string owner = 2; + string module_account = 3; // module account take the role of delegator + string validator = 4; // validator delegated to for tokenize share record creation +} + +// PendingTokenizeShareAuthorizations stores a list of addresses that have their +// tokenize share enablement in progress +message PendingTokenizeShareAuthorizations { + repeated string addresses = 1; +} + +// TokenizeShareLockStatus indicates whether the address is able to tokenize shares +enum TokenizeShareLockStatus { + option (gogoproto.goproto_enum_prefix) = false; + + // UNSPECIFIED defines an empty tokenize share lock status + TOKENIZE_SHARE_LOCK_STATUS_UNSPECIFIED = 0; + // LOCKED indicates the account is locked and cannot tokenize shares + TOKENIZE_SHARE_LOCK_STATUS_LOCKED = 1; + // UNLOCKED indicates the account is unlocked and can tokenize shares + TOKENIZE_SHARE_LOCK_STATUS_UNLOCKED = 2; + // LOCK_EXPIRING indicates the account is unable to tokenize shares, but + // will be able to tokenize shortly (after 1 unbonding period) + TOKENIZE_SHARE_LOCK_STATUS_LOCK_EXPIRING = 3; +} \ No newline at end of file diff --git a/proto/cosmos/staking/v1beta1/tx.proto b/proto/cosmos/staking/v1beta1/tx.proto index 238645ba9232..209ddeb823a1 100644 --- a/proto/cosmos/staking/v1beta1/tx.proto +++ b/proto/cosmos/staking/v1beta1/tx.proto @@ -45,6 +45,33 @@ service Msg { // parameters. // Since: cosmos-sdk 0.47 rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse); + + // UnbondValidator defines a method for performing the status transition for a validator + // from bonded to unbonding + // This allows a validator to stop their services and jail themselves without + // experiencing a slash + rpc UnbondValidator(MsgUnbondValidator) returns (MsgUnbondValidatorResponse); + + // TokenizeShares defines a method for tokenizing shares from a validator. + rpc TokenizeShares(MsgTokenizeShares) returns (MsgTokenizeSharesResponse); + + // RedeemTokensForShares defines a method for redeeming tokens from a validator for + // shares. + rpc RedeemTokensForShares(MsgRedeemTokensForShares) returns (MsgRedeemTokensForSharesResponse); + + // TransferTokenizeShareRecord defines a method to transfer ownership of + // TokenizeShareRecord + rpc TransferTokenizeShareRecord(MsgTransferTokenizeShareRecord) returns (MsgTransferTokenizeShareRecordResponse); + + // DisableTokenizeShares defines a method to prevent the tokenization of an addresses stake + rpc DisableTokenizeShares(MsgDisableTokenizeShares) returns (MsgDisableTokenizeSharesResponse); + + // EnableTokenizeShares defines a method to re-enable the tokenization of an addresseses stake + // after it has been disabled + rpc EnableTokenizeShares(MsgEnableTokenizeShares) returns (MsgEnableTokenizeSharesResponse); + + // ValidatorBond defines a method for performing a validator self-bond + rpc ValidatorBond(MsgValidatorBond) returns (MsgValidatorBondResponse); } // MsgCreateValidator defines a SDK message for creating a new validator. @@ -55,9 +82,11 @@ message MsgCreateValidator { option (gogoproto.equal) = false; option (gogoproto.goproto_getters) = false; - Description description = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; - CommissionRates commission = 2 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; - string min_self_delegation = 3 [ + Description description = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; + CommissionRates commission = 2 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; + // Deprecated: This field has been deprecated with LSM in favor of the validator bond + string min_self_delegation = 3 [ + deprecated = true, (cosmos_proto.scalar) = "cosmos.Int", (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false, @@ -92,8 +121,13 @@ message MsgEditValidator { // REF: #2373 string commission_rate = 3 [(cosmos_proto.scalar) = "cosmos.Dec", (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec"]; - string min_self_delegation = 4 - [(cosmos_proto.scalar) = "cosmos.Int", (gogoproto.customtype) = "cosmossdk.io/math.Int"]; + // Deprecated: This field has been deprecated with LSM in favor of the validator bond + string min_self_delegation = 4 [ + deprecated = true, + (cosmos_proto.scalar) = "cosmos.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", + (gogoproto.nullable) = false + ]; } // MsgEditValidatorResponse defines the Msg/EditValidator response type. @@ -204,3 +238,114 @@ message MsgUpdateParams { // // Since: cosmos-sdk 0.47 message MsgUpdateParamsResponse {}; + +// MsgUnbondValidator defines a method for performing the status transition for +// a validator from bonded to unbonded +// This allows a validator to stop their services and jail themselves without +// experiencing a slash +message MsgUnbondValidator { + option (cosmos.msg.v1.signer) = "validator_address"; + option (amino.name) = "cosmos-sdk/MsgUnbondValidator"; + + string validator_address = 1 [(gogoproto.moretags) = "yaml:\"address\""]; +} +// MsgUnbondValidatorResponse defines the Msg/UnbondValidator response type. +message MsgUnbondValidatorResponse {} + +// MsgTokenizeShares tokenizes a delegation +message MsgTokenizeShares { + option (cosmos.msg.v1.signer) = "delegator_address"; + option (amino.name) = "cosmos-sdk/MsgTokenizeShares"; + + option (gogoproto.equal) = false; + option (gogoproto.goproto_getters) = false; + + string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""]; + string validator_address = 2 [(gogoproto.moretags) = "yaml:\"validator_address\""]; + cosmos.base.v1beta1.Coin amount = 3 [(gogoproto.nullable) = false]; + string tokenized_share_owner = 4; +} + +// MsgTokenizeSharesResponse defines the Msg/MsgTokenizeShares response type. +message MsgTokenizeSharesResponse { + cosmos.base.v1beta1.Coin amount = 1 [(gogoproto.nullable) = false]; +} + +// MsgRedeemTokensForShares redeems a tokenized share back into a native delegation +message MsgRedeemTokensForShares { + option (cosmos.msg.v1.signer) = "delegator_address"; + option (amino.name) = "cosmos-sdk/MsgRedeemTokensForShares"; + + option (gogoproto.equal) = false; + option (gogoproto.goproto_getters) = false; + + string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""]; + cosmos.base.v1beta1.Coin amount = 2 [(gogoproto.nullable) = false]; +} + +// MsgRedeemTokensForSharesResponse defines the Msg/MsgRedeemTokensForShares response type. +message MsgRedeemTokensForSharesResponse { + cosmos.base.v1beta1.Coin amount = 1 [(gogoproto.nullable) = false]; +} + +// MsgTransferTokenizeShareRecord transfer a tokenize share record +message MsgTransferTokenizeShareRecord { + option (cosmos.msg.v1.signer) = "sender"; + option (amino.name) = "cosmos-sdk/MsgTransferTokenizeShareRecord"; + + option (gogoproto.equal) = false; + option (gogoproto.goproto_getters) = false; + + uint64 tokenize_share_record_id = 1; + string sender = 2; + string new_owner = 3; +} + +// MsgTransferTokenizeShareRecordResponse defines the Msg/MsgTransferTokenizeShareRecord response type. +message MsgTransferTokenizeShareRecordResponse {} + +// MsgDisableTokenizeShares prevents the tokenization of shares for a given address +message MsgDisableTokenizeShares { + option (cosmos.msg.v1.signer) = "delegator_address"; + option (amino.name) = "cosmos-sdk/MsgDisableTokenizeShares"; + + option (gogoproto.equal) = false; + option (gogoproto.goproto_getters) = false; + + string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""]; +} + +// MsgDisableTokenizeSharesResponse defines the Msg/DisableTokenizeShares response type. +message MsgDisableTokenizeSharesResponse {} + +// MsgEnableTokenizeShares re-enables tokenization of shares for a given address +message MsgEnableTokenizeShares { + option (cosmos.msg.v1.signer) = "delegator_address"; + option (amino.name) = "cosmos-sdk/MsgEnableTokenizeShares"; + + option (gogoproto.equal) = false; + option (gogoproto.goproto_getters) = false; + + string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""]; +} + +// MsgEnableTokenizeSharesResponse defines the Msg/EnableTokenizeShares response type. +message MsgEnableTokenizeSharesResponse { + google.protobuf.Timestamp completion_time = 1 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; +} + +// MsgValidatorBond defines a SDK message for performing validator self-bond of delegated coins +// from a delegator to a validator. +message MsgValidatorBond { + option (cosmos.msg.v1.signer) = "delegator_address"; + option (amino.name) = "cosmos-sdk/MsgValidatorBond"; + + option (gogoproto.equal) = false; + option (gogoproto.goproto_getters) = false; + + string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""]; + string validator_address = 2 [(gogoproto.moretags) = "yaml:\"validator_address\""]; +} + +// MsgValidatorBondResponse defines the Msg/ValidatorBond response type. +message MsgValidatorBondResponse {} \ No newline at end of file diff --git a/runtime/app.go b/runtime/app.go index 55b44aaa0d34..610fa0d30f9e 100644 --- a/runtime/app.go +++ b/runtime/app.go @@ -91,7 +91,7 @@ func (a *App) RegisterModules(modules ...module.AppModule) error { // RegisterStores registers the provided store keys. // This method should only be used for registering extra stores -// wiich is necessary for modules that not registered using the app config. +// which is necessary for modules that not registered using the app config. // To be used in combination of RegisterModules. func (a *App) RegisterStores(keys ...storetypes.StoreKey) error { a.storeKeys = append(a.storeKeys, keys...) diff --git a/scripts/init-simapp.sh b/scripts/init-simapp.sh index 982208da0161..6913079e0a31 100755 --- a/scripts/init-simapp.sh +++ b/scripts/init-simapp.sh @@ -4,7 +4,7 @@ SIMD_BIN=${SIMD_BIN:=$(which simd 2>/dev/null)} if [ -z "$SIMD_BIN" ]; then echo "SIMD_BIN is not set. Make sure to run make install before"; exit 1; fi echo "using $SIMD_BIN" -if [ -d "$($SIMD_BIN config home)" ]; then rm -r $($SIMD_BIN config home); fi +if [ -d "$($SIMD_BIN config home)" ]; then rm -rv $($SIMD_BIN config home); fi $SIMD_BIN config set client chain-id demo $SIMD_BIN config set client keyring-backend test $SIMD_BIN config set app api.enable true diff --git a/simapp/app.go b/simapp/app.go index 3c27030af82d..13db5d04354d 100644 --- a/simapp/app.go +++ b/simapp/app.go @@ -7,11 +7,11 @@ import ( "fmt" "io" "os" - "path/filepath" autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" reflectionv1 "cosmossdk.io/api/cosmos/reflection/v1" "cosmossdk.io/client/v2/autocli" + clienthelpers "cosmossdk.io/client/v2/helpers" "cosmossdk.io/core/appmodule" "cosmossdk.io/log" storetypes "cosmossdk.io/store/types" @@ -178,12 +178,11 @@ type SimApp struct { } func init() { - userHomeDir, err := os.UserHomeDir() + var err error + DefaultNodeHome, err = clienthelpers.GetNodeHomeDirectory(".simapp") if err != nil { panic(err) } - - DefaultNodeHome = filepath.Join(userHomeDir, ".simapp") } // NewSimApp returns a reference to an initialized SimApp. diff --git a/simapp/app_v2.go b/simapp/app_v2.go index e10a54e7449e..dff1ec74eac1 100644 --- a/simapp/app_v2.go +++ b/simapp/app_v2.go @@ -4,11 +4,10 @@ package simapp import ( "io" - "os" - "path/filepath" dbm "github.com/cosmos/cosmos-db" + clienthelpers "cosmossdk.io/client/v2/helpers" "cosmossdk.io/depinject" "cosmossdk.io/log" storetypes "cosmossdk.io/store/types" @@ -89,12 +88,11 @@ type SimApp struct { } func init() { - userHomeDir, err := os.UserHomeDir() + var err error + DefaultNodeHome, err = clienthelpers.GetNodeHomeDirectory(".simapp") if err != nil { panic(err) } - - DefaultNodeHome = filepath.Join(userHomeDir, ".simapp") } // NewSimApp returns a reference to an initialized SimApp. diff --git a/simapp/go.mod b/simapp/go.mod index c8a8b2517278..12a5fcf3e7ed 100644 --- a/simapp/go.mod +++ b/simapp/go.mod @@ -4,7 +4,7 @@ go 1.21 require ( cosmossdk.io/api v0.7.5 - cosmossdk.io/client/v2 v2.0.0-beta.1.0.20240124105859-5ad1805d0e79 + cosmossdk.io/client/v2 v2.0.0-beta.2.0.20240625194835-17173894fea9 // TODO(@julienrbrt): tag client/v2 cosmossdk.io/collections v0.4.0 // indirect cosmossdk.io/core v0.11.0 cosmossdk.io/depinject v1.0.0-alpha.4 @@ -17,27 +17,27 @@ require ( cosmossdk.io/x/feegrant v0.1.1 cosmossdk.io/x/nft v0.1.1 cosmossdk.io/x/tx v0.13.3 - cosmossdk.io/x/upgrade v0.1.2 - github.com/cometbft/cometbft v0.38.7 + cosmossdk.io/x/upgrade v0.1.4-0.20240625194835-17173894fea9 // TODO(@julienrbrt): tag upgrade + github.com/cometbft/cometbft v0.38.9 github.com/cosmos/cosmos-db v1.0.2 // this version is not used as it is always replaced by the latest Cosmos SDK version github.com/cosmos/cosmos-sdk v0.50.6 - github.com/cosmos/gogoproto v1.4.12 + github.com/cosmos/gogoproto v1.5.0 github.com/golang/mock v1.6.0 github.com/spf13/cast v1.6.0 github.com/spf13/cobra v1.8.0 github.com/spf13/pflag v1.0.5 - github.com/spf13/viper v1.18.2 + github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.9.0 google.golang.org/protobuf v1.33.0 ) require ( - cloud.google.com/go v0.112.0 // indirect + cloud.google.com/go v0.112.1 // indirect cloud.google.com/go/compute v1.24.0 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect cloud.google.com/go/iam v1.1.6 // indirect - cloud.google.com/go/storage v1.36.0 // indirect + cloud.google.com/go/storage v1.38.0 // indirect cosmossdk.io/errors v1.0.1 // indirect filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect @@ -102,7 +102,7 @@ require ( github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.0 // indirect + github.com/googleapis/gax-go/v2 v2.12.3 // indirect github.com/gorilla/handlers v1.5.1 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect @@ -110,7 +110,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.7.3 // indirect + github.com/hashicorp/go-getter v1.7.4 // indirect github.com/hashicorp/go-hclog v1.5.0 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-metrics v0.5.3 // indirect @@ -118,6 +118,7 @@ require ( github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.1.0 // indirect @@ -144,7 +145,7 @@ require ( github.com/mtibben/percent v0.2.1 // indirect github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect github.com/oklog/run v1.1.0 // indirect - github.com/pelletier/go-toml/v2 v2.1.0 // indirect + github.com/pelletier/go-toml/v2 v2.2.2 // indirect github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect @@ -170,11 +171,11 @@ require ( github.com/zondax/ledger-go v0.14.3 // indirect go.etcd.io/bbolt v1.3.8 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 // indirect - go.opentelemetry.io/otel v1.22.0 // indirect - go.opentelemetry.io/otel/metric v1.22.0 // indirect - go.opentelemetry.io/otel/trace v1.22.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect + go.opentelemetry.io/otel v1.24.0 // indirect + go.opentelemetry.io/otel/metric v1.24.0 // indirect + go.opentelemetry.io/otel/trace v1.24.0 // indirect go.uber.org/multierr v1.10.0 // indirect golang.org/x/crypto v0.22.0 // indirect golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 // indirect @@ -185,10 +186,10 @@ require ( golang.org/x/term v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.5.0 // indirect - google.golang.org/api v0.162.0 // indirect + google.golang.org/api v0.171.0 // indirect google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda // indirect google.golang.org/grpc v1.63.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect @@ -207,6 +208,8 @@ require ( // Below are the long-lived replace of the SimApp replace ( + // Use version with lsm changes + cosmossdk.io/api => github.com/informalsystems/cosmos-sdk/api v0.7.5-lsm // use cosmos fork of keyring github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 // Simapp always use the latest version of the cosmos-sdk diff --git a/simapp/go.sum b/simapp/go.sum index 3790d61d56c9..ae9e8f6a5f9b 100644 --- a/simapp/go.sum +++ b/simapp/go.sum @@ -30,8 +30,8 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9 cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM= -cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= +cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= +cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= @@ -171,8 +171,8 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8= -cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= +cloud.google.com/go/storage v1.38.0 h1:Az68ZRGlnNTpIBbLjSMIV2BDcwwXYlRlQzis0llkpJg= +cloud.google.com/go/storage v1.38.0/go.mod h1:tlUADB0mAb9BgYls9lq+8MGkfzOXuLrnHXlpHmvFJoY= cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= @@ -186,8 +186,8 @@ cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1V cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= cosmossdk.io/api v0.7.5 h1:eMPTReoNmGUm8DeiQL9DyM8sYDjEhWzL1+nLbI9DqtQ= cosmossdk.io/api v0.7.5/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= -cosmossdk.io/client/v2 v2.0.0-beta.1.0.20240124105859-5ad1805d0e79 h1:Hr1t0fCq1nbFC7hLs0Xvy9WAiH7Iti5iVLXMM5C37F0= -cosmossdk.io/client/v2 v2.0.0-beta.1.0.20240124105859-5ad1805d0e79/go.mod h1:8pN6LSVReNnIxrC2QGcvuIJ/m1pJN6FNYn2kAYtYftI= +cosmossdk.io/client/v2 v2.0.0-beta.2.0.20240625194835-17173894fea9 h1:VthAG0FthJpIb6ERwbEuJzQ3JGWbxdtIM1gDoOtFdyc= +cosmossdk.io/client/v2 v2.0.0-beta.2.0.20240625194835-17173894fea9/go.mod h1:8QAyewD7rDWeJGqedFBpeqJ9XLIJAkt1TDhCf1gsN9o= cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0= cosmossdk.io/core v0.11.0 h1:vtIafqUi+1ZNAE/oxLOQQ7Oek2n4S48SWLG8h/+wdbo= @@ -214,8 +214,8 @@ cosmossdk.io/x/nft v0.1.1 h1:pslAVS8P5NkW080+LWOamInjDcq+v2GSCo+BjN9sxZ8= cosmossdk.io/x/nft v0.1.1/go.mod h1:Kac6F6y2gsKvoxU+fy8uvxRTi4BIhLOor2zgCNQwVgY= cosmossdk.io/x/tx v0.13.3 h1:Ha4mNaHmxBc6RMun9aKuqul8yHiL78EKJQ8g23Zf73g= cosmossdk.io/x/tx v0.13.3/go.mod h1:I8xaHv0rhUdIvIdptKIqzYy27+n2+zBVaxO6fscFhys= -cosmossdk.io/x/upgrade v0.1.2 h1:O2FGb0mVSXl7P6BQm9uV3hRVKom1zBLDGhd4G8jysJg= -cosmossdk.io/x/upgrade v0.1.2/go.mod h1:P+e4/ZNd8km7lTAX5hC2pXz/042YDcB7gzKTHuY53nc= +cosmossdk.io/x/upgrade v0.1.4-0.20240625194835-17173894fea9 h1:6+LcUO4MFseAhOuGIxB3FKyBAbPDFjA7btLKeKxD0D8= +cosmossdk.io/x/upgrade v0.1.4-0.20240625194835-17173894fea9/go.mod h1:ZtpBXPz+XuR9cfRGIi2CBvuosyDUsXCDW5+L9R/QTZ4= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= @@ -323,8 +323,6 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa h1:jQCWAUqqlij9Pgj2i/PB79y4KOPYVyFYdROxgaCwdTQ= -github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM= github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= @@ -341,8 +339,8 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/cometbft/cometbft v0.38.7 h1:ULhIOJ9+LgSy6nLekhq9ae3juX3NnQUMMPyVdhZV6Hk= -github.com/cometbft/cometbft v0.38.7/go.mod h1:HIyf811dFMI73IE0F7RrnY/Fr+d1+HuJAgtkEpQjCMY= +github.com/cometbft/cometbft v0.38.9 h1:cJBJBG0mPKz+sqelCi/hlfZjadZQGdDNnu6YQ1ZsUHQ= +github.com/cometbft/cometbft v0.38.9/go.mod h1:xOoGZrtUT+A5izWfHSJgl0gYZUE7lu7Z2XIS1vWG/QQ= github.com/cometbft/cometbft-db v0.9.1 h1:MIhVX5ja5bXNHF8EYrThkG9F7r9kSfv8BX4LWaxWJ4M= github.com/cometbft/cometbft-db v0.9.1/go.mod h1:iliyWaoV0mRwBJoizElCwwRA9Tf7jZJOURcRZF9m60U= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= @@ -364,8 +362,8 @@ github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4x github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= -github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= -github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= +github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= +github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= github.com/cosmos/iavl v1.1.2 h1:zL9FK7C4L/P4IF1Dm5fIwz0WXCnn7Bp1M2FxH0ayM7Y= github.com/cosmos/iavl v1.1.2/go.mod h1:jLeUvm6bGT1YutCaL2fIar/8vGUE8cPZvh/gXEWDaDM= github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= @@ -431,8 +429,6 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= -github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= @@ -625,8 +621,8 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99 github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= -github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= +github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA= +github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= @@ -657,8 +653,8 @@ github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtng github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.3 h1:bN2+Fw9XPFvOCjB0UOevFIMICZ7G2XSQHzfvLUyOM5E= -github.com/hashicorp/go-getter v1.7.3/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-getter v1.7.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0= +github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= @@ -687,6 +683,8 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= @@ -713,6 +711,8 @@ github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANyt github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/informalsystems/cosmos-sdk/api v0.7.5-lsm h1:M0+CQZLf2yS41TiWaiKw8nF5vlPaFDmVfwfyMHViRZk= +github.com/informalsystems/cosmos-sdk/api v0.7.5-lsm/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls= github.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4Elxc8qKP+p1k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= @@ -872,8 +872,8 @@ github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144T github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= -github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= -github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= +github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= +github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 h1:jik8PHtAIsPlCRJjJzl4udgEf7hawInF9texMeO2jrU= @@ -983,8 +983,8 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= -github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= +github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= +github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= @@ -1056,18 +1056,18 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 h1:UNQQKPfTDe1J81ViolILjTKPr9WetKW6uei2hFgJmFs= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfal0MK0wBMCOGr+HeJm9v803BkJxGrk2au7j08= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= -go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y= -go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= -go.opentelemetry.io/otel/metric v1.22.0 h1:lypMQnGyJYeuYPhOM/bgjbFM6WE44W1/T45er4d8Hhg= -go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY= -go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= -go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= -go.opentelemetry.io/otel/trace v1.22.0 h1:Hg6pPujv0XG9QaVbGOBVHunyuLcCC3jN7WEhPx83XD0= -go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= +go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= +go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= +go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= +go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= +go.opentelemetry.io/otel/sdk v1.22.0 h1:6coWHw9xw7EfClIC/+O31R8IY3/+EiRFHevmHafB2Gw= +go.opentelemetry.io/otel/sdk v1.22.0/go.mod h1:iu7luyVGYovrRpe2fmj3CVKouQNdTOkxtLzPvPz1DOc= +go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= +go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -1455,8 +1455,9 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= @@ -1506,8 +1507,8 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.162.0 h1:Vhs54HkaEpkMBdgGdOT2P6F0csGG/vxDS0hWHJzmmps= -google.golang.org/api v0.162.0/go.mod h1:6SulDkfoBIg4NFmCuZ39XeeAgSHCPecfSUuDyYlAHs0= +google.golang.org/api v0.171.0 h1:w174hnBPqut76FzW5Qaupt7zY8Kql6fiVjgys4f58sU= +google.golang.org/api v0.171.0/go.mod h1:Hnq5AHm4OTMt2BUVjael2CWZFD6vksJdWCWiUAmjC9o= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1626,8 +1627,8 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de h1:jFNzHPIeuzhdRwVhbZdiym9q0ory/xY3sA+v2wPg8I0= -google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:5iCWqnniDlqZHrd3neWVTOwvh/v6s3232omMecelax8= +google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 h1:rIo7ocm2roD9DcFIX67Ym8icoGCKSARAiPljFhh5suQ= +google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda h1:LI5DOvAxUPMv/50agcLLoo+AdWc1irS9Rzz4vPuD1V4= google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= diff --git a/simapp/sim_test.go b/simapp/sim_test.go index 21aee560f5d4..2f4504cedf3e 100644 --- a/simapp/sim_test.go +++ b/simapp/sim_test.go @@ -76,6 +76,9 @@ func TestFullAppSimulation(t *testing.T) { appOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue app := NewSimApp(logger, db, nil, true, appOptions, fauxMerkleModeOpt, baseapp.SetChainID(SimAppChainID)) + if !simcli.FlagSigverifyTxValue { + app.SetNotSigverifyTx() + } require.Equal(t, "SimApp", app.Name()) // run randomized simulation @@ -121,6 +124,9 @@ func TestAppImportExport(t *testing.T) { appOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue app := NewSimApp(logger, db, nil, true, appOptions, fauxMerkleModeOpt, baseapp.SetChainID(SimAppChainID)) + if !simcli.FlagSigverifyTxValue { + app.SetNotSigverifyTx() + } require.Equal(t, "SimApp", app.Name()) // Run randomized simulation @@ -240,6 +246,9 @@ func TestAppSimulationAfterImport(t *testing.T) { appOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue app := NewSimApp(logger, db, nil, true, appOptions, fauxMerkleModeOpt, baseapp.SetChainID(SimAppChainID)) + if !simcli.FlagSigverifyTxValue { + app.SetNotSigverifyTx() + } require.Equal(t, "SimApp", app.Name()) // Run randomized simulation @@ -362,6 +371,9 @@ func TestAppStateDeterminism(t *testing.T) { db := dbm.NewMemDB() app := NewSimApp(logger, db, nil, true, appOptions, interBlockCacheOpt(), baseapp.SetChainID(SimAppChainID)) + if !simcli.FlagSigverifyTxValue { + app.SetNotSigverifyTx() + } fmt.Printf( "running non-determinism simulation; seed %d: %d/%d, attempt: %d/%d\n", diff --git a/simapp/simd/cmd/commands.go b/simapp/simd/cmd/commands.go index 2b6c2be24901..00c810442f78 100644 --- a/simapp/simd/cmd/commands.go +++ b/simapp/simd/cmd/commands.go @@ -3,7 +3,6 @@ package cmd import ( "errors" "io" - "os" cmtcfg "github.com/cometbft/cometbft/config" dbm "github.com/cosmos/cosmos-db" @@ -16,7 +15,6 @@ import ( "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/debug" - "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/client/keys" "github.com/cosmos/cosmos-sdk/client/pruning" "github.com/cosmos/cosmos-sdk/client/rpc" @@ -216,13 +214,6 @@ func appExport( appOpts servertypes.AppOptions, modulesToExport []string, ) (servertypes.ExportedApp, error) { - // this check is necessary as we use the flag in x/upgrade. - // we can exit more gracefully by checking the flag here. - homePath, ok := appOpts.Get(flags.FlagHome).(string) - if !ok || homePath == "" { - return servertypes.ExportedApp{}, errors.New("application home not set") - } - viperAppOpts, ok := appOpts.(*viper.Viper) if !ok { return servertypes.ExportedApp{}, errors.New("appOpts is not viper.Viper") @@ -245,13 +236,3 @@ func appExport( return simApp.ExportAppStateAndValidators(forZeroHeight, jailAllowedAddrs, modulesToExport) } - -var tempDir = func() string { - dir, err := os.MkdirTemp("", "simapp") - if err != nil { - dir = simapp.DefaultNodeHome - } - defer os.RemoveAll(dir) - - return dir -} diff --git a/simapp/simd/cmd/root.go b/simapp/simd/cmd/root.go index f56b849a9c56..19d197f95665 100644 --- a/simapp/simd/cmd/root.go +++ b/simapp/simd/cmd/root.go @@ -13,7 +13,6 @@ import ( "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/config" - "github.com/cosmos/cosmos-sdk/crypto/keyring" "github.com/cosmos/cosmos-sdk/server" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" "github.com/cosmos/cosmos-sdk/types/tx/signing" @@ -27,7 +26,7 @@ import ( func NewRootCmd() *cobra.Command { // we "pre"-instantiate the application for getting the injected/configured encoding configuration // note, this is not necessary when using app wiring, as depinject can be directly used (see root_v2.go) - tempApp := simapp.NewSimApp(log.NewNopLogger(), dbm.NewMemDB(), nil, true, simtestutil.NewAppOptionsWithFlagHome(tempDir())) + tempApp := simapp.NewSimApp(log.NewNopLogger(), dbm.NewMemDB(), nil, true, simtestutil.NewAppOptionsWithFlagHome(simapp.DefaultNodeHome)) encodingConfig := params.EncodingConfig{ InterfaceRegistry: tempApp.InterfaceRegistry(), Codec: tempApp.AppCodec(), @@ -100,8 +99,6 @@ func NewRootCmd() *cobra.Command { // add keyring to autocli opts autoCliOpts := tempApp.AutoCliOpts() - initClientCtx, _ = config.ReadDefaultValuesFromDefaultClientConfig(initClientCtx) - autoCliOpts.Keyring, _ = keyring.NewAutoCLIKeyring(initClientCtx.Keyring) autoCliOpts.ClientCtx = initClientCtx if err := autoCliOpts.EnhanceRootCommand(rootCmd); err != nil { diff --git a/simapp/simd/cmd/root_v2.go b/simapp/simd/cmd/root_v2.go index 94ef4cd9d17b..4fe8c4d3ce75 100644 --- a/simapp/simd/cmd/root_v2.go +++ b/simapp/simd/cmd/root_v2.go @@ -8,8 +8,6 @@ import ( "github.com/spf13/cobra" "cosmossdk.io/client/v2/autocli" - clientv2keyring "cosmossdk.io/client/v2/autocli/keyring" - "cosmossdk.io/core/address" "cosmossdk.io/depinject" "cosmossdk.io/log" "cosmossdk.io/simapp" @@ -18,9 +16,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/config" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" - "github.com/cosmos/cosmos-sdk/crypto/keyring" "github.com/cosmos/cosmos-sdk/server" - simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" "github.com/cosmos/cosmos-sdk/types/module" "github.com/cosmos/cosmos-sdk/x/auth/tx" authtxconfig "github.com/cosmos/cosmos-sdk/x/auth/tx/config" @@ -39,11 +35,9 @@ func NewRootCmd() *cobra.Command { depinject.Configs(simapp.AppConfig, depinject.Supply( log.NewNopLogger(), - simtestutil.NewAppOptionsWithFlagHome(tempDir()), ), depinject.Provide( ProvideClientContext, - ProvideKeyring, ), ), &autoCliOpts, @@ -108,8 +102,7 @@ func ProvideClientContext( WithHomeDir(simapp.DefaultNodeHome). WithViper("") // In simapp, we don't use any prefix for env variables. - // Read the config again to overwrite the default values with the values from the config file - clientCtx, _ = config.ReadDefaultValuesFromDefaultClientConfig(clientCtx) + clientCtx, _ = config.ReadFromClientConfig(clientCtx) // textual is enabled by default, we need to re-create the tx config grpc instead of bank keeper. txConfigOpts.TextualCoinMetadataQueryFn = authtxconfig.NewGRPCCoinMetadataQueryFn(clientCtx) @@ -121,12 +114,3 @@ func ProvideClientContext( return clientCtx } - -func ProvideKeyring(clientCtx client.Context, addressCodec address.Codec) (clientv2keyring.Keyring, error) { - kb, err := client.NewKeyringFromBackend(clientCtx, clientCtx.Keyring.Backend()) - if err != nil { - return nil, err - } - - return keyring.NewAutoCLIKeyring(kb) -} diff --git a/simapp/simd/cmd/testnet.go b/simapp/simd/cmd/testnet.go index d96244cfdf3f..434a9c9eb42c 100644 --- a/simapp/simd/cmd/testnet.go +++ b/simapp/simd/cmd/testnet.go @@ -309,7 +309,6 @@ func initTestnetFiles( sdk.NewCoin(sdk.DefaultBondDenom, valTokens), stakingtypes.NewDescription(nodeDirName, "", "", "", ""), stakingtypes.NewCommissionRates(math.LegacyOneDec(), math.LegacyOneDec(), math.LegacyOneDec()), - math.OneInt(), ) if err != nil { return err diff --git a/simapp/sonar-project.properties b/simapp/sonar-project.properties deleted file mode 100644 index 1da573f424c1..000000000000 --- a/simapp/sonar-project.properties +++ /dev/null @@ -1,14 +0,0 @@ -sonar.projectKey=cosmos-sdk-simapp -sonar.organization=cosmos - -sonar.projectName=Cosmos SDK - SimApp -sonar.project.monorepo.enabled=true - -sonar.sources=. -sonar.exclusions=**/*_test.go -sonar.tests=. -sonar.test.inclusions=**/*_test.go -sonar.go.coverage.reportPaths=coverage.out - -sonar.sourceEncoding=UTF-8 -sonar.scm.provider=git \ No newline at end of file diff --git a/store/go.mod b/store/go.mod index dc8b475c3ee9..6a2c334c138c 100644 --- a/store/go.mod +++ b/store/go.mod @@ -6,9 +6,9 @@ require ( cosmossdk.io/errors v1.0.0 cosmossdk.io/log v1.3.1 cosmossdk.io/math v1.3.0 - github.com/cometbft/cometbft v0.38.7 + github.com/cometbft/cometbft v0.38.9 github.com/cosmos/cosmos-db v1.0.2 - github.com/cosmos/gogoproto v1.4.12 + github.com/cosmos/gogoproto v1.5.0 github.com/cosmos/iavl v1.1.2 github.com/cosmos/ics23/go v0.10.0 github.com/golang/mock v1.6.0 @@ -21,7 +21,7 @@ require ( github.com/stretchr/testify v1.9.0 github.com/tidwall/btree v1.7.0 golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 - google.golang.org/grpc v1.61.1 + google.golang.org/grpc v1.62.1 google.golang.org/protobuf v1.33.0 gotest.tools/v3 v3.5.1 ) @@ -73,6 +73,6 @@ require ( golang.org/x/net v0.23.0 // indirect golang.org/x/sys v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/store/go.sum b/store/go.sum index 14a2ec1655b6..0439145ae75c 100644 --- a/store/go.sum +++ b/store/go.sum @@ -43,13 +43,13 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= -github.com/cometbft/cometbft v0.38.7 h1:ULhIOJ9+LgSy6nLekhq9ae3juX3NnQUMMPyVdhZV6Hk= -github.com/cometbft/cometbft v0.38.7/go.mod h1:HIyf811dFMI73IE0F7RrnY/Fr+d1+HuJAgtkEpQjCMY= +github.com/cometbft/cometbft v0.38.9 h1:cJBJBG0mPKz+sqelCi/hlfZjadZQGdDNnu6YQ1ZsUHQ= +github.com/cometbft/cometbft v0.38.9/go.mod h1:xOoGZrtUT+A5izWfHSJgl0gYZUE7lu7Z2XIS1vWG/QQ= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cosmos/cosmos-db v1.0.2 h1:hwMjozuY1OlJs/uh6vddqnk9j7VamLv+0DBlbEXbAKs= github.com/cosmos/cosmos-db v1.0.2/go.mod h1:Z8IXcFJ9PqKK6BIsVOB3QXtkKoqUOp1vRvPT39kOXEA= -github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= -github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= +github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= +github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= github.com/cosmos/iavl v1.1.2 h1:zL9FK7C4L/P4IF1Dm5fIwz0WXCnn7Bp1M2FxH0ayM7Y= github.com/cosmos/iavl v1.1.2/go.mod h1:jLeUvm6bGT1YutCaL2fIar/8vGUE8cPZvh/gXEWDaDM= github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= @@ -341,10 +341,10 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 h1:/jFB8jK5R3Sq3i/lmeZO0cATSzFfZaJq1J2Euan3XKU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0/go.mod h1:FUoWkonphQm3RhTS+kOEhF8h0iDpm4tdXolVCeZ9KKA= -google.golang.org/grpc v1.61.1 h1:kLAiWrZs7YeDM6MumDe7m3y4aM6wacLzM1Y/wiLP9XY= -google.golang.org/grpc v1.61.1/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= +google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= +google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/tests/e2e/distribution/suite.go b/tests/e2e/distribution/suite.go index 54d02961f747..88c4afd8c783 100644 --- a/tests/e2e/distribution/suite.go +++ b/tests/e2e/distribution/suite.go @@ -383,3 +383,46 @@ func (s *E2ETestSuite) TestNewFundCommunityPoolCmd() { }) } } + +func (s *E2ETestSuite) TestNewWithdrawAllTokenizeShareRecordRewardCmd() { + val := s.network.Validators[0] + + testCases := []struct { + name string + args []string + expectErr bool + expectedCode uint32 + respType proto.Message + }{ + { + "valid transaction of withdraw tokenize share record reward", + []string{ + fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()), + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", math.NewInt(10))).String()), + }, + false, 0, &sdk.TxResponse{}, + }, + } + + for _, tc := range testCases { + tc := tc + + s.Run(tc.name, func() { + cmd := cli.NewWithdrawAllTokenizeShareRecordRewardCmd(address.NewBech32Codec("cosmos")) + clientCtx := val.ClientCtx + + out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args) + if tc.expectErr { + s.Require().Error(err) + } else { + s.Require().NoError(err, out.String()) + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String()) + + txResp := tc.respType.(*sdk.TxResponse) + s.Require().Equal(tc.expectedCode, txResp.Code, out.String()) + } + }) + } +} diff --git a/tests/e2e/distribution/withdraw_all_suite.go b/tests/e2e/distribution/withdraw_all_suite.go index 18a7a5b11555..e554dfd03794 100644 --- a/tests/e2e/distribution/withdraw_all_suite.go +++ b/tests/e2e/distribution/withdraw_all_suite.go @@ -41,14 +41,14 @@ func (s *WithdrawAllTestSuite) SetupSuite() { s.Require().NoError(s.network.WaitForNextBlock()) } -// TearDownSuite cleans up the curret test network after _each_ test. +// TearDownSuite cleans up the current test network after _each_ test. func (s *WithdrawAllTestSuite) TearDownSuite() { s.T().Log("tearing down e2e test suite") s.network.Cleanup() } -// This test requires multiple validators, if I add this test to `E2ETestSuite` by increasing -// `NumValidators` the existing tests are leading to non-determnism so created new suite for this test. +// This test requires multiple validators, if I add this test to `CLITestSuite` by increasing +// `NumValidators` the existing tests are leading to non-determinism so created new suite for this test. func (s *WithdrawAllTestSuite) TestNewWithdrawAllRewardsGenerateOnly() { require := s.Require() val := s.network.Validators[0] diff --git a/tests/e2e/staking/suite.go b/tests/e2e/staking/suite.go index 5852446f21f3..19f4e724bcf0 100644 --- a/tests/e2e/staking/suite.go +++ b/tests/e2e/staking/suite.go @@ -44,7 +44,10 @@ func (s *E2ETestSuite) SetupSuite() { s.network, err = network.New(s.T(), s.T().TempDir(), s.cfg) s.Require().NoError(err) - unbond, err := sdk.ParseCoinNormalized("10stake") + unbondCoin, err := sdk.ParseCoinNormalized("10stake") + s.Require().NoError(err) + + tokenizeCoin, err := sdk.ParseCoinNormalized("1000stake") s.Require().NoError(err) val := s.network.Validators[0] @@ -56,7 +59,7 @@ func (s *E2ETestSuite) SetupSuite() { val.Address, val.ValAddress, val2.ValAddress, - unbond, + unbondCoin, fmt.Sprintf("--%s=%d", flags.FlagGas, 300000), ) s.Require().NoError(err) @@ -65,15 +68,32 @@ func (s *E2ETestSuite) SetupSuite() { s.Require().Equal(uint32(0), txRes.Code) s.Require().NoError(s.network.WaitForNextBlock()) - unbondingAmount := sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(5)) - // unbonding the amount - out, err = MsgUnbondExec(val.ClientCtx, val.Address, val.ValAddress, unbondingAmount) + out, err = MsgUnbondExec(val.ClientCtx, val.Address, val.ValAddress, unbondCoin) s.Require().NoError(err) s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &txRes)) s.Require().Equal(uint32(0), txRes.Code) s.Require().NoError(s.network.WaitForNextBlock()) + // tokenize shares twice (once for the transfer and one for the redeem) + for i := 1; i <= 2; i++ { + out, err := MsgTokenizeSharesExec( + val.ClientCtx, + val.Address, + val.ValAddress, + val.Address, + tokenizeCoin, + fmt.Sprintf("--%s=%d", flags.FlagGas, 1000000), + ) + + s.Require().NoError(err) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &txRes)) + s.Require().Equal(uint32(0), txRes.Code) + s.Require().NoError(s.network.WaitForNextBlock()) + } + + unbondingAmount := sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(5)) + // unbonding the amount out, err = MsgUnbondExec(val.ClientCtx, val.Address, val.ValAddress, unbondingAmount) s.Require().NoError(err) diff --git a/tests/e2e/staking/test_helpers.go b/tests/e2e/staking/test_helpers.go index 6605dc867dae..6ec2a4e35513 100644 --- a/tests/e2e/staking/test_helpers.go +++ b/tests/e2e/staking/test_helpers.go @@ -50,3 +50,20 @@ func MsgUnbondExec(clientCtx client.Context, from, valAddress, args = append(args, extraArgs...) return clitestutil.ExecTestCLICmd(clientCtx, stakingcli.NewUnbondCmd(addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos")), args) } + +// MsgTokenizeSharesExec creates a delegation message. +func MsgTokenizeSharesExec(clientCtx client.Context, from, valAddress, + rewardOwner, amount fmt.Stringer, + extraArgs ...string, +) (testutil.BufferWriter, error) { + args := []string{ + valAddress.String(), + amount.String(), + rewardOwner.String(), + fmt.Sprintf("--%s=%s", flags.FlagFrom, from.String()), + } + + args = append(args, commonArgs...) + args = append(args, extraArgs...) + return clitestutil.ExecTestCLICmd(clientCtx, stakingcli.NewTokenizeSharesCmd(addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos")), args) +} diff --git a/tests/go.mod b/tests/go.mod index 5a5e2e884a14..09f3f39c8dc6 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -15,13 +15,13 @@ require ( cosmossdk.io/x/feegrant v0.1.1 cosmossdk.io/x/nft v0.1.1 // indirect cosmossdk.io/x/tx v0.13.3 - cosmossdk.io/x/upgrade v0.1.2 - github.com/cometbft/cometbft v0.38.7 + cosmossdk.io/x/upgrade v0.1.4-0.20240625194835-17173894fea9 + github.com/cometbft/cometbft v0.38.9 github.com/cosmos/cosmos-db v1.0.2 github.com/cosmos/cosmos-proto v1.0.0-beta.5 // this version is not used as it is always replaced by the latest Cosmos SDK version github.com/cosmos/cosmos-sdk v0.50.6 - github.com/cosmos/gogoproto v1.4.12 + github.com/cosmos/gogoproto v1.5.0 github.com/golang/mock v1.6.0 github.com/spf13/cobra v1.8.0 github.com/stretchr/testify v1.9.0 @@ -32,12 +32,12 @@ require ( ) require ( - cloud.google.com/go v0.112.0 // indirect + cloud.google.com/go v0.112.1 // indirect cloud.google.com/go/compute v1.24.0 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect cloud.google.com/go/iam v1.1.6 // indirect - cloud.google.com/go/storage v1.36.0 // indirect - cosmossdk.io/client/v2 v2.0.0-beta.1.0.20240124105859-5ad1805d0e79 // indirect + cloud.google.com/go/storage v1.38.0 // indirect + cosmossdk.io/client/v2 v2.0.0-beta.2.0.20240625194835-17173894fea9 // indirect cosmossdk.io/collections v0.4.0 // indirect cosmossdk.io/x/circuit v0.1.1 // indirect filippo.io/edwards25519 v1.0.0 // indirect @@ -100,7 +100,7 @@ require ( github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.0 // indirect + github.com/googleapis/gax-go/v2 v2.12.3 // indirect github.com/gorilla/handlers v1.5.1 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect @@ -108,7 +108,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.7.3 // indirect + github.com/hashicorp/go-getter v1.7.4 // indirect github.com/hashicorp/go-hclog v1.5.0 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-metrics v0.5.3 // indirect @@ -116,6 +116,7 @@ require ( github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.1.0 // indirect @@ -142,7 +143,7 @@ require ( github.com/mtibben/percent v0.2.1 // indirect github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect github.com/oklog/run v1.1.0 // indirect - github.com/pelletier/go-toml/v2 v2.1.0 // indirect + github.com/pelletier/go-toml/v2 v2.2.2 // indirect github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect @@ -161,7 +162,7 @@ require ( github.com/spf13/afero v1.11.0 // indirect github.com/spf13/cast v1.6.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.18.2 // indirect + github.com/spf13/viper v1.19.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/tendermint/go-amino v0.16.0 // indirect @@ -171,11 +172,11 @@ require ( github.com/zondax/ledger-go v0.14.3 // indirect go.etcd.io/bbolt v1.3.8 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 // indirect - go.opentelemetry.io/otel v1.22.0 // indirect - go.opentelemetry.io/otel/metric v1.22.0 // indirect - go.opentelemetry.io/otel/trace v1.22.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect + go.opentelemetry.io/otel v1.24.0 // indirect + go.opentelemetry.io/otel/metric v1.24.0 // indirect + go.opentelemetry.io/otel/trace v1.24.0 // indirect go.uber.org/multierr v1.10.0 // indirect golang.org/x/crypto v0.22.0 // indirect golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 // indirect @@ -186,10 +187,10 @@ require ( golang.org/x/term v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.5.0 // indirect - google.golang.org/api v0.162.0 // indirect + google.golang.org/api v0.171.0 // indirect google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect @@ -205,6 +206,8 @@ require ( // Below are the long-lived replace for tests. replace ( + // Use version with lsm changes + cosmossdk.io/api => github.com/informalsystems/cosmos-sdk/api v0.7.5-lsm // We always want to test against the latest version of the simapp. cosmossdk.io/simapp => ../simapp github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 diff --git a/tests/go.sum b/tests/go.sum index 26a5cd92cf35..e937020fda83 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -30,8 +30,8 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9 cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM= -cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= +cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= +cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= @@ -171,8 +171,8 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8= -cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= +cloud.google.com/go/storage v1.38.0 h1:Az68ZRGlnNTpIBbLjSMIV2BDcwwXYlRlQzis0llkpJg= +cloud.google.com/go/storage v1.38.0/go.mod h1:tlUADB0mAb9BgYls9lq+8MGkfzOXuLrnHXlpHmvFJoY= cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= @@ -186,8 +186,8 @@ cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1V cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= cosmossdk.io/api v0.7.5 h1:eMPTReoNmGUm8DeiQL9DyM8sYDjEhWzL1+nLbI9DqtQ= cosmossdk.io/api v0.7.5/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= -cosmossdk.io/client/v2 v2.0.0-beta.1.0.20240124105859-5ad1805d0e79 h1:Hr1t0fCq1nbFC7hLs0Xvy9WAiH7Iti5iVLXMM5C37F0= -cosmossdk.io/client/v2 v2.0.0-beta.1.0.20240124105859-5ad1805d0e79/go.mod h1:8pN6LSVReNnIxrC2QGcvuIJ/m1pJN6FNYn2kAYtYftI= +cosmossdk.io/client/v2 v2.0.0-beta.2.0.20240625194835-17173894fea9 h1:VthAG0FthJpIb6ERwbEuJzQ3JGWbxdtIM1gDoOtFdyc= +cosmossdk.io/client/v2 v2.0.0-beta.2.0.20240625194835-17173894fea9/go.mod h1:8QAyewD7rDWeJGqedFBpeqJ9XLIJAkt1TDhCf1gsN9o= cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0= cosmossdk.io/core v0.11.0 h1:vtIafqUi+1ZNAE/oxLOQQ7Oek2n4S48SWLG8h/+wdbo= @@ -212,8 +212,8 @@ cosmossdk.io/x/nft v0.1.1 h1:pslAVS8P5NkW080+LWOamInjDcq+v2GSCo+BjN9sxZ8= cosmossdk.io/x/nft v0.1.1/go.mod h1:Kac6F6y2gsKvoxU+fy8uvxRTi4BIhLOor2zgCNQwVgY= cosmossdk.io/x/tx v0.13.3 h1:Ha4mNaHmxBc6RMun9aKuqul8yHiL78EKJQ8g23Zf73g= cosmossdk.io/x/tx v0.13.3/go.mod h1:I8xaHv0rhUdIvIdptKIqzYy27+n2+zBVaxO6fscFhys= -cosmossdk.io/x/upgrade v0.1.2 h1:O2FGb0mVSXl7P6BQm9uV3hRVKom1zBLDGhd4G8jysJg= -cosmossdk.io/x/upgrade v0.1.2/go.mod h1:P+e4/ZNd8km7lTAX5hC2pXz/042YDcB7gzKTHuY53nc= +cosmossdk.io/x/upgrade v0.1.4-0.20240625194835-17173894fea9 h1:6+LcUO4MFseAhOuGIxB3FKyBAbPDFjA7btLKeKxD0D8= +cosmossdk.io/x/upgrade v0.1.4-0.20240625194835-17173894fea9/go.mod h1:ZtpBXPz+XuR9cfRGIi2CBvuosyDUsXCDW5+L9R/QTZ4= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= @@ -321,8 +321,6 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa h1:jQCWAUqqlij9Pgj2i/PB79y4KOPYVyFYdROxgaCwdTQ= -github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM= github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= @@ -339,8 +337,8 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/cometbft/cometbft v0.38.7 h1:ULhIOJ9+LgSy6nLekhq9ae3juX3NnQUMMPyVdhZV6Hk= -github.com/cometbft/cometbft v0.38.7/go.mod h1:HIyf811dFMI73IE0F7RrnY/Fr+d1+HuJAgtkEpQjCMY= +github.com/cometbft/cometbft v0.38.9 h1:cJBJBG0mPKz+sqelCi/hlfZjadZQGdDNnu6YQ1ZsUHQ= +github.com/cometbft/cometbft v0.38.9/go.mod h1:xOoGZrtUT+A5izWfHSJgl0gYZUE7lu7Z2XIS1vWG/QQ= github.com/cometbft/cometbft-db v0.9.1 h1:MIhVX5ja5bXNHF8EYrThkG9F7r9kSfv8BX4LWaxWJ4M= github.com/cometbft/cometbft-db v0.9.1/go.mod h1:iliyWaoV0mRwBJoizElCwwRA9Tf7jZJOURcRZF9m60U= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= @@ -362,8 +360,8 @@ github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4x github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= -github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= -github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= +github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= +github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= github.com/cosmos/iavl v1.1.2 h1:zL9FK7C4L/P4IF1Dm5fIwz0WXCnn7Bp1M2FxH0ayM7Y= github.com/cosmos/iavl v1.1.2/go.mod h1:jLeUvm6bGT1YutCaL2fIar/8vGUE8cPZvh/gXEWDaDM= github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= @@ -425,8 +423,6 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= -github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= @@ -622,8 +618,8 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99 github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= -github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= +github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA= +github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= @@ -654,8 +650,8 @@ github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtng github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.3 h1:bN2+Fw9XPFvOCjB0UOevFIMICZ7G2XSQHzfvLUyOM5E= -github.com/hashicorp/go-getter v1.7.3/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-getter v1.7.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0= +github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= @@ -684,6 +680,8 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= @@ -710,6 +708,8 @@ github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANyt github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/informalsystems/cosmos-sdk/api v0.7.5-lsm h1:M0+CQZLf2yS41TiWaiKw8nF5vlPaFDmVfwfyMHViRZk= +github.com/informalsystems/cosmos-sdk/api v0.7.5-lsm/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls= github.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4Elxc8qKP+p1k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= @@ -873,8 +873,8 @@ github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144T github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= -github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= -github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= +github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= +github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 h1:jik8PHtAIsPlCRJjJzl4udgEf7hawInF9texMeO2jrU= @@ -984,8 +984,8 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= -github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= +github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= +github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= @@ -1057,18 +1057,18 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 h1:UNQQKPfTDe1J81ViolILjTKPr9WetKW6uei2hFgJmFs= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfal0MK0wBMCOGr+HeJm9v803BkJxGrk2au7j08= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= -go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y= -go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= -go.opentelemetry.io/otel/metric v1.22.0 h1:lypMQnGyJYeuYPhOM/bgjbFM6WE44W1/T45er4d8Hhg= -go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY= -go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= -go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= -go.opentelemetry.io/otel/trace v1.22.0 h1:Hg6pPujv0XG9QaVbGOBVHunyuLcCC3jN7WEhPx83XD0= -go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= +go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= +go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= +go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= +go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= +go.opentelemetry.io/otel/sdk v1.22.0 h1:6coWHw9xw7EfClIC/+O31R8IY3/+EiRFHevmHafB2Gw= +go.opentelemetry.io/otel/sdk v1.22.0/go.mod h1:iu7luyVGYovrRpe2fmj3CVKouQNdTOkxtLzPvPz1DOc= +go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= +go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -1456,8 +1456,9 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= @@ -1507,8 +1508,8 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.162.0 h1:Vhs54HkaEpkMBdgGdOT2P6F0csGG/vxDS0hWHJzmmps= -google.golang.org/api v0.162.0/go.mod h1:6SulDkfoBIg4NFmCuZ39XeeAgSHCPecfSUuDyYlAHs0= +google.golang.org/api v0.171.0 h1:w174hnBPqut76FzW5Qaupt7zY8Kql6fiVjgys4f58sU= +google.golang.org/api v0.171.0/go.mod h1:Hnq5AHm4OTMt2BUVjael2CWZFD6vksJdWCWiUAmjC9o= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1627,8 +1628,8 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de h1:jFNzHPIeuzhdRwVhbZdiym9q0ory/xY3sA+v2wPg8I0= -google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:5iCWqnniDlqZHrd3neWVTOwvh/v6s3232omMecelax8= +google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 h1:rIo7ocm2roD9DcFIX67Ym8icoGCKSARAiPljFhh5suQ= +google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda h1:LI5DOvAxUPMv/50agcLLoo+AdWc1irS9Rzz4vPuD1V4= google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= diff --git a/tests/integration/distribution/keeper/common_test.go b/tests/integration/distribution/keeper/common_test.go index 783d44e2dafc..6780cb269a24 100644 --- a/tests/integration/distribution/keeper/common_test.go +++ b/tests/integration/distribution/keeper/common_test.go @@ -2,10 +2,15 @@ package keeper_test import ( simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" + sdk "github.com/cosmos/cosmos-sdk/types" ) var ( PKS = simtestutil.CreateTestPubKeys(3) valConsPk0 = PKS[0] + + // The default power validators are initialized to have within tests + initAmt = sdk.TokensFromConsensusPower(200, sdk.DefaultPowerReduction) + initCoins = sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, initAmt)) ) diff --git a/tests/integration/distribution/keeper/delegation_test.go b/tests/integration/distribution/keeper/delegation_test.go new file mode 100644 index 000000000000..09f56eb7970a --- /dev/null +++ b/tests/integration/distribution/keeper/delegation_test.go @@ -0,0 +1,141 @@ +package keeper_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "cosmossdk.io/math" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/x/distribution/types" + minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" + stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" + stakingtestutil "github.com/cosmos/cosmos-sdk/x/staking/testutil" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" +) + +func TestWithdrawTokenizeShareRecordReward(t *testing.T) { + t.Parallel() + f := initFixture(t) + + fundAccounts(t, f.sdkCtx, f.bankKeeper) + + valAddr2 := sdk.ValAddress(sdk.AccAddress(PKS[1].Address())) + + valAddrs := []sdk.ValAddress{f.valAddr, valAddr2} + tstaking := stakingtestutil.NewHelper(t, f.sdkCtx, f.stakingKeeper) + + // create validator with 50% commission + tstaking.Commission = stakingtypes.NewCommissionRates(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0)) + valPower := int64(100) + tstaking.CreateValidatorWithValPower(valAddrs[0], PKS[0], valPower, true) + + // end block to bond validator + f.stakingKeeper.EndBlocker(f.sdkCtx) + + // next block + ctx := f.sdkCtx.WithBlockHeight(f.sdkCtx.BlockHeight() + 1) + + // fetch validator and delegation + val, err := f.stakingKeeper.Validator(ctx, valAddrs[0]) + require.NoError(t, err) + del, err := f.stakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) + require.NoError(t, err) + + // end period + endingPeriod, err := f.distrKeeper.IncrementValidatorPeriod(ctx, val) + require.NoError(t, err) + + // calculate delegation rewards + rewards, err := f.distrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod) + require.NoError(t, err) + + // rewards should be zero + require.True(t, rewards.IsZero()) + + // start out block height + ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) + + // retrieve validator + val, err = f.stakingKeeper.Validator(ctx, valAddrs[0]) + require.NoError(t, err) + + // increase block height + ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) + + // allocate some rewards + initial := f.stakingKeeper.TokensFromConsensusPower(ctx, 10) + tokens := sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDecFromInt(initial)}} + f.distrKeeper.AllocateTokensToValidator(ctx, val, tokens) + + // end period + f.distrKeeper.IncrementValidatorPeriod(ctx, val) + + coins := sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, initial)} + err = f.mintKeeper.MintCoins(ctx, coins) + require.NoError(t, err) + err = f.bankKeeper.SendCoinsFromModuleToModule(ctx, minttypes.ModuleName, types.ModuleName, coins) + require.NoError(t, err) + + // tokenize share amount + delTokens := math.NewInt(1000000) + msgServer := stakingkeeper.NewMsgServerImpl(f.stakingKeeper) + resp, err := msgServer.TokenizeShares(ctx, &stakingtypes.MsgTokenizeShares{ + DelegatorAddress: sdk.AccAddress(valAddrs[0]).String(), + ValidatorAddress: valAddrs[0].String(), + TokenizedShareOwner: sdk.AccAddress(valAddrs[1]).String(), + Amount: sdk.NewCoin(sdk.DefaultBondDenom, delTokens), + }) + require.NoError(t, err) + + // try withdrawing rewards before no reward is allocated + coins, err = f.distrKeeper.WithdrawAllTokenizeShareRecordReward(ctx, sdk.AccAddress(valAddrs[1])) + require.Nil(t, err) + require.Equal(t, coins, sdk.Coins{}) + + // assert tokenize share response + require.NoError(t, err) + require.Equal(t, resp.Amount.Amount, delTokens) + + // end block to bond validator + f.stakingKeeper.EndBlocker(ctx) + // next block + ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) + // allocate some rewards + f.distrKeeper.AllocateTokensToValidator(ctx, val, tokens) + // end period + f.distrKeeper.IncrementValidatorPeriod(ctx, val) + + beforeBalance := f.bankKeeper.GetBalance(ctx, sdk.AccAddress(valAddrs[1]), sdk.DefaultBondDenom) + + // withdraw rewards + coins, err = f.distrKeeper.WithdrawAllTokenizeShareRecordReward(ctx, sdk.AccAddress(valAddrs[1])) + require.Nil(t, err) + + // check return value + require.Equal(t, coins.String(), "50000stake") + // check balance changes + midBalance := f.bankKeeper.GetBalance(ctx, sdk.AccAddress(valAddrs[1]), sdk.DefaultBondDenom) + require.Equal(t, beforeBalance.Amount.Add(coins.AmountOf(sdk.DefaultBondDenom)), midBalance.Amount) + + // allocate more rewards manually on module account and try full redeem + record, err := f.stakingKeeper.GetTokenizeShareRecord(ctx, 1) + require.NoError(t, err) + + err = f.mintKeeper.MintCoins(ctx, coins) + require.NoError(t, err) + err = f.bankKeeper.SendCoinsFromModuleToAccount(ctx, minttypes.ModuleName, record.GetModuleAddress(), coins) + require.NoError(t, err) + + shareTokenBalance := f.bankKeeper.GetBalance(ctx, sdk.AccAddress(valAddrs[0]), record.GetShareTokenDenom()) + + _, err = msgServer.RedeemTokensForShares(ctx, &stakingtypes.MsgRedeemTokensForShares{ + DelegatorAddress: sdk.AccAddress(valAddrs[0]).String(), + Amount: shareTokenBalance, + }) + require.NoError(t, err) + + finalBalance := f.bankKeeper.GetBalance(ctx, sdk.AccAddress(valAddrs[1]), sdk.DefaultBondDenom) + require.Equal(t, midBalance.Amount.Add(coins.AmountOf(sdk.DefaultBondDenom)), finalBalance.Amount) +} diff --git a/tests/integration/distribution/keeper/grpc_query_test.go b/tests/integration/distribution/keeper/grpc_query_test.go index a12dedfd2d3a..4afdee659f55 100644 --- a/tests/integration/distribution/keeper/grpc_query_test.go +++ b/tests/integration/distribution/keeper/grpc_query_test.go @@ -1,6 +1,7 @@ package keeper_test import ( + gocontext "context" "fmt" "testing" @@ -11,6 +12,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" "github.com/cosmos/cosmos-sdk/x/distribution/types" + minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" + stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" stakingtestutil "github.com/cosmos/cosmos-sdk/x/staking/testutil" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ) @@ -592,3 +595,91 @@ func TestGRPCDelegationRewards(t *testing.T) { }) } } + +func TestGRPCTokenizeShareRecordReward(t *testing.T) { + t.Parallel() + f := initFixture(t) + ctx := f.sdkCtx + + fundAccounts(t, ctx, f.bankKeeper) + + qr := f.app.QueryHelper() + queryClient := types.NewQueryClient(qr) + + valAddrs := []sdk.ValAddress{f.valAddr} + tstaking := stakingtestutil.NewHelper(t, ctx, f.stakingKeeper) + + // create validator with 50% commission + tstaking.Commission = stakingtypes.NewCommissionRates(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0)) + valPower := int64(100) + tstaking.CreateValidatorWithValPower(valAddrs[0], PKS[0], valPower, true) + + // end block to bond validator + f.stakingKeeper.EndBlocker(ctx) + + // next block + ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) + + // fetch validator and delegation + val, err := f.stakingKeeper.Validator(ctx, valAddrs[0]) + assert.NilError(t, err) + del, err := f.stakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) + assert.NilError(t, err) + + // end period + endingPeriod, err := f.distrKeeper.IncrementValidatorPeriod(ctx, val) + assert.NilError(t, err) + + // calculate delegation rewards + f.distrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod) + + // start out block height + ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) + val, err = f.stakingKeeper.Validator(ctx, valAddrs[0]) + assert.NilError(t, err) + ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) + + // allocate some rewards + initial := f.stakingKeeper.TokensFromConsensusPower(ctx, 10) + tokens := sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDecFromInt(initial)}} + f.distrKeeper.AllocateTokensToValidator(ctx, val, tokens) + + // end period + f.distrKeeper.IncrementValidatorPeriod(ctx, val) + + coins := sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, initial)} + err = f.mintKeeper.MintCoins(ctx, coins) + assert.NilError(t, err) + + err = f.bankKeeper.SendCoinsFromModuleToModule(ctx, minttypes.ModuleName, types.ModuleName, coins) + assert.NilError(t, err) + // tokenize share amount + delTokens := math.NewInt(1000000) + msgServer := stakingkeeper.NewMsgServerImpl(f.stakingKeeper) + _, err = msgServer.TokenizeShares(ctx, &stakingtypes.MsgTokenizeShares{ + DelegatorAddress: sdk.AccAddress(valAddrs[0]).String(), + ValidatorAddress: valAddrs[0].String(), + TokenizedShareOwner: sdk.AccAddress(valAddrs[0]).String(), + Amount: sdk.NewCoin(sdk.DefaultBondDenom, delTokens), + }) + assert.NilError(t, err) + + f.stakingKeeper.EndBlocker(ctx) + ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) + f.distrKeeper.AllocateTokensToValidator(ctx, val, tokens) + f.distrKeeper.IncrementValidatorPeriod(ctx, val) + + rewards, err := queryClient.TokenizeShareRecordReward(gocontext.Background(), &types.QueryTokenizeShareRecordRewardRequest{ + OwnerAddress: sdk.AccAddress(valAddrs[0]).String(), + }) + assert.NilError(t, err) + assert.DeepEqual(t, &types.QueryTokenizeShareRecordRewardResponse{ + Rewards: []types.TokenizeShareRecordReward{ + { + RecordId: 1, + Reward: sdk.DecCoins{sdk.NewInt64DecCoin("stake", 50000)}, + }, + }, + Total: sdk.DecCoins{sdk.NewInt64DecCoin("stake", 50000)}, + }, rewards) +} diff --git a/tests/integration/distribution/keeper/msg_server_test.go b/tests/integration/distribution/keeper/msg_server_test.go index 86a2d8e626e2..ee7ec201ffce 100644 --- a/tests/integration/distribution/keeper/msg_server_test.go +++ b/tests/integration/distribution/keeper/msg_server_test.go @@ -30,6 +30,8 @@ import ( "github.com/cosmos/cosmos-sdk/x/distribution" distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + mintkeeper "github.com/cosmos/cosmos-sdk/x/mint/keeper" + minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" "github.com/cosmos/cosmos-sdk/x/staking" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" stakingtestutil "github.com/cosmos/cosmos-sdk/x/staking/testutil" @@ -50,6 +52,7 @@ type fixture struct { accountKeeper authkeeper.AccountKeeper bankKeeper bankkeeper.Keeper + mintKeeper mintkeeper.Keeper distrKeeper distrkeeper.Keeper stakingKeeper *stakingkeeper.Keeper @@ -74,6 +77,7 @@ func initFixture(t testing.TB) *fixture { distrtypes.ModuleName: {authtypes.Minter}, stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking}, stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking}, + minttypes.ModuleName: {authtypes.Minter, authtypes.Burner}, } accountKeeper := authkeeper.NewAccountKeeper( @@ -100,10 +104,22 @@ func initFixture(t testing.TB) *fixture { stakingKeeper := stakingkeeper.NewKeeper(cdc, runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), accountKeeper, bankKeeper, authority.String(), addresscodec.NewBech32Codec(sdk.Bech32PrefixValAddr), addresscodec.NewBech32Codec(sdk.Bech32PrefixConsAddr)) + mintKeeper := mintkeeper.NewKeeper( + cdc, + runtime.NewKVStoreService(keys[minttypes.StoreKey]), + stakingKeeper, + accountKeeper, + bankKeeper, + authtypes.FeeCollectorName, + authority.String(), + ) + distrKeeper := distrkeeper.NewKeeper( cdc, runtime.NewKVStoreService(keys[distrtypes.StoreKey]), accountKeeper, bankKeeper, stakingKeeper, distrtypes.ModuleName, authority.String(), ) + stakingKeeper.SetHooks(distrKeeper.Hooks()) + authModule := auth.NewAppModule(cdc, accountKeeper, authsims.RandomGenesisAccounts, nil) bankModule := bank.NewAppModule(cdc, bankKeeper, accountKeeper, nil) stakingModule := staking.NewAppModule(cdc, stakingKeeper, accountKeeper, bankKeeper, nil) @@ -133,6 +149,13 @@ func initFixture(t testing.TB) *fixture { sdkCtx := sdk.UnwrapSDKContext(integrationApp.Context()) + // set default staking params + assert.NilError(t, stakingKeeper.SetParams(ctx, stakingtypes.DefaultParams())) + + // reset fee pool + assert.NilError(t, distrKeeper.FeePool.Set(ctx, distrtypes.InitialFeePool())) + assert.NilError(t, distrKeeper.Params.Set(ctx, distrtypes.DefaultParams())) + // Register MsgServer and QueryServer distrtypes.RegisterMsgServer(integrationApp.MsgServiceRouter(), distrkeeper.NewMsgServerImpl(distrKeeper)) distrtypes.RegisterQueryServer(integrationApp.QueryHelper(), distrkeeper.NewQuerier(distrKeeper)) @@ -144,6 +167,7 @@ func initFixture(t testing.TB) *fixture { keys: keys, accountKeeper: accountKeeper, bankKeeper: bankKeeper, + mintKeeper: mintKeeper, distrKeeper: distrKeeper, stakingKeeper: stakingKeeper, addr: addr, @@ -151,6 +175,17 @@ func initFixture(t testing.TB) *fixture { } } +func fundAccounts(t testing.TB, ctx sdk.Context, bankKeeper bankkeeper.Keeper) { + // add accounts and set total supply + totalSupplyAmt := initAmt.MulRaw(int64(len(PKS))) + totalSupply := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, totalSupplyAmt)) + require.NoError(t, bankKeeper.MintCoins(ctx, minttypes.ModuleName, totalSupply)) + + for _, addr := range PKS { + require.NoError(t, bankKeeper.SendCoinsFromModuleToAccount(ctx, minttypes.ModuleName, (sdk.AccAddress)(addr.Address()), initCoins)) + } +} + func TestMsgWithdrawDelegatorReward(t *testing.T) { t.Parallel() f := initFixture(t) diff --git a/tests/integration/gov/keeper/common_test.go b/tests/integration/gov/keeper/common_test.go index 9e1bca0b4532..c7ea2f2c32ac 100644 --- a/tests/integration/gov/keeper/common_test.go +++ b/tests/integration/gov/keeper/common_test.go @@ -50,16 +50,22 @@ func createValidators(t *testing.T, f *fixture, powers []int64) ([]sdk.AccAddres f.stakingKeeper.SetValidator(f.ctx, val1) f.stakingKeeper.SetValidator(f.ctx, val2) f.stakingKeeper.SetValidator(f.ctx, val3) - f.stakingKeeper.SetValidatorByConsAddr(f.ctx, val1) - f.stakingKeeper.SetValidatorByConsAddr(f.ctx, val2) - f.stakingKeeper.SetValidatorByConsAddr(f.ctx, val3) + err = f.stakingKeeper.SetValidatorByConsAddr(f.ctx, val1) + assert.NilError(t, err) + err = f.stakingKeeper.SetValidatorByConsAddr(f.ctx, val2) + assert.NilError(t, err) + err = f.stakingKeeper.SetValidatorByConsAddr(f.ctx, val3) + assert.NilError(t, err) f.stakingKeeper.SetNewValidatorByPowerIndex(f.ctx, val1) f.stakingKeeper.SetNewValidatorByPowerIndex(f.ctx, val2) f.stakingKeeper.SetNewValidatorByPowerIndex(f.ctx, val3) - _, _ = f.stakingKeeper.Delegate(f.ctx, addrs[0], f.stakingKeeper.TokensFromConsensusPower(f.ctx, powers[0]), stakingtypes.Unbonded, val1, true) - _, _ = f.stakingKeeper.Delegate(f.ctx, addrs[1], f.stakingKeeper.TokensFromConsensusPower(f.ctx, powers[1]), stakingtypes.Unbonded, val2, true) - _, _ = f.stakingKeeper.Delegate(f.ctx, addrs[2], f.stakingKeeper.TokensFromConsensusPower(f.ctx, powers[2]), stakingtypes.Unbonded, val3, true) + _, err = f.stakingKeeper.Delegate(f.ctx, addrs[0], f.stakingKeeper.TokensFromConsensusPower(f.ctx, powers[0]), stakingtypes.Unbonded, val1, true) + assert.NilError(t, err) + _, err = f.stakingKeeper.Delegate(f.ctx, addrs[1], f.stakingKeeper.TokensFromConsensusPower(f.ctx, powers[1]), stakingtypes.Unbonded, val2, true) + assert.NilError(t, err) + _, err = f.stakingKeeper.Delegate(f.ctx, addrs[2], f.stakingKeeper.TokensFromConsensusPower(f.ctx, powers[2]), stakingtypes.Unbonded, val3, true) + assert.NilError(t, err) f.stakingKeeper.EndBlocker(f.ctx) diff --git a/tests/integration/slashing/keeper/keeper_test.go b/tests/integration/slashing/keeper/keeper_test.go index d43c07f1df85..9103b048df9d 100644 --- a/tests/integration/slashing/keeper/keeper_test.go +++ b/tests/integration/slashing/keeper/keeper_test.go @@ -136,82 +136,6 @@ func initFixture(t testing.TB) *fixture { } } -func TestUnJailNotBonded(t *testing.T) { - t.Parallel() - f := initFixture(t) - - p, err := f.stakingKeeper.GetParams(f.ctx) - assert.NilError(t, err) - p.MaxValidators = 5 - f.stakingKeeper.SetParams(f.ctx, p) - - pks := simtestutil.CreateTestPubKeys(6) - tstaking := stakingtestutil.NewHelper(t, f.ctx, f.stakingKeeper) - - // create max (5) validators all with the same power - for i := uint32(0); i < p.MaxValidators; i++ { - addr, val := f.valAddrs[i], pks[i] - tstaking.CreateValidatorWithValPower(addr, val, 100, true) - } - - f.stakingKeeper.EndBlocker(f.ctx) - f.ctx = f.ctx.WithBlockHeight(f.ctx.BlockHeight() + 1) - - // create a 6th validator with less power than the cliff validator (won't be bonded) - addr, val := f.valAddrs[5], pks[5] - amt := f.stakingKeeper.TokensFromConsensusPower(f.ctx, 50) - msg := tstaking.CreateValidatorMsg(addr, val, amt) - msg.MinSelfDelegation = amt - msg.Description = stakingtypes.Description{Moniker: "TestValidator"} - res, err := tstaking.CreateValidatorWithMsg(f.ctx, msg) - assert.NilError(t, err) - assert.Assert(t, res != nil) - - f.stakingKeeper.EndBlocker(f.ctx) - f.ctx = f.ctx.WithBlockHeight(f.ctx.BlockHeight() + 1) - - tstaking.CheckValidator(addr, stakingtypes.Unbonded, false) - - // unbond below minimum self-delegation - assert.Equal(t, p.BondDenom, tstaking.Denom) - tstaking.Undelegate(sdk.AccAddress(addr), addr, f.stakingKeeper.TokensFromConsensusPower(f.ctx, 1), true) - - f.stakingKeeper.EndBlocker(f.ctx) - f.ctx = f.ctx.WithBlockHeight(f.ctx.BlockHeight() + 1) - - // verify that validator is jailed - tstaking.CheckValidator(addr, -1, true) - - // verify we cannot unjail (yet) - msgUnjail := slashingtypes.MsgUnjail{ - ValidatorAddr: addr.String(), - } - _, err = f.app.RunMsg( - &msgUnjail, - integration.WithAutomaticFinalizeBlock(), - integration.WithAutomaticCommit(), - ) - assert.ErrorContains(t, err, "cannot be unjailed") - - f.stakingKeeper.EndBlocker(f.ctx) - f.ctx = f.ctx.WithBlockHeight(f.ctx.BlockHeight() + 1) - // bond to meet minimum self-delegation - tstaking.DelegateWithPower(sdk.AccAddress(addr), addr, 1) - - f.stakingKeeper.EndBlocker(f.ctx) - f.ctx = f.ctx.WithBlockHeight(f.ctx.BlockHeight() + 1) - - // verify we can immediately unjail - _, err = f.app.RunMsg( - &msgUnjail, - integration.WithAutomaticFinalizeBlock(), - integration.WithAutomaticCommit(), - ) - assert.NilError(t, err) - - tstaking.CheckValidator(addr, -1, false) -} - // Test a new validator entering the validator set // Ensure that SigningInfo.StartHeight is set correctly // and that they are not immediately jailed diff --git a/tests/integration/staking/keeper/common_test.go b/tests/integration/staking/keeper/common_test.go index f4958b1b86da..0a197e96693d 100644 --- a/tests/integration/staking/keeper/common_test.go +++ b/tests/integration/staking/keeper/common_test.go @@ -23,6 +23,7 @@ import ( authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" authsims "github.com/cosmos/cosmos-sdk/x/auth/simulation" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + "github.com/cosmos/cosmos-sdk/x/auth/vesting" "github.com/cosmos/cosmos-sdk/x/bank" bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" @@ -95,7 +96,7 @@ func initFixture(t testing.TB) *fixture { keys := storetypes.NewKVStoreKeys( authtypes.StoreKey, banktypes.StoreKey, types.StoreKey, ) - cdc := moduletestutil.MakeTestEncodingConfig(auth.AppModuleBasic{}, staking.AppModuleBasic{}).Codec + cdc := moduletestutil.MakeTestEncodingConfig(auth.AppModuleBasic{}, staking.AppModuleBasic{}, vesting.AppModuleBasic{}).Codec logger := log.NewTestLogger(t) cms := integration.CreateMultiStore(keys, logger) @@ -166,3 +167,9 @@ func initFixture(t testing.TB) *fixture { return &f } + +func delegateCoinsFromAccount(ctx sdk.Context, sk stakingkeeper.Keeper, addr sdk.AccAddress, amount math.Int, val types.ValidatorI) error { + _, err := sk.Delegate(ctx, addr, amount, types.Unbonded, val.(types.Validator), true) + + return err +} diff --git a/tests/integration/staking/keeper/delegation_test.go b/tests/integration/staking/keeper/delegation_test.go index a68c68ee13e9..2f9912a5d974 100644 --- a/tests/integration/staking/keeper/delegation_test.go +++ b/tests/integration/staking/keeper/delegation_test.go @@ -4,10 +4,12 @@ import ( "testing" "time" + "github.com/stretchr/testify/require" "gotest.tools/v3/assert" "cosmossdk.io/math" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" banktestutil "github.com/cosmos/cosmos-sdk/x/bank/testutil" "github.com/cosmos/cosmos-sdk/x/staking/keeper" @@ -113,3 +115,181 @@ func TestUnbondingDelegationsMaxEntries(t *testing.T) { assert.Assert(math.IntEq(t, newBonded, oldBonded.SubRaw(1))) assert.Assert(math.IntEq(t, newNotBonded, oldNotBonded.AddRaw(1))) } + +func TestValidatorBondUndelegate(t *testing.T) { + t.Parallel() + f := initFixture(t) + ctx := f.sdkCtx + + addrDels := simtestutil.AddTestAddrs(f.bankKeeper, f.stakingKeeper, ctx, 2, f.stakingKeeper.TokensFromConsensusPower(ctx, 10000)) + addrVals := simtestutil.ConvertAddrsToValAddrs(addrDels) + + startTokens := f.stakingKeeper.TokensFromConsensusPower(ctx, 10) + + bondDenom, err := f.stakingKeeper.BondDenom(ctx) + require.NoError(t, err) + notBondedPool := f.stakingKeeper.GetNotBondedPool(ctx) + + require.NoError(t, banktestutil.FundModuleAccount(ctx, f.bankKeeper, notBondedPool.GetName(), sdk.NewCoins(sdk.NewCoin(bondDenom, startTokens)))) + f.accountKeeper.SetModuleAccount(ctx, notBondedPool) + + // create a validator and a delegator to that validator + validator := testutil.NewValidator(t, addrVals[0], PKs[0]) + validator.Status = types.Bonded + f.stakingKeeper.SetValidator(ctx, validator) + + // set validator bond factor + params, err := f.stakingKeeper.GetParams(ctx) + require.NoError(t, err) + params.ValidatorBondFactor = math.LegacyNewDec(1) + f.stakingKeeper.SetParams(ctx, params) + + // convert to validator self-bond + msgServer := keeper.NewMsgServerImpl(f.stakingKeeper) + + validator, _ = f.stakingKeeper.GetValidator(ctx, addrVals[0]) + err = delegateCoinsFromAccount(ctx, *f.stakingKeeper, addrDels[0], startTokens, validator) + require.NoError(t, err) + _, err = msgServer.ValidatorBond(ctx, &types.MsgValidatorBond{ + DelegatorAddress: addrDels[0].String(), + ValidatorAddress: addrVals[0].String(), + }) + require.NoError(t, err) + + // tokenize share for 2nd account delegation + validator, _ = f.stakingKeeper.GetValidator(ctx, addrVals[0]) + err = delegateCoinsFromAccount(ctx, *f.stakingKeeper, addrDels[1], startTokens, validator) + require.NoError(t, err) + tokenizeShareResp, err := msgServer.TokenizeShares(ctx, &types.MsgTokenizeShares{ + DelegatorAddress: addrDels[1].String(), + ValidatorAddress: addrVals[0].String(), + Amount: sdk.NewCoin(sdk.DefaultBondDenom, startTokens), + TokenizedShareOwner: addrDels[0].String(), + }) + require.NoError(t, err) + + // try undelegating + _, err = msgServer.Undelegate(ctx, &types.MsgUndelegate{ + DelegatorAddress: addrDels[0].String(), + ValidatorAddress: addrVals[0].String(), + Amount: sdk.NewCoin(sdk.DefaultBondDenom, startTokens), + }) + require.Error(t, err) + + // redeem full amount on 2nd account and try undelegation + validator, _ = f.stakingKeeper.GetValidator(ctx, addrVals[0]) + err = delegateCoinsFromAccount(ctx, *f.stakingKeeper, addrDels[1], startTokens, validator) + require.NoError(t, err) + _, err = msgServer.RedeemTokensForShares(ctx, &types.MsgRedeemTokensForShares{ + DelegatorAddress: addrDels[1].String(), + Amount: tokenizeShareResp.Amount, + }) + require.NoError(t, err) + + // try undelegating + _, err = msgServer.Undelegate(ctx, &types.MsgUndelegate{ + DelegatorAddress: addrDels[0].String(), + ValidatorAddress: addrVals[0].String(), + Amount: sdk.NewCoin(sdk.DefaultBondDenom, startTokens), + }) + require.NoError(t, err) + + validator, _ = f.stakingKeeper.GetValidator(ctx, addrVals[0]) + require.Equal(t, validator.ValidatorBondShares, math.LegacyZeroDec()) +} + +func TestValidatorBondRedelegate(t *testing.T) { + t.Parallel() + f := initFixture(t) + ctx := f.sdkCtx + + addrDels := simtestutil.AddTestAddrs(f.bankKeeper, f.stakingKeeper, ctx, 2, f.stakingKeeper.TokensFromConsensusPower(ctx, 10000)) + addrVals := simtestutil.ConvertAddrsToValAddrs(addrDels) + + startTokens := f.stakingKeeper.TokensFromConsensusPower(ctx, 10) + + bondDenom, err := f.stakingKeeper.BondDenom(ctx) + require.NoError(t, err) + notBondedPool := f.stakingKeeper.GetNotBondedPool(ctx) + + startPoolToken := sdk.NewCoins(sdk.NewCoin(bondDenom, startTokens.Mul(math.NewInt(2)))) + require.NoError(t, banktestutil.FundModuleAccount(ctx, f.bankKeeper, notBondedPool.GetName(), startPoolToken)) + f.accountKeeper.SetModuleAccount(ctx, notBondedPool) + + // create a validator and a delegator to that validator + validator := testutil.NewValidator(t, addrVals[0], PKs[0]) + validator.Status = types.Bonded + f.stakingKeeper.SetValidator(ctx, validator) + validator2 := testutil.NewValidator(t, addrVals[1], PKs[1]) + validator.Status = types.Bonded + f.stakingKeeper.SetValidator(ctx, validator2) + + // set validator bond factor + params, err := f.stakingKeeper.GetParams(ctx) + require.NoError(t, err) + params.ValidatorBondFactor = math.LegacyNewDec(1) + f.stakingKeeper.SetParams(ctx, params) + + // set total liquid stake + f.stakingKeeper.SetTotalLiquidStakedTokens(ctx, math.NewInt(100)) + + // delegate to each validator + validator, _ = f.stakingKeeper.GetValidator(ctx, addrVals[0]) + err = delegateCoinsFromAccount(ctx, *f.stakingKeeper, addrDels[0], startTokens, validator) + require.NoError(t, err) + + validator2, _ = f.stakingKeeper.GetValidator(ctx, addrVals[1]) + err = delegateCoinsFromAccount(ctx, *f.stakingKeeper, addrDels[1], startTokens, validator2) + require.NoError(t, err) + + // convert to validator self-bond + msgServer := keeper.NewMsgServerImpl(f.stakingKeeper) + _, err = msgServer.ValidatorBond(ctx, &types.MsgValidatorBond{ + DelegatorAddress: addrDels[0].String(), + ValidatorAddress: addrVals[0].String(), + }) + require.NoError(t, err) + + // tokenize share for 2nd account delegation + validator, _ = f.stakingKeeper.GetValidator(ctx, addrVals[0]) + err = delegateCoinsFromAccount(ctx, *f.stakingKeeper, addrDels[1], startTokens, validator) + require.NoError(t, err) + tokenizeShareResp, err := msgServer.TokenizeShares(ctx, &types.MsgTokenizeShares{ + DelegatorAddress: addrDels[1].String(), + ValidatorAddress: addrVals[0].String(), + Amount: sdk.NewCoin(sdk.DefaultBondDenom, startTokens), + TokenizedShareOwner: addrDels[0].String(), + }) + require.NoError(t, err) + + // try undelegating + _, err = msgServer.BeginRedelegate(ctx, &types.MsgBeginRedelegate{ + DelegatorAddress: addrDels[0].String(), + ValidatorSrcAddress: addrVals[0].String(), + ValidatorDstAddress: addrVals[1].String(), + Amount: sdk.NewCoin(sdk.DefaultBondDenom, startTokens), + }) + require.Error(t, err) + + // redeem full amount on 2nd account and try undelegation + validator, _ = f.stakingKeeper.GetValidator(ctx, addrVals[0]) + err = delegateCoinsFromAccount(ctx, *f.stakingKeeper, addrDels[1], startTokens, validator) + require.NoError(t, err) + _, err = msgServer.RedeemTokensForShares(ctx, &types.MsgRedeemTokensForShares{ + DelegatorAddress: addrDels[1].String(), + Amount: tokenizeShareResp.Amount, + }) + require.NoError(t, err) + + // try undelegating + _, err = msgServer.BeginRedelegate(ctx, &types.MsgBeginRedelegate{ + DelegatorAddress: addrDels[0].String(), + ValidatorSrcAddress: addrVals[0].String(), + ValidatorDstAddress: addrVals[1].String(), + Amount: sdk.NewCoin(sdk.DefaultBondDenom, startTokens), + }) + require.NoError(t, err) + + validator, _ = f.stakingKeeper.GetValidator(ctx, addrVals[0]) + require.Equal(t, validator.ValidatorBondShares, math.LegacyZeroDec()) +} diff --git a/tests/integration/staking/keeper/determinstic_test.go b/tests/integration/staking/keeper/determinstic_test.go index c6c0f6377d37..48be6be2a422 100644 --- a/tests/integration/staking/keeper/determinstic_test.go +++ b/tests/integration/staking/keeper/determinstic_test.go @@ -349,7 +349,8 @@ func TestGRPCValidator(t *testing.T) { ValidatorAddr: val.OperatorAddress, } - testdata.DeterministicIterations(f.ctx, t, req, f.queryClient.Validator, 1915, false) + // NOTE: gas consumption delta changed from 1915 to 1933 + testdata.DeterministicIterations(f.ctx, t, req, f.queryClient.Validator, 1933, false) } func TestGRPCValidators(t *testing.T) { @@ -375,7 +376,8 @@ func TestGRPCValidators(t *testing.T) { getStaticValidator(f, t) getStaticValidator2(f, t) - testdata.DeterministicIterations(f.ctx, t, &stakingtypes.QueryValidatorsRequest{}, f.queryClient.Validators, 2862, false) + // NOTE: gas consumption delta changed from 3597 to 2916 + testdata.DeterministicIterations(f.ctx, t, &stakingtypes.QueryValidatorsRequest{}, f.queryClient.Validators, 2916, false) } func TestGRPCValidatorDelegations(t *testing.T) { @@ -414,7 +416,8 @@ func TestGRPCValidatorDelegations(t *testing.T) { ValidatorAddr: validator.OperatorAddress, } - testdata.DeterministicIterations(f.ctx, t, req, f.queryClient.ValidatorDelegations, 14475, false) + // NOTE: gas consumption delta changed from 12615 to 15105 + testdata.DeterministicIterations(f.ctx, t, req, f.queryClient.ValidatorDelegations, 15105, false) } func TestGRPCValidatorUnbondingDelegations(t *testing.T) { @@ -494,7 +497,8 @@ func TestGRPCDelegation(t *testing.T) { DelegatorAddr: delegator1, } - testdata.DeterministicIterations(f.ctx, t, req, f.queryClient.Delegation, 4635, false) + // NOTE: gas consumption delta changed from 4635 to 4845 + testdata.DeterministicIterations(f.ctx, t, req, f.queryClient.Delegation, 4845, false) } func TestGRPCUnbondingDelegation(t *testing.T) { @@ -569,7 +573,8 @@ func TestGRPCDelegatorDelegations(t *testing.T) { DelegatorAddr: delegator1, } - testdata.DeterministicIterations(f.ctx, t, req, f.queryClient.DelegatorDelegations, 4238, false) + // NOTE: gas consumption delta changed from 4238 to 4448 + testdata.DeterministicIterations(f.ctx, t, req, f.queryClient.DelegatorDelegations, 4448, false) } func TestGRPCDelegatorValidator(t *testing.T) { @@ -603,7 +608,8 @@ func TestGRPCDelegatorValidator(t *testing.T) { ValidatorAddr: validator.OperatorAddress, } - testdata.DeterministicIterations(f.ctx, t, req, f.queryClient.DelegatorValidator, 3563, false) + // NOTE: gas consumption delta changed from 3563 to 3581 + testdata.DeterministicIterations(f.ctx, t, req, f.queryClient.DelegatorValidator, 3581, false) } func TestGRPCDelegatorUnbondingDelegations(t *testing.T) { @@ -701,7 +707,8 @@ func TestGRPCHistoricalInfo(t *testing.T) { Height: height, } - testdata.DeterministicIterations(f.ctx, t, req, f.queryClient.HistoricalInfo, 1945, false) + // NOTE: gas consumption delta changed from 1948 to 1963 + testdata.DeterministicIterations(f.ctx, t, req, f.queryClient.HistoricalInfo, 1963, false) } func TestGRPCDelegatorValidators(t *testing.T) { @@ -734,7 +741,8 @@ func TestGRPCDelegatorValidators(t *testing.T) { assert.NilError(t, err) req := &stakingtypes.QueryDelegatorValidatorsRequest{DelegatorAddr: delegator1} - testdata.DeterministicIterations(f.ctx, t, req, f.queryClient.DelegatorValidators, 3166, false) + // NOTE: gas consumption delta changed from 3166 to 3184 + testdata.DeterministicIterations(f.ctx, t, req, f.queryClient.DelegatorValidators, 3184, false) } func TestGRPCPool(t *testing.T) { @@ -749,7 +757,8 @@ func TestGRPCPool(t *testing.T) { f = initDeterministicFixture(t) // reset getStaticValidator(f, t) - testdata.DeterministicIterations(f.ctx, t, &stakingtypes.QueryPoolRequest{}, f.queryClient.Pool, 6242, false) + // NOTE: gas consumption delta changed from 6377 to 6434 + testdata.DeterministicIterations(f.ctx, t, &stakingtypes.QueryPoolRequest{}, f.queryClient.Pool, 6434, false) } func TestGRPCRedelegations(t *testing.T) { @@ -814,7 +823,8 @@ func TestGRPCRedelegations(t *testing.T) { DstValidatorAddr: validator2, } - testdata.DeterministicIterations(f.ctx, t, req, f.queryClient.Redelegations, 3920, false) + // NOTE: gas consumption delta changed from 3920 to 3938 + testdata.DeterministicIterations(f.ctx, t, req, f.queryClient.Redelegations, 3938, false) } func TestGRPCParams(t *testing.T) { @@ -823,12 +833,15 @@ func TestGRPCParams(t *testing.T) { rapid.Check(t, func(rt *rapid.T) { params := stakingtypes.Params{ - BondDenom: rapid.StringMatching(sdk.DefaultCoinDenomRegex()).Draw(rt, "bond-denom"), - UnbondingTime: durationGenerator().Draw(rt, "duration"), - MaxValidators: rapid.Uint32Min(1).Draw(rt, "max-validators"), - MaxEntries: rapid.Uint32Min(1).Draw(rt, "max-entries"), - HistoricalEntries: rapid.Uint32Min(1).Draw(rt, "historical-entries"), - MinCommissionRate: math.LegacyNewDecWithPrec(rapid.Int64Range(0, 100).Draw(rt, "commission"), 2), + BondDenom: rapid.StringMatching(sdk.DefaultCoinDenomRegex()).Draw(rt, "bond-denom"), + UnbondingTime: durationGenerator().Draw(rt, "duration"), + MaxValidators: rapid.Uint32Min(1).Draw(rt, "max-validators"), + MaxEntries: rapid.Uint32Min(1).Draw(rt, "max-entries"), + HistoricalEntries: rapid.Uint32Min(1).Draw(rt, "historical-entries"), + MinCommissionRate: math.LegacyNewDecWithPrec(rapid.Int64Range(0, 100).Draw(rt, "commission"), 2), + ValidatorBondFactor: math.LegacyNewDecWithPrec(rapid.Int64Range(0, 100).Draw(rt, "bond-factor"), 2), + GlobalLiquidStakingCap: math.LegacyNewDecWithPrec(rapid.Int64Range(0, 100).Draw(rt, "global-liquid-staking-cap"), 2), + ValidatorLiquidStakingCap: math.LegacyNewDecWithPrec(rapid.Int64Range(0, 100).Draw(rt, "validator-liquid-staking-cap"), 2), } err := f.stakingKeeper.SetParams(f.ctx, params) @@ -838,16 +851,20 @@ func TestGRPCParams(t *testing.T) { }) params := stakingtypes.Params{ - BondDenom: "denom", - UnbondingTime: time.Hour, - MaxValidators: 85, - MaxEntries: 5, - HistoricalEntries: 5, - MinCommissionRate: math.LegacyNewDecWithPrec(5, 2), + BondDenom: "denom", + UnbondingTime: time.Hour, + MaxValidators: 85, + MaxEntries: 5, + HistoricalEntries: 5, + MinCommissionRate: math.LegacyNewDecWithPrec(5, 2), + ValidatorBondFactor: math.LegacyNewDecWithPrec(18, 2), + GlobalLiquidStakingCap: math.LegacyNewDecWithPrec(11, 2), + ValidatorLiquidStakingCap: math.LegacyNewDecWithPrec(2, 2), } err := f.stakingKeeper.SetParams(f.ctx, params) assert.NilError(t, err) - testdata.DeterministicIterations(f.ctx, t, &stakingtypes.QueryParamsRequest{}, f.queryClient.Params, 1114, false) + // NOTE: gas consumption delta changed from 1114 to 1291 + testdata.DeterministicIterations(f.ctx, t, &stakingtypes.QueryParamsRequest{}, f.queryClient.Params, 1291, false) } diff --git a/tests/integration/staking/keeper/genesis_test.go b/tests/integration/staking/keeper/genesis_test.go index 78e830dc822e..c52e1d30471f 100644 --- a/tests/integration/staking/keeper/genesis_test.go +++ b/tests/integration/staking/keeper/genesis_test.go @@ -3,6 +3,7 @@ package keeper_test import ( "fmt" "testing" + "time" abci "github.com/cometbft/cometbft/abci/types" "github.com/stretchr/testify/require" @@ -11,6 +12,7 @@ import ( "cosmossdk.io/math" codectypes "github.com/cosmos/cosmos-sdk/codec/types" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" banktestutil "github.com/cosmos/cosmos-sdk/x/bank/testutil" "github.com/cosmos/cosmos-sdk/x/staking" @@ -238,3 +240,56 @@ func TestInitGenesisLargeValidatorSet(t *testing.T) { vals = vals[:100] assert.DeepEqual(t, abcivals, vals) } + +func TestInitExportLiquidStakingGenesis(t *testing.T) { + t.Parallel() + f := initFixture(t) + ctx := f.sdkCtx + + addresses := simtestutil.AddTestAddrs(f.bankKeeper, f.stakingKeeper, ctx, 2, math.OneInt()) + addrAcc1, addrAcc2 := addresses[0], addresses[1] + + validators, err := f.stakingKeeper.GetAllValidators(ctx) + require.NoError(t, err) + + // Mock out a genesis state + inGenesisState := types.GenesisState{ + Params: types.DefaultParams(), + TokenizeShareRecords: []types.TokenizeShareRecord{ + {Id: 1, Owner: addrAcc1.String(), ModuleAccount: "module1", Validator: "val1"}, + {Id: 2, Owner: addrAcc2.String(), ModuleAccount: "module2", Validator: "val2"}, + }, + LastTokenizeShareRecordId: 2, + TotalLiquidStakedTokens: math.NewInt(1_000_000), + TokenizeShareLocks: []types.TokenizeShareLock{ + { + Address: addrAcc1.String(), + Status: types.TOKENIZE_SHARE_LOCK_STATUS_LOCKED.String(), + }, + { + Address: addrAcc2.String(), + Status: types.TOKENIZE_SHARE_LOCK_STATUS_LOCK_EXPIRING.String(), + CompletionTime: time.Date(2023, 1, 1, 1, 0, 0, 0, time.UTC), + }, + }, + // Ensure that the bonded pool balance matches the bonded coins by passing existing validators + // Note: the above wasn't required in v0.45.16-ics-lsm + Validators: validators, + } + + // Call init and then export genesis - confirming the same state is returned + f.stakingKeeper.InitGenesis(ctx, &inGenesisState) + outGenesisState := f.stakingKeeper.ExportGenesis(ctx) + + require.ElementsMatch(t, inGenesisState.TokenizeShareRecords, outGenesisState.TokenizeShareRecords, + "tokenize share records") + + require.Equal(t, inGenesisState.LastTokenizeShareRecordId, outGenesisState.LastTokenizeShareRecordId, + "last tokenize share record ID") + + require.Equal(t, inGenesisState.TotalLiquidStakedTokens.Int64(), outGenesisState.TotalLiquidStakedTokens.Int64(), + "total liquid staked") + + require.ElementsMatch(t, inGenesisState.TokenizeShareLocks, outGenesisState.TokenizeShareLocks, + "tokenize share locks") +} diff --git a/tests/integration/staking/keeper/liquid_stake_test.go b/tests/integration/staking/keeper/liquid_stake_test.go new file mode 100644 index 000000000000..5b26bb5b37d5 --- /dev/null +++ b/tests/integration/staking/keeper/liquid_stake_test.go @@ -0,0 +1,498 @@ +package keeper_test + +import ( + "errors" + "fmt" + "testing" + + "github.com/stretchr/testify/require" + + "cosmossdk.io/depinject" + "cosmossdk.io/log" + "cosmossdk.io/math" + + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" + sdk "github.com/cosmos/cosmos-sdk/types" + accountkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" + "github.com/cosmos/cosmos-sdk/x/staking/keeper" + "github.com/cosmos/cosmos-sdk/x/staking/testutil" + "github.com/cosmos/cosmos-sdk/x/staking/types" +) + +// Helper function to clear the Bonded pool balances before a unit test +func clearPoolBalance(t *testing.T, sk keeper.Keeper, ak accountkeeper.AccountKeeper, bk bankkeeper.Keeper, ctx sdk.Context) { + bondDenom, err := sk.BondDenom(ctx) + require.NoError(t, err) + initialBondedBalance := bk.GetBalance(ctx, ak.GetModuleAddress(types.BondedPoolName), bondDenom) + + err = bk.SendCoinsFromModuleToModule(ctx, types.BondedPoolName, minttypes.ModuleName, sdk.NewCoins(initialBondedBalance)) + require.NoError(t, err, "no error expected when clearing bonded pool balance") +} + +// Helper function to fund the Bonded pool balances before a unit test +func fundPoolBalance(t *testing.T, sk keeper.Keeper, bk bankkeeper.Keeper, ctx sdk.Context, amount math.Int) { + bondDenom, err := sk.BondDenom(ctx) + require.NoError(t, err) + bondedPoolCoin := sdk.NewCoin(bondDenom, amount) + + err = bk.MintCoins(ctx, minttypes.ModuleName, sdk.NewCoins(bondedPoolCoin)) + require.NoError(t, err, "no error expected when minting") + + err = bk.SendCoinsFromModuleToModule(ctx, minttypes.ModuleName, types.BondedPoolName, sdk.NewCoins(bondedPoolCoin)) + require.NoError(t, err, "no error expected when sending tokens to bonded pool") +} + +// Helper function to create a module account address from a tokenized share +// Used to mock the delegation owner of a tokenized share +func createTokenizeShareModuleAccount(recordID uint64) sdk.AccAddress { + record := types.TokenizeShareRecord{ + Id: recordID, + ModuleAccount: fmt.Sprintf("%s%d", types.TokenizeShareModuleAccountPrefix, recordID), + } + return record.GetModuleAddress() +} + +// Helper function to create a base account from an account name +// Used to differentiate against liquid staking provider module account +func createBaseAccount(ak accountkeeper.AccountKeeper, ctx sdk.Context, accountName string) sdk.AccAddress { + baseAccountAddress := sdk.AccAddress(accountName) + ak.SetAccount(ctx, ak.NewAccountWithAddress(ctx, baseAccountAddress)) + return baseAccountAddress +} + +// Tests CheckExceedsGlobalLiquidStakingCap +func TestCheckExceedsGlobalLiquidStakingCap(t *testing.T) { + var ( + accountKeeper accountkeeper.AccountKeeper + bankKeeper bankkeeper.Keeper + stakingKeeper *keeper.Keeper + ) + + app, err := simtestutil.Setup( + depinject.Configs(testutil.AppConfig, depinject.Supply(log.NewNopLogger())), + &accountKeeper, + &bankKeeper, + &stakingKeeper, + ) + require.NoError(t, err) + ctx := app.BaseApp.NewContext(false) + + testCases := []struct { + name string + globalLiquidCap math.LegacyDec + totalLiquidStake math.Int + totalStake math.Int + newLiquidStake math.Int + tokenizingShares bool + expectedExceeds bool + }{ + { + // Cap: 10% - Native Delegation - Delegation Below Threshold + // Total Liquid Stake: 5, Total Stake: 95, New Liquid Stake: 1 + // => Total Liquid Stake: 5+1=6, Total Stake: 95+1=96 => 6/96 = 6% < 10% cap + name: "10 percent cap _ native delegation _ delegation below cap", + globalLiquidCap: math.LegacyMustNewDecFromStr("0.1"), + totalLiquidStake: math.NewInt(5), + totalStake: math.NewInt(95), + newLiquidStake: math.NewInt(1), + tokenizingShares: false, + expectedExceeds: false, + }, + { + // Cap: 10% - Native Delegation - Delegation At Threshold + // Total Liquid Stake: 5, Total Stake: 95, New Liquid Stake: 5 + // => Total Liquid Stake: 5+5=10, Total Stake: 95+5=100 => 10/100 = 10% == 10% cap + name: "10 percent cap _ native delegation _ delegation equals cap", + globalLiquidCap: math.LegacyMustNewDecFromStr("0.1"), + totalLiquidStake: math.NewInt(5), + totalStake: math.NewInt(95), + newLiquidStake: math.NewInt(5), + tokenizingShares: false, + expectedExceeds: false, + }, + { + // Cap: 10% - Native Delegation - Delegation Exceeds Threshold + // Total Liquid Stake: 5, Total Stake: 95, New Liquid Stake: 6 + // => Total Liquid Stake: 5+6=11, Total Stake: 95+6=101 => 11/101 = 11% > 10% cap + name: "10 percent cap _ native delegation _ delegation exceeds cap", + globalLiquidCap: math.LegacyMustNewDecFromStr("0.1"), + totalLiquidStake: math.NewInt(5), + totalStake: math.NewInt(95), + newLiquidStake: math.NewInt(6), + tokenizingShares: false, + expectedExceeds: true, + }, + { + // Cap: 20% - Native Delegation - Delegation Below Threshold + // Total Liquid Stake: 20, Total Stake: 220, New Liquid Stake: 29 + // => Total Liquid Stake: 20+29=49, Total Stake: 220+29=249 => 49/249 = 19% < 20% cap + name: "20 percent cap _ native delegation _ delegation below cap", + globalLiquidCap: math.LegacyMustNewDecFromStr("0.20"), + totalLiquidStake: math.NewInt(20), + totalStake: math.NewInt(220), + newLiquidStake: math.NewInt(29), + tokenizingShares: false, + expectedExceeds: false, + }, + { + // Cap: 20% - Native Delegation - Delegation At Threshold + // Total Liquid Stake: 20, Total Stake: 220, New Liquid Stake: 30 + // => Total Liquid Stake: 20+30=50, Total Stake: 220+30=250 => 50/250 = 20% == 20% cap + name: "20 percent cap _ native delegation _ delegation equals cap", + globalLiquidCap: math.LegacyMustNewDecFromStr("0.20"), + totalLiquidStake: math.NewInt(20), + totalStake: math.NewInt(220), + newLiquidStake: math.NewInt(30), + tokenizingShares: false, + expectedExceeds: false, + }, + { + // Cap: 20% - Native Delegation - Delegation Exceeds Threshold + // Total Liquid Stake: 20, Total Stake: 220, New Liquid Stake: 31 + // => Total Liquid Stake: 20+31=51, Total Stake: 220+31=251 => 51/251 = 21% > 20% cap + name: "20 percent cap _ native delegation _ delegation exceeds cap", + globalLiquidCap: math.LegacyMustNewDecFromStr("0.20"), + totalLiquidStake: math.NewInt(20), + totalStake: math.NewInt(220), + newLiquidStake: math.NewInt(31), + tokenizingShares: false, + expectedExceeds: true, + }, + { + // Cap: 50% - Native Delegation - Delegation Below Threshold + // Total Liquid Stake: 0, Total Stake: 100, New Liquid Stake: 50 + // => Total Liquid Stake: 0+50=50, Total Stake: 100+50=150 => 50/150 = 33% < 50% cap + name: "50 percent cap _ native delegation _ delegation below cap", + globalLiquidCap: math.LegacyMustNewDecFromStr("0.5"), + totalLiquidStake: math.NewInt(0), + totalStake: math.NewInt(100), + newLiquidStake: math.NewInt(50), + tokenizingShares: false, + expectedExceeds: false, + }, + { + // Cap: 50% - Tokenized Delegation - Delegation At Threshold + // Total Liquid Stake: 0, Total Stake: 100, New Liquid Stake: 50 + // => 50 / 100 = 50% == 50% cap + name: "50 percent cap _ tokenized delegation _ delegation equals cap", + globalLiquidCap: math.LegacyMustNewDecFromStr("0.5"), + totalLiquidStake: math.NewInt(0), + totalStake: math.NewInt(100), + newLiquidStake: math.NewInt(50), + tokenizingShares: true, + expectedExceeds: false, + }, + { + // Cap: 50% - Native Delegation - Delegation Below Threshold + // Total Liquid Stake: 0, Total Stake: 100, New Liquid Stake: 51 + // => Total Liquid Stake: 0+51=51, Total Stake: 100+51=151 => 51/151 = 33% < 50% cap + name: "50 percent cap _ native delegation _ delegation below cap", + globalLiquidCap: math.LegacyMustNewDecFromStr("0.5"), + totalLiquidStake: math.NewInt(0), + totalStake: math.NewInt(100), + newLiquidStake: math.NewInt(51), + tokenizingShares: false, + expectedExceeds: false, + }, + { + // Cap: 50% - Tokenized Delegation - Delegation Exceeds Threshold + // Total Liquid Stake: 0, Total Stake: 100, New Liquid Stake: 51 + // => 51 / 100 = 51% > 50% cap + name: "50 percent cap _ tokenized delegation _delegation exceeds cap", + globalLiquidCap: math.LegacyMustNewDecFromStr("0.5"), + totalLiquidStake: math.NewInt(0), + totalStake: math.NewInt(100), + newLiquidStake: math.NewInt(51), + tokenizingShares: true, + expectedExceeds: true, + }, + { + // Cap of 0% - everything should exceed + name: "0 percent cap", + globalLiquidCap: math.LegacyZeroDec(), + totalLiquidStake: math.NewInt(0), + totalStake: math.NewInt(1_000_000), + newLiquidStake: math.NewInt(1), + tokenizingShares: false, + expectedExceeds: true, + }, + { + // Cap of 100% - nothing should exceed + name: "100 percent cap", + globalLiquidCap: math.LegacyOneDec(), + totalLiquidStake: math.NewInt(1), + totalStake: math.NewInt(1), + newLiquidStake: math.NewInt(1_000_000), + tokenizingShares: false, + expectedExceeds: false, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + // Update the global liquid staking cap + params, err := stakingKeeper.GetParams(ctx) + require.NoError(t, err) + params.GlobalLiquidStakingCap = tc.globalLiquidCap + stakingKeeper.SetParams(ctx, params) + + // Update the total liquid tokens + stakingKeeper.SetTotalLiquidStakedTokens(ctx, tc.totalLiquidStake) + + // Fund each pool for the given test case + clearPoolBalance(t, *stakingKeeper, accountKeeper, bankKeeper, ctx) + fundPoolBalance(t, *stakingKeeper, bankKeeper, ctx, tc.totalStake) + + // Check if the new tokens would exceed the global cap + actualExceeds, err := stakingKeeper.CheckExceedsGlobalLiquidStakingCap(ctx, tc.newLiquidStake, tc.tokenizingShares) + require.NoError(t, err) + require.Equal(t, tc.expectedExceeds, actualExceeds, tc.name) + }) + } +} + +// Tests SafelyIncreaseTotalLiquidStakedTokens +func TestSafelyIncreaseTotalLiquidStakedTokens(t *testing.T) { + var ( + accountKeeper accountkeeper.AccountKeeper + bankKeeper bankkeeper.Keeper + stakingKeeper *keeper.Keeper + ) + + app, err := simtestutil.Setup( + depinject.Configs(testutil.AppConfig, depinject.Supply(log.NewNopLogger())), + &accountKeeper, + &bankKeeper, + &stakingKeeper, + ) + require.NoError(t, err) + ctx := app.BaseApp.NewContext(false) + + intitialTotalLiquidStaked := math.NewInt(100) + increaseAmount := math.NewInt(10) + poolBalance := math.NewInt(200) + + // Set the total staked and total liquid staked amounts + // which are required components when checking the global cap + // Total stake is calculated from the pool balance + clearPoolBalance(t, *stakingKeeper, accountKeeper, bankKeeper, ctx) + fundPoolBalance(t, *stakingKeeper, bankKeeper, ctx, poolBalance) + stakingKeeper.SetTotalLiquidStakedTokens(ctx, intitialTotalLiquidStaked) + + // Set the global cap such that a small delegation would exceed the cap + params, err := stakingKeeper.GetParams(ctx) + require.NoError(t, err) + params.GlobalLiquidStakingCap = math.LegacyMustNewDecFromStr("0.0001") + stakingKeeper.SetParams(ctx, params) + + // Attempt to increase the total liquid stake again, it should error since + // the cap was exceeded + err = stakingKeeper.SafelyIncreaseTotalLiquidStakedTokens(ctx, increaseAmount, true) + require.ErrorIs(t, err, types.ErrGlobalLiquidStakingCapExceeded) + require.Equal(t, intitialTotalLiquidStaked, stakingKeeper.GetTotalLiquidStakedTokens(ctx)) + + // Now relax the cap so that the increase succeeds + params.GlobalLiquidStakingCap = math.LegacyMustNewDecFromStr("0.99") + stakingKeeper.SetParams(ctx, params) + + // Confirm the total increased + err = stakingKeeper.SafelyIncreaseTotalLiquidStakedTokens(ctx, increaseAmount, true) + require.NoError(t, err) + require.Equal(t, intitialTotalLiquidStaked.Add(increaseAmount), stakingKeeper.GetTotalLiquidStakedTokens(ctx)) +} + +// Test RefreshTotalLiquidStaked +func TestRefreshTotalLiquidStaked(t *testing.T) { + t.Parallel() + f := initFixture(t) + ctx := f.sdkCtx + + var ( + accountKeeper = f.accountKeeper + stakingKeeper = f.stakingKeeper + ) + + // Set an arbitrary total liquid staked tokens amount that will get overwritten by the refresh + stakingKeeper.SetTotalLiquidStakedTokens(ctx, math.NewInt(999)) + + // Add validator's with various exchange rates + validators := []types.Validator{ + { + // Exchange rate of 1 + OperatorAddress: "valA", + Tokens: math.NewInt(100), + DelegatorShares: math.LegacyNewDec(100), + LiquidShares: math.LegacyNewDec(100), // should be overwritten + }, + { + // Exchange rate of 0.9 + OperatorAddress: "valB", + Tokens: math.NewInt(90), + DelegatorShares: math.LegacyNewDec(100), + LiquidShares: math.LegacyNewDec(200), // should be overwritten + }, + { + // Exchange rate of 0.75 + OperatorAddress: "valC", + Tokens: math.NewInt(75), + DelegatorShares: math.LegacyNewDec(100), + LiquidShares: math.LegacyNewDec(300), // should be overwritten + }, + } + + // Add various delegations across the above validator's + // Total Liquid Staked: 1,849 + 922 = 2,771 + // Liquid Shares: + // ValA: 400 + 325 = 725 + // ValB: 860 + 580 = 1,440 + // ValC: 900 + 100 = 1,000 + expectedTotalLiquidStaked := int64(2771) + expectedValidatorLiquidShares := map[string]math.LegacyDec{ + "valA": math.LegacyNewDec(725), + "valB": math.LegacyNewDec(1440), + "valC": math.LegacyNewDec(1000), + } + + delegations := []struct { + delegation types.Delegation + isLSTP bool + isTokenized bool + }{ + // Delegator A - Not a liquid staking provider + // Number of tokens/shares is irrelevant for this test + { + isLSTP: false, + delegation: types.Delegation{ + DelegatorAddress: "delA", + ValidatorAddress: "valA", + Shares: math.LegacyNewDec(100), + }, + }, + { + isLSTP: false, + delegation: types.Delegation{ + DelegatorAddress: "delA", + ValidatorAddress: "valB", + Shares: math.LegacyNewDec(860), + }, + }, + { + isLSTP: false, + delegation: types.Delegation{ + DelegatorAddress: "delA", + ValidatorAddress: "valC", + Shares: math.LegacyNewDec(750), + }, + }, + // Delegator B - Liquid staking provider, tokens included in total + // Total liquid staked: 400 + 774 + 675 = 1,849 + { + // Shares: 400 shares, Exchange Rate: 1.0, Tokens: 400 + isLSTP: true, + delegation: types.Delegation{ + DelegatorAddress: "delB-LSTP", + ValidatorAddress: "valA", + Shares: math.LegacyNewDec(400), + }, + }, + { + // Shares: 860 shares, Exchange Rate: 0.9, Tokens: 774 + isLSTP: true, + delegation: types.Delegation{ + DelegatorAddress: "delB-LSTP", + ValidatorAddress: "valB", + Shares: math.LegacyNewDec(860), + }, + }, + { + // Shares: 900 shares, Exchange Rate: 0.75, Tokens: 675 + isLSTP: true, + delegation: types.Delegation{ + DelegatorAddress: "delB-LSTP", + ValidatorAddress: "valC", + Shares: math.LegacyNewDec(900), + }, + }, + // Delegator C - Tokenized shares, tokens included in total + // Total liquid staked: 325 + 522 + 75 = 922 + { + // Shares: 325 shares, Exchange Rate: 1.0, Tokens: 325 + isTokenized: true, + delegation: types.Delegation{ + DelegatorAddress: "delC-LSTP", + ValidatorAddress: "valA", + Shares: math.LegacyNewDec(325), + }, + }, + { + // Shares: 580 shares, Exchange Rate: 0.9, Tokens: 522 + isTokenized: true, + delegation: types.Delegation{ + DelegatorAddress: "delC-LSTP", + ValidatorAddress: "valB", + Shares: math.LegacyNewDec(580), + }, + }, + { + // Shares: 100 shares, Exchange Rate: 0.75, Tokens: 75 + isTokenized: true, + delegation: types.Delegation{ + DelegatorAddress: "delC-LSTP", + ValidatorAddress: "valC", + Shares: math.LegacyNewDec(100), + }, + }, + } + + // Create validators based on the above (must use an actual validator address) + addresses := simtestutil.AddTestAddrsIncremental(f.bankKeeper, f.stakingKeeper, ctx, 5, f.stakingKeeper.TokensFromConsensusPower(ctx, 300)) + validatorAddresses := map[string]sdk.ValAddress{ + "valA": sdk.ValAddress(addresses[0]), + "valB": sdk.ValAddress(addresses[1]), + "valC": sdk.ValAddress(addresses[2]), + } + for _, validator := range validators { + validator.OperatorAddress = validatorAddresses[validator.OperatorAddress].String() + f.stakingKeeper.SetValidator(ctx, validator) + } + + // Create the delegations based on the above (must use actual delegator addresses) + for _, delegationCase := range delegations { + var delegatorAddress sdk.AccAddress + switch { + case delegationCase.isLSTP: + delegatorAddress = createICAAccount(ctx, accountKeeper) + case delegationCase.isTokenized: + delegatorAddress = createTokenizeShareModuleAccount(1) + default: + delegatorAddress = createBaseAccount(accountKeeper, ctx, delegationCase.delegation.DelegatorAddress) + } + + delegation := delegationCase.delegation + delegation.DelegatorAddress = delegatorAddress.String() + delegation.ValidatorAddress = validatorAddresses[delegation.ValidatorAddress].String() + f.stakingKeeper.SetDelegation(ctx, delegation) + } + + // Refresh the total liquid staked and validator liquid shares + err := f.stakingKeeper.RefreshTotalLiquidStaked(ctx) + require.NoError(t, err, "no error expected when refreshing total liquid staked") + + // Check the total liquid staked and liquid shares by validator + actualTotalLiquidStaked := f.stakingKeeper.GetTotalLiquidStakedTokens(ctx) + require.Equal(t, expectedTotalLiquidStaked, actualTotalLiquidStaked.Int64(), "total liquid staked tokens") + + for _, moniker := range []string{"valA", "valB", "valC"} { + address := validatorAddresses[moniker] + expectedLiquidShares := expectedValidatorLiquidShares[moniker] + + actualValidator, err := f.stakingKeeper.GetValidator(ctx, address) + require.True(t, !errors.Is(err, types.ErrNoValidatorFound), "validator %s should have been found after refresh", moniker) + + actualLiquidShares := actualValidator.LiquidShares + require.Equal(t, expectedLiquidShares.TruncateInt64(), actualLiquidShares.TruncateInt64(), + "liquid staked shares for validator %s", moniker) + } +} diff --git a/tests/integration/staking/keeper/msg_server_test.go b/tests/integration/staking/keeper/msg_server_test.go index f84c305795dc..578ba26cafaa 100644 --- a/tests/integration/staking/keeper/msg_server_test.go +++ b/tests/integration/staking/keeper/msg_server_test.go @@ -1,18 +1,32 @@ package keeper_test import ( + "errors" + "fmt" + "sync/atomic" "testing" "time" + "github.com/stretchr/testify/require" "gotest.tools/v3/assert" + "cosmossdk.io/depinject" + "cosmossdk.io/log" "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/codec/address" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/x/bank/testutil" + sdkaddress "github.com/cosmos/cosmos-sdk/types/address" + accountkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + vesting "github.com/cosmos/cosmos-sdk/x/auth/vesting/exported" + vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + banktestutil "github.com/cosmos/cosmos-sdk/x/bank/testutil" + minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" "github.com/cosmos/cosmos-sdk/x/staking/keeper" + "github.com/cosmos/cosmos-sdk/x/staking/testutil" "github.com/cosmos/cosmos-sdk/x/staking/types" ) @@ -29,7 +43,7 @@ func TestCancelUnbondingDelegation(t *testing.T) { notBondedPool := f.stakingKeeper.GetNotBondedPool(ctx) startTokens := f.stakingKeeper.TokensFromConsensusPower(ctx, 5) - assert.NilError(t, testutil.FundModuleAccount(ctx, f.bankKeeper, notBondedPool.GetName(), sdk.NewCoins(sdk.NewCoin(bondDenom, startTokens)))) + assert.NilError(t, banktestutil.FundModuleAccount(ctx, f.bankKeeper, notBondedPool.GetName(), sdk.NewCoins(sdk.NewCoin(bondDenom, startTokens)))) f.accountKeeper.SetModuleAccount(ctx, notBondedPool) moduleBalance := f.bankKeeper.GetBalance(ctx, notBondedPool.GetAddress(), bondDenom) @@ -173,3 +187,1722 @@ func TestCancelUnbondingDelegation(t *testing.T) { }) } } + +func TestTokenizeSharesAndRedeemTokens(t *testing.T) { + t.Parallel() + f := initFixture(t) + + ctx := f.sdkCtx + + stakingKeeper := f.stakingKeeper + + liquidStakingCapStrict := math.LegacyZeroDec() + liquidStakingCapConservative := math.LegacyMustNewDecFromStr("0.8") + liquidStakingCapDisabled := math.LegacyOneDec() + + validatorBondStrict := math.LegacyOneDec() + validatorBondConservative := math.LegacyNewDec(10) + validatorBondDisabled := math.LegacyNewDec(-1) + + testCases := []struct { + name string + vestingAmount math.Int + delegationAmount math.Int + tokenizeShareAmount math.Int + redeemAmount math.Int + targetVestingDelAfterShare math.Int + targetVestingDelAfterRedeem math.Int + globalLiquidStakingCap math.LegacyDec + slashFactor math.LegacyDec + validatorLiquidStakingCap math.LegacyDec + validatorBondFactor math.LegacyDec + validatorBondDelegation bool + validatorBondDelegatorIndex int + delegatorIsLSTP bool + expTokenizeErr bool + expRedeemErr bool + prevAccountDelegationExists bool + recordAccountDelegationExists bool + }{ + { + name: "full amount tokenize and redeem", + vestingAmount: math.NewInt(0), + delegationAmount: stakingKeeper.TokensFromConsensusPower(ctx, 20), + tokenizeShareAmount: stakingKeeper.TokensFromConsensusPower(ctx, 20), + redeemAmount: stakingKeeper.TokensFromConsensusPower(ctx, 20), + slashFactor: math.LegacyZeroDec(), + globalLiquidStakingCap: liquidStakingCapDisabled, + validatorLiquidStakingCap: liquidStakingCapDisabled, + validatorBondFactor: validatorBondDisabled, + validatorBondDelegation: false, + expTokenizeErr: false, + expRedeemErr: false, + prevAccountDelegationExists: false, + recordAccountDelegationExists: false, + }, + { + name: "full amount tokenize and partial redeem", + vestingAmount: math.NewInt(0), + delegationAmount: stakingKeeper.TokensFromConsensusPower(ctx, 20), + tokenizeShareAmount: stakingKeeper.TokensFromConsensusPower(ctx, 20), + redeemAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + slashFactor: math.LegacyZeroDec(), + globalLiquidStakingCap: liquidStakingCapDisabled, + validatorLiquidStakingCap: liquidStakingCapDisabled, + validatorBondFactor: validatorBondDisabled, + validatorBondDelegation: false, + expTokenizeErr: false, + expRedeemErr: false, + prevAccountDelegationExists: false, + recordAccountDelegationExists: true, + }, + { + name: "partial amount tokenize and full redeem", + vestingAmount: math.NewInt(0), + delegationAmount: stakingKeeper.TokensFromConsensusPower(ctx, 20), + tokenizeShareAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + redeemAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + slashFactor: math.LegacyZeroDec(), + globalLiquidStakingCap: liquidStakingCapDisabled, + validatorLiquidStakingCap: liquidStakingCapDisabled, + validatorBondFactor: validatorBondDisabled, + validatorBondDelegation: false, + expTokenizeErr: false, + expRedeemErr: false, + prevAccountDelegationExists: true, + recordAccountDelegationExists: false, + }, + { + name: "tokenize and redeem with slash", + vestingAmount: math.NewInt(0), + delegationAmount: stakingKeeper.TokensFromConsensusPower(ctx, 20), + tokenizeShareAmount: stakingKeeper.TokensFromConsensusPower(ctx, 20), + redeemAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + slashFactor: math.LegacyMustNewDecFromStr("0.1"), + globalLiquidStakingCap: liquidStakingCapDisabled, + validatorLiquidStakingCap: liquidStakingCapDisabled, + validatorBondFactor: validatorBondDisabled, + validatorBondDelegation: false, + expTokenizeErr: false, + expRedeemErr: false, + prevAccountDelegationExists: false, + recordAccountDelegationExists: true, + }, + { + name: "over tokenize", + vestingAmount: math.NewInt(0), + delegationAmount: stakingKeeper.TokensFromConsensusPower(ctx, 20), + tokenizeShareAmount: stakingKeeper.TokensFromConsensusPower(ctx, 30), + redeemAmount: stakingKeeper.TokensFromConsensusPower(ctx, 20), + slashFactor: math.LegacyZeroDec(), + globalLiquidStakingCap: liquidStakingCapDisabled, + validatorLiquidStakingCap: liquidStakingCapDisabled, + validatorBondFactor: validatorBondDisabled, + validatorBondDelegation: false, + expTokenizeErr: true, + expRedeemErr: false, + }, + { + name: "over redeem", + vestingAmount: math.NewInt(0), + delegationAmount: stakingKeeper.TokensFromConsensusPower(ctx, 20), + tokenizeShareAmount: stakingKeeper.TokensFromConsensusPower(ctx, 20), + redeemAmount: stakingKeeper.TokensFromConsensusPower(ctx, 40), + slashFactor: math.LegacyZeroDec(), + globalLiquidStakingCap: liquidStakingCapDisabled, + validatorLiquidStakingCap: liquidStakingCapDisabled, + validatorBondFactor: validatorBondDisabled, + validatorBondDelegation: false, + expTokenizeErr: false, + expRedeemErr: true, + }, + { + name: "vesting account tokenize share failure", + vestingAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + delegationAmount: stakingKeeper.TokensFromConsensusPower(ctx, 20), + tokenizeShareAmount: stakingKeeper.TokensFromConsensusPower(ctx, 20), + redeemAmount: stakingKeeper.TokensFromConsensusPower(ctx, 20), + slashFactor: math.LegacyZeroDec(), + globalLiquidStakingCap: liquidStakingCapDisabled, + validatorLiquidStakingCap: liquidStakingCapDisabled, + validatorBondFactor: validatorBondDisabled, + validatorBondDelegation: false, + expTokenizeErr: true, + expRedeemErr: false, + prevAccountDelegationExists: true, + }, + { + name: "vesting account tokenize share success", + vestingAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + delegationAmount: stakingKeeper.TokensFromConsensusPower(ctx, 20), + tokenizeShareAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + redeemAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + targetVestingDelAfterShare: stakingKeeper.TokensFromConsensusPower(ctx, 10), + targetVestingDelAfterRedeem: stakingKeeper.TokensFromConsensusPower(ctx, 10), + slashFactor: math.LegacyZeroDec(), + globalLiquidStakingCap: liquidStakingCapDisabled, + validatorLiquidStakingCap: liquidStakingCapDisabled, + validatorBondFactor: validatorBondDisabled, + validatorBondDelegation: false, + expTokenizeErr: false, + expRedeemErr: false, + prevAccountDelegationExists: true, + }, + { + name: "try tokenize share for a validator-bond delegation", + vestingAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + delegationAmount: stakingKeeper.TokensFromConsensusPower(ctx, 20), + tokenizeShareAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + redeemAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + targetVestingDelAfterShare: stakingKeeper.TokensFromConsensusPower(ctx, 10), + targetVestingDelAfterRedeem: stakingKeeper.TokensFromConsensusPower(ctx, 10), + slashFactor: math.LegacyZeroDec(), + globalLiquidStakingCap: liquidStakingCapDisabled, + validatorLiquidStakingCap: liquidStakingCapDisabled, + validatorBondFactor: validatorBondConservative, + validatorBondDelegation: true, + validatorBondDelegatorIndex: 1, + expTokenizeErr: true, + expRedeemErr: false, + prevAccountDelegationExists: true, + }, + { + name: "strict validator-bond - tokenization fails", + vestingAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + delegationAmount: stakingKeeper.TokensFromConsensusPower(ctx, 20), + tokenizeShareAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + redeemAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + targetVestingDelAfterShare: stakingKeeper.TokensFromConsensusPower(ctx, 10), + targetVestingDelAfterRedeem: stakingKeeper.TokensFromConsensusPower(ctx, 10), + slashFactor: math.LegacyZeroDec(), + globalLiquidStakingCap: liquidStakingCapDisabled, + validatorLiquidStakingCap: liquidStakingCapDisabled, + validatorBondFactor: validatorBondStrict, + validatorBondDelegation: false, + expTokenizeErr: true, + expRedeemErr: false, + prevAccountDelegationExists: true, + }, + { + name: "conservative validator-bond - successful tokenization", + vestingAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + delegationAmount: stakingKeeper.TokensFromConsensusPower(ctx, 20), + tokenizeShareAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + redeemAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + targetVestingDelAfterShare: stakingKeeper.TokensFromConsensusPower(ctx, 10), + targetVestingDelAfterRedeem: stakingKeeper.TokensFromConsensusPower(ctx, 10), + slashFactor: math.LegacyZeroDec(), + globalLiquidStakingCap: liquidStakingCapDisabled, + validatorLiquidStakingCap: liquidStakingCapDisabled, + validatorBondFactor: validatorBondConservative, + validatorBondDelegation: true, + validatorBondDelegatorIndex: 0, + expTokenizeErr: false, + expRedeemErr: false, + prevAccountDelegationExists: true, + }, + { + name: "strict global liquid staking cap - tokenization fails", + vestingAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + delegationAmount: stakingKeeper.TokensFromConsensusPower(ctx, 20), + tokenizeShareAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + redeemAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + targetVestingDelAfterShare: stakingKeeper.TokensFromConsensusPower(ctx, 10), + targetVestingDelAfterRedeem: stakingKeeper.TokensFromConsensusPower(ctx, 10), + slashFactor: math.LegacyZeroDec(), + globalLiquidStakingCap: liquidStakingCapStrict, + validatorLiquidStakingCap: liquidStakingCapDisabled, + validatorBondFactor: validatorBondDisabled, + validatorBondDelegation: true, + validatorBondDelegatorIndex: 0, + expTokenizeErr: true, + expRedeemErr: false, + prevAccountDelegationExists: true, + }, + { + name: "conservative global liquid staking cap - successful tokenization", + vestingAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + delegationAmount: stakingKeeper.TokensFromConsensusPower(ctx, 20), + tokenizeShareAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + redeemAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + targetVestingDelAfterShare: stakingKeeper.TokensFromConsensusPower(ctx, 10), + targetVestingDelAfterRedeem: stakingKeeper.TokensFromConsensusPower(ctx, 10), + slashFactor: math.LegacyZeroDec(), + globalLiquidStakingCap: liquidStakingCapConservative, + validatorLiquidStakingCap: liquidStakingCapDisabled, + validatorBondFactor: validatorBondDisabled, + validatorBondDelegation: true, + validatorBondDelegatorIndex: 0, + expTokenizeErr: false, + expRedeemErr: false, + prevAccountDelegationExists: true, + }, + { + name: "strict validator liquid staking cap - tokenization fails", + vestingAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + delegationAmount: stakingKeeper.TokensFromConsensusPower(ctx, 20), + tokenizeShareAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + redeemAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + targetVestingDelAfterShare: stakingKeeper.TokensFromConsensusPower(ctx, 10), + targetVestingDelAfterRedeem: stakingKeeper.TokensFromConsensusPower(ctx, 10), + slashFactor: math.LegacyZeroDec(), + globalLiquidStakingCap: liquidStakingCapDisabled, + validatorLiquidStakingCap: liquidStakingCapStrict, + validatorBondFactor: validatorBondDisabled, + validatorBondDelegation: true, + validatorBondDelegatorIndex: 0, + expTokenizeErr: true, + expRedeemErr: false, + prevAccountDelegationExists: true, + }, + { + name: "conservative validator liquid staking cap - successful tokenization", + vestingAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + delegationAmount: stakingKeeper.TokensFromConsensusPower(ctx, 20), + tokenizeShareAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + redeemAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + targetVestingDelAfterShare: stakingKeeper.TokensFromConsensusPower(ctx, 10), + targetVestingDelAfterRedeem: stakingKeeper.TokensFromConsensusPower(ctx, 10), + slashFactor: math.LegacyZeroDec(), + globalLiquidStakingCap: liquidStakingCapDisabled, + validatorLiquidStakingCap: liquidStakingCapConservative, + validatorBondFactor: validatorBondDisabled, + validatorBondDelegation: true, + validatorBondDelegatorIndex: 0, + expTokenizeErr: false, + expRedeemErr: false, + prevAccountDelegationExists: true, + }, + { + name: "all caps set conservatively - successful tokenize share", + vestingAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + delegationAmount: stakingKeeper.TokensFromConsensusPower(ctx, 20), + tokenizeShareAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + redeemAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + targetVestingDelAfterShare: stakingKeeper.TokensFromConsensusPower(ctx, 10), + targetVestingDelAfterRedeem: stakingKeeper.TokensFromConsensusPower(ctx, 10), + slashFactor: math.LegacyZeroDec(), + globalLiquidStakingCap: liquidStakingCapConservative, + validatorLiquidStakingCap: liquidStakingCapConservative, + validatorBondFactor: validatorBondConservative, + validatorBondDelegation: true, + validatorBondDelegatorIndex: 0, + expTokenizeErr: false, + expRedeemErr: false, + prevAccountDelegationExists: true, + }, + { + name: "delegator is a liquid staking provider - accounting should not update", + vestingAmount: math.ZeroInt(), + delegationAmount: stakingKeeper.TokensFromConsensusPower(ctx, 20), + tokenizeShareAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + redeemAmount: stakingKeeper.TokensFromConsensusPower(ctx, 10), + targetVestingDelAfterShare: stakingKeeper.TokensFromConsensusPower(ctx, 10), + targetVestingDelAfterRedeem: stakingKeeper.TokensFromConsensusPower(ctx, 10), + slashFactor: math.LegacyZeroDec(), + globalLiquidStakingCap: liquidStakingCapConservative, + validatorLiquidStakingCap: liquidStakingCapConservative, + validatorBondFactor: validatorBondConservative, + delegatorIsLSTP: true, + validatorBondDelegation: true, + validatorBondDelegatorIndex: 0, + expTokenizeErr: false, + expRedeemErr: false, + prevAccountDelegationExists: true, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + tc := tc + t.Parallel() + f := initFixture(t) + + ctx := f.sdkCtx + var ( + bankKeeper = f.bankKeeper + accountKeeper = f.accountKeeper + stakingKeeper = f.stakingKeeper + ) + addrs := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 2, stakingKeeper.TokensFromConsensusPower(ctx, 10000)) + addrAcc1, addrAcc2 := addrs[0], addrs[1] + addrVal1, addrVal2 := sdk.ValAddress(addrAcc1), sdk.ValAddress(addrAcc2) + + // Create ICA module account + icaAccountAddress := createICAAccount(ctx, accountKeeper) + + // Fund module account + bondDenom, err := stakingKeeper.BondDenom(ctx) + require.NoError(t, err) + delegationCoin := sdk.NewCoin(bondDenom, tc.delegationAmount) + err = bankKeeper.MintCoins(ctx, minttypes.ModuleName, sdk.NewCoins(delegationCoin)) + require.NoError(t, err) + err = bankKeeper.SendCoinsFromModuleToAccount(ctx, minttypes.ModuleName, icaAccountAddress, sdk.NewCoins(delegationCoin)) + require.NoError(t, err) + + // set the delegator address depending on whether the delegator should be a liquid staking provider + delegatorAccount := addrAcc2 + if tc.delegatorIsLSTP { + delegatorAccount = icaAccountAddress + } + + // set validator bond factor and global liquid staking cap + params, err := stakingKeeper.GetParams(ctx) + require.NoError(t, err) + params.ValidatorBondFactor = tc.validatorBondFactor + params.GlobalLiquidStakingCap = tc.globalLiquidStakingCap + params.ValidatorLiquidStakingCap = tc.validatorLiquidStakingCap + stakingKeeper.SetParams(ctx, params) + + // set the total liquid staked tokens + stakingKeeper.SetTotalLiquidStakedTokens(ctx, math.ZeroInt()) + + if !tc.vestingAmount.IsZero() { + // create vesting account + acc2 := accountKeeper.GetAccount(ctx, addrAcc2).(*authtypes.BaseAccount) + initialVesting := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, tc.vestingAmount)) + baseVestingWithCoins, err := vestingtypes.NewBaseVestingAccount(acc2, initialVesting, time.Now().Unix()+86400*365) + require.NoError(t, err) + delayedVestingAccount := vestingtypes.NewDelayedVestingAccountRaw(baseVestingWithCoins) + accountKeeper.SetAccount(ctx, delayedVestingAccount) + } + + pubKeys := simtestutil.CreateTestPubKeys(2) + pk1, pk2 := pubKeys[0], pubKeys[1] + + // Create Validators and Delegation + val1 := testutil.NewValidator(t, addrVal1, pk1) + val1.Status = types.Bonded + stakingKeeper.SetValidator(ctx, val1) + stakingKeeper.SetValidatorByPowerIndex(ctx, val1) + err = stakingKeeper.SetValidatorByConsAddr(ctx, val1) + require.NoError(t, err) + + val2 := testutil.NewValidator(t, addrVal2, pk2) + val2.Status = types.Bonded + stakingKeeper.SetValidator(ctx, val2) + stakingKeeper.SetValidatorByPowerIndex(ctx, val2) + err = stakingKeeper.SetValidatorByConsAddr(ctx, val2) + require.NoError(t, err) + + // Delegate from both the main delegator as well as a random account so there is a + // non-zero delegation after redemption + err = delegateCoinsFromAccount(ctx, *stakingKeeper, delegatorAccount, tc.delegationAmount, val1) + require.NoError(t, err) + + // apply TM updates + applyValidatorSetUpdates(t, ctx, stakingKeeper, -1) + + _, err = stakingKeeper.GetDelegation(ctx, delegatorAccount, addrVal1) + require.NoError(t, err, "delegation not found after delegate") + + lastRecordID := stakingKeeper.GetLastTokenizeShareRecordID(ctx) + oldValidator, err := stakingKeeper.GetValidator(ctx, addrVal1) + require.NoError(t, err) + + msgServer := keeper.NewMsgServerImpl(stakingKeeper) + if tc.validatorBondDelegation { + err := delegateCoinsFromAccount(ctx, *stakingKeeper, addrs[tc.validatorBondDelegatorIndex], tc.delegationAmount, val1) + require.NoError(t, err) + _, err = msgServer.ValidatorBond(ctx, &types.MsgValidatorBond{ + DelegatorAddress: addrs[tc.validatorBondDelegatorIndex].String(), + ValidatorAddress: addrVal1.String(), + }) + require.NoError(t, err) + } + + resp, err := msgServer.TokenizeShares(ctx, &types.MsgTokenizeShares{ + DelegatorAddress: delegatorAccount.String(), + ValidatorAddress: addrVal1.String(), + Amount: sdk.NewCoin(bondDenom, tc.tokenizeShareAmount), + TokenizedShareOwner: delegatorAccount.String(), + }) + if tc.expTokenizeErr { + require.Error(t, err) + return + } + require.NoError(t, err) + + // check last record id increase + require.Equal(t, lastRecordID+1, stakingKeeper.GetLastTokenizeShareRecordID(ctx)) + + // ensure validator's total tokens is consistent + newValidator, err := stakingKeeper.GetValidator(ctx, addrVal1) + require.NoError(t, err) + require.Equal(t, oldValidator.Tokens, newValidator.Tokens) + + // if the delegator was not a provider, check that the total liquid staked and validator liquid shares increased + totalLiquidTokensAfterTokenization := stakingKeeper.GetTotalLiquidStakedTokens(ctx) + validatorLiquidSharesAfterTokenization := newValidator.LiquidShares + if !tc.delegatorIsLSTP { + require.Equal(t, tc.tokenizeShareAmount.String(), totalLiquidTokensAfterTokenization.String(), "total liquid tokens after tokenization") + require.Equal(t, tc.tokenizeShareAmount.String(), validatorLiquidSharesAfterTokenization.TruncateInt().String(), "validator liquid shares after tokenization") + } else { + require.True(t, totalLiquidTokensAfterTokenization.IsZero(), "zero liquid tokens after tokenization") + require.True(t, validatorLiquidSharesAfterTokenization.IsZero(), "zero liquid validator shares after tokenization") + } + + if tc.vestingAmount.IsPositive() { + acc := accountKeeper.GetAccount(ctx, addrAcc2) + vestingAcc := acc.(vesting.VestingAccount) + require.Equal(t, vestingAcc.GetDelegatedVesting().AmountOf(bondDenom).String(), tc.targetVestingDelAfterShare.String()) + } + + if tc.prevAccountDelegationExists { + _, err = stakingKeeper.GetDelegation(ctx, delegatorAccount, addrVal1) + require.NoError(t, err, "delegation not found after partial tokenize share") + } else { + _, err = stakingKeeper.GetDelegation(ctx, delegatorAccount, addrVal1) + require.ErrorIs(t, err, types.ErrNoDelegation, "delegation found after full tokenize share") + } + + shareToken := bankKeeper.GetBalance(ctx, delegatorAccount, resp.Amount.Denom) + require.Equal(t, resp.Amount, shareToken) + _, err = stakingKeeper.GetValidator(ctx, addrVal1) + require.NoError(t, err, "validator not found") + + records := stakingKeeper.GetAllTokenizeShareRecords(ctx) + require.Len(t, records, 1) + delegation, err := stakingKeeper.GetDelegation(ctx, records[0].GetModuleAddress(), addrVal1) + require.NoError(t, err, "delegation not found from tokenize share module account after tokenize share") + + // slash before redeem + slashedTokens := math.ZeroInt() + redeemedShares := tc.redeemAmount + redeemedTokens := tc.redeemAmount + if tc.slashFactor.IsPositive() { + consAddr, err := val1.GetConsAddr() + require.NoError(t, err) + ctx = ctx.WithBlockHeight(100) + val1, err = stakingKeeper.GetValidator(ctx, addrVal1) + require.NoError(t, err) + power := stakingKeeper.TokensToConsensusPower(ctx, val1.Tokens) + stakingKeeper.Slash(ctx, consAddr, 10, power, tc.slashFactor) + slashedTokens = math.LegacyNewDecFromInt(val1.Tokens).Mul(tc.slashFactor).TruncateInt() + + val1, _ := stakingKeeper.GetValidator(ctx, addrVal1) + redeemedTokens = val1.TokensFromShares(math.LegacyNewDecFromInt(redeemedShares)).TruncateInt() + } + + // get delegator balance and delegation + bondDenomAmountBefore := bankKeeper.GetBalance(ctx, delegatorAccount, bondDenom) + val1, err = stakingKeeper.GetValidator(ctx, addrVal1) + require.NoError(t, err) + delegation, err = stakingKeeper.GetDelegation(ctx, delegatorAccount, addrVal1) + if errors.Is(err, types.ErrNoDelegation) { + delegation = types.Delegation{Shares: math.LegacyZeroDec()} + } + delAmountBefore := val1.TokensFromShares(delegation.Shares) + oldValidator, err = stakingKeeper.GetValidator(ctx, addrVal1) + require.NoError(t, err) + + _, err = msgServer.RedeemTokensForShares(ctx, &types.MsgRedeemTokensForShares{ + DelegatorAddress: delegatorAccount.String(), + Amount: sdk.NewCoin(resp.Amount.Denom, tc.redeemAmount), + }) + if tc.expRedeemErr { + require.Error(t, err) + return + } + require.NoError(t, err) + + // ensure validator's total tokens is consistent + newValidator, err = stakingKeeper.GetValidator(ctx, addrVal1) + require.NoError(t, err) + require.Equal(t, oldValidator.Tokens, newValidator.Tokens) + + // if the delegator was not a liquid staking provider, check that the total liquid staked + // and liquid shares decreased + totalLiquidTokensAfterRedemption := stakingKeeper.GetTotalLiquidStakedTokens(ctx) + validatorLiquidSharesAfterRedemption := newValidator.LiquidShares + expectedLiquidTokens := totalLiquidTokensAfterTokenization.Sub(redeemedTokens).Sub(slashedTokens) + expectedLiquidShares := validatorLiquidSharesAfterTokenization.Sub(math.LegacyNewDecFromInt(redeemedShares)) + if !tc.delegatorIsLSTP { + require.Equal(t, expectedLiquidTokens.String(), totalLiquidTokensAfterRedemption.String(), "total liquid tokens after redemption") + require.Equal(t, expectedLiquidShares.String(), validatorLiquidSharesAfterRedemption.String(), "validator liquid shares after tokenization") + } else { + require.True(t, totalLiquidTokensAfterRedemption.IsZero(), "zero liquid tokens after redemption") + require.True(t, validatorLiquidSharesAfterRedemption.IsZero(), "zero liquid validator shares after redemption") + } + + if tc.vestingAmount.IsPositive() { + acc := accountKeeper.GetAccount(ctx, addrAcc2) + vestingAcc := acc.(vesting.VestingAccount) + require.Equal(t, vestingAcc.GetDelegatedVesting().AmountOf(bondDenom).String(), tc.targetVestingDelAfterRedeem.String()) + } + + expectedDelegatedShares := math.LegacyNewDecFromInt(tc.delegationAmount.Sub(tc.tokenizeShareAmount).Add(tc.redeemAmount)) + delegation, err = stakingKeeper.GetDelegation(ctx, delegatorAccount, addrVal1) + require.NoError(t, err, "delegation not found after redeem tokens") + require.Equal(t, delegatorAccount.String(), delegation.DelegatorAddress) + require.Equal(t, addrVal1.String(), delegation.ValidatorAddress) + require.Equal(t, expectedDelegatedShares, delegation.Shares, "delegation shares after redeem") + + // check delegator balance is not changed + bondDenomAmountAfter := bankKeeper.GetBalance(ctx, delegatorAccount, bondDenom) + require.Equal(t, bondDenomAmountAfter.Amount.String(), bondDenomAmountBefore.Amount.String()) + + // get delegation amount is changed correctly + val1, err = stakingKeeper.GetValidator(ctx, addrVal1) + require.NoError(t, err) + delegation, err = stakingKeeper.GetDelegation(ctx, delegatorAccount, addrVal1) + if errors.Is(err, types.ErrNoDelegation) { + delegation = types.Delegation{Shares: math.LegacyZeroDec()} + } + delAmountAfter := val1.TokensFromShares(delegation.Shares) + require.Equal(t, delAmountAfter.String(), delAmountBefore.Add(math.LegacyNewDecFromInt(tc.redeemAmount).Mul(math.LegacyOneDec().Sub(tc.slashFactor))).String()) + + shareToken = bankKeeper.GetBalance(ctx, delegatorAccount, resp.Amount.Denom) + require.Equal(t, shareToken.Amount.String(), tc.tokenizeShareAmount.Sub(tc.redeemAmount).String()) + _, err = stakingKeeper.GetValidator(ctx, addrVal1) + require.NoError(t, err, "validator not found") + + if tc.recordAccountDelegationExists { + _, err = stakingKeeper.GetDelegation(ctx, records[0].GetModuleAddress(), addrVal1) + require.NoError(t, err, "delegation not found from tokenize share module account after redeem partial amount") + + records = stakingKeeper.GetAllTokenizeShareRecords(ctx) + require.Len(t, records, 1) + } else { + _, err = stakingKeeper.GetDelegation(ctx, records[0].GetModuleAddress(), addrVal1) + require.True(t, errors.Is(err, types.ErrNoDelegation), "delegation found from tokenize share module account after redeem full amount") + + records = stakingKeeper.GetAllTokenizeShareRecords(ctx) + require.Len(t, records, 0) + } + }) + } +} + +func TestRedelegationTokenization(t *testing.T) { + // Test that a delegator with ongoing redelegation cannot + // tokenize any shares until the redelegation is complete. + f := initFixture(t) + + ctx := f.sdkCtx + var ( + stakingKeeper = f.stakingKeeper + bankKeeper = f.bankKeeper + ) + msgServer := keeper.NewMsgServerImpl(stakingKeeper) + pubKeys := simtestutil.CreateTestPubKeys(1) + pk1 := pubKeys[0] + + // Create Validators and Delegation + addrs := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 2, stakingKeeper.TokensFromConsensusPower(ctx, 10000)) + alice := addrs[0] + + validatorAAddress := sdk.ValAddress(addrs[1]) + val1 := testutil.NewValidator(t, validatorAAddress, pk1) + val1.Status = types.Bonded + stakingKeeper.SetValidator(ctx, val1) + stakingKeeper.SetValidatorByPowerIndex(ctx, val1) + err := stakingKeeper.SetValidatorByConsAddr(ctx, val1) + require.NoError(t, err) + + _, validatorBAddress := setupTestTokenizeAndRedeemConversion(t, *stakingKeeper, bankKeeper, ctx) + + delegateAmount := sdk.TokensFromConsensusPower(10, sdk.DefaultPowerReduction) + bondedDenom, err := stakingKeeper.BondDenom(ctx) + require.NoError(t, err) + delegateCoin := sdk.NewCoin(bondedDenom, delegateAmount) + + // Alice delegates to validatorA + _, err = msgServer.Delegate(ctx, &types.MsgDelegate{ + DelegatorAddress: alice.String(), + ValidatorAddress: validatorAAddress.String(), + Amount: delegateCoin, + }) + require.NoError(t, err) + + // Alice redelegates to validatorB + redelegateAmount := sdk.TokensFromConsensusPower(5, sdk.DefaultPowerReduction) + redelegateCoin := sdk.NewCoin(bondedDenom, redelegateAmount) + _, err = msgServer.BeginRedelegate(ctx, &types.MsgBeginRedelegate{ + DelegatorAddress: alice.String(), + ValidatorSrcAddress: validatorAAddress.String(), + ValidatorDstAddress: validatorBAddress.String(), + Amount: redelegateCoin, + }) + require.NoError(t, err) + + redelegation, err := stakingKeeper.GetRedelegations(ctx, alice, uint16(10)) + require.NoError(t, err) + require.Len(t, redelegation, 1, "expect one redelegation") + require.Len(t, redelegation[0].Entries, 1, "expect one redelegation entry") + + // Alice attempts to tokenize the redelegation, but this fails because the redelegation is ongoing + tokenizedAmount := sdk.TokensFromConsensusPower(5, sdk.DefaultPowerReduction) + tokenizedCoin := sdk.NewCoin(bondedDenom, tokenizedAmount) + _, err = msgServer.TokenizeShares(ctx, &types.MsgTokenizeShares{ + DelegatorAddress: alice.String(), + ValidatorAddress: validatorBAddress.String(), + Amount: tokenizedCoin, + TokenizedShareOwner: alice.String(), + }) + require.Error(t, err) + require.Equal(t, types.ErrRedelegationInProgress, err) + + // Check that the redelegation is still present + redelegation, err = stakingKeeper.GetRedelegations(ctx, alice, uint16(10)) + require.NoError(t, err) + require.Len(t, redelegation, 1, "expect one redelegation") + require.Len(t, redelegation[0].Entries, 1, "expect one redelegation entry") + + // advance time until the redelegations should mature + // end block + f.stakingKeeper.EndBlocker(ctx) + ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) + // advance by 22 days + ctx = ctx.WithBlockTime(ctx.BlockTime().Add(22 * 24 * time.Hour)) + headerInfo := ctx.HeaderInfo() + headerInfo.Time = ctx.BlockHeader().Time + headerInfo.Height = ctx.BlockHeader().Height + ctx = ctx.WithHeaderInfo(headerInfo) + // begin block + f.stakingKeeper.BeginBlocker(ctx) + // end block + f.stakingKeeper.EndBlocker(ctx) + + // check that the redelegation is removed + redelegation, err = stakingKeeper.GetRedelegations(ctx, alice, uint16(10)) + require.NoError(t, err) + require.Len(t, redelegation, 0, "expect no redelegations") + + // Alice attempts to tokenize the redelegation again, and this time it should succeed + // because there is no ongoing redelegation + _, err = msgServer.TokenizeShares(ctx, &types.MsgTokenizeShares{ + DelegatorAddress: alice.String(), + ValidatorAddress: validatorBAddress.String(), + Amount: tokenizedCoin, + TokenizedShareOwner: alice.String(), + }) + require.NoError(t, err) + + // Check that the tokenization was successful + shareRecord, err := stakingKeeper.GetTokenizeShareRecord(ctx, stakingKeeper.GetLastTokenizeShareRecordID(ctx)) + require.NoError(t, err, "expect to find token share record") + require.Equal(t, alice.String(), shareRecord.Owner) + require.Equal(t, validatorBAddress.String(), shareRecord.Validator) +} + +// Helper function to setup a delegator and validator for the Tokenize/Redeem conversion tests +func setupTestTokenizeAndRedeemConversion( + t *testing.T, + sk keeper.Keeper, + bk bankkeeper.Keeper, + ctx sdk.Context, +) (delAddress sdk.AccAddress, valAddress sdk.ValAddress) { + addresses := simtestutil.AddTestAddrs(bk, sk, ctx, 2, math.NewInt(1_000_000)) + + pubKeys := simtestutil.CreateTestPubKeys(1) + + delegatorAddress := addresses[0] + validatorAddress := sdk.ValAddress(addresses[1]) + + validator, err := types.NewValidator(validatorAddress.String(), pubKeys[0], types.Description{}) + require.NoError(t, err) + validator.DelegatorShares = math.LegacyNewDec(1_000_000) + validator.Tokens = math.NewInt(1_000_000) + validator.LiquidShares = math.LegacyNewDec(0) + validator.Status = types.Bonded + + sk.SetValidator(ctx, validator) + sk.SetValidatorByConsAddr(ctx, validator) + + return delegatorAddress, validatorAddress +} + +// Simulate a slash by decrementing the validator's tokens +// We'll do this in a way such that the exchange rate is not an even integer +// and the shares associated with a delegation will have a long decimal +func simulateSlashWithImprecision(t *testing.T, sk keeper.Keeper, ctx sdk.Context, valAddress sdk.ValAddress) { + validator, err := sk.GetValidator(ctx, valAddress) + require.NoError(t, err) + + slashMagnitude := math.LegacyMustNewDecFromStr("0.1111111111") + slashTokens := math.LegacyNewDecFromInt(validator.Tokens).Mul(slashMagnitude).TruncateInt() + validator.Tokens = validator.Tokens.Sub(slashTokens) + + sk.SetValidator(ctx, validator) +} + +// Tests the conversion from tokenization and redemption from the following scenario: +// Slash -> Delegate -> Tokenize -> Redeem +// Note, in this example, there 2 tokens are lost during the decimal to int conversion +// during the unbonding step within tokenization and redemption +func TestTokenizeAndRedeemConversion_SlashBeforeDelegation(t *testing.T) { + t.Parallel() + f := initFixture(t) + + ctx := f.sdkCtx + var ( + stakingKeeper = f.stakingKeeper + bankKeeper = f.bankKeeper + ) + msgServer := keeper.NewMsgServerImpl(stakingKeeper) + delegatorAddress, validatorAddress := setupTestTokenizeAndRedeemConversion(t, *stakingKeeper, bankKeeper, ctx) + + // slash the validator + simulateSlashWithImprecision(t, *stakingKeeper, ctx, validatorAddress) + validator, err := stakingKeeper.GetValidator(ctx, validatorAddress) + require.NoError(t, err) + + // Delegate and confirm the delegation record was created + delegateAmount := math.NewInt(1000) + bondDenom, err := stakingKeeper.BondDenom(ctx) + require.NoError(t, err) + delegateCoin := sdk.NewCoin(bondDenom, delegateAmount) + _, err = msgServer.Delegate(ctx, &types.MsgDelegate{ + DelegatorAddress: delegatorAddress.String(), + ValidatorAddress: validatorAddress.String(), + Amount: delegateCoin, + }) + require.NoError(t, err, "no error expected when delegating") + + delegation, err := stakingKeeper.GetDelegation(ctx, delegatorAddress, validatorAddress) + require.NoError(t, err, "delegation should have been found") + + // Tokenize the full delegation amount + _, err = msgServer.TokenizeShares(ctx, &types.MsgTokenizeShares{ + DelegatorAddress: delegatorAddress.String(), + ValidatorAddress: validatorAddress.String(), + Amount: delegateCoin, + TokenizedShareOwner: delegatorAddress.String(), + }) + require.NoError(t, err, "no error expected when tokenizing") + + // Confirm the number of shareTokens equals the number of shares truncated + // Note: 1 token is lost during unbonding due to rounding + shareDenom := validatorAddress.String() + "/1" + shareToken := bankKeeper.GetBalance(ctx, delegatorAddress, shareDenom) + expectedShareTokens := delegation.Shares.TruncateInt().Int64() - 1 // 1 token was lost during unbonding + require.Equal(t, expectedShareTokens, shareToken.Amount.Int64(), "share token amount") + + // Redeem the share tokens + _, err = msgServer.RedeemTokensForShares(ctx, &types.MsgRedeemTokensForShares{ + DelegatorAddress: delegatorAddress.String(), + Amount: shareToken, + }) + require.NoError(t, err, "no error expected when redeeming") + + // Confirm (almost) the full delegation was recovered - minus the 2 tokens from the precision error + // (1 occurs during tokenization, and 1 occurs during redemption) + newDelegation, err := stakingKeeper.GetDelegation(ctx, delegatorAddress, validatorAddress) + require.NoError(t, err) + + endDelegationTokens := validator.TokensFromShares(newDelegation.Shares).TruncateInt().Int64() + expectedDelegationTokens := delegateAmount.Int64() - 2 + require.Equal(t, expectedDelegationTokens, endDelegationTokens, "final delegation tokens") +} + +// Tests the conversion from tokenization and redemption from the following scenario: +// Delegate -> Slash -> Tokenize -> Redeem +// Note, in this example, there 1 token lost during the decimal to int conversion +// during the unbonding step within tokenization +func TestTokenizeAndRedeemConversion_SlashBeforeTokenization(t *testing.T) { + t.Parallel() + f := initFixture(t) + + ctx := f.sdkCtx + var ( + stakingKeeper = f.stakingKeeper + bankKeeper = f.bankKeeper + ) + msgServer := keeper.NewMsgServerImpl(stakingKeeper) + delegatorAddress, validatorAddress := setupTestTokenizeAndRedeemConversion(t, *stakingKeeper, bankKeeper, ctx) + + // Delegate and confirm the delegation record was created + delegateAmount := math.NewInt(1000) + bondDenom, err := stakingKeeper.BondDenom(ctx) + require.NoError(t, err) + delegateCoin := sdk.NewCoin(bondDenom, delegateAmount) + _, err = msgServer.Delegate(ctx, &types.MsgDelegate{ + DelegatorAddress: delegatorAddress.String(), + ValidatorAddress: validatorAddress.String(), + Amount: delegateCoin, + }) + require.NoError(t, err, "no error expected when delegating") + + _, err = stakingKeeper.GetDelegation(ctx, delegatorAddress, validatorAddress) + require.NoError(t, err, "delegation should have been found") + + // slash the validator + simulateSlashWithImprecision(t, *stakingKeeper, ctx, validatorAddress) + validator, err := stakingKeeper.GetValidator(ctx, validatorAddress) + require.NoError(t, err) + + // Tokenize the new amount after the slash + delegationAmountAfterSlash := validator.TokensFromShares(math.LegacyNewDecFromInt(delegateAmount)).TruncateInt() + tokenizationCoin := sdk.NewCoin(bondDenom, delegationAmountAfterSlash) + + _, err = msgServer.TokenizeShares(ctx, &types.MsgTokenizeShares{ + DelegatorAddress: delegatorAddress.String(), + ValidatorAddress: validatorAddress.String(), + Amount: tokenizationCoin, + TokenizedShareOwner: delegatorAddress.String(), + }) + require.NoError(t, err, "no error expected when tokenizing") + + // The number of share tokens should line up with the **new** number of shares associated + // with the original delegated amount + // Note: 1 token is lost during unbonding due to rounding + shareDenom := validatorAddress.String() + "/1" + shareToken := bankKeeper.GetBalance(ctx, delegatorAddress, shareDenom) + expectedShareTokens, err := validator.SharesFromTokens(tokenizationCoin.Amount) + require.NoError(t, err) + require.Equal(t, expectedShareTokens.TruncateInt().Int64()-1, shareToken.Amount.Int64(), "share token amount") + + // // Redeem the share tokens + _, err = msgServer.RedeemTokensForShares(ctx, &types.MsgRedeemTokensForShares{ + DelegatorAddress: delegatorAddress.String(), + Amount: shareToken, + }) + require.NoError(t, err, "no error expected when redeeming") + + // Confirm the full tokenization amount was recovered - minus the 1 token from the precision error + newDelegation, err := stakingKeeper.GetDelegation(ctx, delegatorAddress, validatorAddress) + require.NoError(t, err) + + endDelegationTokens := validator.TokensFromShares(newDelegation.Shares).TruncateInt().Int64() + expectedDelegationTokens := delegationAmountAfterSlash.Int64() - 1 + require.Equal(t, expectedDelegationTokens, endDelegationTokens, "final delegation tokens") +} + +// Tests the conversion from tokenization and redemption from the following scenario: +// Delegate -> Tokenize -> Slash -> Redeem +// Note, in this example, there 1 token lost during the decimal to int conversion +// during the unbonding step within redemption +func TestTokenizeAndRedeemConversion_SlashBeforeRedemption(t *testing.T) { + t.Parallel() + f := initFixture(t) + + ctx := f.sdkCtx + var ( + stakingKeeper = f.stakingKeeper + bankKeeper = f.bankKeeper + ) + msgServer := keeper.NewMsgServerImpl(stakingKeeper) + delegatorAddress, validatorAddress := setupTestTokenizeAndRedeemConversion(t, *stakingKeeper, bankKeeper, ctx) + + // Delegate and confirm the delegation record was created + delegateAmount := math.NewInt(1000) + bondDenom, err := stakingKeeper.BondDenom(ctx) + require.NoError(t, err) + delegateCoin := sdk.NewCoin(bondDenom, delegateAmount) + _, err = msgServer.Delegate(ctx, &types.MsgDelegate{ + DelegatorAddress: delegatorAddress.String(), + ValidatorAddress: validatorAddress.String(), + Amount: delegateCoin, + }) + require.NoError(t, err, "no error expected when delegating") + + _, err = stakingKeeper.GetDelegation(ctx, delegatorAddress, validatorAddress) + require.NoError(t, err, "delegation should have been found") + + // Tokenize the full delegation amount + _, err = msgServer.TokenizeShares(ctx, &types.MsgTokenizeShares{ + DelegatorAddress: delegatorAddress.String(), + ValidatorAddress: validatorAddress.String(), + Amount: delegateCoin, + TokenizedShareOwner: delegatorAddress.String(), + }) + require.NoError(t, err, "no error expected when tokenizing") + + // The number of share tokens should line up 1:1 with the number of issued shares + // Since the validator has not been slashed, the shares also line up 1;1 + // with the original delegation amount + shareDenom := validatorAddress.String() + "/1" + shareToken := bankKeeper.GetBalance(ctx, delegatorAddress, shareDenom) + expectedShareTokens := delegateAmount + require.Equal(t, expectedShareTokens.Int64(), shareToken.Amount.Int64(), "share token amount") + + // slash the validator + simulateSlashWithImprecision(t, *stakingKeeper, ctx, validatorAddress) + validator, err := stakingKeeper.GetValidator(ctx, validatorAddress) + require.NoError(t, err) + + // Redeem the share tokens + _, err = msgServer.RedeemTokensForShares(ctx, &types.MsgRedeemTokensForShares{ + DelegatorAddress: delegatorAddress.String(), + Amount: shareToken, + }) + require.NoError(t, err, "no error expected when redeeming") + + // Confirm the original delegation, minus the slash, was recovered + // There's an additional 1 token lost from precision error during unbonding + delegationAmountAfterSlash := validator.TokensFromShares(math.LegacyNewDecFromInt(delegateAmount)).TruncateInt().Int64() + newDelegation, err := stakingKeeper.GetDelegation(ctx, delegatorAddress, validatorAddress) + require.NoError(t, err) + + endDelegationTokens := validator.TokensFromShares(newDelegation.Shares).TruncateInt().Int64() + require.Equal(t, delegationAmountAfterSlash-1, endDelegationTokens, "final delegation tokens") +} + +func TestTransferTokenizeShareRecord(t *testing.T) { + var ( + bankKeeper bankkeeper.Keeper + stakingKeeper *keeper.Keeper + ) + app, err := simtestutil.Setup( + depinject.Configs(testutil.AppConfig, depinject.Supply(log.NewNopLogger())), + &bankKeeper, + &stakingKeeper, + ) + require.NoError(t, err) + ctx := app.BaseApp.NewContext(false) + msgServer := keeper.NewMsgServerImpl(stakingKeeper) + + addrs := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 3, stakingKeeper.TokensFromConsensusPower(ctx, 10000)) + addrAcc1, addrAcc2, valAcc := addrs[0], addrs[1], addrs[2] + addrVal := sdk.ValAddress(valAcc) + + pubKeys := simtestutil.CreateTestPubKeys(1) + pk := pubKeys[0] + + val, err := types.NewValidator(addrVal.String(), pk, types.Description{}) + require.NoError(t, err) + + stakingKeeper.SetValidator(ctx, val) + stakingKeeper.SetValidatorByPowerIndex(ctx, val) + + // apply TM updates + applyValidatorSetUpdates(t, ctx, stakingKeeper, -1) + + err = stakingKeeper.AddTokenizeShareRecord(ctx, types.TokenizeShareRecord{ + Id: 1, + Owner: addrAcc1.String(), + ModuleAccount: "module_account", + Validator: val.String(), + }) + require.NoError(t, err) + + _, err = msgServer.TransferTokenizeShareRecord(ctx, &types.MsgTransferTokenizeShareRecord{ + TokenizeShareRecordId: 1, + Sender: addrAcc1.String(), + NewOwner: addrAcc2.String(), + }) + require.NoError(t, err) + + record, err := stakingKeeper.GetTokenizeShareRecord(ctx, 1) + require.NoError(t, err) + require.Equal(t, record.Owner, addrAcc2.String()) + + records := stakingKeeper.GetTokenizeShareRecordsByOwner(ctx, addrAcc1) + require.Len(t, records, 0) + records = stakingKeeper.GetTokenizeShareRecordsByOwner(ctx, addrAcc2) + require.Len(t, records, 1) +} + +func TestValidatorBond(t *testing.T) { + testCases := []struct { + name string + createValidator bool + createDelegation bool + alreadyValidatorBond bool + delegatorIsLSTP bool + expectedErr error + }{ + { + name: "successful validator bond", + createValidator: true, + createDelegation: true, + alreadyValidatorBond: false, + delegatorIsLSTP: false, + }, + { + name: "successful with existing validator bond", + createValidator: true, + createDelegation: true, + alreadyValidatorBond: true, + delegatorIsLSTP: false, + }, + { + name: "validator does not not exist", + createValidator: false, + createDelegation: false, + alreadyValidatorBond: false, + delegatorIsLSTP: false, + expectedErr: types.ErrNoValidatorFound, + }, + { + name: "delegation not exist case", + createValidator: true, + createDelegation: false, + alreadyValidatorBond: false, + delegatorIsLSTP: false, + expectedErr: types.ErrNoDelegation, + }, + { + name: "delegator is a liquid staking provider", + createValidator: true, + createDelegation: true, + alreadyValidatorBond: false, + delegatorIsLSTP: true, + expectedErr: types.ErrValidatorBondNotAllowedFromModuleAccount, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + tc := tc + t.Parallel() + f := initFixture(t) + + ctx := f.sdkCtx + var ( + accountKeeper = f.accountKeeper + stakingKeeper = f.stakingKeeper + bankKeeper = f.bankKeeper + ) + pubKeys := simtestutil.CreateTestPubKeys(2) + + validatorPubKey := pubKeys[0] + delegatorPubKey := pubKeys[1] + + delegatorAddress := sdk.AccAddress(delegatorPubKey.Address()) + validatorAddress := sdk.ValAddress(validatorPubKey.Address()) + icaAccountAddress := createICAAccount(ctx, accountKeeper) + + // Set the delegator address to either be a user account or an ICA account depending on the test case + if tc.delegatorIsLSTP { + delegatorAddress = icaAccountAddress + } + + // Fund the delegator + delegationAmount := stakingKeeper.TokensFromConsensusPower(ctx, 20) + bondDenom, err := stakingKeeper.BondDenom(ctx) + require.NoError(t, err) + coins := sdk.NewCoins(sdk.NewCoin(bondDenom, delegationAmount)) + + err = bankKeeper.MintCoins(ctx, minttypes.ModuleName, coins) + require.NoError(t, err, "no error expected when minting") + + err = bankKeeper.SendCoinsFromModuleToAccount(ctx, minttypes.ModuleName, delegatorAddress, coins) + require.NoError(t, err, "no error expected when funding account") + + // Create Validator and delegation + if tc.createValidator { + validator, err := types.NewValidator(validatorAddress.String(), validatorPubKey, types.Description{}) + require.NoError(t, err) + validator.Status = types.Bonded + stakingKeeper.SetValidator(ctx, validator) + stakingKeeper.SetValidatorByPowerIndex(ctx, validator) + err = stakingKeeper.SetValidatorByConsAddr(ctx, validator) + require.NoError(t, err) + + // Optionally create the delegation, depending on the test case + if tc.createDelegation { + _, err = stakingKeeper.Delegate(ctx, delegatorAddress, delegationAmount, types.Unbonded, validator, true) + require.NoError(t, err, "no error expected when delegating") + + // Optionally, convert the delegation into a validator bond + if tc.alreadyValidatorBond { + delegation, err := stakingKeeper.GetDelegation(ctx, delegatorAddress, validatorAddress) + require.NoError(t, err, "delegation should have been found") + + delegation.ValidatorBond = true + stakingKeeper.SetDelegation(ctx, delegation) + } + } + } + + // Call ValidatorBond + msgServer := keeper.NewMsgServerImpl(stakingKeeper) + _, err = msgServer.ValidatorBond(ctx, &types.MsgValidatorBond{ + DelegatorAddress: delegatorAddress.String(), + ValidatorAddress: validatorAddress.String(), + }) + + if tc.expectedErr != nil { + require.ErrorContains(t, err, tc.expectedErr.Error()) + } else { + require.NoError(t, err, "no error expected from validator bond transaction") + + // check validator bond true + delegation, err := stakingKeeper.GetDelegation(ctx, delegatorAddress, validatorAddress) + require.NoError(t, err, "delegation should have been found after validator bond") + require.True(t, delegation.ValidatorBond, "delegation should be marked as a validator bond") + + // check validator bond shares + validator, err := stakingKeeper.GetValidator(ctx, validatorAddress) + require.NoError(t, err, "validator should have been found after validator bond") + + if tc.alreadyValidatorBond { + require.True(t, validator.ValidatorBondShares.IsZero(), "validator bond shares should still be zero") + } else { + require.Equal(t, delegation.Shares.String(), validator.ValidatorBondShares.String(), + "validator total shares should have increased") + } + } + }) + } +} + +func TestChangeValidatorBond(t *testing.T) { + t.Parallel() + f := initFixture(t) + + ctx := f.sdkCtx + var ( + stakingKeeper = f.stakingKeeper + bankKeeper = f.bankKeeper + ) + + checkValidatorBondShares := func(validatorAddress sdk.ValAddress, expectedShares math.Int) { + validator, err := stakingKeeper.GetValidator(ctx, validatorAddress) + require.NoError(t, err, "validator should have been found") + require.Equal(t, expectedShares.Int64(), validator.ValidatorBondShares.TruncateInt64(), "validator bond shares") + } + + // Create a delegator and 3 validators + addresses := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 4, math.NewInt(1_000_000)) + pubKeys := simtestutil.CreateTestPubKeys(4) + + validatorAPubKey := pubKeys[1] + validatorBPubKey := pubKeys[2] + validatorCPubKey := pubKeys[3] + + delegatorAddress := addresses[0] + validatorAAddress := sdk.ValAddress(validatorAPubKey.Address()) + validatorBAddress := sdk.ValAddress(validatorBPubKey.Address()) + validatorCAddress := sdk.ValAddress(validatorCPubKey.Address()) + + validatorA, err := types.NewValidator(validatorAAddress.String(), validatorAPubKey, types.Description{}) + require.NoError(t, err) + validatorB, err := types.NewValidator(validatorBAddress.String(), validatorBPubKey, types.Description{}) + require.NoError(t, err) + validatorC, err := types.NewValidator(validatorCAddress.String(), validatorCPubKey, types.Description{}) + require.NoError(t, err) + + validatorA.Tokens = math.NewInt(1_000_000) + validatorB.Tokens = math.NewInt(1_000_000) + validatorC.Tokens = math.NewInt(1_000_000) + validatorA.DelegatorShares = math.LegacyNewDec(1_000_000) + validatorB.DelegatorShares = math.LegacyNewDec(1_000_000) + validatorC.DelegatorShares = math.LegacyNewDec(1_000_000) + + stakingKeeper.SetValidator(ctx, validatorA) + stakingKeeper.SetValidator(ctx, validatorB) + stakingKeeper.SetValidator(ctx, validatorC) + + // The test will go through Delegate/Redelegate/Undelegate messages with the following + delegation1Amount := math.NewInt(1000) + delegation2Amount := math.NewInt(1000) + redelegateAmount := math.NewInt(500) + undelegateAmount := math.NewInt(500) + + bondDenom, err := stakingKeeper.BondDenom(ctx) + require.NoError(t, err) + delegate1Coin := sdk.NewCoin(bondDenom, delegation1Amount) + delegate2Coin := sdk.NewCoin(bondDenom, delegation2Amount) + redelegateCoin := sdk.NewCoin(bondDenom, redelegateAmount) + undelegateCoin := sdk.NewCoin(bondDenom, undelegateAmount) + + // Delegate to validator's A and C - validator bond shares should not change + msgServer := keeper.NewMsgServerImpl(stakingKeeper) + _, err = msgServer.Delegate(ctx, &types.MsgDelegate{ + DelegatorAddress: delegatorAddress.String(), + ValidatorAddress: validatorAAddress.String(), + Amount: delegate1Coin, + }) + require.NoError(t, err, "no error expected during first delegation") + + _, err = msgServer.Delegate(ctx, &types.MsgDelegate{ + DelegatorAddress: delegatorAddress.String(), + ValidatorAddress: validatorCAddress.String(), + Amount: delegate1Coin, + }) + require.NoError(t, err, "no error expected during first delegation") + + checkValidatorBondShares(validatorAAddress, math.ZeroInt()) + checkValidatorBondShares(validatorBAddress, math.ZeroInt()) + checkValidatorBondShares(validatorCAddress, math.ZeroInt()) + + // Flag the the delegations to validator A and C validator bond's + // Their bond shares should increase + _, err = msgServer.ValidatorBond(ctx, &types.MsgValidatorBond{ + DelegatorAddress: delegatorAddress.String(), + ValidatorAddress: validatorAAddress.String(), + }) + require.NoError(t, err, "no error expected during validator bond") + + _, err = msgServer.ValidatorBond(ctx, &types.MsgValidatorBond{ + DelegatorAddress: delegatorAddress.String(), + ValidatorAddress: validatorCAddress.String(), + }) + require.NoError(t, err, "no error expected during validator bond") + + checkValidatorBondShares(validatorAAddress, delegation1Amount) + checkValidatorBondShares(validatorBAddress, math.ZeroInt()) + checkValidatorBondShares(validatorCAddress, delegation1Amount) + + // Delegate more to validator A - it should increase the validator bond shares + _, err = msgServer.Delegate(ctx, &types.MsgDelegate{ + DelegatorAddress: delegatorAddress.String(), + ValidatorAddress: validatorAAddress.String(), + Amount: delegate2Coin, + }) + require.NoError(t, err, "no error expected during second delegation") + + checkValidatorBondShares(validatorAAddress, delegation1Amount.Add(delegation2Amount)) + checkValidatorBondShares(validatorBAddress, math.ZeroInt()) + checkValidatorBondShares(validatorCAddress, delegation1Amount) + + // Redelegate partially from A to B (where A is a validator bond and B is not) + // It should remove the bond shares from A, and B's validator bond shares should not change + _, err = msgServer.BeginRedelegate(ctx, &types.MsgBeginRedelegate{ + DelegatorAddress: delegatorAddress.String(), + ValidatorSrcAddress: validatorAAddress.String(), + ValidatorDstAddress: validatorBAddress.String(), + Amount: redelegateCoin, + }) + require.NoError(t, err, "no error expected during redelegation") + + expectedBondSharesA := delegation1Amount.Add(delegation2Amount).Sub(redelegateAmount) + checkValidatorBondShares(validatorAAddress, expectedBondSharesA) + checkValidatorBondShares(validatorBAddress, math.ZeroInt()) + checkValidatorBondShares(validatorCAddress, delegation1Amount) + + // Now redelegate from B to C (where B is not a validator bond, but C is) + // Validator B's bond shares should remain at zero, but C's bond shares should increase + _, err = msgServer.BeginRedelegate(ctx, &types.MsgBeginRedelegate{ + DelegatorAddress: delegatorAddress.String(), + ValidatorSrcAddress: validatorBAddress.String(), + ValidatorDstAddress: validatorCAddress.String(), + Amount: redelegateCoin, + }) + require.NoError(t, err, "no error expected during redelegation") + + checkValidatorBondShares(validatorAAddress, expectedBondSharesA) + checkValidatorBondShares(validatorBAddress, math.ZeroInt()) + checkValidatorBondShares(validatorCAddress, delegation1Amount.Add(redelegateAmount)) + + // Redelegate partially from A to C (where C is a validator bond delegation) + // It should remove the bond shares from A, and increase the bond shares on validator C + _, err = msgServer.BeginRedelegate(ctx, &types.MsgBeginRedelegate{ + DelegatorAddress: delegatorAddress.String(), + ValidatorSrcAddress: validatorAAddress.String(), + ValidatorDstAddress: validatorCAddress.String(), + Amount: redelegateCoin, + }) + require.NoError(t, err, "no error expected during redelegation") + + expectedBondSharesA = expectedBondSharesA.Sub(redelegateAmount) + expectedBondSharesC := delegation1Amount.Add(redelegateAmount).Add(redelegateAmount) + checkValidatorBondShares(validatorAAddress, expectedBondSharesA) + checkValidatorBondShares(validatorBAddress, math.ZeroInt()) + checkValidatorBondShares(validatorCAddress, expectedBondSharesC) + + // Undelegate from validator A - it should remove shares + _, err = msgServer.Undelegate(ctx, &types.MsgUndelegate{ + DelegatorAddress: delegatorAddress.String(), + ValidatorAddress: validatorAAddress.String(), + Amount: undelegateCoin, + }) + require.NoError(t, err, "no error expected during undelegation") + + expectedBondSharesA = expectedBondSharesA.Sub(undelegateAmount) + checkValidatorBondShares(validatorAAddress, expectedBondSharesA) + checkValidatorBondShares(validatorBAddress, math.ZeroInt()) + checkValidatorBondShares(validatorCAddress, expectedBondSharesC) +} + +func TestEnableDisableTokenizeShares(t *testing.T) { + t.Parallel() + f := initFixture(t) + + ctx := f.sdkCtx + var ( + stakingKeeper = f.stakingKeeper + bankKeeper = f.bankKeeper + ) + // Create a delegator and validator + stakeAmount := math.NewInt(1000) + bondDenom, err := stakingKeeper.BondDenom(ctx) + require.NoError(t, err) + stakeToken := sdk.NewCoin(bondDenom, stakeAmount) + + addresses := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 2, stakeAmount) + delegatorAddress := addresses[0] + + pubKeys := simtestutil.CreateTestPubKeys(1) + validatorAddress := sdk.ValAddress(addresses[1]) + validator, err := types.NewValidator(validatorAddress.String(), pubKeys[0], types.Description{}) + require.NoError(t, err) + + validator.DelegatorShares = math.LegacyNewDec(1_000_000) + validator.Tokens = math.NewInt(1_000_000) + validator.Status = types.Bonded + stakingKeeper.SetValidator(ctx, validator) + + // Fix block time and set unbonding period to 1 day + blockTime := time.Date(2023, 1, 1, 0, 0, 0, 0, time.UTC) + ctx = ctx.WithBlockTime(blockTime) + + unbondingPeriod := time.Hour * 24 + params, err := stakingKeeper.GetParams(ctx) + require.NoError(t, err) + params.UnbondingTime = unbondingPeriod + stakingKeeper.SetParams(ctx, params) + unlockTime := blockTime.Add(unbondingPeriod) + + // Build test messages (some of which will be reused) + delegateMsg := types.MsgDelegate{ + DelegatorAddress: delegatorAddress.String(), + ValidatorAddress: validatorAddress.String(), + Amount: stakeToken, + } + tokenizeMsg := types.MsgTokenizeShares{ + DelegatorAddress: delegatorAddress.String(), + ValidatorAddress: validatorAddress.String(), + Amount: stakeToken, + TokenizedShareOwner: delegatorAddress.String(), + } + redeemMsg := types.MsgRedeemTokensForShares{ + DelegatorAddress: delegatorAddress.String(), + } + disableMsg := types.MsgDisableTokenizeShares{ + DelegatorAddress: delegatorAddress.String(), + } + enableMsg := types.MsgEnableTokenizeShares{ + DelegatorAddress: delegatorAddress.String(), + } + + msgServer := keeper.NewMsgServerImpl(stakingKeeper) + // Delegate normally + _, err = msgServer.Delegate(ctx, &delegateMsg) + require.NoError(t, err, "no error expected when delegating") + + // Tokenize shares - it should succeed + _, err = msgServer.TokenizeShares(ctx, &tokenizeMsg) + require.NoError(t, err, "no error expected when tokenizing shares for the first time") + + liquidToken := bankKeeper.GetBalance(ctx, delegatorAddress, validatorAddress.String()+"/1") + require.Equal(t, stakeAmount.Int64(), liquidToken.Amount.Int64(), "user received token after tokenizing share") + + // Redeem to remove all tokenized shares + redeemMsg.Amount = liquidToken + _, err = msgServer.RedeemTokensForShares(ctx, &redeemMsg) + require.NoError(t, err, "no error expected when redeeming") + + // Attempt to enable tokenizing shares when there is no lock in place, it should error + _, err = msgServer.EnableTokenizeShares(ctx, &enableMsg) + require.ErrorIs(t, err, types.ErrTokenizeSharesAlreadyEnabledForAccount) + + // Attempt to disable when no lock is in place, it should succeed + _, err = msgServer.DisableTokenizeShares(ctx, &disableMsg) + require.NoError(t, err, "no error expected when disabling tokenization") + + // Disabling again while the lock is already in place, should error + _, err = msgServer.DisableTokenizeShares(ctx, &disableMsg) + require.ErrorIs(t, err, types.ErrTokenizeSharesAlreadyDisabledForAccount) + + // Attempt to tokenize, it should fail since tokenization is disabled + _, err = msgServer.TokenizeShares(ctx, &tokenizeMsg) + require.ErrorIs(t, err, types.ErrTokenizeSharesDisabledForAccount) + + // Now enable tokenization + _, err = msgServer.EnableTokenizeShares(ctx, &enableMsg) + require.NoError(t, err, "no error expected when enabling tokenization") + + // Attempt to tokenize again, it should still fail since the unbonding period has + // not passed and the lock is still active + _, err = msgServer.TokenizeShares(ctx, &tokenizeMsg) + require.ErrorIs(t, err, types.ErrTokenizeSharesDisabledForAccount) + require.ErrorContains(t, err, fmt.Sprintf("tokenization will be allowed at %s", + blockTime.Add(unbondingPeriod))) + + // Confirm the unlock is queued + authorizations := stakingKeeper.GetPendingTokenizeShareAuthorizations(ctx, unlockTime) + require.Equal(t, []string{delegatorAddress.String()}, authorizations.Addresses, + "pending tokenize share authorizations") + + // Disable tokenization again - it should remove the pending record from the queue + _, err = msgServer.DisableTokenizeShares(ctx, &disableMsg) + require.NoError(t, err, "no error expected when re-enabling tokenization") + + authorizations = stakingKeeper.GetPendingTokenizeShareAuthorizations(ctx, unlockTime) + require.Empty(t, authorizations.Addresses, "there should be no pending authorizations in the queue") + + // Enable one more time + _, err = msgServer.EnableTokenizeShares(ctx, &enableMsg) + require.NoError(t, err, "no error expected when enabling tokenization again") + + // Increment the block time by the unbonding period and remove the expired locks + ctx = ctx.WithBlockTime(unlockTime) + stakingKeeper.RemoveExpiredTokenizeShareLocks(ctx, ctx.BlockTime()) + + // Attempt to tokenize again, it should succeed this time since the lock has expired + _, err = msgServer.TokenizeShares(ctx, &tokenizeMsg) + require.NoError(t, err, "no error expected when tokenizing after lock has expired") +} + +func TestUnbondValidator(t *testing.T) { + var ( + bankKeeper bankkeeper.Keeper + stakingKeeper *keeper.Keeper + ) + + app, err := simtestutil.Setup( + depinject.Configs(testutil.AppConfig, depinject.Supply(log.NewNopLogger())), + &bankKeeper, + &stakingKeeper, + ) + require.NoError(t, err) + ctx := app.BaseApp.NewContext(false) + + addrs := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 2, stakingKeeper.TokensFromConsensusPower(ctx, 10000)) + addrAcc1 := addrs[0] + addrVal1 := sdk.ValAddress(addrAcc1) + + pubKeys := simtestutil.CreateTestPubKeys(1) + pk1 := pubKeys[0] + + // Create Validators and Delegation + val1, err := types.NewValidator(addrVal1.String(), pk1, types.Description{}) + require.NoError(t, err) + val1.Status = types.Bonded + stakingKeeper.SetValidator(ctx, val1) + stakingKeeper.SetValidatorByPowerIndex(ctx, val1) + err = stakingKeeper.SetValidatorByConsAddr(ctx, val1) + require.NoError(t, err) + + // try unbonding not available validator + msgServer := keeper.NewMsgServerImpl(stakingKeeper) + _, err = msgServer.UnbondValidator(ctx, &types.MsgUnbondValidator{ + ValidatorAddress: sdk.ValAddress(addrs[1]).String(), + }) + require.Error(t, err) + + // unbond validator + _, err = msgServer.UnbondValidator(ctx, &types.MsgUnbondValidator{ + ValidatorAddress: addrVal1.String(), + }) + require.NoError(t, err) + + // check if validator is jailed + validator, err := stakingKeeper.GetValidator(ctx, addrVal1) + require.NoError(t, err) + require.True(t, validator.Jailed) +} + +// TestICADelegateUndelegate tests that an ICA account can undelegate +// sequentially right after delegating. +func TestICADelegateUndelegate(t *testing.T) { + t.Parallel() + f := initFixture(t) + + ctx := f.sdkCtx + var ( + accountKeeper = f.accountKeeper + stakingKeeper = f.stakingKeeper + bankKeeper = f.bankKeeper + ) + + // Create a delegator and validator (the delegator will be an ICA account) + delegateAmount := math.NewInt(1000) + bondDenom, err := stakingKeeper.BondDenom(ctx) + require.NoError(t, err) + delegateCoin := sdk.NewCoin(bondDenom, delegateAmount) + icaAccountAddress := createICAAccount(ctx, accountKeeper) + + // Fund ICA account + err = bankKeeper.MintCoins(ctx, minttypes.ModuleName, sdk.NewCoins(delegateCoin)) + require.NoError(t, err) + err = bankKeeper.SendCoinsFromModuleToAccount(ctx, minttypes.ModuleName, icaAccountAddress, sdk.NewCoins(delegateCoin)) + require.NoError(t, err) + + addresses := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 1, math.NewInt(0)) + pubKeys := simtestutil.CreateTestPubKeys(1) + validatorAddress := sdk.ValAddress(addresses[0]) + validator, err := types.NewValidator(validatorAddress.String(), pubKeys[0], types.Description{}) + require.NoError(t, err) + + validator.DelegatorShares = math.LegacyNewDec(1_000_000) + validator.Tokens = math.NewInt(1_000_000) + validator.LiquidShares = math.LegacyNewDec(0) + stakingKeeper.SetValidator(ctx, validator) + + delegateMsg := types.MsgDelegate{ + DelegatorAddress: icaAccountAddress.String(), + ValidatorAddress: validatorAddress.String(), + Amount: delegateCoin, + } + + undelegateMsg := types.MsgUndelegate{ + DelegatorAddress: icaAccountAddress.String(), + ValidatorAddress: validatorAddress.String(), + Amount: delegateCoin, + } + + msgServer := keeper.NewMsgServerImpl(stakingKeeper) + + // Delegate normally + _, err = msgServer.Delegate(ctx, &delegateMsg) + require.NoError(t, err, "no error expected when delegating") + + // Confirm delegation record + _, err = stakingKeeper.GetDelegation(ctx, icaAccountAddress, validatorAddress) + require.NoError(t, err, "delegation should have been found") + + // Confirm liquid staking totals were incremented + expectedTotalLiquidStaked := delegateAmount.Int64() + actualTotalLiquidStaked := stakingKeeper.GetTotalLiquidStakedTokens(ctx).Int64() + require.Equal(t, expectedTotalLiquidStaked, actualTotalLiquidStaked, "total liquid staked tokens after delegation") + + validator, err = stakingKeeper.GetValidator(ctx, validatorAddress) + require.NoError(t, err, "validator should have been found") + require.Equal(t, math.LegacyNewDecFromInt(delegateAmount), validator.LiquidShares, "validator liquid shares after delegation") + + // Try to undelegate + _, err = msgServer.Undelegate(ctx, &undelegateMsg) + require.NoError(t, err, "no error expected when sequentially undelegating") + + // Confirm delegation record was removed + _, err = stakingKeeper.GetDelegation(ctx, icaAccountAddress, validatorAddress) + require.True(t, errors.Is(err, types.ErrNoDelegation), "delegation have been found") + + // Confirm liquid staking totals were decremented + actualTotalLiquidStaked = stakingKeeper.GetTotalLiquidStakedTokens(ctx).Int64() + require.Zero(t, actualTotalLiquidStaked, "total liquid staked tokens after undelegation") + + validator, err = stakingKeeper.GetValidator(ctx, validatorAddress) + require.NoError(t, err, "validator should have been found") + require.Equal(t, math.LegacyZeroDec(), validator.LiquidShares, "validator liquid shares after undelegation") +} + +func TestTokenizeAndRedeemVestedDelegation(t *testing.T) { + f := initFixture(t) + + ctx := f.sdkCtx + var ( + stakingKeeper = f.stakingKeeper + bankKeeper = f.bankKeeper + accountKeeper = f.accountKeeper + ) + + addrs := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 1, stakingKeeper.TokensFromConsensusPower(ctx, 10000)) + addrAcc1 := addrs[0] + addrVal1 := sdk.ValAddress(addrAcc1) + + // Original vesting mount (OV) + originalVesting := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(100_000))) + startTime := time.Now() + endTime := time.Now().Add(24 * time.Hour) + + // Create vesting account + lastAccNum := uint64(1000) + baseAcc := authtypes.NewBaseAccountWithAddress(addrAcc1) + require.NoError(t, baseAcc.SetAccountNumber(atomic.AddUint64(&lastAccNum, 1))) + + continuousVestingAccount, err := vestingtypes.NewContinuousVestingAccount( + baseAcc, + originalVesting, + startTime.Unix(), + endTime.Unix(), + ) + require.NoError(t, err) + accountKeeper.SetAccount(ctx, continuousVestingAccount) + + pubKeys := simtestutil.CreateTestPubKeys(1) + pk1 := pubKeys[0] + + // Create Validators and Delegation + val1 := testutil.NewValidator(t, addrVal1, pk1) + val1.Status = types.Bonded + stakingKeeper.SetValidator(ctx, val1) + stakingKeeper.SetValidatorByPowerIndex(ctx, val1) + err = stakingKeeper.SetValidatorByConsAddr(ctx, val1) + require.NoError(t, err) + + // Delegate all the vesting coins + originalVestingAmount := originalVesting.AmountOf(sdk.DefaultBondDenom) + err = delegateCoinsFromAccount(ctx, *stakingKeeper, addrAcc1, originalVestingAmount, val1) + require.NoError(t, err) + + // Apply TM updates + applyValidatorSetUpdates(t, ctx, stakingKeeper, -1) + + _, err = stakingKeeper.GetDelegation(ctx, addrAcc1, addrVal1) + require.NoError(t, err) + + // Check vesting account data + // V=100, V'=0, DV=100, DF=0 + acc := accountKeeper.GetAccount(ctx, addrAcc1).(*vestingtypes.ContinuousVestingAccount) + require.Equal(t, originalVesting, acc.GetVestingCoins(ctx.BlockTime())) + require.Empty(t, acc.GetVestedCoins(ctx.BlockTime())) + require.Equal(t, originalVesting, acc.GetDelegatedVesting()) + require.Empty(t, acc.GetDelegatedFree()) + + msgServer := keeper.NewMsgServerImpl(stakingKeeper) + + // Vest half the original vesting coins + vestHalfTime := startTime.Add(time.Duration(float64(endTime.Sub(startTime).Nanoseconds()) / float64(2))) + ctx = ctx.WithBlockTime(vestHalfTime) + + // expect that half of the orignal vesting coins are vested + expVestedCoins := originalVesting.QuoInt(math.NewInt(2)) + + // Check vesting account data + // V=50, V'=50, DV=100, DF=0 + acc = accountKeeper.GetAccount(ctx, addrAcc1).(*vestingtypes.ContinuousVestingAccount) + require.Equal(t, expVestedCoins, acc.GetVestingCoins(ctx.BlockTime())) + require.Equal(t, expVestedCoins, acc.GetVestedCoins(ctx.BlockTime())) + require.Equal(t, originalVesting, acc.GetDelegatedVesting()) + require.Empty(t, acc.GetDelegatedFree()) + + // Expect that tokenizing all the delegated coins fails + // since only the half are vested + _, err = msgServer.TokenizeShares(ctx, &types.MsgTokenizeShares{ + DelegatorAddress: addrAcc1.String(), + ValidatorAddress: addrVal1.String(), + Amount: originalVesting[0], + TokenizedShareOwner: addrAcc1.String(), + }) + require.Error(t, err) + + // Tokenize the delegated vested coins + _, err = msgServer.TokenizeShares(ctx, &types.MsgTokenizeShares{ + DelegatorAddress: addrAcc1.String(), + ValidatorAddress: addrVal1.String(), + Amount: sdk.Coin{Denom: sdk.DefaultBondDenom, Amount: originalVestingAmount.Quo(math.NewInt(2))}, + TokenizedShareOwner: addrAcc1.String(), + }) + require.NoError(t, err) + + shareDenom := addrVal1.String() + "/1" + + // Redeem the tokens + _, err = msgServer.RedeemTokensForShares(ctx, + &types.MsgRedeemTokensForShares{ + DelegatorAddress: addrAcc1.String(), + Amount: sdk.Coin{Denom: shareDenom, Amount: originalVestingAmount.Quo(math.NewInt(2))}, + }, + ) + require.NoError(t, err) + + // After the redemption of the tokens, the vesting delegations should be evenly distributed + // V=50, V'=50, DV=100, DF=50 + acc = accountKeeper.GetAccount(ctx, addrAcc1).(*vestingtypes.ContinuousVestingAccount) + require.Equal(t, expVestedCoins, acc.GetVestingCoins(ctx.BlockTime())) + require.Equal(t, expVestedCoins, acc.GetVestedCoins(ctx.BlockTime())) + require.Equal(t, expVestedCoins, acc.GetDelegatedVesting()) + require.Equal(t, expVestedCoins, acc.GetDelegatedFree()) +} + +// Helper function to create 32-length account +// Used to mock an liquid staking provider's ICA account +func createICAAccount(ctx sdk.Context, ak accountkeeper.AccountKeeper) sdk.AccAddress { + icahost := "icahost" + connectionID := "connection-0" + portID := icahost + + moduleAddress := authtypes.NewModuleAddress(icahost) + icaAddress := sdk.AccAddress(sdkaddress.Derive(moduleAddress, []byte(connectionID+portID))) + + account := ak.NewAccountWithAddress(ctx, icaAddress) + ak.SetAccount(ctx, account) + + return icaAddress +} diff --git a/testutil/network/network.go b/testutil/network/network.go index ac6d4593d324..2446c154fc96 100644 --- a/testutil/network/network.go +++ b/testutil/network/network.go @@ -527,7 +527,6 @@ func New(l Logger, baseDir string, cfg Config) (*Network, error) { sdk.NewCoin(cfg.BondDenom, cfg.BondedTokens), stakingtypes.NewDescription(nodeDirName, "", "", "", ""), stakingtypes.NewCommissionRates(commission, sdkmath.LegacyOneDec(), sdkmath.LegacyOneDec()), - sdkmath.OneInt(), ) if err != nil { return nil, err diff --git a/testutil/sims/state_helpers.go b/testutil/sims/state_helpers.go index 55b7a5b06556..d1a320e983ef 100644 --- a/testutil/sims/state_helpers.go +++ b/testutil/sims/state_helpers.go @@ -1,11 +1,13 @@ package sims import ( + "bufio" "encoding/json" "fmt" "io" "math/rand" "os" + "path/filepath" "time" "github.com/cosmos/gogoproto/proto" @@ -13,6 +15,7 @@ import ( "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" @@ -205,11 +208,11 @@ func AppStateRandomizedFn( ) appParams.GetOrGenerate( StakePerAccount, &initialStake, r, - func(r *rand.Rand) { initialStake = math.NewInt(r.Int63n(1e12)) }, + func(r *rand.Rand) { initialStake = sdk.DefaultPowerReduction.AddRaw(r.Int63n(1e12)) }, ) appParams.GetOrGenerate( InitiallyBondedValidators, &numInitiallyBonded, r, - func(r *rand.Rand) { numInitiallyBonded = int64(r.Intn(300)) }, + func(r *rand.Rand) { numInitiallyBonded = int64(r.Intn(299) + 1) }, ) if numInitiallyBonded > numAccs { @@ -250,19 +253,23 @@ func AppStateRandomizedFn( // AppStateFromGenesisFileFn util function to generate the genesis AppState // from a genesis.json file. func AppStateFromGenesisFileFn(r io.Reader, cdc codec.JSONCodec, genesisFile string) (genutiltypes.AppGenesis, []simtypes.Account, error) { - bytes, err := os.ReadFile(genesisFile) + file, err := os.Open(filepath.Clean(genesisFile)) if err != nil { panic(err) } - var genesis genutiltypes.AppGenesis - if err = json.Unmarshal(bytes, &genesis); err != nil { - return genesis, nil, err + genesis, err := genutiltypes.AppGenesisFromReader(bufio.NewReader(file)) + if err != nil { + return *genesis, nil, err + } + + if err := file.Close(); err != nil { + return *genesis, nil, err } var appState map[string]json.RawMessage if err = json.Unmarshal(genesis.AppState, &appState); err != nil { - return genesis, nil, err + return *genesis, nil, err } var authGenesis authtypes.GenesisState @@ -284,13 +291,13 @@ func AppStateFromGenesisFileFn(r io.Reader, cdc codec.JSONCodec, genesisFile str a, ok := acc.GetCachedValue().(sdk.AccountI) if !ok { - return genesis, nil, fmt.Errorf("expected account") + return *genesis, nil, fmt.Errorf("expected account") } // create simulator accounts - simAcc := simtypes.Account{PrivKey: privKey, PubKey: privKey.PubKey(), Address: a.GetAddress()} + simAcc := simtypes.Account{PrivKey: privKey, PubKey: privKey.PubKey(), Address: a.GetAddress(), ConsKey: ed25519.GenPrivKeyFromSecret(privkeySeed)} newAccs[i] = simAcc } - return genesis, newAccs, nil + return *genesis, newAccs, nil } diff --git a/tools/confix/go.mod b/tools/confix/go.mod index db5af213b341..8ac949c83f4a 100644 --- a/tools/confix/go.mod +++ b/tools/confix/go.mod @@ -39,14 +39,14 @@ require ( github.com/cockroachdb/pebble v1.1.0 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect - github.com/cometbft/cometbft v0.38.7 // indirect + github.com/cometbft/cometbft v0.38.9 // indirect github.com/cometbft/cometbft-db v0.9.1 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.0.2 // indirect github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect github.com/cosmos/go-bip39 v1.0.0 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect - github.com/cosmos/gogoproto v1.4.12 // indirect + github.com/cosmos/gogoproto v1.5.0 // indirect github.com/cosmos/iavl v1.1.2 // indirect github.com/cosmos/ics23/go v0.10.0 // indirect github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect @@ -88,6 +88,7 @@ require ( github.com/hashicorp/go-metrics v0.5.3 // indirect github.com/hashicorp/go-plugin v1.5.2 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.1.0 // indirect diff --git a/tools/confix/go.sum b/tools/confix/go.sum index 2646c47b3d19..cc3c2a21414c 100644 --- a/tools/confix/go.sum +++ b/tools/confix/go.sum @@ -125,8 +125,8 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/cometbft/cometbft v0.38.7 h1:ULhIOJ9+LgSy6nLekhq9ae3juX3NnQUMMPyVdhZV6Hk= -github.com/cometbft/cometbft v0.38.7/go.mod h1:HIyf811dFMI73IE0F7RrnY/Fr+d1+HuJAgtkEpQjCMY= +github.com/cometbft/cometbft v0.38.9 h1:cJBJBG0mPKz+sqelCi/hlfZjadZQGdDNnu6YQ1ZsUHQ= +github.com/cometbft/cometbft v0.38.9/go.mod h1:xOoGZrtUT+A5izWfHSJgl0gYZUE7lu7Z2XIS1vWG/QQ= github.com/cometbft/cometbft-db v0.9.1 h1:MIhVX5ja5bXNHF8EYrThkG9F7r9kSfv8BX4LWaxWJ4M= github.com/cometbft/cometbft-db v0.9.1/go.mod h1:iliyWaoV0mRwBJoizElCwwRA9Tf7jZJOURcRZF9m60U= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= @@ -150,8 +150,8 @@ github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4x github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= -github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= -github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= +github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= +github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= github.com/cosmos/iavl v1.1.2 h1:zL9FK7C4L/P4IF1Dm5fIwz0WXCnn7Bp1M2FxH0ayM7Y= github.com/cosmos/iavl v1.1.2/go.mod h1:jLeUvm6bGT1YutCaL2fIar/8vGUE8cPZvh/gXEWDaDM= github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= @@ -393,6 +393,8 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= diff --git a/tools/cosmovisor/go.mod b/tools/cosmovisor/go.mod index 3ccf1a31e0b8..be877d6bdb0d 100644 --- a/tools/cosmovisor/go.mod +++ b/tools/cosmovisor/go.mod @@ -43,7 +43,7 @@ require ( github.com/cockroachdb/pebble v1.1.0 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect - github.com/cometbft/cometbft v0.38.7 // indirect + github.com/cometbft/cometbft v0.38.9 // indirect github.com/cometbft/cometbft-db v0.9.1 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.0.2 // indirect @@ -51,7 +51,7 @@ require ( github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230614103911-b3da8bb4e801 // indirect github.com/cosmos/go-bip39 v1.0.0 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect - github.com/cosmos/gogoproto v1.4.12 // indirect + github.com/cosmos/gogoproto v1.5.0 // indirect github.com/cosmos/iavl v1.0.1 // indirect github.com/cosmos/ics23/go v0.10.0 // indirect github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect diff --git a/tools/cosmovisor/go.sum b/tools/cosmovisor/go.sum index aeff17bfb251..b27f222e4522 100644 --- a/tools/cosmovisor/go.sum +++ b/tools/cosmovisor/go.sum @@ -311,8 +311,8 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/cometbft/cometbft v0.38.7 h1:ULhIOJ9+LgSy6nLekhq9ae3juX3NnQUMMPyVdhZV6Hk= -github.com/cometbft/cometbft v0.38.7/go.mod h1:HIyf811dFMI73IE0F7RrnY/Fr+d1+HuJAgtkEpQjCMY= +github.com/cometbft/cometbft v0.38.9 h1:cJBJBG0mPKz+sqelCi/hlfZjadZQGdDNnu6YQ1ZsUHQ= +github.com/cometbft/cometbft v0.38.9/go.mod h1:xOoGZrtUT+A5izWfHSJgl0gYZUE7lu7Z2XIS1vWG/QQ= github.com/cometbft/cometbft-db v0.9.1 h1:MIhVX5ja5bXNHF8EYrThkG9F7r9kSfv8BX4LWaxWJ4M= github.com/cometbft/cometbft-db v0.9.1/go.mod h1:iliyWaoV0mRwBJoizElCwwRA9Tf7jZJOURcRZF9m60U= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= @@ -334,8 +334,8 @@ github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4x github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= -github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= -github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= +github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= +github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= github.com/cosmos/iavl v1.0.1 h1:D+mYbcRO2wptYzOM1Hxl9cpmmHU1ZEt9T2Wv5nZTeUw= github.com/cosmos/iavl v1.0.1/go.mod h1:8xIUkgVvwvVrBu81scdPty+/Dx9GqwHnAvXz4cwF7RY= github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= @@ -652,6 +652,8 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= diff --git a/tools/hubl/go.mod b/tools/hubl/go.mod index 82759b22eda0..bd8aa36438fe 100644 --- a/tools/hubl/go.mod +++ b/tools/hubl/go.mod @@ -38,14 +38,14 @@ require ( github.com/cockroachdb/pebble v1.1.0 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect - github.com/cometbft/cometbft v0.38.7 // indirect + github.com/cometbft/cometbft v0.38.9 // indirect github.com/cometbft/cometbft-db v0.9.1 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.0.2 // indirect github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect github.com/cosmos/go-bip39 v1.0.0 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect - github.com/cosmos/gogoproto v1.4.12 // indirect + github.com/cosmos/gogoproto v1.5.0 // indirect github.com/cosmos/iavl v1.0.1 // indirect github.com/cosmos/ics23/go v0.10.0 // indirect github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect @@ -86,6 +86,7 @@ require ( github.com/hashicorp/go-metrics v0.5.1 // indirect github.com/hashicorp/go-plugin v1.5.2 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.1.0 // indirect diff --git a/tools/hubl/go.sum b/tools/hubl/go.sum index 23e9cccea538..85d4aab9c847 100644 --- a/tools/hubl/go.sum +++ b/tools/hubl/go.sum @@ -130,8 +130,8 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/cometbft/cometbft v0.38.7 h1:ULhIOJ9+LgSy6nLekhq9ae3juX3NnQUMMPyVdhZV6Hk= -github.com/cometbft/cometbft v0.38.7/go.mod h1:HIyf811dFMI73IE0F7RrnY/Fr+d1+HuJAgtkEpQjCMY= +github.com/cometbft/cometbft v0.38.9 h1:cJBJBG0mPKz+sqelCi/hlfZjadZQGdDNnu6YQ1ZsUHQ= +github.com/cometbft/cometbft v0.38.9/go.mod h1:xOoGZrtUT+A5izWfHSJgl0gYZUE7lu7Z2XIS1vWG/QQ= github.com/cometbft/cometbft-db v0.9.1 h1:MIhVX5ja5bXNHF8EYrThkG9F7r9kSfv8BX4LWaxWJ4M= github.com/cometbft/cometbft-db v0.9.1/go.mod h1:iliyWaoV0mRwBJoizElCwwRA9Tf7jZJOURcRZF9m60U= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= @@ -155,8 +155,8 @@ github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4x github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= -github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= -github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= +github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= +github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= github.com/cosmos/iavl v1.0.1 h1:D+mYbcRO2wptYzOM1Hxl9cpmmHU1ZEt9T2Wv5nZTeUw= github.com/cosmos/iavl v1.0.1/go.mod h1:8xIUkgVvwvVrBu81scdPty+/Dx9GqwHnAvXz4cwF7RY= github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= @@ -394,6 +394,8 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= diff --git a/types/context.go b/types/context.go index c07689e5b12b..a6e304e8d148 100644 --- a/types/context.go +++ b/types/context.go @@ -54,6 +54,7 @@ type Context struct { blockGasMeter storetypes.GasMeter checkTx bool recheckTx bool // if recheckTx == true, then checkTx must also be true + sigverifyTx bool // when run simulation, because the private key corresponding to the account in the genesis.json randomly generated, we must skip the sigverify. execMode ExecMode minGasPrice DecCoins consParams cmtproto.ConsensusParams @@ -82,6 +83,7 @@ func (c Context) GasMeter() storetypes.GasMeter { return c.gasMe func (c Context) BlockGasMeter() storetypes.GasMeter { return c.blockGasMeter } func (c Context) IsCheckTx() bool { return c.checkTx } func (c Context) IsReCheckTx() bool { return c.recheckTx } +func (c Context) IsSigverifyTx() bool { return c.sigverifyTx } func (c Context) ExecMode() ExecMode { return c.execMode } func (c Context) MinGasPrices() DecCoins { return c.minGasPrice } func (c Context) EventManager() EventManagerI { return c.eventManager } @@ -131,6 +133,7 @@ func NewContext(ms storetypes.MultiStore, header cmtproto.Header, isCheckTx bool header: header, chainID: header.ChainID, checkTx: isCheckTx, + sigverifyTx: true, logger: logger, gasMeter: storetypes.NewInfiniteGasMeter(), minGasPrice: DecCoins{}, @@ -260,6 +263,12 @@ func (c Context) WithIsReCheckTx(isRecheckTx bool) Context { return c } +// WithIsSigverifyTx called with true will sigverify in auth module +func (c Context) WithIsSigverifyTx(isSigverifyTx bool) Context { + c.sigverifyTx = isSigverifyTx + return c +} + // WithExecMode returns a Context with an updated ExecMode. func (c Context) WithExecMode(m ExecMode) Context { c.execMode = m diff --git a/types/simulation/account.go b/types/simulation/account.go index b9f69ffa6116..1f04d558def7 100644 --- a/types/simulation/account.go +++ b/types/simulation/account.go @@ -3,6 +3,7 @@ package simulation import ( "fmt" "math/rand" + "strings" "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" @@ -66,14 +67,23 @@ func FindAccount(accs []Account, address sdk.Address) (Account, bool) { // amount from the account's available balance. If the user doesn't have enough // funds for paying fees, it returns empty coins. func RandomFees(r *rand.Rand, ctx sdk.Context, spendableCoins sdk.Coins) (sdk.Coins, error) { - if spendableCoins.Empty() { + spendable := sdk.NewCoins() + // remove liquid staking denoms from spendable coins since fees cannot be paid in those denoms + for _, coin := range spendableCoins { + if strings.Contains(coin.Denom, sdk.GetConfig().GetBech32ValidatorAddrPrefix()) { + continue + } + spendable = append(spendable, coin) + } + + if spendable.Empty() { return nil, nil } - perm := r.Perm(len(spendableCoins)) + perm := r.Perm(len(spendable)) var randCoin sdk.Coin for _, index := range perm { - randCoin = spendableCoins[index] + randCoin = spendable[index] if !randCoin.Amount.IsZero() { break } diff --git a/x/auth/README.md b/x/auth/README.md index 1d5e22b5d874..c51d10634ad4 100644 --- a/x/auth/README.md +++ b/x/auth/README.md @@ -447,6 +447,22 @@ simd tx multisign transaction.json k1k2k3 k1sig.json k2sig.json k3sig.json Where `k1k2k3` is the multisig account address, `k1sig.json` is the signature of the first signer, `k2sig.json` is the signature of the second signer, and `k3sig.json` is the signature of the third signer. +##### Nested multisig transactions + +To allow transactions to be signed by nested multisigs, meaning that a participant of a multisig account can be another multisig account, the `--skip-signature-verification` flag must be used. + +```bash +# First aggregate signatures of the multisig participant +simd tx multi-sign transaction.json ms1 ms1p1sig.json ms1p2sig.json --signature-only --skip-signature-verification > ms1sig.json + +# Then use the aggregated signatures and the other signatures to sign the final transaction +simd tx multi-sign transaction.json k1ms1 k1sig.json ms1sig.json --skip-signature-verification +``` + +Where `ms1` is the nested multisig account address, `ms1p1sig.json` is the signature of the first participant of the nested multisig account, `ms1p2sig.json` is the signature of the second participant of the nested multisig account, and `ms1sig.json` is the aggregated signature of the nested multisig account. + +`k1ms1` is a multisig account comprised of an individual signer and another nested multisig account (`ms1`). `k1sig.json` is the signature of the first signer of the individual member. + More information about the `multi-sign` command can be found running `simd tx multi-sign --help`. #### `multisign-batch` diff --git a/x/auth/ante/sigverify.go b/x/auth/ante/sigverify.go index 9f7c18d57cb2..c588f2b78276 100644 --- a/x/auth/ante/sigverify.go +++ b/x/auth/ante/sigverify.go @@ -90,7 +90,7 @@ func (spkd SetPubKeyDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate b pk = simSecp256k1Pubkey } // Only make check if simulate=false - if !simulate && !bytes.Equal(pk.Address(), signers[i]) { + if !simulate && !bytes.Equal(pk.Address(), signers[i]) && ctx.IsSigverifyTx() { return ctx, errorsmod.Wrapf(sdkerrors.ErrInvalidPubKey, "pubKey does not match signer address %s with signer index: %d", signerStrs[i], i) } @@ -302,7 +302,7 @@ func (svd SigVerificationDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simul } // no need to verify signatures on recheck tx - if !simulate && !ctx.IsReCheckTx() { + if !simulate && !ctx.IsReCheckTx() && ctx.IsSigverifyTx() { anyPk, _ := codectypes.NewAnyWithValue(pubKey) signerData := txsigning.SignerData{ diff --git a/x/auth/ante/sigverify_test.go b/x/auth/ante/sigverify_test.go index 6cd7f7807841..150fdff31ee1 100644 --- a/x/auth/ante/sigverify_test.go +++ b/x/auth/ante/sigverify_test.go @@ -190,23 +190,26 @@ func TestSigVerification(t *testing.T) { accSeqs []uint64 invalidSigs bool // used for testing sigverify on RecheckTx recheck bool + sigverify bool shouldErr bool } validSigs := false testCases := []testCase{ - {"no signers", []cryptotypes.PrivKey{}, []uint64{}, []uint64{}, validSigs, false, true}, - {"not enough signers", []cryptotypes.PrivKey{priv1, priv2}, []uint64{accs[0].GetAccountNumber(), accs[1].GetAccountNumber()}, []uint64{0, 0}, validSigs, false, true}, - {"wrong order signers", []cryptotypes.PrivKey{priv3, priv2, priv1}, []uint64{accs[2].GetAccountNumber(), accs[1].GetAccountNumber(), accs[0].GetAccountNumber()}, []uint64{0, 0, 0}, validSigs, false, true}, - {"wrong accnums", []cryptotypes.PrivKey{priv1, priv2, priv3}, []uint64{7, 8, 9}, []uint64{0, 0, 0}, validSigs, false, true}, - {"wrong sequences", []cryptotypes.PrivKey{priv1, priv2, priv3}, []uint64{accs[0].GetAccountNumber(), accs[1].GetAccountNumber(), accs[2].GetAccountNumber()}, []uint64{3, 4, 5}, validSigs, false, true}, - {"valid tx", []cryptotypes.PrivKey{priv1, priv2, priv3}, []uint64{accs[0].GetAccountNumber(), accs[1].GetAccountNumber(), accs[2].GetAccountNumber()}, []uint64{0, 0, 0}, validSigs, false, false}, - {"no err on recheck", []cryptotypes.PrivKey{priv1, priv2, priv3}, []uint64{0, 0, 0}, []uint64{0, 0, 0}, !validSigs, true, false}, + {"no signers", []cryptotypes.PrivKey{}, []uint64{}, []uint64{}, validSigs, false, true, true}, + {"not enough signers", []cryptotypes.PrivKey{priv1, priv2}, []uint64{accs[0].GetAccountNumber(), accs[1].GetAccountNumber()}, []uint64{0, 0}, validSigs, false, true, true}, + {"wrong order signers", []cryptotypes.PrivKey{priv3, priv2, priv1}, []uint64{accs[2].GetAccountNumber(), accs[1].GetAccountNumber(), accs[0].GetAccountNumber()}, []uint64{0, 0, 0}, validSigs, false, true, true}, + {"wrong accnums", []cryptotypes.PrivKey{priv1, priv2, priv3}, []uint64{7, 8, 9}, []uint64{0, 0, 0}, validSigs, false, true, true}, + {"wrong sequences", []cryptotypes.PrivKey{priv1, priv2, priv3}, []uint64{accs[0].GetAccountNumber(), accs[1].GetAccountNumber(), accs[2].GetAccountNumber()}, []uint64{3, 4, 5}, validSigs, false, true, true}, + {"valid tx", []cryptotypes.PrivKey{priv1, priv2, priv3}, []uint64{accs[0].GetAccountNumber(), accs[1].GetAccountNumber(), accs[2].GetAccountNumber()}, []uint64{0, 0, 0}, validSigs, false, true, false}, + {"sigverify tx with wrong order signers", []cryptotypes.PrivKey{priv3, priv2, priv1}, []uint64{accs[0].GetAccountNumber(), accs[1].GetAccountNumber(), accs[2].GetAccountNumber()}, []uint64{0, 0, 0}, validSigs, false, true, true}, + {"skip sigverify tx with wrong order signers", []cryptotypes.PrivKey{priv3, priv2, priv1}, []uint64{accs[0].GetAccountNumber(), accs[1].GetAccountNumber(), accs[2].GetAccountNumber()}, []uint64{0, 0, 0}, validSigs, false, false, false}, + {"no err on recheck", []cryptotypes.PrivKey{priv1, priv2, priv3}, []uint64{0, 0, 0}, []uint64{0, 0, 0}, !validSigs, true, true, false}, } for i, tc := range testCases { for _, signMode := range enabledSignModes { t.Run(fmt.Sprintf("%s with %s", tc.name, signMode), func(t *testing.T) { - suite.ctx = suite.ctx.WithIsReCheckTx(tc.recheck) + suite.ctx = suite.ctx.WithIsReCheckTx(tc.recheck).WithIsSigverifyTx(tc.sigverify) suite.txBuilder = suite.clientCtx.TxConfig.NewTxBuilder() // Create new txBuilder for each test require.NoError(t, suite.txBuilder.SetMsgs(msgs...)) diff --git a/x/auth/client/cli/tx_multisign.go b/x/auth/client/cli/tx_multisign.go index 3b919b96209b..d4195585aa2b 100644 --- a/x/auth/client/cli/tx_multisign.go +++ b/x/auth/client/cli/tx_multisign.go @@ -48,6 +48,10 @@ If the --offline flag is on, the client will not reach out to an external node. Account number or sequence number lookups are not performed so you must set these parameters manually. +If the --skip-signature-verification flag is on, the command will not verify the +signatures in the provided signature files. This is useful when the multisig +account is a signer in a nested multisig scenario. + The current multisig implementation defaults to amino-json sign mode. The SIGN_MODE_DIRECT sign mode is not supported.' `, @@ -58,6 +62,7 @@ The SIGN_MODE_DIRECT sign mode is not supported.' Args: cobra.MinimumNArgs(3), } + cmd.Flags().Bool(flagSkipSignatureVerification, false, "Skip signature verification") cmd.Flags().Bool(flagSigOnly, false, "Print only the generated signature, then exit") cmd.Flags().String(flags.FlagOutputDocument, "", "The document is written to the given file instead of STDOUT") flags.AddTxFlagsToCmd(cmd) @@ -105,6 +110,10 @@ func makeMultiSignCmd() func(cmd *cobra.Command, args []string) (err error) { return err } + // avoid signature verification if the sender of the tx is different than + // the multisig key (useful for nested multisigs). + skipSigVerify, _ := cmd.Flags().GetBool(flagSkipSignatureVerification) + multisigPub := pubKey.(*kmultisig.LegacyAminoPubKey) multisigSig := multisig.NewMultisig(len(multisigPub.PubKeys)) if !clientCtx.Offline { @@ -149,11 +158,13 @@ func makeMultiSignCmd() func(cmd *cobra.Command, args []string) (err error) { } txData := adaptableTx.GetSigningTxData() - err = signing.VerifySignature(cmd.Context(), sig.PubKey, txSignerData, sig.Data, - txCfg.SignModeHandler(), txData) - if err != nil { - addr, _ := sdk.AccAddressFromHexUnsafe(sig.PubKey.Address().String()) - return fmt.Errorf("couldn't verify signature for address %s", addr) + if !skipSigVerify { + err = signing.VerifySignature(cmd.Context(), sig.PubKey, txSignerData, sig.Data, + txCfg.SignModeHandler(), txData) + if err != nil { + addr, _ := sdk.AccAddressFromHexUnsafe(sig.PubKey.Address().String()) + return fmt.Errorf("couldn't verify signature for address %s %w", addr, err) + } } if err := multisig.AddSignatureV2(multisigSig, sig, multisigPub.GetPubKeys()); err != nil { diff --git a/x/auth/client/cli/tx_sign.go b/x/auth/client/cli/tx_sign.go index fc993c9393ba..a5dec4d00fb7 100644 --- a/x/auth/client/cli/tx_sign.go +++ b/x/auth/client/cli/tx_sign.go @@ -10,16 +10,18 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/client/tx" kmultisig "github.com/cosmos/cosmos-sdk/crypto/keys/multisig" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" sdk "github.com/cosmos/cosmos-sdk/types" authclient "github.com/cosmos/cosmos-sdk/x/auth/client" ) const ( - flagMultisig = "multisig" - flagOverwrite = "overwrite" - flagSigOnly = "signature-only" - flagNoAutoIncrement = "no-auto-increment" - flagAppend = "append" + flagMultisig = "multisig" + flagOverwrite = "overwrite" + flagSigOnly = "signature-only" + flagSkipSignatureVerification = "skip-signature-verification" + flagNoAutoIncrement = "no-auto-increment" + flagAppend = "append" ) // GetSignBatchCommand returns the transaction sign-batch command. @@ -228,11 +230,40 @@ func sign(clientCtx client.Context, txBuilder client.TxBuilder, txFactory tx.Fac } func multisigSign(clientCtx client.Context, txBuilder client.TxBuilder, txFactory tx.Factory, multisig string) error { - multisigAddr, _, _, err := client.GetFromFields(clientCtx, txFactory.Keybase(), multisig) + multisigAddr, multisigName, _, err := client.GetFromFields(clientCtx, txFactory.Keybase(), multisig) if err != nil { return fmt.Errorf("error getting account from keybase: %w", err) } + fromRecord, err := clientCtx.Keyring.Key(clientCtx.FromName) + if err != nil { + return fmt.Errorf("error getting account from keybase: %w", err) + } + + fromPubKey, err := fromRecord.GetPubKey() + if err != nil { + return err + } + + multisigkey, err := clientCtx.Keyring.Key(multisigName) + if err != nil { + return err + } + + multisigPubKey, err := multisigkey.GetPubKey() + if err != nil { + return err + } + + isSigner, err := isMultisigSigner(clientCtx, multisigPubKey, fromPubKey) + if err != nil { + return err + } + + if !isSigner { + return fmt.Errorf("signing key is not a part of multisig key") + } + if err = authclient.SignTxWithSignerAddress( txFactory, clientCtx, @@ -248,6 +279,33 @@ func multisigSign(clientCtx client.Context, txBuilder client.TxBuilder, txFactor return nil } +// isMultisigSigner checks if the given pubkey is a signer in the multisig or in +// any of the nested multisig signers. +func isMultisigSigner(clientCtx client.Context, multisigPubKey, fromPubKey cryptotypes.PubKey) (bool, error) { + multisigLegacyPub := multisigPubKey.(*kmultisig.LegacyAminoPubKey) + + var found bool + for _, pubkey := range multisigLegacyPub.GetPubKeys() { + if pubkey.Equals(fromPubKey) { + found = true + break + } + + if nestedMultisig, ok := pubkey.(*kmultisig.LegacyAminoPubKey); ok { + var err error + found, err = isMultisigSigner(clientCtx, nestedMultisig, fromPubKey) + if err != nil { + return false, err + } + if found { + break + } + } + } + + return found, nil +} + func setOutputFile(cmd *cobra.Command) (func(), error) { outputDoc, _ := cmd.Flags().GetString(flags.FlagOutputDocument) if outputDoc == "" { @@ -373,7 +431,6 @@ func signTx(cmd *cobra.Command, clientCtx client.Context, txF tx.Factory, newTx if err != nil { return err } - multisigLegacyPub := multisigPubKey.(*kmultisig.LegacyAminoPubKey) fromRecord, err := clientCtx.Keyring.Key(fromName) if err != nil { @@ -384,15 +441,14 @@ func signTx(cmd *cobra.Command, clientCtx client.Context, txF tx.Factory, newTx return err } - var found bool - for _, pubkey := range multisigLegacyPub.GetPubKeys() { - if pubkey.Equals(fromPubKey) { - found = true - } + isSigner, err := isMultisigSigner(clientCtx, multisigPubKey, fromPubKey) + if err != nil { + return err } - if !found { + if !isSigner { return fmt.Errorf("signing key is not a part of multisig key") } + err = authclient.SignTxWithSignerAddress( txF, clientCtx, multisigAddr, fromName, txBuilder, clientCtx.Offline, overwrite) if err != nil { diff --git a/x/auth/client/tx.go b/x/auth/client/tx.go index a2e829641f1f..027e27d3b05c 100644 --- a/x/auth/client/tx.go +++ b/x/auth/client/tx.go @@ -78,16 +78,6 @@ func SignTxWithSignerAddress(txFactory tx.Factory, clientCtx client.Context, add txFactory = txFactory.WithSignMode(signing.SignMode_SIGN_MODE_LEGACY_AMINO_JSON) } - // check whether the address is a signer - signers, err := txBuilder.GetTx().GetSigners() - if err != nil { - return err - } - - if !isTxSigner(addr, signers) { - return fmt.Errorf("%s: %s", errors.ErrorInvalidSigner, name) - } - if !offline { txFactory, err = populateAccountFromState(txFactory, clientCtx, addr) if err != nil { diff --git a/x/authz/keeper/keeper.go b/x/authz/keeper/keeper.go index 974c18000e42..aa97f792f654 100644 --- a/x/authz/keeper/keeper.go +++ b/x/authz/keeper/keeper.go @@ -413,7 +413,7 @@ func (k Keeper) removeFromGrantQueue(ctx context.Context, grantKey []byte, grant } // DequeueAndDeleteExpiredGrants deletes expired grants from the state and grant queue. -func (k Keeper) DequeueAndDeleteExpiredGrants(ctx context.Context) error { +func (k Keeper) DequeueAndDeleteExpiredGrants(ctx context.Context, limit int) error { store := k.storeService.OpenKVStore(ctx) sdkCtx := sdk.UnwrapSDKContext(ctx) @@ -423,7 +423,13 @@ func (k Keeper) DequeueAndDeleteExpiredGrants(ctx context.Context) error { } defer iterator.Close() + count := 0 for ; iterator.Valid(); iterator.Next() { + // limit the amount of iterations to avoid taking too much time + if count >= limit { + return nil + } + var queueItem authz.GrantQueueItem if err := k.cdc.Unmarshal(iterator.Value(), &queueItem); err != nil { return err @@ -445,6 +451,8 @@ func (k Keeper) DequeueAndDeleteExpiredGrants(ctx context.Context) error { return err } } + + count++ } return nil diff --git a/x/authz/keeper/keeper_test.go b/x/authz/keeper/keeper_test.go index 94f3f50fa3c0..f28c574bb698 100644 --- a/x/authz/keeper/keeper_test.go +++ b/x/authz/keeper/keeper_test.go @@ -378,7 +378,8 @@ func (s *TestSuite) TestDequeueAllGrantsQueue() { require.NoError(err) newCtx := s.ctx.WithBlockTime(exp.AddDate(1, 0, 0)) - err = s.authzKeeper.DequeueAndDeleteExpiredGrants(newCtx) + // setting a high limit so all grants are dequeued + err = s.authzKeeper.DequeueAndDeleteExpiredGrants(newCtx, 200) require.NoError(err) s.T().Log("verify expired grants are pruned from the state") @@ -399,6 +400,74 @@ func (s *TestSuite) TestDequeueAllGrantsQueue() { require.Len(authzs, 1) } +func (s *TestSuite) TestDequeueGrantsQueueEdgecases() { + require := s.Require() + addrs := s.addrs + granter := addrs[0] + grantee := addrs[1] + grantee1 := addrs[2] + exp := s.ctx.BlockTime().AddDate(0, 0, 1) + a := banktypes.SendAuthorization{SpendLimit: coins100} + + // create few authorizations + err := s.authzKeeper.SaveGrant(s.ctx, grantee, granter, &a, &exp) + require.NoError(err) + + err = s.authzKeeper.SaveGrant(s.ctx, grantee1, granter, &a, &exp) + require.NoError(err) + + exp2 := exp.AddDate(0, 1, 0) + err = s.authzKeeper.SaveGrant(s.ctx, granter, grantee1, &a, &exp2) + require.NoError(err) + + exp2 = exp.AddDate(2, 0, 0) + err = s.authzKeeper.SaveGrant(s.ctx, granter, grantee, &a, &exp2) + require.NoError(err) + + newCtx := s.ctx.WithBlockTime(exp.AddDate(1, 0, 0)) + err = s.authzKeeper.DequeueAndDeleteExpiredGrants(newCtx, 0) + require.NoError(err) + + s.T().Log("verify no pruning happens when limit is 0") + authzs, err := s.authzKeeper.GetAuthorizations(newCtx, grantee, granter) + require.NoError(err) + require.Len(authzs, 1) + + authzs, err = s.authzKeeper.GetAuthorizations(newCtx, granter, grantee1) + require.NoError(err) + require.Len(authzs, 1) + + authzs, err = s.authzKeeper.GetAuthorizations(newCtx, grantee1, granter) + require.NoError(err) + require.Len(authzs, 1) + + authzs, err = s.authzKeeper.GetAuthorizations(newCtx, granter, grantee) + require.NoError(err) + require.Len(authzs, 1) + + // expecting to prune 1 record when limit is 1 + newCtx = s.ctx.WithBlockTime(exp.AddDate(1, 0, 0)) + err = s.authzKeeper.DequeueAndDeleteExpiredGrants(newCtx, 1) + require.NoError(err) + + s.T().Log("verify 1 record is prunded when limit is 1") + authzs, err = s.authzKeeper.GetAuthorizations(newCtx, grantee, granter) + require.NoError(err) + require.Len(authzs, 0) + + authzs, err = s.authzKeeper.GetAuthorizations(newCtx, granter, grantee1) + require.NoError(err) + require.Len(authzs, 1) + + authzs, err = s.authzKeeper.GetAuthorizations(newCtx, grantee1, granter) + require.NoError(err) + require.Len(authzs, 1) + + authzs, err = s.authzKeeper.GetAuthorizations(newCtx, granter, grantee) + require.NoError(err) + require.Len(authzs, 1) +} + func (s *TestSuite) TestGetAuthorization() { addr1 := s.addrs[3] addr2 := s.addrs[4] diff --git a/x/authz/module/abci.go b/x/authz/module/abci.go index fc405bb8f06f..d5df8ecb20bf 100644 --- a/x/authz/module/abci.go +++ b/x/authz/module/abci.go @@ -8,5 +8,5 @@ import ( // BeginBlocker is called at the beginning of every block func BeginBlocker(ctx sdk.Context, keeper keeper.Keeper) error { // delete all the mature grants - return keeper.DequeueAndDeleteExpiredGrants(ctx) + return keeper.DequeueAndDeleteExpiredGrants(ctx, 200) } diff --git a/x/authz/module/module.go b/x/authz/module/module.go index 3546f70e9d8e..3c80d13c1420 100644 --- a/x/authz/module/module.go +++ b/x/authz/module/module.go @@ -178,7 +178,7 @@ type ModuleOutputs struct { func ProvideModule(in ModuleInputs) ModuleOutputs { k := keeper.NewKeeper(in.StoreService, in.Cdc, in.MsgServiceRouter, in.AccountKeeper) m := NewAppModule(in.Cdc, k, in.AccountKeeper, in.BankKeeper, in.Registry) - return ModuleOutputs{AuthzKeeper: k, Module: m} + return ModuleOutputs{AuthzKeeper: k.SetBankKeeper(in.BankKeeper) /* depinject ux improvement */, Module: m} } // ____________________________________________________________________________ diff --git a/x/circuit/go.mod b/x/circuit/go.mod index dc85eabb1fd7..c127c4e2aabf 100644 --- a/x/circuit/go.mod +++ b/x/circuit/go.mod @@ -10,9 +10,9 @@ require ( cosmossdk.io/errors v1.0.1 cosmossdk.io/store v1.1.0 github.com/cockroachdb/errors v1.11.1 - github.com/cometbft/cometbft v0.38.7 + github.com/cometbft/cometbft v0.38.9 github.com/cosmos/cosmos-sdk v0.50.6 - github.com/cosmos/gogoproto v1.4.12 + github.com/cosmos/gogoproto v1.5.0 github.com/golang/protobuf v1.5.4 github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/stretchr/testify v1.9.0 @@ -84,6 +84,7 @@ require ( github.com/hashicorp/go-metrics v0.5.3 // indirect github.com/hashicorp/go-plugin v1.5.2 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.1.0 // indirect diff --git a/x/circuit/go.sum b/x/circuit/go.sum index 3567a0e69d81..4308f10ea049 100644 --- a/x/circuit/go.sum +++ b/x/circuit/go.sum @@ -125,8 +125,8 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/cometbft/cometbft v0.38.7 h1:ULhIOJ9+LgSy6nLekhq9ae3juX3NnQUMMPyVdhZV6Hk= -github.com/cometbft/cometbft v0.38.7/go.mod h1:HIyf811dFMI73IE0F7RrnY/Fr+d1+HuJAgtkEpQjCMY= +github.com/cometbft/cometbft v0.38.9 h1:cJBJBG0mPKz+sqelCi/hlfZjadZQGdDNnu6YQ1ZsUHQ= +github.com/cometbft/cometbft v0.38.9/go.mod h1:xOoGZrtUT+A5izWfHSJgl0gYZUE7lu7Z2XIS1vWG/QQ= github.com/cometbft/cometbft-db v0.9.1 h1:MIhVX5ja5bXNHF8EYrThkG9F7r9kSfv8BX4LWaxWJ4M= github.com/cometbft/cometbft-db v0.9.1/go.mod h1:iliyWaoV0mRwBJoizElCwwRA9Tf7jZJOURcRZF9m60U= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= @@ -150,8 +150,8 @@ github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4x github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= -github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= -github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= +github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= +github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= github.com/cosmos/iavl v1.1.2 h1:zL9FK7C4L/P4IF1Dm5fIwz0WXCnn7Bp1M2FxH0ayM7Y= github.com/cosmos/iavl v1.1.2/go.mod h1:jLeUvm6bGT1YutCaL2fIar/8vGUE8cPZvh/gXEWDaDM= github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= @@ -389,6 +389,8 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= diff --git a/x/distribution/autocli.go b/x/distribution/autocli.go index a8c6c4041b0d..88d1bc0a97c2 100644 --- a/x/distribution/autocli.go +++ b/x/distribution/autocli.go @@ -6,6 +6,7 @@ import ( autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" distirbuitonv1beta1 "cosmossdk.io/api/cosmos/distribution/v1beta1" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/version" ) @@ -85,6 +86,16 @@ func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { Short: "Query the amount of coins in the community pool", Example: fmt.Sprintf(`$ %s query distribution community-pool`, version.AppName), }, + { + RpcMethod: "TokenizeShareRecordReward", + Use: "tokenize-share-record-rewards [owner]", + Short: "Query distribution tokenize share record rewards", + Example: fmt.Sprintf(`$ %s query distribution tokenize-share-record-rewards %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj`, + version.AppName, sdk.GetConfig().GetBech32AccountAddrPrefix()), + PositionalArgs: []*autocliv1.PositionalArgDescriptor{ + {ProtoField: "owner_address"}, + }, + }, }, }, Tx: &autocliv1.ServiceCommandDescriptor{ diff --git a/x/distribution/client/cli/tx.go b/x/distribution/client/cli/tx.go index 577389028856..8b44ab0d0bf2 100644 --- a/x/distribution/client/cli/tx.go +++ b/x/distribution/client/cli/tx.go @@ -2,6 +2,7 @@ package cli import ( "fmt" + "strconv" "strings" "github.com/spf13/cobra" @@ -43,6 +44,8 @@ func NewTxCmd(valAc, ac address.Codec) *cobra.Command { NewSetWithdrawAddrCmd(ac), NewFundCommunityPoolCmd(ac), NewDepositValidatorRewardsPoolCmd(valAc, ac), + NewWithdrawTokenizeShareRecordRewardCmd(ac), + NewWithdrawAllTokenizeShareRecordRewardCmd(ac), ) return distTxCmd @@ -309,3 +312,80 @@ func NewDepositValidatorRewardsPoolCmd(valCodec, ac address.Codec) *cobra.Comman return cmd } + +// WithdrawAllTokenizeShareRecordReward defines a method to withdraw reward for all owning TokenizeShareRecord +func NewWithdrawAllTokenizeShareRecordRewardCmd(ac address.Codec) *cobra.Command { + cmd := &cobra.Command{ + Use: "withdraw-all-tokenize-share-rewards", + Args: cobra.ExactArgs(0), + Short: "Withdraw reward for all owning TokenizeShareRecord", + Long: strings.TrimSpace( + fmt.Sprintf(`Withdraw reward for all owned TokenizeShareRecord +Example: +$ %s tx distribution withdraw-all-tokenize-share-rewards --from mykey +`, + version.AppName, + ), + ), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + ownerAddr, err := ac.BytesToString(clientCtx.GetFromAddress()) + if err != nil { + return err + } + + msg := types.NewMsgWithdrawAllTokenizeShareRecordReward(ownerAddr) + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + +// WithdrawTokenizeShareRecordReward defines a method to withdraw reward for an owning TokenizeShareRecord +func NewWithdrawTokenizeShareRecordRewardCmd(ac address.Codec) *cobra.Command { + cmd := &cobra.Command{ + Use: "withdraw-tokenize-share-rewards", + Args: cobra.ExactArgs(1), + Short: "Withdraw reward for an owning TokenizeShareRecord", + Long: strings.TrimSpace( + fmt.Sprintf(`Withdraw reward for an owned TokenizeShareRecord +Example: +$ %s tx distribution withdraw-tokenize-share-rewards 1 --from mykey +`, + version.AppName, + ), + ), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + ownerAddr, err := ac.BytesToString(clientCtx.GetFromAddress()) + if err != nil { + return err + } + + recordID, err := strconv.Atoi(args[0]) + if err != nil { + return err + } + + msg := types.NewMsgWithdrawTokenizeShareRecordReward(ownerAddr, uint64(recordID)) + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} diff --git a/x/distribution/keeper/grpc_query.go b/x/distribution/keeper/grpc_query.go index b80ca323f8fc..57edc130dcac 100644 --- a/x/distribution/keeper/grpc_query.go +++ b/x/distribution/keeper/grpc_query.go @@ -2,6 +2,7 @@ package keeper import ( "context" + goerrors "errors" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -370,3 +371,77 @@ func (k Querier) CommunityPool(ctx context.Context, req *types.QueryCommunityPoo return &types.QueryCommunityPoolResponse{Pool: pool.CommunityPool}, nil } + +// TokenizeShareRecordReward returns estimated amount of reward from tokenize share record ownership +func (k Keeper) TokenizeShareRecordReward(c context.Context, req *types.QueryTokenizeShareRecordRewardRequest) (*types.QueryTokenizeShareRecordRewardResponse, error) { + ctx := sdk.UnwrapSDKContext(c) + + totalRewards := sdk.DecCoins{} + rewards := []types.TokenizeShareRecordReward{} + + ownerAddr, err := k.authKeeper.AddressCodec().StringToBytes(req.OwnerAddress) + if err != nil { + return nil, err + } + records := k.stakingKeeper.GetTokenizeShareRecordsByOwner(ctx, ownerAddr) + for _, record := range records { + valAddr, err := k.stakingKeeper.ValidatorAddressCodec().StringToBytes(record.Validator) + if err != nil { + return nil, err + } + + moduleAddr := record.GetModuleAddress() + moduleBalance := k.bankKeeper.GetAllBalances(ctx, moduleAddr) + moduleBalanceDecCoins := sdk.NewDecCoinsFromCoins(moduleBalance...) + + validatorFound := true + val, err := k.stakingKeeper.Validator(ctx, valAddr) + if err != nil { + if !goerrors.Is(err, stakingtypes.ErrNoValidatorFound) { + return nil, err + } + + validatorFound = false + } + + delegationFound := true + del, err := k.stakingKeeper.Delegation(ctx, moduleAddr, valAddr) + if err != nil { + if !goerrors.Is(err, stakingtypes.ErrNoDelegation) { + return nil, err + } + + delegationFound = false + } + + if validatorFound && delegationFound { + // withdraw rewards + endingPeriod, err := k.IncrementValidatorPeriod(ctx, val) + if err != nil { + return nil, err + } + + recordReward, err := k.CalculateDelegationRewards(ctx, val, del, endingPeriod) + if err != nil { + return nil, err + } + + rewards = append(rewards, types.TokenizeShareRecordReward{ + RecordId: record.Id, + Reward: recordReward.Add(moduleBalanceDecCoins...), + }) + totalRewards = totalRewards.Add(recordReward...) + } else if !moduleBalance.IsZero() { + rewards = append(rewards, types.TokenizeShareRecordReward{ + RecordId: record.Id, + Reward: moduleBalanceDecCoins, + }) + totalRewards = totalRewards.Add(moduleBalanceDecCoins...) + } + } + + return &types.QueryTokenizeShareRecordRewardResponse{ + Rewards: rewards, + Total: totalRewards, + }, nil +} diff --git a/x/distribution/keeper/hooks.go b/x/distribution/keeper/hooks.go index 006f35ed89a8..ef670b6b662f 100644 --- a/x/distribution/keeper/hooks.go +++ b/x/distribution/keeper/hooks.go @@ -161,6 +161,15 @@ func (h Hooks) BeforeValidatorSlashed(ctx context.Context, valAddr sdk.ValAddres return h.k.updateValidatorSlashFraction(ctx, valAddr, fraction) } +// Withdraw rewards before removing record +func (h Hooks) BeforeTokenizeShareRecordRemoved(ctx context.Context, recordID uint64) error { + err := h.k.WithdrawSingleShareRecordReward(ctx, recordID) + if err != nil { + h.k.Logger(ctx).Error(err.Error()) + } + return err +} + func (h Hooks) BeforeValidatorModified(_ context.Context, _ sdk.ValAddress) error { return nil } diff --git a/x/distribution/keeper/keeper.go b/x/distribution/keeper/keeper.go index 7bea2017a1b9..f7b68fd59cc5 100644 --- a/x/distribution/keeper/keeper.go +++ b/x/distribution/keeper/keeper.go @@ -2,6 +2,7 @@ package keeper import ( "context" + goerrors "errors" "fmt" "cosmossdk.io/collections" @@ -13,6 +14,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/x/distribution/types" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ) // Keeper of the distribution store @@ -216,3 +218,186 @@ func (k Keeper) FundCommunityPool(ctx context.Context, amount sdk.Coins, sender feePool.CommunityPool = feePool.CommunityPool.Add(sdk.NewDecCoinsFromCoins(amount...)...) return k.FeePool.Set(ctx, feePool) } + +func (k Keeper) WithdrawSingleShareRecordReward(ctx context.Context, recordID uint64) error { + record, err := k.stakingKeeper.GetTokenizeShareRecord(ctx, recordID) + if err != nil { + return err + } + + ownerAddr, err := k.authKeeper.AddressCodec().StringToBytes(record.Owner) + if err != nil { + return err + } + owner := sdk.AccAddress(ownerAddr) + + valAddr, err := k.stakingKeeper.ValidatorAddressCodec().StringToBytes(record.Validator) + if err != nil { + return err + } + + validatorFound := true + _, err = k.stakingKeeper.Validator(ctx, valAddr) + if err != nil { + if !goerrors.Is(err, stakingtypes.ErrNoValidatorFound) { + return err + } + + validatorFound = false + } + + delegationFound := true + _, err = k.stakingKeeper.Delegation(ctx, record.GetModuleAddress(), valAddr) + if err != nil { + if !goerrors.Is(err, stakingtypes.ErrNoDelegation) { + return err + } + + delegationFound = false + } + + sdkCtx := sdk.UnwrapSDKContext(ctx) + if validatorFound && delegationFound { + // withdraw rewards into reward module account and send it to reward owner + cacheCtx, write := sdkCtx.CacheContext() + _, err = k.WithdrawDelegationRewards(cacheCtx, record.GetModuleAddress(), valAddr) + if err != nil { + return err + } + write() + } + + // apply changes when the module account has positive balance + balances := k.bankKeeper.GetAllBalances(ctx, record.GetModuleAddress()) + if !balances.Empty() { + err = k.bankKeeper.SendCoins(ctx, record.GetModuleAddress(), owner, balances) + if err != nil { + return err + } + + sdkCtx.EventManager().EmitEvent( + sdk.NewEvent( + types.EventTypeWithdrawTokenizeShareReward, + sdk.NewAttribute(types.AttributeKeyWithdrawAddress, owner.String()), + sdk.NewAttribute(sdk.AttributeKeyAmount, balances.String()), + ), + ) + } + return nil +} + +// withdraw reward for owning TokenizeShareRecord +func (k Keeper) WithdrawTokenizeShareRecordReward(ctx sdk.Context, ownerAddr sdk.AccAddress, recordID uint64) (sdk.Coins, error) { + record, err := k.stakingKeeper.GetTokenizeShareRecord(ctx, recordID) + if err != nil { + return nil, err + } + + if record.Owner != ownerAddr.String() { + return nil, types.ErrNotTokenizeShareRecordOwner + } + + valAddr, err := k.stakingKeeper.ValidatorAddressCodec().StringToBytes(record.Validator) + if err != nil { + return nil, err + } + + _, err = k.stakingKeeper.Validator(ctx, valAddr) + if err != nil { + return nil, err + } + + _, err = k.stakingKeeper.Delegation(ctx, record.GetModuleAddress(), valAddr) + if err != nil { + return nil, err + } + + // withdraw rewards into reward module account and send it to reward owner + _, err = k.WithdrawDelegationRewards(ctx, record.GetModuleAddress(), valAddr) + if err != nil { + return nil, err + } + + // apply changes when the module account has positive balance + rewards := k.bankKeeper.GetAllBalances(ctx, record.GetModuleAddress()) + if !rewards.Empty() { + err = k.bankKeeper.SendCoins(ctx, record.GetModuleAddress(), ownerAddr, rewards) + if err != nil { + return nil, err + } + } + + ctx.EventManager().EmitEvent( + sdk.NewEvent( + types.EventTypeWithdrawTokenizeShareReward, + sdk.NewAttribute(types.AttributeKeyWithdrawAddress, ownerAddr.String()), + sdk.NewAttribute(sdk.AttributeKeyAmount, rewards.String()), + ), + ) + + return rewards, nil +} + +// withdraw reward for all owning TokenizeShareRecord +func (k Keeper) WithdrawAllTokenizeShareRecordReward(ctx sdk.Context, ownerAddr sdk.AccAddress) (sdk.Coins, error) { + totalRewards := sdk.Coins{} + + records := k.stakingKeeper.GetTokenizeShareRecordsByOwner(ctx, ownerAddr) + + for _, record := range records { + valAddr, err := k.stakingKeeper.ValidatorAddressCodec().StringToBytes(record.Validator) + if err != nil { + return nil, err + } + + _, err = k.stakingKeeper.Validator(ctx, valAddr) + if err != nil && !goerrors.Is(err, stakingtypes.ErrNoValidatorFound) { + return nil, err + } + + // if the error is ErrNoValidatorFound + if err != nil { + continue + } + + _, err = k.stakingKeeper.Delegation(ctx, record.GetModuleAddress(), valAddr) + if err != nil && !goerrors.Is(err, stakingtypes.ErrNoDelegation) { + return nil, err + } + + // if the error is ErrNoDelegation + if err != nil { + continue + } + + // withdraw rewards into reward module account and send it to reward owner + cacheCtx, write := ctx.CacheContext() + _, err = k.WithdrawDelegationRewards(cacheCtx, record.GetModuleAddress(), valAddr) + if err != nil { + k.Logger(ctx).Error(err.Error()) + continue + } + + // apply changes when the module account has positive balance + balances := k.bankKeeper.GetAllBalances(cacheCtx, record.GetModuleAddress()) + if !balances.Empty() { + err = k.bankKeeper.SendCoins(cacheCtx, record.GetModuleAddress(), ownerAddr, balances) + if err != nil { + k.Logger(ctx).Error(err.Error()) + continue + } + write() + totalRewards = totalRewards.Add(balances...) + } + } + + ctx.EventManager().EmitEvent( + sdk.NewEvent( + types.EventTypeWithdrawTokenizeShareReward, + sdk.NewAttribute(types.AttributeKeyWithdrawAddress, ownerAddr.String()), + sdk.NewAttribute(sdk.AttributeKeyAmount, totalRewards.String()), + ), + ) + + return totalRewards, nil +} diff --git a/x/distribution/keeper/msg_server.go b/x/distribution/keeper/msg_server.go index 1f4c64e0eb3f..7004316e565e 100644 --- a/x/distribution/keeper/msg_server.go +++ b/x/distribution/keeper/msg_server.go @@ -234,3 +234,59 @@ func validateAmount(amount sdk.Coins) error { return nil } + +// WithdrawTokenizeShareRecordReward defines a method to withdraw reward for owning TokenizeShareRecord +func (k msgServer) WithdrawTokenizeShareRecordReward(goCtx context.Context, msg *types.MsgWithdrawTokenizeShareRecordReward) (*types.MsgWithdrawTokenizeShareRecordRewardResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + ownerAddr, err := k.authKeeper.AddressCodec().StringToBytes(msg.OwnerAddress) + if err != nil { + return nil, err + } + amount, err := k.Keeper.WithdrawTokenizeShareRecordReward(ctx, ownerAddr, msg.RecordId) + if err != nil { + return nil, err + } + + defer func() { + for _, a := range amount { + if a.Amount.IsInt64() { + telemetry.SetGaugeWithLabels( + []string{"tx", "msg", "withdraw_tokenize_share_reward"}, + float32(a.Amount.Int64()), + []metrics.Label{telemetry.NewLabel("denom", a.Denom)}, + ) + } + } + }() + + return &types.MsgWithdrawTokenizeShareRecordRewardResponse{}, nil +} + +// WithdrawAllTokenizeShareRecordReward defines a method to withdraw reward for owning TokenizeShareRecord +func (k msgServer) WithdrawAllTokenizeShareRecordReward(goCtx context.Context, msg *types.MsgWithdrawAllTokenizeShareRecordReward) (*types.MsgWithdrawAllTokenizeShareRecordRewardResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + ownerAddr, err := k.authKeeper.AddressCodec().StringToBytes(msg.OwnerAddress) + if err != nil { + return nil, err + } + amount, err := k.Keeper.WithdrawAllTokenizeShareRecordReward(ctx, ownerAddr) + if err != nil { + return nil, err + } + + defer func() { + for _, a := range amount { + if a.Amount.IsInt64() { + telemetry.SetGaugeWithLabels( + []string{"tx", "msg", "withdraw_all_tokenize_share_reward"}, + float32(a.Amount.Int64()), + []metrics.Label{telemetry.NewLabel("denom", a.Denom)}, + ) + } + } + }() + + return &types.MsgWithdrawAllTokenizeShareRecordRewardResponse{}, nil +} diff --git a/x/distribution/simulation/operations.go b/x/distribution/simulation/operations.go index 4fff81489e91..477f66bd7694 100644 --- a/x/distribution/simulation/operations.go +++ b/x/distribution/simulation/operations.go @@ -20,15 +20,17 @@ import ( // Simulation operation weights constants const ( - OpWeightMsgSetWithdrawAddress = "op_weight_msg_set_withdraw_address" - OpWeightMsgWithdrawDelegationReward = "op_weight_msg_withdraw_delegation_reward" - OpWeightMsgWithdrawValidatorCommission = "op_weight_msg_withdraw_validator_commission" - OpWeightMsgFundCommunityPool = "op_weight_msg_fund_community_pool" - - DefaultWeightMsgSetWithdrawAddress int = 50 - DefaultWeightMsgWithdrawDelegationReward int = 50 - DefaultWeightMsgWithdrawValidatorCommission int = 50 - DefaultWeightMsgFundCommunityPool int = 50 + OpWeightMsgSetWithdrawAddress = "op_weight_msg_set_withdraw_address" + OpWeightMsgWithdrawDelegationReward = "op_weight_msg_withdraw_delegation_reward" + OpWeightMsgWithdrawValidatorCommission = "op_weight_msg_withdraw_validator_commission" + OpWeightMsgFundCommunityPool = "op_weight_msg_fund_community_pool" + OpWeightMsgWithdrawAllTokenizeShareRecordReward = "op_weight_msg_withdraw_all_tokenize_share_record_reward" + + DefaultWeightMsgSetWithdrawAddress int = 50 + DefaultWeightMsgWithdrawDelegationReward int = 50 + DefaultWeightMsgWithdrawValidatorCommission int = 50 + DefaultWeightMsgFundCommunityPool int = 50 + DefaultWeightMsgWithdrawAllTokenizeShareRecordReward int = 50 ) // WeightedOperations returns all the operations from the module with their respective weights @@ -61,6 +63,11 @@ func WeightedOperations( weightMsgFundCommunityPool = DefaultWeightMsgFundCommunityPool }) + var weightMsgWithdrawTokenizeShareRecordReward int + appParams.GetOrGenerate(OpWeightMsgWithdrawAllTokenizeShareRecordReward, &weightMsgWithdrawTokenizeShareRecordReward, nil, func(_ *rand.Rand) { + weightMsgWithdrawTokenizeShareRecordReward = DefaultWeightMsgWithdrawAllTokenizeShareRecordReward + }) + return simulation.WeightedOperations{ simulation.NewWeightedOperation( weightMsgSetWithdrawAddress, @@ -78,6 +85,10 @@ func WeightedOperations( weightMsgFundCommunityPool, SimulateMsgFundCommunityPool(txConfig, ak, bk, k, sk), ), + simulation.NewWeightedOperation( + weightMsgWithdrawTokenizeShareRecordReward, + SimulateMsgWithdrawTokenizeShareRecordReward(txConfig, ak, bk, k, sk), + ), } } @@ -278,3 +289,56 @@ func SimulateMsgFundCommunityPool(txConfig client.TxConfig, ak types.AccountKeep return simulation.GenAndDeliverTx(txCtx, fees) } } + +// SimulateMsgWithdrawTokenizeShareRecordReward simulates MsgWithdrawTokenizeShareRecordReward execution where +// a random account claim tokenize share record rewards. +func SimulateMsgWithdrawTokenizeShareRecordReward(txConfig client.TxConfig, ak types.AccountKeeper, bk types.BankKeeper, _ keeper.Keeper, sk types.StakingKeeper) simtypes.Operation { + return func( + r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, + ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { + msgType := sdk.MsgTypeURL(&types.MsgWithdrawTokenizeShareRecordReward{}) + rewardOwner, _ := simtypes.RandomAcc(r, accs) + + records := sk.GetAllTokenizeShareRecords(ctx) + if len(records) > 0 { + record := records[r.Intn(len(records))] + for _, acc := range accs { + if acc.Address.String() == record.Owner { + rewardOwner = acc + break + } + } + } + + // if simaccount.PrivKey == nil, delegation address does not exist in accs. Return error + if rewardOwner.PrivKey == nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "account private key is nil"), nil, nil + } + + rewardOwnerAddr, err := ak.AddressCodec().BytesToString(rewardOwner.Address) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "error converting reward owner address"), nil, err + } + + msg := types.NewMsgWithdrawAllTokenizeShareRecordReward(rewardOwnerAddr) + + account := ak.GetAccount(ctx, rewardOwner.Address) + spendable := bk.SpendableCoins(ctx, account.GetAddress()) + + txCtx := simulation.OperationInput{ + R: r, + App: app, + TxGen: txConfig, + Cdc: nil, + Msg: msg, + Context: ctx, + SimAccount: rewardOwner, + AccountKeeper: ak, + Bankkeeper: bk, + ModuleName: types.ModuleName, + CoinsSpentInMsg: spendable, + } + + return simulation.GenAndDeliverTxWithRandFees(txCtx) + } +} diff --git a/x/distribution/simulation/operations_test.go b/x/distribution/simulation/operations_test.go index 69c5726a0638..23d320bb1e86 100644 --- a/x/distribution/simulation/operations_test.go +++ b/x/distribution/simulation/operations_test.go @@ -51,6 +51,7 @@ func (suite *SimTestSuite) TestWeightedOperations() { {simulation.DefaultWeightMsgWithdrawDelegationReward, types.ModuleName, sdk.MsgTypeURL(&types.MsgWithdrawDelegatorReward{})}, {simulation.DefaultWeightMsgWithdrawValidatorCommission, types.ModuleName, sdk.MsgTypeURL(&types.MsgWithdrawValidatorCommission{})}, {simulation.DefaultWeightMsgFundCommunityPool, types.ModuleName, sdk.MsgTypeURL(&types.MsgFundCommunityPool{})}, + {simulation.DefaultWeightMsgWithdrawAllTokenizeShareRecordReward, types.ModuleName, sdk.MsgTypeURL(&types.MsgWithdrawAllTokenizeShareRecordReward{})}, } for i, w := range weightedOps { diff --git a/x/distribution/testutil/expected_keepers_mocks.go b/x/distribution/testutil/expected_keepers_mocks.go index c8d22259d623..88f6517f5658 100644 --- a/x/distribution/testutil/expected_keepers_mocks.go +++ b/x/distribution/testutil/expected_keepers_mocks.go @@ -156,6 +156,20 @@ func (mr *MockBankKeeperMockRecorder) GetAllBalances(ctx, addr interface{}) *gom return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAllBalances", reflect.TypeOf((*MockBankKeeper)(nil).GetAllBalances), ctx, addr) } +// SendCoins mocks base method. +func (m *MockBankKeeper) SendCoins(ctx context.Context, fromAddr, toAddr types.AccAddress, amt types.Coins) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SendCoins", ctx, fromAddr, toAddr, amt) + ret0, _ := ret[0].(error) + return ret0 +} + +// SendCoins indicates an expected call of SendCoins. +func (mr *MockBankKeeperMockRecorder) SendCoins(ctx, fromAddr, toAddr, amt interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendCoins", reflect.TypeOf((*MockBankKeeper)(nil).SendCoins), ctx, fromAddr, toAddr, amt) +} + // SendCoinsFromAccountToModule mocks base method. func (m *MockBankKeeper) SendCoinsFromAccountToModule(ctx context.Context, senderAddr types.AccAddress, recipientModule string, amt types.Coins) error { m.ctrl.T.Helper() @@ -294,6 +308,20 @@ func (mr *MockStakingKeeperMockRecorder) GetAllSDKDelegations(ctx interface{}) * return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAllSDKDelegations", reflect.TypeOf((*MockStakingKeeper)(nil).GetAllSDKDelegations), ctx) } +// GetAllTokenizeShareRecords mocks base method. +func (m *MockStakingKeeper) GetAllTokenizeShareRecords(ctx context.Context) []types0.TokenizeShareRecord { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetAllTokenizeShareRecords", ctx) + ret0, _ := ret[0].([]types0.TokenizeShareRecord) + return ret0 +} + +// GetAllTokenizeShareRecords indicates an expected call of GetAllTokenizeShareRecords. +func (mr *MockStakingKeeperMockRecorder) GetAllTokenizeShareRecords(ctx interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAllTokenizeShareRecords", reflect.TypeOf((*MockStakingKeeper)(nil).GetAllTokenizeShareRecords), ctx) +} + // GetAllValidators mocks base method. func (m *MockStakingKeeper) GetAllValidators(ctx context.Context) ([]types0.Validator, error) { m.ctrl.T.Helper() @@ -309,6 +337,35 @@ func (mr *MockStakingKeeperMockRecorder) GetAllValidators(ctx interface{}) *gomo return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAllValidators", reflect.TypeOf((*MockStakingKeeper)(nil).GetAllValidators), ctx) } +// GetTokenizeShareRecord mocks base method. +func (m *MockStakingKeeper) GetTokenizeShareRecord(ctx context.Context, id uint64) (types0.TokenizeShareRecord, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetTokenizeShareRecord", ctx, id) + ret0, _ := ret[0].(types0.TokenizeShareRecord) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetTokenizeShareRecord indicates an expected call of GetTokenizeShareRecord. +func (mr *MockStakingKeeperMockRecorder) GetTokenizeShareRecord(ctx, id interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTokenizeShareRecord", reflect.TypeOf((*MockStakingKeeper)(nil).GetTokenizeShareRecord), ctx, id) +} + +// GetTokenizeShareRecordsByOwner mocks base method. +func (m *MockStakingKeeper) GetTokenizeShareRecordsByOwner(ctx context.Context, owner types.AccAddress) []types0.TokenizeShareRecord { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetTokenizeShareRecordsByOwner", ctx, owner) + ret0, _ := ret[0].([]types0.TokenizeShareRecord) + return ret0 +} + +// GetTokenizeShareRecordsByOwner indicates an expected call of GetTokenizeShareRecordsByOwner. +func (mr *MockStakingKeeperMockRecorder) GetTokenizeShareRecordsByOwner(ctx, owner interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTokenizeShareRecordsByOwner", reflect.TypeOf((*MockStakingKeeper)(nil).GetTokenizeShareRecordsByOwner), ctx, owner) +} + // IterateDelegations mocks base method. func (m *MockStakingKeeper) IterateDelegations(ctx context.Context, delegator types.AccAddress, fn func(int64, types0.DelegationI) bool) error { m.ctrl.T.Helper() diff --git a/x/distribution/types/codec.go b/x/distribution/types/codec.go index 3cf2c732ca66..59eddae5bf73 100644 --- a/x/distribution/types/codec.go +++ b/x/distribution/types/codec.go @@ -20,6 +20,8 @@ func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { legacy.RegisterAminoMsg(cdc, &MsgUpdateParams{}, "cosmos-sdk/distribution/MsgUpdateParams") legacy.RegisterAminoMsg(cdc, &MsgCommunityPoolSpend{}, "cosmos-sdk/distr/MsgCommunityPoolSpend") legacy.RegisterAminoMsg(cdc, &MsgDepositValidatorRewardsPool{}, "cosmos-sdk/distr/MsgDepositValRewards") + legacy.RegisterAminoMsg(cdc, &MsgWithdrawTokenizeShareRecordReward{}, "cosmos-sdk/MsgWithdrawTokenizeReward") + legacy.RegisterAminoMsg(cdc, &MsgWithdrawAllTokenizeShareRecordReward{}, "cosmos-sdk/MsgWithdrawAllTokenizeReward") cdc.RegisterConcrete(Params{}, "cosmos-sdk/x/distribution/Params", nil) } @@ -34,6 +36,8 @@ func RegisterInterfaces(registry types.InterfaceRegistry) { &MsgUpdateParams{}, &MsgCommunityPoolSpend{}, &MsgDepositValidatorRewardsPool{}, + &MsgWithdrawTokenizeShareRecordReward{}, + &MsgWithdrawAllTokenizeShareRecordReward{}, ) registry.RegisterImplementations( diff --git a/x/distribution/types/distribution.pb.go b/x/distribution/types/distribution.pb.go index bd9f9d1783fd..9936996af4c3 100644 --- a/x/distribution/types/distribution.pb.go +++ b/x/distribution/types/distribution.pb.go @@ -431,6 +431,45 @@ func (m *FeePool) GetCommunityPool() github_com_cosmos_cosmos_sdk_types.DecCoins return nil } +// TokenizeShareRecordReward represents the properties of tokenize share +type TokenizeShareRecordReward struct { + RecordId uint64 `protobuf:"varint,1,opt,name=record_id,json=recordId,proto3" json:"record_id,omitempty"` + Reward github_com_cosmos_cosmos_sdk_types.DecCoins `protobuf:"bytes,2,rep,name=reward,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.DecCoins" json:"reward"` +} + +func (m *TokenizeShareRecordReward) Reset() { *m = TokenizeShareRecordReward{} } +func (m *TokenizeShareRecordReward) String() string { return proto.CompactTextString(m) } +func (*TokenizeShareRecordReward) ProtoMessage() {} +func (*TokenizeShareRecordReward) Descriptor() ([]byte, []int) { + return fileDescriptor_cd78a31ea281a992, []int{8} +} +func (m *TokenizeShareRecordReward) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TokenizeShareRecordReward) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TokenizeShareRecordReward.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *TokenizeShareRecordReward) XXX_Merge(src proto.Message) { + xxx_messageInfo_TokenizeShareRecordReward.Merge(m, src) +} +func (m *TokenizeShareRecordReward) XXX_Size() int { + return m.Size() +} +func (m *TokenizeShareRecordReward) XXX_DiscardUnknown() { + xxx_messageInfo_TokenizeShareRecordReward.DiscardUnknown(m) +} + +var xxx_messageInfo_TokenizeShareRecordReward proto.InternalMessageInfo + // CommunityPoolSpendProposal details a proposal for use of community funds, // together with how many coins are proposed to be spent, and to which // recipient account. @@ -452,7 +491,7 @@ func (m *CommunityPoolSpendProposal) Reset() { *m = CommunityPoolSpendPr func (m *CommunityPoolSpendProposal) String() string { return proto.CompactTextString(m) } func (*CommunityPoolSpendProposal) ProtoMessage() {} func (*CommunityPoolSpendProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_cd78a31ea281a992, []int{8} + return fileDescriptor_cd78a31ea281a992, []int{9} } func (m *CommunityPoolSpendProposal) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -497,7 +536,7 @@ func (m *DelegatorStartingInfo) Reset() { *m = DelegatorStartingInfo{} } func (m *DelegatorStartingInfo) String() string { return proto.CompactTextString(m) } func (*DelegatorStartingInfo) ProtoMessage() {} func (*DelegatorStartingInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_cd78a31ea281a992, []int{9} + return fileDescriptor_cd78a31ea281a992, []int{10} } func (m *DelegatorStartingInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -551,7 +590,7 @@ func (m *DelegationDelegatorReward) Reset() { *m = DelegationDelegatorRe func (m *DelegationDelegatorReward) String() string { return proto.CompactTextString(m) } func (*DelegationDelegatorReward) ProtoMessage() {} func (*DelegationDelegatorReward) Descriptor() ([]byte, []int) { - return fileDescriptor_cd78a31ea281a992, []int{10} + return fileDescriptor_cd78a31ea281a992, []int{11} } func (m *DelegationDelegatorReward) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -594,7 +633,7 @@ func (m *CommunityPoolSpendProposalWithDeposit) Reset() { *m = Community func (m *CommunityPoolSpendProposalWithDeposit) String() string { return proto.CompactTextString(m) } func (*CommunityPoolSpendProposalWithDeposit) ProtoMessage() {} func (*CommunityPoolSpendProposalWithDeposit) Descriptor() ([]byte, []int) { - return fileDescriptor_cd78a31ea281a992, []int{11} + return fileDescriptor_cd78a31ea281a992, []int{12} } func (m *CommunityPoolSpendProposalWithDeposit) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -632,6 +671,7 @@ func init() { proto.RegisterType((*ValidatorSlashEvent)(nil), "cosmos.distribution.v1beta1.ValidatorSlashEvent") proto.RegisterType((*ValidatorSlashEvents)(nil), "cosmos.distribution.v1beta1.ValidatorSlashEvents") proto.RegisterType((*FeePool)(nil), "cosmos.distribution.v1beta1.FeePool") + proto.RegisterType((*TokenizeShareRecordReward)(nil), "cosmos.distribution.v1beta1.TokenizeShareRecordReward") proto.RegisterType((*CommunityPoolSpendProposal)(nil), "cosmos.distribution.v1beta1.CommunityPoolSpendProposal") proto.RegisterType((*DelegatorStartingInfo)(nil), "cosmos.distribution.v1beta1.DelegatorStartingInfo") proto.RegisterType((*DelegationDelegatorReward)(nil), "cosmos.distribution.v1beta1.DelegationDelegatorReward") @@ -643,71 +683,74 @@ func init() { } var fileDescriptor_cd78a31ea281a992 = []byte{ - // 1012 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0x41, 0x6f, 0x1b, 0x45, - 0x14, 0xf6, 0x34, 0x89, 0xd3, 0x4c, 0xdb, 0x84, 0x4e, 0x9c, 0xd4, 0x71, 0x8b, 0x6d, 0x56, 0xaa, - 0x30, 0x81, 0xd8, 0xa4, 0x48, 0x08, 0xe5, 0xd6, 0xd8, 0xad, 0x40, 0x2a, 0x34, 0xda, 0x20, 0x90, - 0xe0, 0xb0, 0x1a, 0xef, 0x4e, 0xec, 0x21, 0xbb, 0x33, 0xcb, 0xcc, 0xd8, 0x49, 0x0e, 0xdc, 0x03, - 0x07, 0xe0, 0x06, 0xea, 0xa9, 0x82, 0x4b, 0xc5, 0x29, 0x87, 0xfc, 0x88, 0x8a, 0x53, 0x55, 0x10, - 0x42, 0x1c, 0x02, 0x24, 0x87, 0x20, 0x7e, 0x05, 0x9a, 0x9d, 0xf1, 0xae, 0x13, 0x42, 0x81, 0x22, - 0x8b, 0x4b, 0x94, 0x79, 0x6f, 0xf6, 0x7d, 0xdf, 0xf7, 0xe6, 0x9b, 0x37, 0x86, 0x75, 0x9f, 0xcb, - 0x88, 0xcb, 0x46, 0x40, 0xa5, 0x12, 0xb4, 0xdd, 0x53, 0x94, 0xb3, 0x46, 0x7f, 0xb9, 0x4d, 0x14, - 0x5e, 0x3e, 0x11, 0xac, 0xc7, 0x82, 0x2b, 0x8e, 0xae, 0x9a, 0xfd, 0xf5, 0x13, 0x29, 0xbb, 0xbf, - 0x54, 0xe8, 0xf0, 0x0e, 0x4f, 0xf6, 0x35, 0xf4, 0x7f, 0xe6, 0x93, 0x52, 0xd9, 0x42, 0xb4, 0xb1, - 0x24, 0x69, 0x69, 0x9f, 0x53, 0x5b, 0xb2, 0xb4, 0x60, 0xf2, 0x9e, 0xf9, 0xd0, 0xd6, 0x37, 0xa9, - 0xcb, 0x38, 0xa2, 0x8c, 0x37, 0x92, 0xbf, 0x26, 0xe4, 0xdc, 0x1b, 0x83, 0xf9, 0x35, 0x2c, 0x70, - 0x24, 0xd1, 0xfb, 0xf0, 0x92, 0xcf, 0xa3, 0xa8, 0xc7, 0xa8, 0xda, 0xf1, 0x14, 0xde, 0x2e, 0x82, - 0x2a, 0xa8, 0x4d, 0xad, 0xbe, 0xfa, 0xf0, 0xa0, 0x92, 0xfb, 0xe9, 0xa0, 0x62, 0xa9, 0xca, 0x60, - 0xb3, 0x4e, 0x79, 0x23, 0xc2, 0xaa, 0x5b, 0xbf, 0x43, 0x3a, 0xd8, 0xdf, 0x69, 0x11, 0xff, 0xf1, - 0xfe, 0x12, 0xb4, 0x48, 0x2d, 0xe2, 0x3f, 0x38, 0xde, 0x5b, 0x04, 0xee, 0xc5, 0xb4, 0xd8, 0xdb, - 0x78, 0x1b, 0x7d, 0x00, 0x0b, 0x9a, 0xb0, 0x66, 0x15, 0x73, 0x49, 0x84, 0x27, 0xc8, 0x16, 0x16, - 0x41, 0xf1, 0x5c, 0x82, 0xf1, 0xda, 0xd3, 0x61, 0x14, 0x81, 0x8b, 0x74, 0xd5, 0x35, 0x5b, 0xd4, - 0x4d, 0x6a, 0xa2, 0x10, 0xce, 0xb5, 0x39, 0xeb, 0xc9, 0x3f, 0x81, 0x8d, 0xfd, 0x47, 0xb0, 0xd9, - 0xa4, 0xec, 0x29, 0xb4, 0x1b, 0x70, 0x6e, 0x8b, 0xaa, 0x6e, 0x20, 0xf0, 0x96, 0x87, 0x83, 0x40, - 0x78, 0x84, 0xe1, 0x76, 0x48, 0x82, 0xe2, 0x78, 0x15, 0xd4, 0xce, 0xbb, 0xb3, 0x83, 0xe4, 0xcd, - 0x20, 0x10, 0xb7, 0x4c, 0x6a, 0xe5, 0xfa, 0x27, 0xc7, 0x7b, 0x8b, 0x55, 0x03, 0xb0, 0x24, 0x83, - 0xcd, 0xc6, 0xf6, 0x49, 0xc7, 0x98, 0x13, 0x71, 0x7e, 0x00, 0xb0, 0xf4, 0x0e, 0x0e, 0x69, 0x80, - 0x15, 0x17, 0xaf, 0x53, 0xa9, 0xb8, 0xa0, 0x3e, 0x0e, 0x0d, 0xb0, 0x44, 0x9f, 0x02, 0x78, 0xc5, - 0xef, 0x45, 0xbd, 0x10, 0x2b, 0xda, 0x27, 0x56, 0xa4, 0x27, 0xb0, 0xa2, 0xbc, 0x08, 0xaa, 0x63, - 0xb5, 0x0b, 0x37, 0xae, 0x59, 0x3f, 0xd6, 0x75, 0x97, 0x06, 0xbe, 0xd2, 0x8a, 0x9a, 0x9c, 0x32, - 0xd3, 0x88, 0x6f, 0x7e, 0xae, 0xbc, 0xd8, 0xa1, 0xaa, 0xdb, 0x6b, 0xd7, 0x7d, 0x1e, 0x59, 0xbf, - 0x34, 0x86, 0xa8, 0xa9, 0x9d, 0x98, 0xc8, 0xc1, 0x37, 0xd2, 0x9c, 0xed, 0x5c, 0x06, 0x6b, 0xc8, - 0xb8, 0x1a, 0x14, 0x3d, 0x0f, 0x67, 0x04, 0xd9, 0x20, 0x82, 0x30, 0x9f, 0x78, 0x3e, 0xef, 0x31, - 0x95, 0x9c, 0xef, 0x25, 0x77, 0x3a, 0x0d, 0x37, 0x75, 0xd4, 0xf9, 0x1a, 0xc0, 0x2b, 0xa9, 0xb0, - 0x66, 0x4f, 0x08, 0xc2, 0xd4, 0x40, 0x55, 0x0c, 0x27, 0x8d, 0x12, 0x39, 0x62, 0x11, 0x03, 0x18, - 0x34, 0x0f, 0xf3, 0x31, 0x11, 0x94, 0x1b, 0x37, 0x8e, 0xbb, 0x76, 0xe5, 0x7c, 0x09, 0x60, 0x39, - 0x65, 0x79, 0xd3, 0xb7, 0x9a, 0x49, 0xd0, 0xe4, 0x51, 0x44, 0xa5, 0xa4, 0x9c, 0xa1, 0x3e, 0x84, - 0x7e, 0xba, 0x1a, 0x31, 0xdf, 0x21, 0x24, 0xe7, 0x33, 0x00, 0xaf, 0xa6, 0xd4, 0xee, 0xf6, 0x94, - 0x54, 0x98, 0x05, 0x94, 0x75, 0xfe, 0xb7, 0x26, 0x6a, 0x46, 0xb3, 0x29, 0xa3, 0xf5, 0x10, 0xcb, - 0xee, 0xad, 0x3e, 0x61, 0x0a, 0xbd, 0x00, 0x9f, 0xe9, 0x0f, 0xc2, 0x9e, 0x6d, 0x33, 0x48, 0xda, - 0x3c, 0x93, 0xc6, 0xd7, 0x92, 0x30, 0x7a, 0x13, 0x9e, 0xdf, 0x10, 0xd8, 0xd7, 0x37, 0xc0, 0xce, - 0x85, 0xe5, 0x7f, 0x7d, 0x55, 0xdd, 0xb4, 0x84, 0xf3, 0x31, 0x80, 0x85, 0x33, 0x18, 0x49, 0xf4, - 0x21, 0x9c, 0xcf, 0x28, 0x49, 0x9d, 0xf0, 0x48, 0x92, 0xb1, 0xbd, 0x7a, 0xb9, 0xfe, 0x84, 0xa9, - 0x5c, 0x3f, 0xa3, 0xe4, 0xea, 0x94, 0xe6, 0x69, 0x1a, 0x52, 0xe8, 0x9f, 0x01, 0xe9, 0xec, 0x02, - 0x38, 0x79, 0x9b, 0x90, 0x35, 0xce, 0x43, 0xf4, 0x11, 0x9c, 0xce, 0xe6, 0x6c, 0xcc, 0x79, 0x38, - 0xe2, 0x23, 0xca, 0xa6, 0xba, 0x86, 0x77, 0xbe, 0x38, 0x07, 0x4b, 0xcd, 0xe1, 0xc8, 0x7a, 0x4c, - 0x58, 0x60, 0x86, 0x1a, 0x0e, 0x51, 0x01, 0x4e, 0x28, 0xaa, 0x42, 0x62, 0xa6, 0xbf, 0x6b, 0x16, - 0xa8, 0x0a, 0x2f, 0x04, 0x44, 0xfa, 0x82, 0xc6, 0xd9, 0xe9, 0xb8, 0xc3, 0x21, 0x74, 0x0d, 0x4e, - 0x09, 0xe2, 0xd3, 0x98, 0x12, 0xa6, 0xcc, 0xa0, 0x75, 0xb3, 0x00, 0xda, 0x81, 0x79, 0x1c, 0x25, - 0x03, 0x61, 0x3c, 0xd1, 0xba, 0x70, 0xa6, 0xd6, 0x44, 0xe8, 0x6d, 0x2b, 0xb4, 0xf6, 0x0f, 0x84, - 0x26, 0x2a, 0xef, 0x1d, 0xef, 0x2d, 0x5e, 0x0c, 0x13, 0x3b, 0x78, 0x7e, 0x26, 0xdb, 0x02, 0xae, - 0xd4, 0x76, 0xef, 0x57, 0x72, 0xbf, 0xdd, 0xaf, 0xe4, 0xbe, 0xdd, 0x5f, 0x2a, 0x59, 0xd4, 0x0e, - 0xef, 0x0f, 0x81, 0x32, 0xa5, 0x39, 0x03, 0xe7, 0x7b, 0x00, 0xe7, 0x5a, 0x44, 0x57, 0xd2, 0xa7, - 0xa7, 0xb0, 0x50, 0x94, 0x75, 0xde, 0x60, 0x1b, 0xc9, 0x60, 0x8b, 0x05, 0xe9, 0x53, 0xae, 0x1f, - 0x95, 0x61, 0x0f, 0x4f, 0x0f, 0xc2, 0xd6, 0xc2, 0x77, 0xe0, 0x84, 0x54, 0x78, 0x93, 0x58, 0xff, - 0x3e, 0xed, 0xdb, 0x69, 0x8a, 0xa0, 0x16, 0xcc, 0x77, 0x09, 0xed, 0x74, 0x4d, 0x43, 0xc7, 0x57, - 0x5f, 0xfa, 0xfd, 0xa0, 0x32, 0xe3, 0x0b, 0xa2, 0x87, 0x2d, 0xf3, 0x4c, 0xea, 0xab, 0xe3, 0xbd, - 0xc5, 0xd3, 0x31, 0xdb, 0x00, 0xb3, 0x70, 0x7e, 0x05, 0x70, 0xc1, 0xca, 0xa2, 0x9c, 0xa5, 0x02, - 0xed, 0xf3, 0xf5, 0x16, 0xbc, 0x9c, 0x5d, 0x06, 0xfd, 0x7e, 0x11, 0x29, 0xed, 0xcb, 0xff, 0xdc, - 0xe3, 0xfd, 0xa5, 0x67, 0x2d, 0xb5, 0x6c, 0x0e, 0x9a, 0x2d, 0xeb, 0x4a, 0xe8, 0x71, 0x93, 0xdd, - 0x6d, 0x1b, 0x47, 0x0c, 0xe6, 0xd3, 0xa7, 0x7d, 0x94, 0xae, 0xb6, 0x28, 0x2b, 0xe3, 0xfa, 0x78, - 0x9d, 0xef, 0x00, 0xbc, 0xfe, 0xd7, 0xa6, 0x7e, 0x97, 0xaa, 0x6e, 0x8b, 0xc4, 0x5c, 0x52, 0x35, - 0x22, 0x7f, 0xcf, 0x0f, 0xf9, 0x5b, 0xa7, 0xec, 0x0a, 0x15, 0xe1, 0x64, 0x60, 0x80, 0x8b, 0x13, - 0x49, 0x62, 0xb0, 0x5c, 0x71, 0x76, 0xff, 0xd6, 0x92, 0xab, 0x77, 0x1f, 0x1c, 0x96, 0xc1, 0xc3, - 0xc3, 0x32, 0x78, 0x74, 0x58, 0x06, 0xbf, 0x1c, 0x96, 0xc1, 0xe7, 0x47, 0xe5, 0xdc, 0xa3, 0xa3, - 0x72, 0xee, 0xc7, 0xa3, 0x72, 0xee, 0xbd, 0xe5, 0x27, 0xf6, 0xec, 0xd4, 0x2f, 0x8a, 0xa4, 0x85, - 0xed, 0x7c, 0xf2, 0xa3, 0xef, 0x95, 0x3f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x78, 0xae, 0xbc, 0xbc, - 0xa7, 0x0a, 0x00, 0x00, + // 1067 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0xcf, 0x6f, 0x1b, 0x45, + 0x14, 0xf6, 0x34, 0x89, 0x93, 0x4c, 0xdb, 0x84, 0x4e, 0x7e, 0xd4, 0x71, 0x8a, 0x1d, 0x56, 0xaa, + 0x08, 0x81, 0xd8, 0xa4, 0x95, 0x10, 0xca, 0xad, 0x49, 0x5a, 0x51, 0xa9, 0xd0, 0x68, 0x53, 0x81, + 0x04, 0x87, 0xd5, 0x78, 0x77, 0x62, 0x0f, 0xd9, 0x9d, 0x59, 0x66, 0xc6, 0x4e, 0x82, 0xc4, 0x3d, + 0x70, 0x00, 0x6e, 0x54, 0x3d, 0x45, 0x70, 0xa9, 0x90, 0x90, 0x72, 0xc8, 0x1f, 0x51, 0x71, 0xaa, + 0x0a, 0x42, 0x88, 0x43, 0x80, 0xe4, 0x10, 0xc4, 0x5f, 0x81, 0xe6, 0x87, 0xd7, 0x4e, 0x08, 0x2d, + 0x0d, 0x8a, 0xb8, 0x58, 0x9e, 0xf7, 0x76, 0xdf, 0xf7, 0x7d, 0x6f, 0xbe, 0x79, 0xb3, 0xb0, 0x12, + 0x72, 0x99, 0x70, 0x59, 0x8d, 0xa8, 0x54, 0x82, 0xd6, 0x9a, 0x8a, 0x72, 0x56, 0x6d, 0xcd, 0xd5, + 0x88, 0xc2, 0x73, 0x47, 0x82, 0x95, 0x54, 0x70, 0xc5, 0xd1, 0xa4, 0x7d, 0xbe, 0x72, 0x24, 0xe5, + 0x9e, 0x2f, 0x8e, 0xd6, 0x79, 0x9d, 0x9b, 0xe7, 0xaa, 0xfa, 0x9f, 0x7d, 0xa5, 0x58, 0x72, 0x10, + 0x35, 0x2c, 0x49, 0x56, 0x3a, 0xe4, 0xd4, 0x95, 0x2c, 0x4e, 0xd8, 0x7c, 0x60, 0x5f, 0x74, 0xf5, + 0x6d, 0xea, 0x12, 0x4e, 0x28, 0xe3, 0x55, 0xf3, 0x6b, 0x43, 0xde, 0x83, 0x1e, 0x98, 0x5f, 0xc6, + 0x02, 0x27, 0x12, 0x7d, 0x00, 0x2f, 0x86, 0x3c, 0x49, 0x9a, 0x8c, 0xaa, 0xcd, 0x40, 0xe1, 0x8d, + 0x02, 0x98, 0x02, 0xd3, 0x83, 0x0b, 0x6f, 0x3c, 0xda, 0x2b, 0xe7, 0x7e, 0xd9, 0x2b, 0x3b, 0xaa, + 0x32, 0x5a, 0xab, 0x50, 0x5e, 0x4d, 0xb0, 0x6a, 0x54, 0xee, 0x90, 0x3a, 0x0e, 0x37, 0x97, 0x48, + 0xf8, 0x64, 0x77, 0x16, 0x3a, 0xa4, 0x25, 0x12, 0x3e, 0x3c, 0xdc, 0x99, 0x01, 0xfe, 0x85, 0xac, + 0xd8, 0x3d, 0xbc, 0x81, 0x3e, 0x84, 0xa3, 0x9a, 0xb0, 0x66, 0x95, 0x72, 0x49, 0x44, 0x20, 0xc8, + 0x3a, 0x16, 0x51, 0xe1, 0x9c, 0xc1, 0x78, 0xf3, 0x74, 0x18, 0x05, 0xe0, 0x23, 0x5d, 0x75, 0xd9, + 0x15, 0xf5, 0x4d, 0x4d, 0x14, 0xc3, 0xb1, 0x1a, 0x67, 0x4d, 0xf9, 0x37, 0xb0, 0x9e, 0xff, 0x08, + 0x36, 0x62, 0xca, 0x1e, 0x43, 0xbb, 0x06, 0xc7, 0xd6, 0xa9, 0x6a, 0x44, 0x02, 0xaf, 0x07, 0x38, + 0x8a, 0x44, 0x40, 0x18, 0xae, 0xc5, 0x24, 0x2a, 0xf4, 0x4e, 0x81, 0xe9, 0x01, 0x7f, 0xa4, 0x9d, + 0xbc, 0x11, 0x45, 0xe2, 0xa6, 0x4d, 0xcd, 0x5f, 0xfd, 0xec, 0x70, 0x67, 0x66, 0xca, 0x02, 0xcc, + 0xca, 0x68, 0xad, 0xba, 0x71, 0xd4, 0x31, 0x76, 0x47, 0xbc, 0x9f, 0x00, 0x2c, 0xbe, 0x8b, 0x63, + 0x1a, 0x61, 0xc5, 0xc5, 0x5b, 0x54, 0x2a, 0x2e, 0x68, 0x88, 0x63, 0x0b, 0x2c, 0xd1, 0xe7, 0x00, + 0x5e, 0x0e, 0x9b, 0x49, 0x33, 0xc6, 0x8a, 0xb6, 0x88, 0x13, 0x19, 0x08, 0xac, 0x28, 0x2f, 0x80, + 0xa9, 0x9e, 0xe9, 0xf3, 0xd7, 0xae, 0x38, 0x3f, 0x56, 0x74, 0x97, 0xda, 0xbe, 0xd2, 0x8a, 0x16, + 0x39, 0x65, 0xb6, 0x11, 0xdf, 0xfe, 0x5a, 0x7e, 0xb5, 0x4e, 0x55, 0xa3, 0x59, 0xab, 0x84, 0x3c, + 0x71, 0x7e, 0xa9, 0x76, 0x51, 0x53, 0x9b, 0x29, 0x91, 0xed, 0x77, 0xa4, 0xdd, 0xdb, 0xb1, 0x0e, + 0xac, 0x25, 0xe3, 0x6b, 0x50, 0xf4, 0x32, 0x1c, 0x16, 0x64, 0x95, 0x08, 0xc2, 0x42, 0x12, 0x84, + 0xbc, 0xc9, 0x94, 0xd9, 0xdf, 0x8b, 0xfe, 0x50, 0x16, 0x5e, 0xd4, 0x51, 0xef, 0x1b, 0x00, 0x2f, + 0x67, 0xc2, 0x16, 0x9b, 0x42, 0x10, 0xa6, 0xda, 0xaa, 0x52, 0xd8, 0x6f, 0x95, 0xc8, 0x33, 0x16, + 0xd1, 0x86, 0x41, 0xe3, 0x30, 0x9f, 0x12, 0x41, 0xb9, 0x75, 0x63, 0xaf, 0xef, 0x56, 0xde, 0x7d, + 0x00, 0x4b, 0x19, 0xcb, 0x1b, 0xa1, 0xd3, 0x4c, 0xa2, 0x45, 0x9e, 0x24, 0x54, 0x4a, 0xca, 0x19, + 0x6a, 0x41, 0x18, 0x66, 0xab, 0x33, 0xe6, 0xdb, 0x85, 0xe4, 0x7d, 0x01, 0xe0, 0x64, 0x46, 0xed, + 0x6e, 0x53, 0x49, 0x85, 0x59, 0x44, 0x59, 0xfd, 0x7f, 0x6b, 0xa2, 0x66, 0x34, 0x92, 0x31, 0x5a, + 0x89, 0xb1, 0x6c, 0xdc, 0x6c, 0x11, 0xa6, 0xd0, 0x2b, 0xf0, 0x85, 0x56, 0x3b, 0x1c, 0xb8, 0x36, + 0x03, 0xd3, 0xe6, 0xe1, 0x2c, 0xbe, 0x6c, 0xc2, 0xe8, 0x6d, 0x38, 0xb0, 0x2a, 0x70, 0xa8, 0x4f, + 0x80, 0x9b, 0x0b, 0x73, 0xcf, 0x7d, 0x54, 0xfd, 0xac, 0x84, 0xf7, 0x29, 0x80, 0xa3, 0x27, 0x30, + 0x92, 0xe8, 0x23, 0x38, 0xde, 0xa1, 0x24, 0x75, 0x22, 0x20, 0x26, 0xe3, 0x7a, 0xf5, 0x7a, 0xe5, + 0x29, 0x53, 0xb9, 0x72, 0x42, 0xc9, 0x85, 0x41, 0xcd, 0xd3, 0x36, 0x64, 0xb4, 0x75, 0x02, 0xa4, + 0xb7, 0x05, 0x60, 0xff, 0x2d, 0x42, 0x96, 0x39, 0x8f, 0xd1, 0x27, 0x70, 0xa8, 0x33, 0x67, 0x53, + 0xce, 0xe3, 0x33, 0xde, 0xa2, 0xce, 0x54, 0xd7, 0xf0, 0xde, 0x77, 0x00, 0x4e, 0xdc, 0xe3, 0x6b, + 0x84, 0xd1, 0x8f, 0xc9, 0x4a, 0x03, 0x0b, 0xe2, 0x93, 0x90, 0x8b, 0xc8, 0x4d, 0xb3, 0x49, 0x38, + 0x28, 0xcc, 0x3a, 0xa0, 0xed, 0x7d, 0x1a, 0xb0, 0x81, 0xdb, 0x11, 0xa2, 0x30, 0x9f, 0x8d, 0xed, + 0x67, 0x33, 0xbe, 0x7e, 0x0a, 0xc6, 0xbe, 0x03, 0x98, 0x1f, 0xd8, 0xda, 0x2e, 0xe7, 0xee, 0x6f, + 0x97, 0x81, 0xf7, 0xd5, 0x39, 0x58, 0x5c, 0xec, 0x56, 0xb0, 0x92, 0x12, 0x16, 0xd9, 0x21, 0x8c, + 0x63, 0x34, 0x0a, 0xfb, 0x14, 0x55, 0x31, 0xb1, 0xb7, 0x95, 0x6f, 0x17, 0x68, 0x0a, 0x9e, 0x8f, + 0x88, 0x0c, 0x05, 0x4d, 0x3b, 0x6e, 0xf2, 0xbb, 0x43, 0xe8, 0x8a, 0x11, 0x4a, 0x53, 0x4a, 0x98, + 0xb2, 0x17, 0x83, 0xdf, 0x09, 0xa0, 0x4d, 0x98, 0xc7, 0x89, 0x19, 0x60, 0xbd, 0x46, 0xe9, 0xc4, + 0x89, 0x4a, 0x8d, 0xcc, 0x5b, 0x4e, 0xe6, 0xf4, 0xbf, 0x90, 0x69, 0x34, 0x3e, 0x38, 0xdc, 0x99, + 0xb9, 0x10, 0x1b, 0xfb, 0x06, 0x61, 0x67, 0x9b, 0x1c, 0xe0, 0xfc, 0xb4, 0x56, 0xfe, 0xc7, 0x76, + 0x39, 0xf7, 0xfd, 0xee, 0x6c, 0xd1, 0xa1, 0xd6, 0x79, 0xab, 0x0b, 0x94, 0x29, 0xcd, 0x19, 0x78, + 0x3f, 0x02, 0x38, 0xb6, 0x44, 0x74, 0x25, 0xed, 0x36, 0x85, 0x85, 0xa2, 0xac, 0x7e, 0x9b, 0xad, + 0x9a, 0x41, 0x9c, 0x0a, 0xd2, 0xa2, 0x5c, 0x5f, 0x82, 0xdd, 0x67, 0x6e, 0xa8, 0x1d, 0x76, 0x47, + 0xee, 0x0e, 0xec, 0x93, 0x0a, 0xaf, 0x11, 0x77, 0xde, 0x4e, 0x7b, 0xd7, 0xdb, 0x22, 0x68, 0x09, + 0xe6, 0x1b, 0x84, 0xd6, 0x1b, 0xb6, 0xa1, 0xbd, 0x0b, 0xaf, 0xfd, 0xb9, 0x57, 0x1e, 0x0e, 0x05, + 0xd1, 0x97, 0x03, 0x0b, 0x6c, 0xea, 0xeb, 0xc3, 0x9d, 0x99, 0xe3, 0x31, 0xd7, 0x00, 0xbb, 0xf0, + 0x7e, 0x07, 0x70, 0xc2, 0xc9, 0xa2, 0x9c, 0x65, 0x02, 0x9d, 0x41, 0xdf, 0x81, 0x97, 0x3a, 0x87, + 0x57, 0xdf, 0xb7, 0x44, 0x4a, 0xf7, 0xa5, 0xf2, 0xd2, 0x93, 0xdd, 0xd9, 0x17, 0x1d, 0xb5, 0xce, + 0xdc, 0xb6, 0x8f, 0xac, 0x28, 0xa1, 0xc7, 0x63, 0x67, 0x16, 0xb9, 0x38, 0x62, 0xcf, 0xe5, 0xe9, + 0xd3, 0x9f, 0xc2, 0xb6, 0xb1, 0x7b, 0xf5, 0xf6, 0x7a, 0x3f, 0x00, 0x78, 0xf5, 0x9f, 0x4d, 0xfd, + 0x1e, 0x55, 0x8d, 0x25, 0x92, 0x72, 0x49, 0xd5, 0x19, 0xf9, 0x7b, 0xbc, 0xcb, 0xdf, 0x3a, 0xe5, + 0x56, 0xa8, 0x00, 0xfb, 0x23, 0x0b, 0x5c, 0xe8, 0x33, 0x89, 0xf6, 0x72, 0xde, 0xdb, 0x7a, 0xa6, + 0x25, 0x17, 0xee, 0x3e, 0xdc, 0x2f, 0x81, 0x47, 0xfb, 0x25, 0xf0, 0x78, 0xbf, 0x04, 0x7e, 0xdb, + 0x2f, 0x81, 0x2f, 0x0f, 0x4a, 0xb9, 0xc7, 0x07, 0xa5, 0xdc, 0xcf, 0x07, 0xa5, 0xdc, 0xfb, 0x73, + 0x4f, 0xed, 0xd9, 0xb1, 0x2f, 0x20, 0xd3, 0xc2, 0x5a, 0xde, 0x7c, 0xa4, 0x5e, 0xff, 0x2b, 0x00, + 0x00, 0xff, 0xff, 0x64, 0xea, 0xd3, 0x46, 0x57, 0x0b, 0x00, 0x00, } func (this *Params) Equal(that interface{}) bool { @@ -950,6 +993,38 @@ func (this *FeePool) Equal(that interface{}) bool { } return true } +func (this *TokenizeShareRecordReward) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*TokenizeShareRecordReward) + if !ok { + that2, ok := that.(TokenizeShareRecordReward) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.RecordId != that1.RecordId { + return false + } + if len(this.Reward) != len(that1.Reward) { + return false + } + for i := range this.Reward { + if !this.Reward[i].Equal(&that1.Reward[i]) { + return false + } + } + return true +} func (this *DelegatorStartingInfo) Equal(that interface{}) bool { if that == nil { return this == nil @@ -1381,6 +1456,48 @@ func (m *FeePool) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *TokenizeShareRecordReward) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *TokenizeShareRecordReward) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TokenizeShareRecordReward) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Reward) > 0 { + for iNdEx := len(m.Reward) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Reward[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintDistribution(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if m.RecordId != 0 { + i = encodeVarintDistribution(dAtA, i, uint64(m.RecordId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *CommunityPoolSpendProposal) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1723,6 +1840,24 @@ func (m *FeePool) Size() (n int) { return n } +func (m *TokenizeShareRecordReward) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.RecordId != 0 { + n += 1 + sovDistribution(uint64(m.RecordId)) + } + if len(m.Reward) > 0 { + for _, e := range m.Reward { + l = e.Size() + n += 1 + l + sovDistribution(uint64(l)) + } + } + return n +} + func (m *CommunityPoolSpendProposal) Size() (n int) { if m == nil { return 0 @@ -2638,6 +2773,109 @@ func (m *FeePool) Unmarshal(dAtA []byte) error { } return nil } +func (m *TokenizeShareRecordReward) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDistribution + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TokenizeShareRecordReward: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TokenizeShareRecordReward: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RecordId", wireType) + } + m.RecordId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDistribution + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.RecordId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reward", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDistribution + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthDistribution + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDistribution + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reward = append(m.Reward, types.DecCoin{}) + if err := m.Reward[len(m.Reward)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipDistribution(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthDistribution + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *CommunityPoolSpendProposal) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/x/distribution/types/errors.go b/x/distribution/types/errors.go index 808d3f86b735..c2104a5479aa 100644 --- a/x/distribution/types/errors.go +++ b/x/distribution/types/errors.go @@ -4,16 +4,17 @@ import "cosmossdk.io/errors" // x/distribution module sentinel errors var ( - ErrEmptyDelegatorAddr = errors.Register(ModuleName, 2, "delegator address is empty") - ErrEmptyWithdrawAddr = errors.Register(ModuleName, 3, "withdraw address is empty") - ErrEmptyValidatorAddr = errors.Register(ModuleName, 4, "validator address is empty") - ErrEmptyDelegationDistInfo = errors.Register(ModuleName, 5, "no delegation distribution info") - ErrNoValidatorDistInfo = errors.Register(ModuleName, 6, "no validator distribution info") - ErrNoValidatorCommission = errors.Register(ModuleName, 7, "no validator commission to withdraw") - ErrSetWithdrawAddrDisabled = errors.Register(ModuleName, 8, "set withdraw address disabled") - ErrBadDistribution = errors.Register(ModuleName, 9, "community pool does not have sufficient coins to distribute") - ErrInvalidProposalAmount = errors.Register(ModuleName, 10, "invalid community pool spend proposal amount") - ErrEmptyProposalRecipient = errors.Register(ModuleName, 11, "invalid community pool spend proposal recipient") - ErrNoValidatorExists = errors.Register(ModuleName, 12, "validator does not exist") - ErrNoDelegationExists = errors.Register(ModuleName, 13, "delegation does not exist") + ErrEmptyDelegatorAddr = errors.Register(ModuleName, 2, "delegator address is empty") + ErrEmptyWithdrawAddr = errors.Register(ModuleName, 3, "withdraw address is empty") + ErrEmptyValidatorAddr = errors.Register(ModuleName, 4, "validator address is empty") + ErrEmptyDelegationDistInfo = errors.Register(ModuleName, 5, "no delegation distribution info") + ErrNoValidatorDistInfo = errors.Register(ModuleName, 6, "no validator distribution info") + ErrNoValidatorCommission = errors.Register(ModuleName, 7, "no validator commission to withdraw") + ErrSetWithdrawAddrDisabled = errors.Register(ModuleName, 8, "set withdraw address disabled") + ErrBadDistribution = errors.Register(ModuleName, 9, "community pool does not have sufficient coins to distribute") + ErrInvalidProposalAmount = errors.Register(ModuleName, 10, "invalid community pool spend proposal amount") + ErrEmptyProposalRecipient = errors.Register(ModuleName, 11, "invalid community pool spend proposal recipient") + ErrNoValidatorExists = errors.Register(ModuleName, 12, "validator does not exist") + ErrNoDelegationExists = errors.Register(ModuleName, 13, "delegation does not exist") + ErrNotTokenizeShareRecordOwner = errors.Register(ModuleName, 14, "not tokenize share record owner") ) diff --git a/x/distribution/types/events.go b/x/distribution/types/events.go index e0ea7069106b..f1ab6b51e163 100644 --- a/x/distribution/types/events.go +++ b/x/distribution/types/events.go @@ -2,12 +2,13 @@ package types // distribution module event types const ( - EventTypeSetWithdrawAddress = "set_withdraw_address" - EventTypeRewards = "rewards" - EventTypeCommission = "commission" - EventTypeWithdrawRewards = "withdraw_rewards" - EventTypeWithdrawCommission = "withdraw_commission" - EventTypeProposerReward = "proposer_reward" + EventTypeSetWithdrawAddress = "set_withdraw_address" + EventTypeRewards = "rewards" + EventTypeCommission = "commission" + EventTypeWithdrawRewards = "withdraw_rewards" + EventTypeWithdrawCommission = "withdraw_commission" + EventTypeWithdrawTokenizeShareReward = "withdraw_tokenize_share_reward" + EventTypeProposerReward = "proposer_reward" AttributeKeyWithdrawAddress = "withdraw_address" AttributeKeyValidator = "validator" diff --git a/x/distribution/types/expected_keepers.go b/x/distribution/types/expected_keepers.go index 4237bb6691c9..36410b7a6c2f 100644 --- a/x/distribution/types/expected_keepers.go +++ b/x/distribution/types/expected_keepers.go @@ -28,6 +28,7 @@ type BankKeeper interface { SendCoinsFromModuleToModule(ctx context.Context, senderModule, recipientModule string, amt sdk.Coins) error SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error + SendCoins(ctx context.Context, fromAddr, toAddr sdk.AccAddress, amt sdk.Coins) error BlockedAddr(addr sdk.AccAddress) bool } @@ -53,6 +54,10 @@ type StakingKeeper interface { GetAllSDKDelegations(ctx context.Context) ([]stakingtypes.Delegation, error) GetAllValidators(ctx context.Context) ([]stakingtypes.Validator, error) GetAllDelegatorDelegations(ctx context.Context, delegator sdk.AccAddress) ([]stakingtypes.Delegation, error) + + GetTokenizeShareRecordsByOwner(ctx context.Context, owner sdk.AccAddress) (tokenizeShareRecords []stakingtypes.TokenizeShareRecord) + GetTokenizeShareRecord(ctx context.Context, id uint64) (tokenizeShareRecord stakingtypes.TokenizeShareRecord, err error) + GetAllTokenizeShareRecords(ctx context.Context) (tokenizeShareRecords []stakingtypes.TokenizeShareRecord) } // StakingHooks event hooks for staking validator object (noalias) diff --git a/x/distribution/types/msg.go b/x/distribution/types/msg.go index 231e86bd34d4..de8a2898fff9 100644 --- a/x/distribution/types/msg.go +++ b/x/distribution/types/msg.go @@ -12,6 +12,8 @@ var ( _ sdk.Msg = (*MsgUpdateParams)(nil) _ sdk.Msg = (*MsgCommunityPoolSpend)(nil) _ sdk.Msg = (*MsgDepositValidatorRewardsPool)(nil) + _ sdk.Msg = (*MsgWithdrawTokenizeShareRecordReward)(nil) + _ sdk.Msg = (*MsgWithdrawAllTokenizeShareRecordReward)(nil) ) func NewMsgSetWithdrawAddress(delAddr, withdrawAddr sdk.AccAddress) *MsgSetWithdrawAddress { @@ -52,3 +54,16 @@ func NewMsgDepositValidatorRewardsPool(depositor, valAddr string, amount sdk.Coi ValidatorAddress: valAddr, } } + +func NewMsgWithdrawTokenizeShareRecordReward(ownerAddr string, recordID uint64) *MsgWithdrawTokenizeShareRecordReward { + return &MsgWithdrawTokenizeShareRecordReward{ + OwnerAddress: ownerAddr, + RecordId: recordID, + } +} + +func NewMsgWithdrawAllTokenizeShareRecordReward(ownerAddr string) *MsgWithdrawAllTokenizeShareRecordReward { + return &MsgWithdrawAllTokenizeShareRecordReward{ + OwnerAddress: ownerAddr, + } +} diff --git a/x/distribution/types/query.pb.go b/x/distribution/types/query.pb.go index e9e883840a97..b628b3e22565 100644 --- a/x/distribution/types/query.pb.go +++ b/x/distribution/types/query.pb.go @@ -952,6 +952,103 @@ func (m *QueryCommunityPoolResponse) GetPool() github_com_cosmos_cosmos_sdk_type return nil } +// QueryTokenizeShareRecordRewardRequest is the request type for the Query/TokenizeShareRecordReward RPC +// method. +type QueryTokenizeShareRecordRewardRequest struct { + OwnerAddress string `protobuf:"bytes,1,opt,name=owner_address,json=ownerAddress,proto3" json:"owner_address,omitempty" yaml:"owner_address"` +} + +func (m *QueryTokenizeShareRecordRewardRequest) Reset() { *m = QueryTokenizeShareRecordRewardRequest{} } +func (m *QueryTokenizeShareRecordRewardRequest) String() string { return proto.CompactTextString(m) } +func (*QueryTokenizeShareRecordRewardRequest) ProtoMessage() {} +func (*QueryTokenizeShareRecordRewardRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_5efd02cbc06efdc9, []int{20} +} +func (m *QueryTokenizeShareRecordRewardRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryTokenizeShareRecordRewardRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryTokenizeShareRecordRewardRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryTokenizeShareRecordRewardRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryTokenizeShareRecordRewardRequest.Merge(m, src) +} +func (m *QueryTokenizeShareRecordRewardRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryTokenizeShareRecordRewardRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryTokenizeShareRecordRewardRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryTokenizeShareRecordRewardRequest proto.InternalMessageInfo + +// QueryTokenizeShareRecordRewardResponse is the response type for the Query/TokenizeShareRecordReward +// RPC method. +type QueryTokenizeShareRecordRewardResponse struct { + // rewards defines all the rewards accrued by a delegator. + Rewards []TokenizeShareRecordReward `protobuf:"bytes,1,rep,name=rewards,proto3" json:"rewards"` + // total defines the sum of all the rewards. + Total github_com_cosmos_cosmos_sdk_types.DecCoins `protobuf:"bytes,2,rep,name=total,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.DecCoins" json:"total"` +} + +func (m *QueryTokenizeShareRecordRewardResponse) Reset() { + *m = QueryTokenizeShareRecordRewardResponse{} +} +func (m *QueryTokenizeShareRecordRewardResponse) String() string { return proto.CompactTextString(m) } +func (*QueryTokenizeShareRecordRewardResponse) ProtoMessage() {} +func (*QueryTokenizeShareRecordRewardResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5efd02cbc06efdc9, []int{21} +} +func (m *QueryTokenizeShareRecordRewardResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryTokenizeShareRecordRewardResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryTokenizeShareRecordRewardResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryTokenizeShareRecordRewardResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryTokenizeShareRecordRewardResponse.Merge(m, src) +} +func (m *QueryTokenizeShareRecordRewardResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryTokenizeShareRecordRewardResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryTokenizeShareRecordRewardResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryTokenizeShareRecordRewardResponse proto.InternalMessageInfo + +func (m *QueryTokenizeShareRecordRewardResponse) GetRewards() []TokenizeShareRecordReward { + if m != nil { + return m.Rewards + } + return nil +} + +func (m *QueryTokenizeShareRecordRewardResponse) GetTotal() github_com_cosmos_cosmos_sdk_types.DecCoins { + if m != nil { + return m.Total + } + return nil +} + func init() { proto.RegisterType((*QueryParamsRequest)(nil), "cosmos.distribution.v1beta1.QueryParamsRequest") proto.RegisterType((*QueryParamsResponse)(nil), "cosmos.distribution.v1beta1.QueryParamsResponse") @@ -973,6 +1070,8 @@ func init() { proto.RegisterType((*QueryDelegatorWithdrawAddressResponse)(nil), "cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressResponse") proto.RegisterType((*QueryCommunityPoolRequest)(nil), "cosmos.distribution.v1beta1.QueryCommunityPoolRequest") proto.RegisterType((*QueryCommunityPoolResponse)(nil), "cosmos.distribution.v1beta1.QueryCommunityPoolResponse") + proto.RegisterType((*QueryTokenizeShareRecordRewardRequest)(nil), "cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardRequest") + proto.RegisterType((*QueryTokenizeShareRecordRewardResponse)(nil), "cosmos.distribution.v1beta1.QueryTokenizeShareRecordRewardResponse") } func init() { @@ -980,87 +1079,95 @@ func init() { } var fileDescriptor_5efd02cbc06efdc9 = []byte{ - // 1269 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0x4f, 0x6c, 0x1b, 0xc5, - 0x17, 0xce, 0xb8, 0x69, 0xfa, 0xcb, 0xeb, 0xaf, 0x24, 0x9e, 0x46, 0xc8, 0xd9, 0xa4, 0x4e, 0x70, - 0x68, 0x13, 0x35, 0x8a, 0xb7, 0x49, 0xa4, 0x52, 0x12, 0x2a, 0x88, 0x9d, 0x84, 0xa2, 0x46, 0x69, - 0xeb, 0x16, 0x22, 0x40, 0x95, 0xb5, 0xf6, 0x6e, 0x36, 0x0b, 0xf6, 0x8e, 0xb3, 0xb3, 0x8e, 0x89, - 0xaa, 0x5e, 0xca, 0xa5, 0xf4, 0x84, 0xe0, 0xc2, 0x91, 0x23, 0xe2, 0xc4, 0xa1, 0x9c, 0xe1, 0xc0, - 0xa1, 0xc7, 0xaa, 0x48, 0x88, 0x13, 0xa0, 0x04, 0x89, 0x72, 0x00, 0x71, 0xe3, 0x8a, 0x76, 0x66, - 0xd6, 0xde, 0xb5, 0xd7, 0xeb, 0x7f, 0xf2, 0x25, 0xb1, 0x66, 0xe7, 0x7d, 0xdf, 0xfb, 0xde, 0x7b, - 0x33, 0xfb, 0xd9, 0x30, 0x9b, 0x27, 0xb4, 0x48, 0xa8, 0xac, 0x1a, 0xd4, 0xb6, 0x8c, 0x5c, 0xd9, - 0x36, 0x88, 0x29, 0x1f, 0x2c, 0xe6, 0x34, 0x5b, 0x59, 0x94, 0xf7, 0xcb, 0x9a, 0x75, 0x98, 0x2c, - 0x59, 0xc4, 0x26, 0x78, 0x82, 0x6f, 0x4c, 0x7a, 0x37, 0x26, 0xc5, 0x46, 0xe9, 0xa2, 0x40, 0xc9, - 0x29, 0x54, 0xe3, 0x51, 0x55, 0x8c, 0x92, 0xa2, 0x1b, 0xa6, 0xc2, 0x76, 0x33, 0x20, 0x69, 0x4c, - 0x27, 0x3a, 0x61, 0x1f, 0x65, 0xe7, 0x93, 0x58, 0x9d, 0xd4, 0x09, 0xd1, 0x0b, 0x9a, 0xac, 0x94, - 0x0c, 0x59, 0x31, 0x4d, 0x62, 0xb3, 0x10, 0x2a, 0x9e, 0xc6, 0xbd, 0xf8, 0x2e, 0x72, 0x9e, 0x18, - 0x2e, 0x66, 0x32, 0x4c, 0x85, 0x2f, 0x63, 0xbe, 0x7f, 0x9c, 0xef, 0xcf, 0xf2, 0x34, 0x84, 0x32, - 0xfe, 0x28, 0xaa, 0x14, 0x0d, 0x93, 0xc8, 0xec, 0x2f, 0x5f, 0x4a, 0x8c, 0x01, 0xbe, 0xe5, 0x68, - 0xba, 0xa9, 0x58, 0x4a, 0x91, 0x66, 0xb4, 0xfd, 0xb2, 0x46, 0xed, 0xc4, 0x5d, 0x38, 0xeb, 0x5b, - 0xa5, 0x25, 0x62, 0x52, 0x0d, 0x6f, 0xc2, 0x50, 0x89, 0xad, 0xc4, 0xd0, 0x34, 0x9a, 0x3b, 0xbd, - 0x34, 0x93, 0x0c, 0x29, 0x5c, 0x92, 0x07, 0xa7, 0x86, 0x9f, 0xfc, 0x32, 0x35, 0xf0, 0xd5, 0x1f, - 0xdf, 0x5c, 0x44, 0x19, 0x11, 0x9d, 0xa8, 0xc0, 0x79, 0x06, 0xff, 0x8e, 0x52, 0x30, 0x54, 0xc5, - 0x26, 0xd6, 0xba, 0x27, 0xfe, 0x2d, 0x73, 0x97, 0x88, 0x3c, 0xf0, 0x36, 0x44, 0x0f, 0xdc, 0x3d, - 0x59, 0x45, 0x55, 0x2d, 0x8d, 0x72, 0xee, 0xe1, 0xd4, 0x4b, 0xcf, 0x1e, 0x2f, 0x9c, 0x13, 0xf4, - 0x55, 0x9c, 0x35, 0xbe, 0xe5, 0xb6, 0x6d, 0x19, 0xa6, 0x9e, 0x19, 0x3d, 0xa8, 0x5b, 0x4f, 0xfc, - 0x1d, 0x81, 0x0b, 0xad, 0x98, 0x85, 0xd6, 0x2d, 0x18, 0x25, 0x25, 0xcd, 0xea, 0x8e, 0x79, 0xc4, - 0x0d, 0x15, 0xcb, 0xf8, 0x01, 0x82, 0x28, 0xd5, 0x0a, 0xbb, 0xd9, 0x1c, 0x31, 0xd5, 0xac, 0xa5, - 0x55, 0x14, 0x4b, 0xa5, 0xb1, 0xc8, 0xf4, 0x89, 0xb9, 0xd3, 0x4b, 0x93, 0x6e, 0x15, 0x9d, 0x09, - 0xa8, 0x56, 0x6f, 0x5d, 0xcb, 0xa7, 0x89, 0x61, 0xa6, 0xae, 0x38, 0xe5, 0xfb, 0xfa, 0xd7, 0xa9, - 0x79, 0xdd, 0xb0, 0xf7, 0xca, 0xb9, 0x64, 0x9e, 0x14, 0x45, 0x53, 0xc5, 0xbf, 0x05, 0xaa, 0x7e, - 0x28, 0xdb, 0x87, 0x25, 0x8d, 0xba, 0x31, 0x94, 0x57, 0x7b, 0xc4, 0x21, 0x4c, 0x11, 0x53, 0xcd, - 0x70, 0x3a, 0xbc, 0x0f, 0x90, 0x27, 0xc5, 0xa2, 0x41, 0xa9, 0x41, 0xcc, 0xd8, 0x89, 0x36, 0xc8, - 0x97, 0xbb, 0x20, 0xcf, 0x78, 0x48, 0x12, 0x87, 0x30, 0xeb, 0xaf, 0xf7, 0x8d, 0xb2, 0x4d, 0x6d, - 0xc5, 0x54, 0x9d, 0x2a, 0xf1, 0xb4, 0xfa, 0xd5, 0xeb, 0x4f, 0x10, 0xcc, 0xb5, 0xe6, 0x16, 0xdd, - 0xbe, 0x0b, 0xa7, 0xdc, 0xa6, 0xf0, 0xd1, 0xbe, 0x12, 0x3a, 0xda, 0x21, 0x90, 0xde, 0x79, 0x77, - 0x31, 0x13, 0xfb, 0x30, 0xe5, 0x4f, 0x25, 0x5d, 0x2d, 0x51, 0xbf, 0xe4, 0x3f, 0x42, 0x30, 0xdd, - 0x9c, 0x53, 0xc8, 0xde, 0xf5, 0x4d, 0x04, 0x57, 0xbe, 0xda, 0x9e, 0xf2, 0xb5, 0x7c, 0xbe, 0x5c, - 0x2c, 0x17, 0x14, 0x5b, 0x53, 0x6b, 0xc0, 0x5e, 0xf1, 0xde, 0x31, 0x78, 0x14, 0x81, 0x49, 0x7f, - 0x32, 0xb7, 0x0b, 0x0a, 0xdd, 0xd3, 0xfa, 0xd5, 0x7c, 0x3c, 0x0b, 0x23, 0xd4, 0x56, 0x2c, 0xdb, - 0x30, 0xf5, 0xec, 0x9e, 0x66, 0xe8, 0x7b, 0x76, 0x2c, 0x32, 0x8d, 0xe6, 0x06, 0x33, 0x2f, 0xb8, - 0xcb, 0xd7, 0xd8, 0x2a, 0x9e, 0x81, 0x33, 0x1a, 0x6b, 0x9f, 0xbb, 0xed, 0x04, 0xdb, 0xf6, 0x7f, - 0xbe, 0x28, 0x36, 0x6d, 0x02, 0xd4, 0xae, 0xfa, 0xd8, 0x20, 0x2b, 0xd3, 0x05, 0xdf, 0xc1, 0xe1, - 0x6f, 0x93, 0xda, 0xcd, 0xa7, 0x6b, 0x42, 0x59, 0xc6, 0x13, 0xb9, 0x32, 0xf8, 0xf0, 0xcb, 0xa9, - 0x81, 0xc4, 0x77, 0x08, 0xce, 0x35, 0x29, 0x86, 0x68, 0xcb, 0xdb, 0x70, 0x8a, 0xf2, 0xa5, 0x18, - 0x62, 0xa7, 0xf4, 0x52, 0x7b, 0x3d, 0x61, 0x38, 0x1b, 0x07, 0x9a, 0x69, 0xfb, 0xa6, 0x50, 0x60, - 0xe1, 0x37, 0x7d, 0x32, 0x22, 0x4c, 0xc6, 0x6c, 0x4b, 0x19, 0x3c, 0x27, 0xaf, 0x8e, 0xc4, 0xf7, - 0xae, 0x82, 0x75, 0xad, 0xa0, 0xe9, 0x6c, 0xad, 0xee, 0x30, 0x6f, 0x40, 0x54, 0xe5, 0xcf, 0x1a, - 0xfa, 0x19, 0x7b, 0xf6, 0x78, 0x61, 0x4c, 0x90, 0xd6, 0xb5, 0xb1, 0x1a, 0xe2, 0xb6, 0x31, 0x70, - 0x2c, 0x22, 0x5d, 0x8f, 0xc5, 0xca, 0xff, 0x9c, 0x06, 0x3c, 0x77, 0x9a, 0xf0, 0x19, 0x82, 0x78, - 0x33, 0x09, 0xa2, 0x0b, 0x25, 0xef, 0x9d, 0xd0, 0xcf, 0x8b, 0xba, 0x7a, 0x4d, 0x94, 0x21, 0x51, - 0x97, 0xd3, 0x1d, 0x62, 0x2b, 0x85, 0xbe, 0xd4, 0xd6, 0x53, 0x8b, 0x7f, 0x10, 0xcc, 0x84, 0xf2, - 0x8a, 0x82, 0xbc, 0x5f, 0x5f, 0x90, 0xcb, 0xa1, 0x63, 0x59, 0x43, 0x5b, 0x77, 0xb9, 0x39, 0x62, - 0xd0, 0x15, 0x89, 0x0b, 0x70, 0xd2, 0x76, 0x48, 0xfb, 0xfc, 0x52, 0xe4, 0x24, 0x09, 0x4b, 0x5c, - 0xc8, 0xd5, 0xcc, 0xaa, 0x23, 0xd4, 0xbf, 0x32, 0x6f, 0x89, 0x0b, 0x39, 0x90, 0x53, 0x94, 0x38, - 0x0e, 0x50, 0x1d, 0x5a, 0x5e, 0xe5, 0xe1, 0x8c, 0x67, 0xc5, 0x83, 0x56, 0x81, 0x97, 0xfd, 0x68, - 0x3b, 0x86, 0xbd, 0xa7, 0x5a, 0x4a, 0x45, 0x10, 0xf7, 0x4d, 0xc6, 0x81, 0x30, 0x6f, 0xcd, 0x89, - 0x85, 0x96, 0x34, 0x8c, 0x56, 0xc4, 0xa3, 0xb6, 0x89, 0x47, 0x2a, 0x7e, 0x30, 0x0f, 0xef, 0x04, - 0x8c, 0x33, 0x5e, 0xe7, 0x6d, 0x53, 0x36, 0x0d, 0xfb, 0xf0, 0x26, 0x21, 0x05, 0xd7, 0xb0, 0x3e, - 0x44, 0x20, 0x05, 0x3d, 0x15, 0xa9, 0x7c, 0x00, 0x83, 0x25, 0x42, 0x0a, 0x7d, 0x3e, 0xc7, 0x8c, - 0x63, 0xe9, 0x87, 0x28, 0x9c, 0x64, 0xa9, 0xe0, 0x2f, 0x10, 0x0c, 0x71, 0x13, 0x8c, 0xe5, 0xd0, - 0x93, 0xd2, 0xe8, 0xc0, 0xa5, 0x4b, 0xed, 0x07, 0x70, 0x8d, 0x89, 0xf9, 0x07, 0x3f, 0xfe, 0xfe, - 0x79, 0xe4, 0x3c, 0x9e, 0x91, 0xc3, 0xbe, 0x30, 0x70, 0x07, 0x8e, 0xff, 0x44, 0x30, 0xde, 0xd4, - 0x03, 0xe3, 0x54, 0x6b, 0xf2, 0x56, 0xd6, 0x5d, 0x4a, 0xf7, 0x84, 0x21, 0x34, 0xa5, 0x99, 0xa6, - 0xab, 0x78, 0x35, 0x54, 0x53, 0xed, 0x7c, 0xc8, 0xf7, 0x1a, 0x5e, 0x17, 0xf7, 0xf1, 0xc7, 0x11, - 0x98, 0x08, 0x31, 0x6c, 0x78, 0xbd, 0x83, 0x4c, 0x9b, 0xda, 0x57, 0x69, 0xa3, 0x47, 0x14, 0xa1, - 0x78, 0x87, 0x29, 0xbe, 0x85, 0x6f, 0xf4, 0xa0, 0x58, 0x26, 0x35, 0x7c, 0xf7, 0xbb, 0x06, 0x3e, - 0x42, 0x70, 0x36, 0xc0, 0x0a, 0xe2, 0xd7, 0x3a, 0xc8, 0xbb, 0xc1, 0xb5, 0x4a, 0x57, 0xbb, 0x8c, - 0x16, 0x6a, 0xb7, 0x99, 0xda, 0x6b, 0x78, 0xb3, 0x17, 0xb5, 0x35, 0x9f, 0x89, 0x7f, 0x42, 0x30, - 0x5a, 0xef, 0xaa, 0xf0, 0xab, 0x1d, 0xe4, 0xe8, 0xb7, 0xa5, 0xd2, 0x4a, 0x37, 0xa1, 0x42, 0xdb, - 0x75, 0xa6, 0x6d, 0x03, 0xa7, 0x7b, 0xd1, 0xe6, 0x5a, 0xb7, 0xbf, 0x10, 0x44, 0x1b, 0x9c, 0x0a, - 0x6e, 0x23, 0xbd, 0x66, 0x0e, 0x4d, 0x5a, 0xed, 0x2a, 0x56, 0x68, 0xcb, 0x32, 0x6d, 0xef, 0xe2, - 0x9d, 0x50, 0x6d, 0xd5, 0x97, 0x08, 0x95, 0xef, 0x35, 0xbc, 0x83, 0xee, 0xcb, 0x62, 0x32, 0x03, - 0xcf, 0xec, 0x73, 0x04, 0x2f, 0x06, 0xbb, 0x11, 0xfc, 0x7a, 0x27, 0x89, 0x07, 0xf8, 0x27, 0xe9, - 0x8d, 0xee, 0x01, 0x3a, 0x6a, 0x6d, 0x7b, 0xf2, 0xd9, 0xc1, 0x0c, 0xb0, 0x04, 0xed, 0x1c, 0xcc, - 0xe6, 0xee, 0xa5, 0x9d, 0x83, 0x19, 0xe2, 0x43, 0xda, 0x3c, 0x98, 0x2d, 0x14, 0xd6, 0x66, 0x1b, - 0xff, 0x8b, 0x20, 0xd6, 0xcc, 0x30, 0xe0, 0xb5, 0x0e, 0x72, 0x0d, 0x76, 0x39, 0x52, 0xaa, 0x17, - 0x08, 0xa1, 0xf9, 0x0e, 0xd3, 0xbc, 0x8d, 0xb7, 0x7a, 0xd1, 0x5c, 0xef, 0x78, 0xf0, 0xb7, 0x08, - 0xce, 0xf8, 0x4c, 0x09, 0xbe, 0xdc, 0x3a, 0xd7, 0x20, 0x8f, 0x23, 0xbd, 0xd2, 0x71, 0x9c, 0x10, - 0xb6, 0xcc, 0x84, 0x2d, 0xe0, 0xf9, 0x50, 0x61, 0x79, 0x37, 0x36, 0xeb, 0xd8, 0x98, 0xd4, 0xf5, - 0x27, 0x47, 0x71, 0xf4, 0xf4, 0x28, 0x8e, 0x7e, 0x3b, 0x8a, 0xa3, 0x4f, 0x8f, 0xe3, 0x03, 0x4f, - 0x8f, 0xe3, 0x03, 0x3f, 0x1f, 0xc7, 0x07, 0xde, 0x5b, 0x0c, 0x35, 0x46, 0x1f, 0xf9, 0xd1, 0x99, - 0x4f, 0xca, 0x0d, 0xb1, 0x1f, 0x1b, 0x97, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x0e, 0x2b, 0x1c, - 0xf2, 0x92, 0x15, 0x00, 0x00, + // 1393 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0x4d, 0x6c, 0x1b, 0x45, + 0x14, 0xce, 0xb8, 0x69, 0x4a, 0xa6, 0x0d, 0x49, 0x26, 0x11, 0x72, 0x36, 0xa9, 0x13, 0x36, 0xb4, + 0x89, 0x1a, 0xc5, 0xdb, 0x24, 0x52, 0x29, 0x09, 0x11, 0xc4, 0x4e, 0x42, 0xa1, 0x51, 0xda, 0x3a, + 0xa1, 0x11, 0xa0, 0xca, 0x5a, 0x7b, 0x27, 0xeb, 0xa5, 0xf6, 0x8e, 0xb3, 0xbb, 0x8e, 0x09, 0x51, + 0x2e, 0xe5, 0x52, 0x7a, 0x42, 0x70, 0xe1, 0xc8, 0x11, 0x71, 0xe2, 0x50, 0xce, 0xe5, 0xd8, 0x63, + 0x55, 0x24, 0xc4, 0xa9, 0xa0, 0x04, 0x89, 0xf6, 0x00, 0x42, 0x5c, 0xe0, 0x88, 0x76, 0x66, 0xd6, + 0xde, 0xf5, 0xcf, 0x7a, 0x6d, 0xcb, 0x97, 0xd6, 0x9d, 0x9d, 0xf7, 0x7d, 0xef, 0x7b, 0x6f, 0x7e, + 0xbe, 0x29, 0x9c, 0x4a, 0x13, 0x33, 0x47, 0x4c, 0x49, 0xd1, 0x4c, 0xcb, 0xd0, 0x52, 0x05, 0x4b, + 0x23, 0xba, 0xb4, 0x3f, 0x97, 0xc2, 0x96, 0x3c, 0x27, 0xed, 0x15, 0xb0, 0x71, 0x10, 0xcd, 0x1b, + 0xc4, 0x22, 0x68, 0x94, 0x4d, 0x8c, 0xba, 0x27, 0x46, 0xf9, 0x44, 0xe1, 0x12, 0x47, 0x49, 0xc9, + 0x26, 0x66, 0x51, 0x25, 0x8c, 0xbc, 0xac, 0x6a, 0xba, 0x4c, 0x67, 0x53, 0x20, 0x61, 0x58, 0x25, + 0x2a, 0xa1, 0x3f, 0x25, 0xfb, 0x17, 0x1f, 0x1d, 0x53, 0x09, 0x51, 0xb3, 0x58, 0x92, 0xf3, 0x9a, + 0x24, 0xeb, 0x3a, 0xb1, 0x68, 0x88, 0xc9, 0xbf, 0x46, 0xdc, 0xf8, 0x0e, 0x72, 0x9a, 0x68, 0x0e, + 0x66, 0xd4, 0x4f, 0x85, 0x27, 0x63, 0x36, 0x7f, 0x84, 0xcd, 0x4f, 0xb2, 0x34, 0xb8, 0x32, 0xf6, + 0x69, 0x50, 0xce, 0x69, 0x3a, 0x91, 0xe8, 0x9f, 0x6c, 0x48, 0x1c, 0x86, 0xe8, 0x96, 0xad, 0xe9, + 0xa6, 0x6c, 0xc8, 0x39, 0x33, 0x81, 0xf7, 0x0a, 0xd8, 0xb4, 0xc4, 0x3b, 0x70, 0xc8, 0x33, 0x6a, + 0xe6, 0x89, 0x6e, 0x62, 0xb4, 0x0e, 0x7b, 0xf2, 0x74, 0x24, 0x0c, 0x26, 0xc0, 0xf4, 0xd9, 0xf9, + 0xc9, 0xa8, 0x4f, 0xe1, 0xa2, 0x2c, 0x38, 0xd6, 0xfb, 0xf8, 0xd9, 0x78, 0xd7, 0xb7, 0x7f, 0x7c, + 0x7f, 0x09, 0x24, 0x78, 0xb4, 0x58, 0x84, 0x17, 0x28, 0xfc, 0x6d, 0x39, 0xab, 0x29, 0xb2, 0x45, + 0x8c, 0x55, 0x57, 0xfc, 0xbb, 0xfa, 0x2e, 0xe1, 0x79, 0xa0, 0x4d, 0x38, 0xb8, 0xef, 0xcc, 0x49, + 0xca, 0x8a, 0x62, 0x60, 0x93, 0x71, 0xf7, 0xc6, 0x5e, 0x7d, 0xfa, 0x70, 0xf6, 0x3c, 0xa7, 0x2f, + 0xe1, 0xac, 0xb0, 0x29, 0x5b, 0x96, 0xa1, 0xe9, 0x6a, 0x62, 0x60, 0xbf, 0x62, 0x5c, 0xfc, 0x2b, + 0x04, 0x2f, 0x36, 0x62, 0xe6, 0x5a, 0x37, 0xe0, 0x00, 0xc9, 0x63, 0xa3, 0x35, 0xe6, 0x7e, 0x27, + 0x94, 0x0f, 0xa3, 0x7b, 0x00, 0x0e, 0x9a, 0x38, 0xbb, 0x9b, 0x4c, 0x11, 0x5d, 0x49, 0x1a, 0xb8, + 0x28, 0x1b, 0x8a, 0x19, 0x0e, 0x4d, 0x9c, 0x9a, 0x3e, 0x3b, 0x3f, 0xe6, 0x54, 0xd1, 0x5e, 0x01, + 0xa5, 0xea, 0xad, 0xe2, 0x74, 0x9c, 0x68, 0x7a, 0xec, 0xaa, 0x5d, 0xbe, 0xef, 0x7e, 0x1d, 0x9f, + 0x51, 0x35, 0x2b, 0x53, 0x48, 0x45, 0xd3, 0x24, 0xc7, 0x9b, 0xca, 0xff, 0x9a, 0x35, 0x95, 0xbb, + 0x92, 0x75, 0x90, 0xc7, 0xa6, 0x13, 0x63, 0xb2, 0x6a, 0xf7, 0xdb, 0x84, 0x31, 0xa2, 0x2b, 0x09, + 0x46, 0x87, 0xf6, 0x20, 0x4c, 0x93, 0x5c, 0x4e, 0x33, 0x4d, 0x8d, 0xe8, 0xe1, 0x53, 0x01, 0xc8, + 0x17, 0x5a, 0x20, 0x4f, 0xb8, 0x48, 0xc4, 0x03, 0x38, 0xe5, 0xad, 0xf7, 0x8d, 0x82, 0x65, 0x5a, + 0xb2, 0xae, 0xd8, 0x55, 0x62, 0x69, 0x75, 0xaa, 0xd7, 0x9f, 0x03, 0x38, 0xdd, 0x98, 0x9b, 0x77, + 0xfb, 0x0e, 0x3c, 0xe3, 0x34, 0x85, 0x2d, 0xed, 0xab, 0xbe, 0x4b, 0xdb, 0x07, 0xd2, 0xbd, 0xde, + 0x1d, 0x4c, 0x71, 0x0f, 0x8e, 0x7b, 0x53, 0x89, 0x97, 0x4a, 0xd4, 0x29, 0xf9, 0x0f, 0x00, 0x9c, + 0xa8, 0xcf, 0xc9, 0x65, 0xef, 0x7a, 0x56, 0x04, 0x53, 0xbe, 0x14, 0x4c, 0xf9, 0x4a, 0x3a, 0x5d, + 0xc8, 0x15, 0xb2, 0xb2, 0x85, 0x95, 0x32, 0xb0, 0x5b, 0xbc, 0x7b, 0x19, 0x3c, 0x08, 0xc1, 0x31, + 0x6f, 0x32, 0x5b, 0x59, 0xd9, 0xcc, 0xe0, 0x4e, 0x35, 0x1f, 0x4d, 0xc1, 0x7e, 0xd3, 0x92, 0x0d, + 0x4b, 0xd3, 0xd5, 0x64, 0x06, 0x6b, 0x6a, 0xc6, 0x0a, 0x87, 0x26, 0xc0, 0x74, 0x77, 0xe2, 0x65, + 0x67, 0xf8, 0x1a, 0x1d, 0x45, 0x93, 0xb0, 0x0f, 0xd3, 0xf6, 0x39, 0xd3, 0x4e, 0xd1, 0x69, 0xe7, + 0xd8, 0x20, 0x9f, 0xb4, 0x0e, 0x61, 0xf9, 0xa8, 0x0f, 0x77, 0xd3, 0x32, 0x5d, 0xf4, 0x6c, 0x1c, + 0x76, 0x9b, 0x94, 0x4f, 0x3e, 0x15, 0x73, 0x65, 0x09, 0x57, 0xe4, 0x62, 0xf7, 0xfd, 0x6f, 0xc6, + 0xbb, 0xc4, 0x47, 0x00, 0x9e, 0xaf, 0x53, 0x0c, 0xde, 0x96, 0xf7, 0xe1, 0x19, 0x93, 0x0d, 0x85, + 0x01, 0xdd, 0xa5, 0x97, 0x83, 0xf5, 0x84, 0xe2, 0xac, 0xed, 0x63, 0xdd, 0xf2, 0xac, 0x42, 0x8e, + 0x85, 0xde, 0xf1, 0xc8, 0x08, 0x51, 0x19, 0x53, 0x0d, 0x65, 0xb0, 0x9c, 0xdc, 0x3a, 0xc4, 0x1f, + 0x1d, 0x05, 0xab, 0x38, 0x8b, 0x55, 0x3a, 0x56, 0xb1, 0x99, 0xd7, 0xe0, 0xa0, 0xc2, 0xbe, 0x55, + 0xf5, 0x33, 0xfc, 0xf4, 0xe1, 0xec, 0x30, 0x27, 0xad, 0x68, 0x63, 0x29, 0xc4, 0x69, 0x63, 0xcd, + 0x65, 0x11, 0x6a, 0x79, 0x59, 0x2c, 0xbe, 0x64, 0x37, 0xe0, 0xb9, 0xdd, 0x84, 0x2f, 0x01, 0x8c, + 0xd4, 0x93, 0xc0, 0xbb, 0x90, 0x77, 0x9f, 0x09, 0x9d, 0x3c, 0xa8, 0x4b, 0xc7, 0x44, 0x01, 0x8a, + 0x15, 0x39, 0x6d, 0x13, 0x4b, 0xce, 0x76, 0xa4, 0xb6, 0xae, 0x5a, 0xfc, 0x0d, 0xe0, 0xa4, 0x2f, + 0x2f, 0x2f, 0xc8, 0x47, 0x95, 0x05, 0xb9, 0xe2, 0xbb, 0x2c, 0xcb, 0x68, 0xab, 0x0e, 0x37, 0x43, + 0xac, 0x75, 0x44, 0xa2, 0x2c, 0x3c, 0x6d, 0xd9, 0xa4, 0x1d, 0xbe, 0x14, 0x19, 0x89, 0x68, 0xf0, + 0x03, 0xb9, 0x94, 0x59, 0x69, 0x09, 0x75, 0xae, 0xcc, 0x1b, 0xfc, 0x40, 0xae, 0xc9, 0xc9, 0x4b, + 0x1c, 0x81, 0xb0, 0xb4, 0x68, 0x59, 0x95, 0x7b, 0x13, 0xae, 0x11, 0x17, 0x5a, 0x11, 0xbe, 0xe6, + 0x45, 0xdb, 0xd1, 0xac, 0x8c, 0x62, 0xc8, 0x45, 0x4e, 0xdc, 0x31, 0x19, 0xfb, 0xdc, 0xbc, 0xd5, + 0x27, 0xe6, 0x5a, 0xe2, 0x70, 0xa0, 0xc8, 0x3f, 0x05, 0x26, 0xee, 0x2f, 0x7a, 0xc1, 0x5c, 0xbc, + 0xa3, 0x70, 0x84, 0xf2, 0xda, 0xb7, 0x4d, 0x41, 0xd7, 0xac, 0x83, 0x9b, 0x84, 0x64, 0x1d, 0xc3, + 0x7a, 0x1f, 0x40, 0xa1, 0xd6, 0x57, 0x9e, 0xca, 0xc7, 0xb0, 0x3b, 0x4f, 0x48, 0xb6, 0xc3, 0xfb, + 0x98, 0x72, 0x88, 0x79, 0x5e, 0x9f, 0x6d, 0x72, 0x17, 0xeb, 0xda, 0xa7, 0x78, 0x2b, 0x23, 0x1b, + 0x38, 0x81, 0xd3, 0xc4, 0xe0, 0x46, 0xcc, 0xe9, 0xcc, 0x32, 0xec, 0x23, 0x45, 0x1d, 0x57, 0x75, + 0xe5, 0x9f, 0x67, 0xe3, 0xc3, 0x07, 0x72, 0x2e, 0xbb, 0x28, 0x7a, 0x3e, 0x8b, 0x89, 0x73, 0xf4, + 0xdf, 0xd5, 0x95, 0x79, 0x01, 0xb8, 0xab, 0xf5, 0xa1, 0xe4, 0x85, 0xb8, 0xdd, 0xdc, 0x16, 0xae, + 0x0b, 0x18, 0xeb, 0xb6, 0xab, 0x54, 0xde, 0xbd, 0x6a, 0x33, 0xbb, 0xb7, 0x25, 0x57, 0xc9, 0xf0, + 0xe7, 0x1f, 0x0d, 0xc1, 0xd3, 0x54, 0x2b, 0xfa, 0x1a, 0xc0, 0x1e, 0xf6, 0xc4, 0x40, 0x92, 0xaf, + 0x88, 0xea, 0xf7, 0x8d, 0x70, 0x39, 0x78, 0x00, 0x2b, 0x9c, 0x38, 0x73, 0xef, 0xa7, 0xdf, 0xbf, + 0x0a, 0x5d, 0x40, 0x93, 0x92, 0xdf, 0x73, 0x8c, 0xbd, 0x6f, 0xd0, 0x0b, 0x00, 0x47, 0xea, 0xbe, + 0x30, 0x50, 0xac, 0x31, 0x79, 0xa3, 0x87, 0x91, 0x10, 0x6f, 0x0b, 0x83, 0x6b, 0x8a, 0x53, 0x4d, + 0xcb, 0x68, 0xc9, 0x57, 0x53, 0xf9, 0xf4, 0x91, 0x0e, 0xab, 0x2e, 0xe3, 0x23, 0xf4, 0x59, 0x08, + 0x8e, 0xfa, 0xd8, 0x61, 0xb4, 0xda, 0x44, 0xa6, 0x75, 0x1f, 0x07, 0xc2, 0x5a, 0x9b, 0x28, 0x5c, + 0xf1, 0x0e, 0x55, 0x7c, 0x0b, 0xdd, 0x68, 0x43, 0xb1, 0x44, 0xca, 0xf8, 0xce, 0x4b, 0x0e, 0x1d, + 0x03, 0x38, 0x54, 0xc3, 0x68, 0xa3, 0x37, 0x9b, 0xc8, 0xbb, 0xea, 0x4d, 0x20, 0x2c, 0xb7, 0x18, + 0xcd, 0xd5, 0x6e, 0x52, 0xb5, 0xd7, 0xd0, 0x7a, 0x3b, 0x6a, 0xcb, 0x2e, 0x1e, 0xfd, 0x0c, 0xe0, + 0x40, 0xa5, 0x67, 0x45, 0x6f, 0x34, 0x91, 0xa3, 0xd7, 0xf4, 0x0b, 0x8b, 0xad, 0x84, 0x72, 0x6d, + 0xd7, 0xa9, 0xb6, 0x35, 0x14, 0x6f, 0x47, 0x9b, 0x63, 0x8c, 0xff, 0x04, 0x70, 0xb0, 0xca, 0x07, + 0xa2, 0x00, 0xe9, 0xd5, 0xf3, 0xbf, 0xc2, 0x52, 0x4b, 0xb1, 0x5c, 0x5b, 0x92, 0x6a, 0xfb, 0x00, + 0xed, 0xf8, 0x6a, 0x2b, 0x5d, 0xd1, 0xa6, 0x74, 0x58, 0x75, 0xc3, 0x1f, 0x49, 0x7c, 0x65, 0xd6, + 0xdc, 0xb3, 0xcf, 0x01, 0x7c, 0xa5, 0xb6, 0xd7, 0x43, 0x6f, 0x35, 0x93, 0x78, 0x0d, 0x77, 0x2a, + 0xbc, 0xdd, 0x3a, 0x40, 0x53, 0xad, 0x0d, 0x26, 0x9f, 0x6e, 0xcc, 0x1a, 0x86, 0x2b, 0xc8, 0xc6, + 0xac, 0xef, 0x0d, 0x83, 0x6c, 0x4c, 0x1f, 0x97, 0x17, 0x70, 0x63, 0x36, 0x50, 0x58, 0x5e, 0xdb, + 0xe8, 0x5f, 0x00, 0xc3, 0xf5, 0xec, 0x18, 0x5a, 0x69, 0x22, 0xd7, 0xda, 0x1e, 0x52, 0x88, 0xb5, + 0x03, 0xc1, 0x35, 0x6f, 0x53, 0xcd, 0x9b, 0x68, 0xa3, 0x1d, 0xcd, 0x95, 0x7e, 0x12, 0xfd, 0x00, + 0x60, 0x9f, 0xc7, 0xf2, 0xa1, 0x2b, 0x8d, 0x73, 0xad, 0xe5, 0x20, 0x85, 0xd7, 0x9b, 0x8e, 0xe3, + 0xc2, 0x16, 0xa8, 0xb0, 0x59, 0x34, 0xe3, 0x2b, 0x2c, 0xed, 0xc4, 0x26, 0x6d, 0x93, 0x88, 0xfe, + 0x03, 0x70, 0xa4, 0xae, 0xb9, 0x0a, 0xe2, 0x10, 0x1a, 0xb9, 0xcb, 0x20, 0x0e, 0xa1, 0xa1, 0x5d, + 0x14, 0x13, 0x54, 0xdb, 0x06, 0x7a, 0xcf, 0x57, 0xdb, 0xa1, 0xc7, 0xa7, 0x1e, 0x49, 0x16, 0xc7, + 0x4d, 0x9a, 0x36, 0x70, 0xd2, 0xa0, 0xc8, 0xce, 0x55, 0x19, 0xbb, 0xfe, 0xf8, 0x38, 0x02, 0x9e, + 0x1c, 0x47, 0xc0, 0x6f, 0xc7, 0x11, 0xf0, 0xc5, 0x49, 0xa4, 0xeb, 0xc9, 0x49, 0xa4, 0xeb, 0x97, + 0x93, 0x48, 0xd7, 0x87, 0x73, 0xbe, 0x7e, 0xf0, 0x13, 0x2f, 0x39, 0xb5, 0x87, 0xa9, 0x1e, 0xfa, + 0xbf, 0xd8, 0x0b, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0xff, 0x3e, 0x0f, 0x32, 0xeb, 0x17, 0x00, + 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1096,6 +1203,8 @@ type QueryClient interface { DelegatorWithdrawAddress(ctx context.Context, in *QueryDelegatorWithdrawAddressRequest, opts ...grpc.CallOption) (*QueryDelegatorWithdrawAddressResponse, error) // CommunityPool queries the community pool coins. CommunityPool(ctx context.Context, in *QueryCommunityPoolRequest, opts ...grpc.CallOption) (*QueryCommunityPoolResponse, error) + // TokenizeShareRecordReward queries the tokenize share record rewards + TokenizeShareRecordReward(ctx context.Context, in *QueryTokenizeShareRecordRewardRequest, opts ...grpc.CallOption) (*QueryTokenizeShareRecordRewardResponse, error) } type queryClient struct { @@ -1196,6 +1305,15 @@ func (c *queryClient) CommunityPool(ctx context.Context, in *QueryCommunityPoolR return out, nil } +func (c *queryClient) TokenizeShareRecordReward(ctx context.Context, in *QueryTokenizeShareRecordRewardRequest, opts ...grpc.CallOption) (*QueryTokenizeShareRecordRewardResponse, error) { + out := new(QueryTokenizeShareRecordRewardResponse) + err := c.cc.Invoke(ctx, "/cosmos.distribution.v1beta1.Query/TokenizeShareRecordReward", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // QueryServer is the server API for Query service. type QueryServer interface { // Params queries params of the distribution module. @@ -1219,6 +1337,8 @@ type QueryServer interface { DelegatorWithdrawAddress(context.Context, *QueryDelegatorWithdrawAddressRequest) (*QueryDelegatorWithdrawAddressResponse, error) // CommunityPool queries the community pool coins. CommunityPool(context.Context, *QueryCommunityPoolRequest) (*QueryCommunityPoolResponse, error) + // TokenizeShareRecordReward queries the tokenize share record rewards + TokenizeShareRecordReward(context.Context, *QueryTokenizeShareRecordRewardRequest) (*QueryTokenizeShareRecordRewardResponse, error) } // UnimplementedQueryServer can be embedded to have forward compatible implementations. @@ -1255,6 +1375,9 @@ func (*UnimplementedQueryServer) DelegatorWithdrawAddress(ctx context.Context, r func (*UnimplementedQueryServer) CommunityPool(ctx context.Context, req *QueryCommunityPoolRequest) (*QueryCommunityPoolResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CommunityPool not implemented") } +func (*UnimplementedQueryServer) TokenizeShareRecordReward(ctx context.Context, req *QueryTokenizeShareRecordRewardRequest) (*QueryTokenizeShareRecordRewardResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TokenizeShareRecordReward not implemented") +} func RegisterQueryServer(s grpc1.Server, srv QueryServer) { s.RegisterService(&_Query_serviceDesc, srv) @@ -1440,6 +1563,24 @@ func _Query_CommunityPool_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } +func _Query_TokenizeShareRecordReward_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryTokenizeShareRecordRewardRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).TokenizeShareRecordReward(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.distribution.v1beta1.Query/TokenizeShareRecordReward", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).TokenizeShareRecordReward(ctx, req.(*QueryTokenizeShareRecordRewardRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Query_serviceDesc = grpc.ServiceDesc{ ServiceName: "cosmos.distribution.v1beta1.Query", HandlerType: (*QueryServer)(nil), @@ -1484,6 +1625,10 @@ var _Query_serviceDesc = grpc.ServiceDesc{ MethodName: "CommunityPool", Handler: _Query_CommunityPool_Handler, }, + { + MethodName: "TokenizeShareRecordReward", + Handler: _Query_TokenizeShareRecordReward_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "cosmos/distribution/v1beta1/query.proto", @@ -2197,6 +2342,87 @@ func (m *QueryCommunityPoolResponse) MarshalToSizedBuffer(dAtA []byte) (int, err return len(dAtA) - i, nil } +func (m *QueryTokenizeShareRecordRewardRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryTokenizeShareRecordRewardRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryTokenizeShareRecordRewardRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.OwnerAddress) > 0 { + i -= len(m.OwnerAddress) + copy(dAtA[i:], m.OwnerAddress) + i = encodeVarintQuery(dAtA, i, uint64(len(m.OwnerAddress))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryTokenizeShareRecordRewardResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryTokenizeShareRecordRewardResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryTokenizeShareRecordRewardResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Total) > 0 { + for iNdEx := len(m.Total) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Total[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.Rewards) > 0 { + for iNdEx := len(m.Rewards) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Rewards[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { offset -= sovQuery(v) base := offset @@ -2500,6 +2726,40 @@ func (m *QueryCommunityPoolResponse) Size() (n int) { return n } +func (m *QueryTokenizeShareRecordRewardRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.OwnerAddress) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryTokenizeShareRecordRewardResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Rewards) > 0 { + for _, e := range m.Rewards { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + if len(m.Total) > 0 { + for _, e := range m.Total { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + func sovQuery(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -4337,6 +4597,206 @@ func (m *QueryCommunityPoolResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *QueryTokenizeShareRecordRewardRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryTokenizeShareRecordRewardRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryTokenizeShareRecordRewardRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OwnerAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + 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 ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OwnerAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryTokenizeShareRecordRewardResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryTokenizeShareRecordRewardResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryTokenizeShareRecordRewardResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Rewards", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Rewards = append(m.Rewards, TokenizeShareRecordReward{}) + if err := m.Rewards[len(m.Rewards)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Total", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Total = append(m.Total, types.DecCoin{}) + if err := m.Total[len(m.Total)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipQuery(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/distribution/types/query.pb.gw.go b/x/distribution/types/query.pb.gw.go index 9cf7f680118e..7dec9a7ed004 100644 --- a/x/distribution/types/query.pb.gw.go +++ b/x/distribution/types/query.pb.gw.go @@ -541,6 +541,60 @@ func local_request_Query_CommunityPool_0(ctx context.Context, marshaler runtime. } +func request_Query_TokenizeShareRecordReward_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryTokenizeShareRecordRewardRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["owner_address"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "owner_address") + } + + protoReq.OwnerAddress, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "owner_address", err) + } + + msg, err := client.TokenizeShareRecordReward(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_TokenizeShareRecordReward_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryTokenizeShareRecordRewardRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["owner_address"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "owner_address") + } + + protoReq.OwnerAddress, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "owner_address", err) + } + + msg, err := server.TokenizeShareRecordReward(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterQueryHandlerServer registers the http handlers for service Query to "mux". // UnaryRPC :call QueryServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -777,6 +831,29 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv }) + mux.Handle("GET", pattern_Query_TokenizeShareRecordReward_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_TokenizeShareRecordReward_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_TokenizeShareRecordReward_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -1018,6 +1095,26 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) + mux.Handle("GET", pattern_Query_TokenizeShareRecordReward_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_TokenizeShareRecordReward_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_TokenizeShareRecordReward_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -1041,6 +1138,8 @@ var ( pattern_Query_DelegatorWithdrawAddress_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"cosmos", "distribution", "v1beta1", "delegators", "delegator_address", "withdraw_address"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_CommunityPool_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "distribution", "v1beta1", "community_pool"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_TokenizeShareRecordReward_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"cosmos", "distribution", "v1beta1", "owner_address", "tokenize_share_record_rewards"}, "", runtime.AssumeColonVerbOpt(false))) ) var ( @@ -1063,4 +1162,6 @@ var ( forward_Query_DelegatorWithdrawAddress_0 = runtime.ForwardResponseMessage forward_Query_CommunityPool_0 = runtime.ForwardResponseMessage + + forward_Query_TokenizeShareRecordReward_0 = runtime.ForwardResponseMessage ) diff --git a/x/distribution/types/tx.pb.go b/x/distribution/types/tx.pb.go index b38aa0cc0f92..2cb0022ee8e1 100644 --- a/x/distribution/types/tx.pb.go +++ b/x/distribution/types/tx.pb.go @@ -528,6 +528,168 @@ func (m *MsgCommunityPoolSpend) GetAmount() github_com_cosmos_cosmos_sdk_types.C return nil } +// MsgWithdrawTokenizeShareRecordReward withdraws tokenize share rewards for a specific record +type MsgWithdrawTokenizeShareRecordReward struct { + OwnerAddress string `protobuf:"bytes,1,opt,name=owner_address,json=ownerAddress,proto3" json:"owner_address,omitempty" yaml:"owner_address"` + RecordId uint64 `protobuf:"varint,2,opt,name=record_id,json=recordId,proto3" json:"record_id,omitempty"` +} + +func (m *MsgWithdrawTokenizeShareRecordReward) Reset() { *m = MsgWithdrawTokenizeShareRecordReward{} } +func (m *MsgWithdrawTokenizeShareRecordReward) String() string { return proto.CompactTextString(m) } +func (*MsgWithdrawTokenizeShareRecordReward) ProtoMessage() {} +func (*MsgWithdrawTokenizeShareRecordReward) Descriptor() ([]byte, []int) { + return fileDescriptor_ed4f433d965e58ca, []int{11} +} +func (m *MsgWithdrawTokenizeShareRecordReward) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgWithdrawTokenizeShareRecordReward) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgWithdrawTokenizeShareRecordReward.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgWithdrawTokenizeShareRecordReward) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgWithdrawTokenizeShareRecordReward.Merge(m, src) +} +func (m *MsgWithdrawTokenizeShareRecordReward) XXX_Size() int { + return m.Size() +} +func (m *MsgWithdrawTokenizeShareRecordReward) XXX_DiscardUnknown() { + xxx_messageInfo_MsgWithdrawTokenizeShareRecordReward.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgWithdrawTokenizeShareRecordReward proto.InternalMessageInfo + +// MsgWithdrawTokenizeShareRecordReward defines the Msg/WithdrawTokenizeShareRecordReward response type. +type MsgWithdrawTokenizeShareRecordRewardResponse struct { +} + +func (m *MsgWithdrawTokenizeShareRecordRewardResponse) Reset() { + *m = MsgWithdrawTokenizeShareRecordRewardResponse{} +} +func (m *MsgWithdrawTokenizeShareRecordRewardResponse) String() string { + return proto.CompactTextString(m) +} +func (*MsgWithdrawTokenizeShareRecordRewardResponse) ProtoMessage() {} +func (*MsgWithdrawTokenizeShareRecordRewardResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_ed4f433d965e58ca, []int{12} +} +func (m *MsgWithdrawTokenizeShareRecordRewardResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgWithdrawTokenizeShareRecordRewardResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgWithdrawTokenizeShareRecordRewardResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgWithdrawTokenizeShareRecordRewardResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgWithdrawTokenizeShareRecordRewardResponse.Merge(m, src) +} +func (m *MsgWithdrawTokenizeShareRecordRewardResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgWithdrawTokenizeShareRecordRewardResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgWithdrawTokenizeShareRecordRewardResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgWithdrawTokenizeShareRecordRewardResponse proto.InternalMessageInfo + +// MsgWithdrawAllTokenizeShareRecordReward withdraws tokenize share rewards or all +// records owned by the designated owner +type MsgWithdrawAllTokenizeShareRecordReward struct { + OwnerAddress string `protobuf:"bytes,1,opt,name=owner_address,json=ownerAddress,proto3" json:"owner_address,omitempty" yaml:"owner_address"` +} + +func (m *MsgWithdrawAllTokenizeShareRecordReward) Reset() { + *m = MsgWithdrawAllTokenizeShareRecordReward{} +} +func (m *MsgWithdrawAllTokenizeShareRecordReward) String() string { return proto.CompactTextString(m) } +func (*MsgWithdrawAllTokenizeShareRecordReward) ProtoMessage() {} +func (*MsgWithdrawAllTokenizeShareRecordReward) Descriptor() ([]byte, []int) { + return fileDescriptor_ed4f433d965e58ca, []int{13} +} +func (m *MsgWithdrawAllTokenizeShareRecordReward) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgWithdrawAllTokenizeShareRecordReward) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgWithdrawAllTokenizeShareRecordReward.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgWithdrawAllTokenizeShareRecordReward) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgWithdrawAllTokenizeShareRecordReward.Merge(m, src) +} +func (m *MsgWithdrawAllTokenizeShareRecordReward) XXX_Size() int { + return m.Size() +} +func (m *MsgWithdrawAllTokenizeShareRecordReward) XXX_DiscardUnknown() { + xxx_messageInfo_MsgWithdrawAllTokenizeShareRecordReward.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgWithdrawAllTokenizeShareRecordReward proto.InternalMessageInfo + +// MsgWithdrawAllTokenizeShareRecordRewardResponse defines the Msg/WithdrawTokenizeShareRecordReward response type. +type MsgWithdrawAllTokenizeShareRecordRewardResponse struct { +} + +func (m *MsgWithdrawAllTokenizeShareRecordRewardResponse) Reset() { + *m = MsgWithdrawAllTokenizeShareRecordRewardResponse{} +} +func (m *MsgWithdrawAllTokenizeShareRecordRewardResponse) String() string { + return proto.CompactTextString(m) +} +func (*MsgWithdrawAllTokenizeShareRecordRewardResponse) ProtoMessage() {} +func (*MsgWithdrawAllTokenizeShareRecordRewardResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_ed4f433d965e58ca, []int{14} +} +func (m *MsgWithdrawAllTokenizeShareRecordRewardResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgWithdrawAllTokenizeShareRecordRewardResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgWithdrawAllTokenizeShareRecordRewardResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgWithdrawAllTokenizeShareRecordRewardResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgWithdrawAllTokenizeShareRecordRewardResponse.Merge(m, src) +} +func (m *MsgWithdrawAllTokenizeShareRecordRewardResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgWithdrawAllTokenizeShareRecordRewardResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgWithdrawAllTokenizeShareRecordRewardResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgWithdrawAllTokenizeShareRecordRewardResponse proto.InternalMessageInfo + // MsgCommunityPoolSpendResponse defines the response to executing a // MsgCommunityPoolSpend message. // @@ -539,7 +701,7 @@ func (m *MsgCommunityPoolSpendResponse) Reset() { *m = MsgCommunityPoolS func (m *MsgCommunityPoolSpendResponse) String() string { return proto.CompactTextString(m) } func (*MsgCommunityPoolSpendResponse) ProtoMessage() {} func (*MsgCommunityPoolSpendResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ed4f433d965e58ca, []int{11} + return fileDescriptor_ed4f433d965e58ca, []int{15} } func (m *MsgCommunityPoolSpendResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -582,7 +744,7 @@ func (m *MsgDepositValidatorRewardsPool) Reset() { *m = MsgDepositValida func (m *MsgDepositValidatorRewardsPool) String() string { return proto.CompactTextString(m) } func (*MsgDepositValidatorRewardsPool) ProtoMessage() {} func (*MsgDepositValidatorRewardsPool) Descriptor() ([]byte, []int) { - return fileDescriptor_ed4f433d965e58ca, []int{12} + return fileDescriptor_ed4f433d965e58ca, []int{16} } func (m *MsgDepositValidatorRewardsPool) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -624,7 +786,7 @@ func (m *MsgDepositValidatorRewardsPoolResponse) Reset() { func (m *MsgDepositValidatorRewardsPoolResponse) String() string { return proto.CompactTextString(m) } func (*MsgDepositValidatorRewardsPoolResponse) ProtoMessage() {} func (*MsgDepositValidatorRewardsPoolResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ed4f433d965e58ca, []int{13} + return fileDescriptor_ed4f433d965e58ca, []int{17} } func (m *MsgDepositValidatorRewardsPoolResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -665,6 +827,10 @@ func init() { proto.RegisterType((*MsgUpdateParams)(nil), "cosmos.distribution.v1beta1.MsgUpdateParams") proto.RegisterType((*MsgUpdateParamsResponse)(nil), "cosmos.distribution.v1beta1.MsgUpdateParamsResponse") proto.RegisterType((*MsgCommunityPoolSpend)(nil), "cosmos.distribution.v1beta1.MsgCommunityPoolSpend") + proto.RegisterType((*MsgWithdrawTokenizeShareRecordReward)(nil), "cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordReward") + proto.RegisterType((*MsgWithdrawTokenizeShareRecordRewardResponse)(nil), "cosmos.distribution.v1beta1.MsgWithdrawTokenizeShareRecordRewardResponse") + proto.RegisterType((*MsgWithdrawAllTokenizeShareRecordReward)(nil), "cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordReward") + proto.RegisterType((*MsgWithdrawAllTokenizeShareRecordRewardResponse)(nil), "cosmos.distribution.v1beta1.MsgWithdrawAllTokenizeShareRecordRewardResponse") proto.RegisterType((*MsgCommunityPoolSpendResponse)(nil), "cosmos.distribution.v1beta1.MsgCommunityPoolSpendResponse") proto.RegisterType((*MsgDepositValidatorRewardsPool)(nil), "cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPool") proto.RegisterType((*MsgDepositValidatorRewardsPoolResponse)(nil), "cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPoolResponse") @@ -675,65 +841,76 @@ func init() { } var fileDescriptor_ed4f433d965e58ca = []byte{ - // 925 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0x41, 0x6f, 0xe3, 0x44, - 0x14, 0xce, 0xa4, 0xa2, 0x28, 0xb3, 0x2b, 0xed, 0x26, 0x2a, 0x6a, 0xeb, 0xdd, 0x75, 0x16, 0x17, - 0x4a, 0x14, 0x51, 0x5b, 0x09, 0x08, 0x54, 0x73, 0x00, 0x92, 0x12, 0x89, 0x43, 0xa0, 0x4a, 0x05, - 0x48, 0x5c, 0x2a, 0x27, 0x36, 0xee, 0x88, 0xda, 0x63, 0x79, 0x26, 0x49, 0x73, 0x03, 0x04, 0x12, - 0xe2, 0x84, 0xc4, 0x8d, 0x4b, 0x2b, 0xf5, 0x52, 0x71, 0xca, 0xa1, 0x07, 0x7e, 0x42, 0x2f, 0x48, - 0x55, 0x4f, 0x9c, 0x00, 0xa5, 0x42, 0x41, 0x82, 0xdf, 0x80, 0x90, 0xed, 0x89, 0x63, 0xc7, 0x8e, - 0xdd, 0x96, 0x8a, 0x72, 0x69, 0xab, 0x99, 0xf7, 0xbe, 0xf9, 0xde, 0x37, 0xdf, 0xbc, 0xe7, 0xc2, - 0x17, 0x3a, 0x98, 0x18, 0x98, 0x48, 0x2a, 0x22, 0xd4, 0x46, 0xed, 0x2e, 0x45, 0xd8, 0x94, 0x7a, - 0x95, 0xb6, 0x46, 0x95, 0x8a, 0x44, 0x0f, 0x44, 0xcb, 0xc6, 0x14, 0x17, 0x1e, 0x79, 0x51, 0x62, - 0x30, 0x4a, 0x64, 0x51, 0xdc, 0x92, 0x8e, 0x75, 0xec, 0xc6, 0x49, 0xce, 0x5f, 0x5e, 0x0a, 0xc7, - 0x33, 0xe0, 0xb6, 0x42, 0x34, 0x1f, 0xb0, 0x83, 0x91, 0xc9, 0xf6, 0x57, 0xbd, 0xfd, 0x5d, 0x2f, - 0x91, 0xe1, 0x7b, 0x5b, 0xcb, 0x2c, 0xd5, 0x20, 0xba, 0xd4, 0xab, 0x38, 0xbf, 0xd8, 0x46, 0x5e, - 0x31, 0x90, 0x89, 0x25, 0xf7, 0x27, 0x5b, 0x12, 0x93, 0xf8, 0x87, 0xe8, 0xba, 0xf1, 0xc2, 0x9f, - 0x00, 0x3e, 0xd7, 0x24, 0xfa, 0x8e, 0x46, 0x3f, 0x42, 0x74, 0x4f, 0xb5, 0x95, 0xfe, 0xdb, 0xaa, - 0x6a, 0x6b, 0x84, 0x14, 0xde, 0x81, 0x79, 0x55, 0xdb, 0xd7, 0x74, 0x85, 0x62, 0x7b, 0x57, 0xf1, - 0x16, 0x57, 0xc0, 0x53, 0x50, 0xca, 0xd5, 0x56, 0x2e, 0x4e, 0x37, 0x96, 0x18, 0x45, 0x16, 0xbe, - 0x43, 0x6d, 0x64, 0xea, 0xad, 0x87, 0x7e, 0xca, 0x04, 0xa6, 0x0e, 0x1f, 0xf6, 0x19, 0xb2, 0x8f, - 0x92, 0x4d, 0x41, 0x79, 0xd0, 0x0f, 0x73, 0x91, 0x1b, 0x5f, 0x1f, 0x15, 0x33, 0x7f, 0x1c, 0x15, - 0x33, 0x5f, 0x8c, 0x87, 0xe5, 0x28, 0xad, 0x6f, 0xc6, 0xc3, 0xf2, 0x9a, 0x87, 0xb4, 0x41, 0xd4, - 0x4f, 0xa5, 0x26, 0xd1, 0x9b, 0x58, 0x45, 0x9f, 0x0c, 0x66, 0x6a, 0x12, 0x8a, 0xf0, 0x49, 0x6c, - 0xb1, 0x2d, 0x8d, 0x58, 0xd8, 0x24, 0x9a, 0xf0, 0x37, 0x80, 0x5c, 0x93, 0xe8, 0x93, 0xed, 0xad, - 0xc9, 0x49, 0x2d, 0xad, 0xaf, 0xd8, 0xea, 0x6d, 0x69, 0xf2, 0x1e, 0xcc, 0xf7, 0x94, 0x7d, 0xa4, - 0x86, 0x60, 0x3c, 0x51, 0x9e, 0xbf, 0x38, 0xdd, 0x78, 0xc2, 0x60, 0x3e, 0x9c, 0xc4, 0xcc, 0xe0, - 0xf5, 0x66, 0xd6, 0xe5, 0x77, 0xd3, 0xe5, 0x59, 0x0f, 0xcb, 0x33, 0x53, 0x20, 0xc2, 0xa6, 0x57, - 0xa1, 0x70, 0x08, 0xa0, 0x30, 0x5f, 0x80, 0x89, 0x4e, 0x85, 0x01, 0x5c, 0x54, 0x0c, 0xdc, 0x35, - 0xe9, 0x0a, 0x78, 0xba, 0x50, 0xba, 0x57, 0x5d, 0x65, 0xbe, 0x13, 0x1d, 0x7b, 0x4f, 0x5e, 0x82, - 0x58, 0xc7, 0xc8, 0xac, 0x35, 0xce, 0x7e, 0x29, 0x66, 0x7e, 0xf8, 0xb5, 0x58, 0xd2, 0x11, 0xdd, - 0xeb, 0xb6, 0xc5, 0x0e, 0x36, 0x98, 0xbd, 0xa5, 0x00, 0x27, 0x3a, 0xb0, 0x34, 0xe2, 0x26, 0x90, - 0xef, 0xc7, 0xc3, 0xf2, 0x7d, 0xe7, 0xd8, 0xce, 0x60, 0xd7, 0x79, 0x20, 0xe4, 0x64, 0x3c, 0x2c, - 0x83, 0x16, 0x3b, 0x50, 0xf8, 0x11, 0x40, 0x3e, 0xc0, 0xd0, 0x17, 0xa9, 0x8e, 0x0d, 0x03, 0x11, - 0x82, 0xb0, 0x19, 0xaf, 0x2f, 0xb8, 0xb9, 0xbe, 0x61, 0xfb, 0x45, 0xa0, 0x63, 0xec, 0x17, 0x60, - 0x37, 0xe5, 0x25, 0x1c, 0x03, 0xb8, 0x9e, 0x4c, 0xfd, 0xff, 0x20, 0xf0, 0x57, 0x59, 0xb8, 0xd4, - 0x24, 0x7a, 0xa3, 0x6b, 0xaa, 0x0e, 0xb1, 0xae, 0x89, 0xe8, 0x60, 0x1b, 0xe3, 0xfd, 0x3b, 0xe4, - 0x54, 0x78, 0x0d, 0xe6, 0x54, 0xcd, 0xc2, 0x04, 0x51, 0x6c, 0xa7, 0xb6, 0x8f, 0x69, 0xa8, 0x2c, - 0x07, 0x6f, 0x6e, 0xba, 0xee, 0xdc, 0x58, 0x31, 0x7c, 0x63, 0x91, 0x72, 0x05, 0x1e, 0x3e, 0x8e, - 0x5b, 0xf7, 0x7b, 0xc5, 0x4f, 0x00, 0x3e, 0x68, 0x12, 0xfd, 0x03, 0x4b, 0x55, 0xa8, 0xb6, 0xad, - 0xd8, 0x8a, 0x41, 0x1c, 0x9e, 0x4a, 0x97, 0xee, 0x61, 0x1b, 0xd1, 0x41, 0x6a, 0x63, 0x98, 0x86, - 0x16, 0x1a, 0x70, 0xd1, 0x72, 0x11, 0xdc, 0xe2, 0xee, 0x55, 0xd7, 0xc4, 0x84, 0x09, 0x23, 0x7a, - 0x87, 0xd5, 0x72, 0x8e, 0xc8, 0x4c, 0x27, 0x2f, 0x5b, 0x96, 0xdd, 0x3a, 0x7d, 0x5c, 0xa7, 0xce, - 0x97, 0x02, 0x75, 0x86, 0xa6, 0xc2, 0x0c, 0x77, 0x61, 0x15, 0x2e, 0xcf, 0x2c, 0xf9, 0xa5, 0x1e, - 0x67, 0xdd, 0x29, 0x11, 0xd2, 0x61, 0xc7, 0xd2, 0x4c, 0xf5, 0xc6, 0x05, 0x3f, 0x86, 0x39, 0x5b, - 0xeb, 0x20, 0x0b, 0x69, 0x26, 0xf5, 0x2e, 0xb4, 0x35, 0x5d, 0x08, 0x38, 0x6d, 0xe1, 0x3f, 0x76, - 0x9a, 0xbc, 0x19, 0x55, 0x70, 0x7d, 0x56, 0x41, 0x29, 0x56, 0x0b, 0x36, 0x5d, 0xa2, 0x1b, 0xbe, - 0x8c, 0xbf, 0x67, 0xdd, 0xd6, 0xb5, 0xe5, 0xd9, 0xd0, 0x7f, 0xfe, 0x5e, 0x6f, 0x25, 0xee, 0x1b, - 0x0b, 0x19, 0x1d, 0x5c, 0xd9, 0xe8, 0xb7, 0x3d, 0x52, 0xee, 0xf2, 0x06, 0xde, 0x9a, 0xff, 0x66, - 0x5f, 0x8c, 0xbb, 0x89, 0xa9, 0x9c, 0x4c, 0x48, 0xa1, 0xe4, 0xb6, 0xd9, 0x04, 0x99, 0x27, 0x37, - 0x52, 0xfd, 0xeb, 0x59, 0xb8, 0xd0, 0x24, 0x7a, 0xe1, 0x4b, 0x00, 0x0b, 0x31, 0xdf, 0x40, 0xd5, - 0xc4, 0x67, 0x18, 0xfb, 0x29, 0xc1, 0xc9, 0xd7, 0xcf, 0xf1, 0xbb, 0xfe, 0x77, 0x00, 0x2e, 0xcf, - 0xfb, 0xf6, 0x78, 0x3d, 0x0d, 0x77, 0x4e, 0x22, 0xf7, 0xe6, 0x0d, 0x13, 0x7d, 0x56, 0x87, 0x00, - 0x3e, 0x4a, 0x1a, 0xb7, 0x6f, 0x5c, 0xf5, 0x80, 0x98, 0x64, 0xae, 0xfe, 0x2f, 0x92, 0x7d, 0x86, - 0x9f, 0x03, 0x98, 0x8f, 0xce, 0xab, 0x4a, 0x1a, 0x74, 0x24, 0x85, 0xdb, 0xbc, 0x76, 0x8a, 0xcf, - 0xc1, 0x86, 0xf7, 0x43, 0xa3, 0xe0, 0xe5, 0x34, 0xa8, 0x60, 0x34, 0xf7, 0xea, 0x75, 0xa2, 0xfd, - 0x33, 0x1d, 0xdb, 0xc6, 0x34, 0xe5, 0x54, 0xdb, 0x46, 0x73, 0xd2, 0x6d, 0x3b, 0xbf, 0xaf, 0xb9, - 0x06, 0x49, 0x6a, 0x6a, 0xa9, 0x06, 0x49, 0x48, 0x4e, 0x37, 0xc8, 0x15, 0xde, 0x39, 0xf7, 0xcc, - 0x67, 0x4e, 0x8b, 0xa9, 0xbd, 0x7f, 0x32, 0xe2, 0xc1, 0xd9, 0x88, 0x07, 0xe7, 0x23, 0x1e, 0xfc, - 0x36, 0xe2, 0xc1, 0xb7, 0x97, 0x7c, 0xe6, 0xfc, 0x92, 0xcf, 0xfc, 0x7c, 0xc9, 0x67, 0x3e, 0xae, - 0x24, 0x36, 0xb0, 0x83, 0xf0, 0xf4, 0x74, 0xfb, 0x59, 0x7b, 0xd1, 0xfd, 0x2f, 0xea, 0x95, 0x7f, - 0x02, 0x00, 0x00, 0xff, 0xff, 0x97, 0xa4, 0x34, 0x89, 0x37, 0x0e, 0x00, 0x00, + // 1089 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xcf, 0x6f, 0xdc, 0x44, + 0x14, 0xde, 0x49, 0x20, 0x22, 0xd3, 0xa0, 0x36, 0xab, 0xa0, 0x24, 0x4e, 0xeb, 0x6d, 0xdd, 0x90, + 0x46, 0x51, 0x63, 0x6b, 0xc3, 0xcf, 0x1a, 0x21, 0xc8, 0x0f, 0x22, 0x45, 0x62, 0xa1, 0xda, 0x14, + 0x2a, 0x71, 0x89, 0xbc, 0xeb, 0xc1, 0x19, 0x75, 0xed, 0x59, 0x79, 0x66, 0xb3, 0x5d, 0x4e, 0x80, + 0x40, 0x42, 0x9c, 0x90, 0xb8, 0x71, 0x69, 0xa5, 0x5e, 0x2a, 0x4e, 0x41, 0xea, 0x01, 0x71, 0xe3, + 0xd6, 0x0b, 0x52, 0xd5, 0x53, 0x2f, 0x14, 0x94, 0x08, 0x05, 0x89, 0x1b, 0x7f, 0x00, 0x42, 0x1e, + 0xdb, 0xb3, 0xf6, 0xda, 0x6b, 0x6f, 0xd2, 0x40, 0x7a, 0x49, 0x76, 0x67, 0xde, 0xfb, 0xe6, 0x7b, + 0xdf, 0xbc, 0x79, 0xef, 0x69, 0xe1, 0x6c, 0x9d, 0x50, 0x9b, 0x50, 0xcd, 0xc4, 0x94, 0xb9, 0xb8, + 0xd6, 0x62, 0x98, 0x38, 0xda, 0x4e, 0xb9, 0x86, 0x98, 0x51, 0xd6, 0xd8, 0x4d, 0xb5, 0xe9, 0x12, + 0x46, 0x8a, 0x33, 0xbe, 0x95, 0x1a, 0xb5, 0x52, 0x03, 0x2b, 0x69, 0xc2, 0x22, 0x16, 0xe1, 0x76, + 0x9a, 0xf7, 0xc9, 0x77, 0x91, 0xe4, 0x00, 0xb8, 0x66, 0x50, 0x24, 0x00, 0xeb, 0x04, 0x3b, 0xc1, + 0xfe, 0xb4, 0xbf, 0xbf, 0xe5, 0x3b, 0x06, 0xf8, 0xfe, 0xd6, 0x64, 0xe0, 0x6a, 0x53, 0x4b, 0xdb, + 0x29, 0x7b, 0xff, 0x82, 0x8d, 0x71, 0xc3, 0xc6, 0x0e, 0xd1, 0xf8, 0xdf, 0x60, 0x49, 0xcd, 0xe2, + 0x1f, 0xa3, 0xcb, 0xed, 0x95, 0xbf, 0x00, 0x7c, 0xa1, 0x42, 0xad, 0x4d, 0xc4, 0xae, 0x63, 0xb6, + 0x6d, 0xba, 0x46, 0x7b, 0xd9, 0x34, 0x5d, 0x44, 0x69, 0xf1, 0x1d, 0x38, 0x6e, 0xa2, 0x06, 0xb2, + 0x0c, 0x46, 0xdc, 0x2d, 0xc3, 0x5f, 0x9c, 0x02, 0xe7, 0xc1, 0xfc, 0xe8, 0xca, 0xd4, 0xc3, 0x7b, + 0x8b, 0x13, 0x01, 0xc5, 0xc0, 0x7c, 0x93, 0xb9, 0xd8, 0xb1, 0xaa, 0x67, 0x84, 0x4b, 0x08, 0xb3, + 0x0a, 0xcf, 0xb4, 0x03, 0x64, 0x81, 0x32, 0x94, 0x83, 0x72, 0xba, 0x1d, 0xe7, 0xa2, 0xaf, 0x7f, + 0x75, 0xbb, 0x54, 0xf8, 0xf3, 0x76, 0xa9, 0xf0, 0xf9, 0xc1, 0xee, 0x42, 0x92, 0xd6, 0xd7, 0x07, + 0xbb, 0x0b, 0x17, 0x7d, 0xa4, 0x45, 0x6a, 0xde, 0xd0, 0x2a, 0xd4, 0xaa, 0x10, 0x13, 0x7f, 0xdc, + 0xe9, 0x89, 0x49, 0x29, 0xc1, 0x73, 0xa9, 0xc1, 0x56, 0x11, 0x6d, 0x12, 0x87, 0x22, 0xe5, 0x1f, + 0x00, 0xa5, 0x0a, 0xb5, 0xc2, 0xed, 0xb5, 0xf0, 0xa4, 0x2a, 0x6a, 0x1b, 0xae, 0x79, 0x5c, 0x9a, + 0xbc, 0x07, 0xc7, 0x77, 0x8c, 0x06, 0x36, 0x63, 0x30, 0xbe, 0x28, 0x17, 0x1e, 0xde, 0x5b, 0x3c, + 0x17, 0xc0, 0x7c, 0x18, 0xda, 0xf4, 0xe0, 0xed, 0xf4, 0xac, 0xeb, 0x1b, 0xf9, 0xf2, 0xcc, 0xc5, + 0xe5, 0xe9, 0x09, 0x10, 0x13, 0xc7, 0x8f, 0x50, 0xb9, 0x05, 0xa0, 0xd2, 0x5f, 0x80, 0x50, 0xa7, + 0x62, 0x07, 0x8e, 0x18, 0x36, 0x69, 0x39, 0x6c, 0x0a, 0x9c, 0x1f, 0x9e, 0x3f, 0xb5, 0x34, 0x1d, + 0xe4, 0x9d, 0xea, 0xa5, 0x77, 0xf8, 0x12, 0xd4, 0x55, 0x82, 0x9d, 0x95, 0xf5, 0xfb, 0x8f, 0x4b, + 0x85, 0xef, 0x7f, 0x2b, 0xcd, 0x5b, 0x98, 0x6d, 0xb7, 0x6a, 0x6a, 0x9d, 0xd8, 0x41, 0x7a, 0x6b, + 0x11, 0x4e, 0xac, 0xd3, 0x44, 0x94, 0x3b, 0xd0, 0xef, 0x0e, 0x76, 0x17, 0xc6, 0xbc, 0x63, 0xeb, + 0x9d, 0x2d, 0xef, 0x81, 0xd0, 0xbb, 0x07, 0xbb, 0x0b, 0xa0, 0x1a, 0x1c, 0xa8, 0xfc, 0x08, 0xa0, + 0x1c, 0x61, 0x28, 0x44, 0x5a, 0x25, 0xb6, 0x8d, 0x29, 0xc5, 0xc4, 0x49, 0xd7, 0x17, 0x1c, 0x5d, + 0xdf, 0x78, 0xfa, 0x25, 0xa0, 0x53, 0xd2, 0x2f, 0xc2, 0xae, 0xcb, 0x4b, 0xb9, 0x03, 0xe0, 0x5c, + 0x36, 0xf5, 0xa7, 0x41, 0xe0, 0x2f, 0x87, 0xe0, 0x44, 0x85, 0x5a, 0xeb, 0x2d, 0xc7, 0xf4, 0x88, + 0xb5, 0x1c, 0xcc, 0x3a, 0x57, 0x09, 0x69, 0x9c, 0x20, 0xa7, 0xe2, 0xab, 0x70, 0xd4, 0x44, 0x4d, + 0x42, 0x31, 0x23, 0x6e, 0x6e, 0xf9, 0xe8, 0x9a, 0xea, 0x7a, 0xf4, 0xe6, 0xba, 0xeb, 0xde, 0x8d, + 0x95, 0xe2, 0x37, 0x96, 0x08, 0x57, 0x91, 0xe1, 0xd9, 0xb4, 0x75, 0x51, 0x2b, 0x7e, 0x01, 0xf0, + 0x74, 0x85, 0x5a, 0x1f, 0x34, 0x4d, 0x83, 0xa1, 0xab, 0x86, 0x6b, 0xd8, 0xd4, 0xe3, 0x69, 0xb4, + 0xd8, 0x36, 0x71, 0x31, 0xeb, 0xe4, 0x16, 0x86, 0xae, 0x69, 0x71, 0x1d, 0x8e, 0x34, 0x39, 0x02, + 0x0f, 0xee, 0xd4, 0xd2, 0x45, 0x35, 0xa3, 0xc3, 0xa8, 0xfe, 0x61, 0x2b, 0xa3, 0x9e, 0xc8, 0x81, + 0x4e, 0xbe, 0xb7, 0xae, 0xf3, 0x38, 0x05, 0xae, 0x17, 0xe7, 0xa5, 0x48, 0x9c, 0xb1, 0xae, 0xd0, + 0xc3, 0x5d, 0x99, 0x86, 0x93, 0x3d, 0x4b, 0x22, 0xd4, 0x3b, 0x43, 0xbc, 0x4b, 0xc4, 0x74, 0xd8, + 0x6c, 0x22, 0xc7, 0x3c, 0x72, 0xc0, 0x67, 0xe1, 0xa8, 0x8b, 0xea, 0xb8, 0x89, 0x91, 0xc3, 0xfc, + 0x0b, 0xad, 0x76, 0x17, 0x22, 0x99, 0x36, 0xfc, 0x3f, 0x67, 0x9a, 0x7e, 0x25, 0xa9, 0xe0, 0x5c, + 0xaf, 0x82, 0x5a, 0xaa, 0x16, 0xca, 0x23, 0x00, 0x67, 0x23, 0xcf, 0xfb, 0x1a, 0xb9, 0x81, 0x1c, + 0xfc, 0x09, 0xda, 0xdc, 0x36, 0x5c, 0x54, 0x45, 0x75, 0xe2, 0xd5, 0x4f, 0xde, 0x46, 0xde, 0x84, + 0xcf, 0x93, 0xb6, 0x83, 0x12, 0x2d, 0xe4, 0xef, 0xc7, 0xa5, 0x89, 0x8e, 0x61, 0x37, 0x74, 0x25, + 0xb6, 0xad, 0x54, 0xc7, 0xf8, 0xf7, 0xb0, 0x7d, 0xcc, 0x70, 0xed, 0x88, 0x6b, 0x6e, 0x61, 0x93, + 0x6b, 0xf7, 0x4c, 0xf5, 0x39, 0x7f, 0x61, 0xc3, 0xd4, 0xaf, 0x45, 0x33, 0x3e, 0x7e, 0x8c, 0x17, + 0xcb, 0x2b, 0x69, 0xb1, 0xe4, 0x32, 0x56, 0x54, 0x78, 0x79, 0x10, 0x3b, 0x91, 0x30, 0x3f, 0x03, + 0x78, 0x29, 0xe2, 0xb0, 0xdc, 0x68, 0xfc, 0x57, 0x6a, 0xe8, 0xd7, 0xb3, 0x03, 0x7e, 0x3d, 0x2b, + 0xe0, 0x2c, 0x5e, 0x4a, 0x19, 0x0e, 0x6a, 0x2a, 0xc2, 0xf6, 0xe7, 0x8b, 0x64, 0x6a, 0x08, 0x83, + 0x3f, 0x86, 0x78, 0xf3, 0x5a, 0xf3, 0x0b, 0x91, 0x68, 0x00, 0x3e, 0x0c, 0xe5, 0x55, 0x36, 0x56, + 0xea, 0xc0, 0xc0, 0xa5, 0xee, 0xb8, 0x87, 0x8a, 0x93, 0x7c, 0x83, 0x6f, 0xf7, 0xaf, 0xda, 0x2f, + 0xa6, 0x5d, 0x67, 0x57, 0xce, 0x40, 0x48, 0x65, 0x9e, 0x37, 0xda, 0x0c, 0x99, 0xc3, 0x1b, 0x59, + 0xfa, 0x15, 0xc2, 0xe1, 0x0a, 0xb5, 0x8a, 0x5f, 0x00, 0x58, 0x4c, 0x99, 0x82, 0x97, 0x32, 0x0b, + 0x71, 0xea, 0x30, 0x29, 0xe9, 0x87, 0xf7, 0x11, 0x7d, 0xff, 0x5b, 0x00, 0x27, 0xfb, 0x4d, 0x9f, + 0xaf, 0xe5, 0xe1, 0xf6, 0x71, 0x94, 0xde, 0x3a, 0xa2, 0xa3, 0x60, 0x75, 0x0b, 0xc0, 0x99, 0xac, + 0x81, 0xeb, 0x8d, 0x41, 0x0f, 0x48, 0x71, 0x96, 0x56, 0x9f, 0xc0, 0x59, 0x30, 0xfc, 0x0c, 0xc0, + 0xf1, 0xe4, 0xc4, 0x52, 0xce, 0x83, 0x4e, 0xb8, 0x48, 0x57, 0x0e, 0xed, 0x22, 0x38, 0xb8, 0x70, + 0x2c, 0x36, 0x0c, 0x5c, 0xce, 0x83, 0x8a, 0x5a, 0x4b, 0x2f, 0x1f, 0xc6, 0x5a, 0x9c, 0xe9, 0xa5, + 0x6d, 0x4a, 0x5b, 0xce, 0x4d, 0xdb, 0xa4, 0x4f, 0x7e, 0xda, 0xf6, 0xaf, 0x6b, 0x3c, 0x41, 0xb2, + 0x8a, 0x5a, 0x6e, 0x82, 0x64, 0x38, 0xe7, 0x27, 0xc8, 0x00, 0xef, 0xbc, 0xf8, 0x03, 0x80, 0x17, + 0xf2, 0x3b, 0xf3, 0xf2, 0xa0, 0xb9, 0xd8, 0x17, 0x42, 0xda, 0x78, 0x62, 0x08, 0xc1, 0xf9, 0x27, + 0x00, 0x67, 0x07, 0x6a, 0xa1, 0x6b, 0x83, 0x9e, 0x99, 0x85, 0x22, 0xbd, 0x7b, 0x1c, 0x28, 0x21, + 0x79, 0xe9, 0xd9, 0x4f, 0xbd, 0x9a, 0xbe, 0xf2, 0xfe, 0xdd, 0x3d, 0x19, 0xdc, 0xdf, 0x93, 0xc1, + 0x83, 0x3d, 0x19, 0xfc, 0xbe, 0x27, 0x83, 0x6f, 0xf6, 0xe5, 0xc2, 0x83, 0x7d, 0xb9, 0xf0, 0x68, + 0x5f, 0x2e, 0x7c, 0x54, 0xce, 0xec, 0x18, 0x37, 0xe3, 0x03, 0x2b, 0x6f, 0x20, 0xb5, 0x11, 0xfe, + 0xc3, 0xc5, 0x4b, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x25, 0xd6, 0xd8, 0x66, 0xaa, 0x11, 0x00, + 0x00, } func (this *MsgSetWithdrawAddressResponse) Equal(that interface{}) bool { @@ -919,6 +1096,48 @@ func (this *MsgCommunityPoolSpend) Equal(that interface{}) bool { } return true } +func (this *MsgWithdrawTokenizeShareRecordRewardResponse) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*MsgWithdrawTokenizeShareRecordRewardResponse) + if !ok { + that2, ok := that.(MsgWithdrawTokenizeShareRecordRewardResponse) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + return true +} +func (this *MsgWithdrawAllTokenizeShareRecordRewardResponse) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*MsgWithdrawAllTokenizeShareRecordRewardResponse) + if !ok { + that2, ok := that.(MsgWithdrawAllTokenizeShareRecordRewardResponse) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + return true +} func (this *MsgCommunityPoolSpendResponse) Equal(that interface{}) bool { if that == nil { return this == nil @@ -1003,6 +1222,10 @@ type MsgClient interface { // // Since: cosmos-sdk 0.50 DepositValidatorRewardsPool(ctx context.Context, in *MsgDepositValidatorRewardsPool, opts ...grpc.CallOption) (*MsgDepositValidatorRewardsPoolResponse, error) + // WithdrawTokenizeShareRecordReward defines a method to withdraw reward for an owning TokenizeShareRecord + WithdrawTokenizeShareRecordReward(ctx context.Context, in *MsgWithdrawTokenizeShareRecordReward, opts ...grpc.CallOption) (*MsgWithdrawTokenizeShareRecordRewardResponse, error) + // WithdrawAllTokenizeShareRecordReward defines a method to withdraw reward for all owning TokenizeShareRecord + WithdrawAllTokenizeShareRecordReward(ctx context.Context, in *MsgWithdrawAllTokenizeShareRecordReward, opts ...grpc.CallOption) (*MsgWithdrawAllTokenizeShareRecordRewardResponse, error) } type msgClient struct { @@ -1076,6 +1299,24 @@ func (c *msgClient) DepositValidatorRewardsPool(ctx context.Context, in *MsgDepo return out, nil } +func (c *msgClient) WithdrawTokenizeShareRecordReward(ctx context.Context, in *MsgWithdrawTokenizeShareRecordReward, opts ...grpc.CallOption) (*MsgWithdrawTokenizeShareRecordRewardResponse, error) { + out := new(MsgWithdrawTokenizeShareRecordRewardResponse) + err := c.cc.Invoke(ctx, "/cosmos.distribution.v1beta1.Msg/WithdrawTokenizeShareRecordReward", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) WithdrawAllTokenizeShareRecordReward(ctx context.Context, in *MsgWithdrawAllTokenizeShareRecordReward, opts ...grpc.CallOption) (*MsgWithdrawAllTokenizeShareRecordRewardResponse, error) { + out := new(MsgWithdrawAllTokenizeShareRecordRewardResponse) + err := c.cc.Invoke(ctx, "/cosmos.distribution.v1beta1.Msg/WithdrawAllTokenizeShareRecordReward", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MsgServer is the server API for Msg service. type MsgServer interface { // SetWithdrawAddress defines a method to change the withdraw address @@ -1107,6 +1348,10 @@ type MsgServer interface { // // Since: cosmos-sdk 0.50 DepositValidatorRewardsPool(context.Context, *MsgDepositValidatorRewardsPool) (*MsgDepositValidatorRewardsPoolResponse, error) + // WithdrawTokenizeShareRecordReward defines a method to withdraw reward for an owning TokenizeShareRecord + WithdrawTokenizeShareRecordReward(context.Context, *MsgWithdrawTokenizeShareRecordReward) (*MsgWithdrawTokenizeShareRecordRewardResponse, error) + // WithdrawAllTokenizeShareRecordReward defines a method to withdraw reward for all owning TokenizeShareRecord + WithdrawAllTokenizeShareRecordReward(context.Context, *MsgWithdrawAllTokenizeShareRecordReward) (*MsgWithdrawAllTokenizeShareRecordRewardResponse, error) } // UnimplementedMsgServer can be embedded to have forward compatible implementations. @@ -1134,6 +1379,12 @@ func (*UnimplementedMsgServer) CommunityPoolSpend(ctx context.Context, req *MsgC func (*UnimplementedMsgServer) DepositValidatorRewardsPool(ctx context.Context, req *MsgDepositValidatorRewardsPool) (*MsgDepositValidatorRewardsPoolResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DepositValidatorRewardsPool not implemented") } +func (*UnimplementedMsgServer) WithdrawTokenizeShareRecordReward(ctx context.Context, req *MsgWithdrawTokenizeShareRecordReward) (*MsgWithdrawTokenizeShareRecordRewardResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method WithdrawTokenizeShareRecordReward not implemented") +} +func (*UnimplementedMsgServer) WithdrawAllTokenizeShareRecordReward(ctx context.Context, req *MsgWithdrawAllTokenizeShareRecordReward) (*MsgWithdrawAllTokenizeShareRecordRewardResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method WithdrawAllTokenizeShareRecordReward not implemented") +} func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) @@ -1265,6 +1516,42 @@ func _Msg_DepositValidatorRewardsPool_Handler(srv interface{}, ctx context.Conte return interceptor(ctx, in, info, handler) } +func _Msg_WithdrawTokenizeShareRecordReward_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgWithdrawTokenizeShareRecordReward) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).WithdrawTokenizeShareRecordReward(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.distribution.v1beta1.Msg/WithdrawTokenizeShareRecordReward", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).WithdrawTokenizeShareRecordReward(ctx, req.(*MsgWithdrawTokenizeShareRecordReward)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_WithdrawAllTokenizeShareRecordReward_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgWithdrawAllTokenizeShareRecordReward) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).WithdrawAllTokenizeShareRecordReward(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.distribution.v1beta1.Msg/WithdrawAllTokenizeShareRecordReward", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).WithdrawAllTokenizeShareRecordReward(ctx, req.(*MsgWithdrawAllTokenizeShareRecordReward)) + } + return interceptor(ctx, in, info, handler) +} + var _Msg_serviceDesc = grpc.ServiceDesc{ ServiceName: "cosmos.distribution.v1beta1.Msg", HandlerType: (*MsgServer)(nil), @@ -1297,6 +1584,14 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "DepositValidatorRewardsPool", Handler: _Msg_DepositValidatorRewardsPool_Handler, }, + { + MethodName: "WithdrawTokenizeShareRecordReward", + Handler: _Msg_WithdrawTokenizeShareRecordReward_Handler, + }, + { + MethodName: "WithdrawAllTokenizeShareRecordReward", + Handler: _Msg_WithdrawAllTokenizeShareRecordReward_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "cosmos/distribution/v1beta1/tx.proto", @@ -1684,7 +1979,7 @@ func (m *MsgCommunityPoolSpend) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *MsgCommunityPoolSpendResponse) Marshal() (dAtA []byte, err error) { +func (m *MsgWithdrawTokenizeShareRecordReward) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1694,20 +1989,32 @@ func (m *MsgCommunityPoolSpendResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgCommunityPoolSpendResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgWithdrawTokenizeShareRecordReward) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgCommunityPoolSpendResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgWithdrawTokenizeShareRecordReward) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l + if m.RecordId != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.RecordId)) + i-- + dAtA[i] = 0x10 + } + if len(m.OwnerAddress) > 0 { + i -= len(m.OwnerAddress) + copy(dAtA[i:], m.OwnerAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.OwnerAddress))) + i-- + dAtA[i] = 0xa + } return len(dAtA) - i, nil } -func (m *MsgDepositValidatorRewardsPool) Marshal() (dAtA []byte, err error) { +func (m *MsgWithdrawTokenizeShareRecordRewardResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1717,48 +2024,20 @@ func (m *MsgDepositValidatorRewardsPool) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgDepositValidatorRewardsPool) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgWithdrawTokenizeShareRecordRewardResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgDepositValidatorRewardsPool) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgWithdrawTokenizeShareRecordRewardResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.Amount) > 0 { - for iNdEx := len(m.Amount) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Amount[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - } - if len(m.ValidatorAddress) > 0 { - i -= len(m.ValidatorAddress) - copy(dAtA[i:], m.ValidatorAddress) - i = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorAddress))) - i-- - dAtA[i] = 0x12 - } - if len(m.Depositor) > 0 { - i -= len(m.Depositor) - copy(dAtA[i:], m.Depositor) - i = encodeVarintTx(dAtA, i, uint64(len(m.Depositor))) - i-- - dAtA[i] = 0xa - } return len(dAtA) - i, nil } -func (m *MsgDepositValidatorRewardsPoolResponse) Marshal() (dAtA []byte, err error) { +func (m *MsgWithdrawAllTokenizeShareRecordReward) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1768,45 +2047,172 @@ func (m *MsgDepositValidatorRewardsPoolResponse) Marshal() (dAtA []byte, err err return dAtA[:n], nil } -func (m *MsgDepositValidatorRewardsPoolResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgWithdrawAllTokenizeShareRecordReward) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgDepositValidatorRewardsPoolResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgWithdrawAllTokenizeShareRecordReward) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l + if len(m.OwnerAddress) > 0 { + i -= len(m.OwnerAddress) + copy(dAtA[i:], m.OwnerAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.OwnerAddress))) + i-- + dAtA[i] = 0xa + } return len(dAtA) - i, nil } -func encodeVarintTx(dAtA []byte, offset int, v uint64) int { - offset -= sovTx(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ +func (m *MsgWithdrawAllTokenizeShareRecordRewardResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } - dAtA[offset] = uint8(v) - return base + return dAtA[:n], nil } -func (m *MsgSetWithdrawAddress) Size() (n int) { - if m == nil { - return 0 - } + +func (m *MsgWithdrawAllTokenizeShareRecordRewardResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgWithdrawAllTokenizeShareRecordRewardResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - l = len(m.DelegatorAddress) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.WithdrawAddress) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - return n + return len(dAtA) - i, nil +} + +func (m *MsgCommunityPoolSpendResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgCommunityPoolSpendResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCommunityPoolSpendResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgDepositValidatorRewardsPool) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgDepositValidatorRewardsPool) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDepositValidatorRewardsPool) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Amount) > 0 { + for iNdEx := len(m.Amount) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Amount[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.ValidatorAddress) > 0 { + i -= len(m.ValidatorAddress) + copy(dAtA[i:], m.ValidatorAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorAddress))) + i-- + dAtA[i] = 0x12 + } + if len(m.Depositor) > 0 { + i -= len(m.Depositor) + copy(dAtA[i:], m.Depositor) + i = encodeVarintTx(dAtA, i, uint64(len(m.Depositor))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgDepositValidatorRewardsPoolResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgDepositValidatorRewardsPoolResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDepositValidatorRewardsPoolResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func encodeVarintTx(dAtA []byte, offset int, v uint64) int { + offset -= sovTx(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *MsgSetWithdrawAddress) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.DelegatorAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.WithdrawAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n } func (m *MsgSetWithdrawAddressResponse) Size() (n int) { @@ -1953,6 +2359,53 @@ func (m *MsgCommunityPoolSpend) Size() (n int) { return n } +func (m *MsgWithdrawTokenizeShareRecordReward) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.OwnerAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.RecordId != 0 { + n += 1 + sovTx(uint64(m.RecordId)) + } + return n +} + +func (m *MsgWithdrawTokenizeShareRecordRewardResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgWithdrawAllTokenizeShareRecordReward) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.OwnerAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgWithdrawAllTokenizeShareRecordRewardResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + func (m *MsgCommunityPoolSpendResponse) Size() (n int) { if m == nil { return 0 @@ -3007,6 +3460,289 @@ func (m *MsgCommunityPoolSpend) Unmarshal(dAtA []byte) error { } return nil } +func (m *MsgWithdrawTokenizeShareRecordReward) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgWithdrawTokenizeShareRecordReward: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgWithdrawTokenizeShareRecordReward: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OwnerAddress", 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.OwnerAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RecordId", wireType) + } + m.RecordId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.RecordId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgWithdrawTokenizeShareRecordRewardResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgWithdrawTokenizeShareRecordRewardResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgWithdrawTokenizeShareRecordRewardResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgWithdrawAllTokenizeShareRecordReward) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgWithdrawAllTokenizeShareRecordReward: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgWithdrawAllTokenizeShareRecordReward: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OwnerAddress", 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.OwnerAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgWithdrawAllTokenizeShareRecordRewardResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgWithdrawAllTokenizeShareRecordRewardResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgWithdrawAllTokenizeShareRecordRewardResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *MsgCommunityPoolSpendResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/x/evidence/go.mod b/x/evidence/go.mod index 6997d63de67d..7f12dd51a9a9 100644 --- a/x/evidence/go.mod +++ b/x/evidence/go.mod @@ -11,10 +11,10 @@ require ( cosmossdk.io/log v1.3.1 cosmossdk.io/math v1.3.0 cosmossdk.io/store v1.1.0 - github.com/cometbft/cometbft v0.38.7 + github.com/cometbft/cometbft v0.38.9 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.50.6 - github.com/cosmos/gogoproto v1.4.12 + github.com/cosmos/gogoproto v1.5.0 github.com/golang/mock v1.6.0 github.com/golang/protobuf v1.5.4 github.com/grpc-ecosystem/grpc-gateway v1.16.0 @@ -87,6 +87,7 @@ require ( github.com/hashicorp/go-metrics v0.5.3 // indirect github.com/hashicorp/go-plugin v1.5.2 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.1.0 // indirect diff --git a/x/evidence/go.sum b/x/evidence/go.sum index 3567a0e69d81..4308f10ea049 100644 --- a/x/evidence/go.sum +++ b/x/evidence/go.sum @@ -125,8 +125,8 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/cometbft/cometbft v0.38.7 h1:ULhIOJ9+LgSy6nLekhq9ae3juX3NnQUMMPyVdhZV6Hk= -github.com/cometbft/cometbft v0.38.7/go.mod h1:HIyf811dFMI73IE0F7RrnY/Fr+d1+HuJAgtkEpQjCMY= +github.com/cometbft/cometbft v0.38.9 h1:cJBJBG0mPKz+sqelCi/hlfZjadZQGdDNnu6YQ1ZsUHQ= +github.com/cometbft/cometbft v0.38.9/go.mod h1:xOoGZrtUT+A5izWfHSJgl0gYZUE7lu7Z2XIS1vWG/QQ= github.com/cometbft/cometbft-db v0.9.1 h1:MIhVX5ja5bXNHF8EYrThkG9F7r9kSfv8BX4LWaxWJ4M= github.com/cometbft/cometbft-db v0.9.1/go.mod h1:iliyWaoV0mRwBJoizElCwwRA9Tf7jZJOURcRZF9m60U= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= @@ -150,8 +150,8 @@ github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4x github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= -github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= -github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= +github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= +github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= github.com/cosmos/iavl v1.1.2 h1:zL9FK7C4L/P4IF1Dm5fIwz0WXCnn7Bp1M2FxH0ayM7Y= github.com/cosmos/iavl v1.1.2/go.mod h1:jLeUvm6bGT1YutCaL2fIar/8vGUE8cPZvh/gXEWDaDM= github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= @@ -389,6 +389,8 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= diff --git a/x/feegrant/go.mod b/x/feegrant/go.mod index a0266bdfc092..dafdf7a101ba 100644 --- a/x/feegrant/go.mod +++ b/x/feegrant/go.mod @@ -10,10 +10,10 @@ require ( cosmossdk.io/log v1.3.1 cosmossdk.io/math v1.3.0 cosmossdk.io/store v1.1.0 - github.com/cometbft/cometbft v0.38.7 + github.com/cometbft/cometbft v0.38.9 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.50.6 - github.com/cosmos/gogoproto v1.4.12 + github.com/cosmos/gogoproto v1.5.0 github.com/golang/mock v1.6.0 github.com/golang/protobuf v1.5.4 github.com/grpc-ecosystem/grpc-gateway v1.16.0 @@ -88,6 +88,7 @@ require ( github.com/hashicorp/go-metrics v0.5.3 // indirect github.com/hashicorp/go-plugin v1.5.2 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.1.0 // indirect diff --git a/x/feegrant/go.sum b/x/feegrant/go.sum index c96fc174d62f..167e03e69bd1 100644 --- a/x/feegrant/go.sum +++ b/x/feegrant/go.sum @@ -129,8 +129,8 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/cometbft/cometbft v0.38.7 h1:ULhIOJ9+LgSy6nLekhq9ae3juX3NnQUMMPyVdhZV6Hk= -github.com/cometbft/cometbft v0.38.7/go.mod h1:HIyf811dFMI73IE0F7RrnY/Fr+d1+HuJAgtkEpQjCMY= +github.com/cometbft/cometbft v0.38.9 h1:cJBJBG0mPKz+sqelCi/hlfZjadZQGdDNnu6YQ1ZsUHQ= +github.com/cometbft/cometbft v0.38.9/go.mod h1:xOoGZrtUT+A5izWfHSJgl0gYZUE7lu7Z2XIS1vWG/QQ= github.com/cometbft/cometbft-db v0.9.1 h1:MIhVX5ja5bXNHF8EYrThkG9F7r9kSfv8BX4LWaxWJ4M= github.com/cometbft/cometbft-db v0.9.1/go.mod h1:iliyWaoV0mRwBJoizElCwwRA9Tf7jZJOURcRZF9m60U= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= @@ -154,8 +154,8 @@ github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4x github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= -github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= -github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= +github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= +github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= github.com/cosmos/iavl v1.1.2 h1:zL9FK7C4L/P4IF1Dm5fIwz0WXCnn7Bp1M2FxH0ayM7Y= github.com/cosmos/iavl v1.1.2/go.mod h1:jLeUvm6bGT1YutCaL2fIar/8vGUE8cPZvh/gXEWDaDM= github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= @@ -393,6 +393,8 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= diff --git a/x/feegrant/module/module.go b/x/feegrant/module/module.go index 24805f6e667a..5baebe39021a 100644 --- a/x/feegrant/module/module.go +++ b/x/feegrant/module/module.go @@ -120,7 +120,7 @@ type AppModule struct { func NewAppModule(cdc codec.Codec, ak feegrant.AccountKeeper, bk feegrant.BankKeeper, keeper keeper.Keeper, registry cdctypes.InterfaceRegistry) AppModule { return AppModule{ AppModuleBasic: AppModuleBasic{cdc: cdc, ac: ak.AddressCodec()}, - keeper: keeper.SetBankKeeper(bk), + keeper: keeper.SetBankKeeper(bk), // Super ugly hack to not be api breaking in v0.50 and v0.47 accountKeeper: ak, bankKeeper: bk, registry: registry, @@ -184,7 +184,7 @@ type FeegrantInputs struct { func ProvideModule(in FeegrantInputs) (keeper.Keeper, appmodule.AppModule) { k := keeper.NewKeeper(in.Cdc, in.StoreService, in.AccountKeeper) m := NewAppModule(in.Cdc, in.AccountKeeper, in.BankKeeper, k, in.Registry) - return k, m + return k.SetBankKeeper(in.BankKeeper) /* depinject ux improvement */, m } // AppModuleSimulation functions diff --git a/x/genutil/gentx_test.go b/x/genutil/gentx_test.go index e391e6b8973c..a16be8e46e47 100644 --- a/x/genutil/gentx_test.go +++ b/x/genutil/gentx_test.go @@ -12,7 +12,6 @@ import ( "github.com/stretchr/testify/suite" "cosmossdk.io/core/genesis" - "cosmossdk.io/math" storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" @@ -63,12 +62,11 @@ func (suite *GenTxTestSuite) SetupTest() { var err error amount := sdk.NewInt64Coin(sdk.DefaultBondDenom, 50) - one := math.OneInt() suite.msg1, err = stakingtypes.NewMsgCreateValidator( - sdk.ValAddress(pk1.Address()).String(), pk1, amount, desc, comm, one) + sdk.ValAddress(pk1.Address()).String(), pk1, amount, desc, comm) suite.NoError(err) suite.msg2, err = stakingtypes.NewMsgCreateValidator( - sdk.ValAddress(pk2.Address()).String(), pk1, amount, desc, comm, one) + sdk.ValAddress(pk2.Address()).String(), pk1, amount, desc, comm) suite.NoError(err) } diff --git a/x/genutil/types/genesis_state_test.go b/x/genutil/types/genesis_state_test.go index 90660a44105e..52c61e44c85a 100644 --- a/x/genutil/types/genesis_state_test.go +++ b/x/genutil/types/genesis_state_test.go @@ -7,8 +7,6 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "cosmossdk.io/math" - "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" sdk "github.com/cosmos/cosmos-sdk/types" @@ -41,11 +39,11 @@ func TestValidateGenesisMultipleMessages(t *testing.T) { desc := stakingtypes.NewDescription("testname", "", "", "", "") comm := stakingtypes.CommissionRates{} - msg1, err := stakingtypes.NewMsgCreateValidator(sdk.ValAddress(pk1.Address()).String(), pk1, sdk.NewInt64Coin(sdk.DefaultBondDenom, 50), desc, comm, math.OneInt()) + msg1, err := stakingtypes.NewMsgCreateValidator(sdk.ValAddress(pk1.Address()).String(), pk1, sdk.NewInt64Coin(sdk.DefaultBondDenom, 50), desc, comm) require.NoError(t, err) msg2, err := stakingtypes.NewMsgCreateValidator(sdk.ValAddress(pk2.Address()).String(), pk2, - sdk.NewInt64Coin(sdk.DefaultBondDenom, 50), desc, comm, math.OneInt()) + sdk.NewInt64Coin(sdk.DefaultBondDenom, 50), desc, comm) require.NoError(t, err) txConfig := moduletestutil.MakeTestEncodingConfig(staking.AppModuleBasic{}, genutil.AppModuleBasic{}).TxConfig @@ -62,7 +60,7 @@ func TestValidateGenesisMultipleMessages(t *testing.T) { func TestValidateGenesisBadMessage(t *testing.T) { desc := stakingtypes.NewDescription("testname", "", "", "", "") - msg1 := stakingtypes.NewMsgEditValidator(sdk.ValAddress(pk1.Address()).String(), desc, nil, nil) + msg1 := stakingtypes.NewMsgEditValidator(sdk.ValAddress(pk1.Address()).String(), desc, nil) txConfig := moduletestutil.MakeTestEncodingConfig(staking.AppModuleBasic{}, genutil.AppModuleBasic{}).TxConfig txBuilder := txConfig.NewTxBuilder() diff --git a/x/gov/abci_test.go b/x/gov/abci_test.go index 6c8a009fa205..c9d1fd35f3c2 100644 --- a/x/gov/abci_test.go +++ b/x/gov/abci_test.go @@ -667,7 +667,7 @@ func createValidators(t *testing.T, stakingMsgSvr stakingtypes.MsgServer, ctx sd valTokens := sdk.TokensFromConsensusPower(powerAmt[i], sdk.DefaultPowerReduction) valCreateMsg, err := stakingtypes.NewMsgCreateValidator( addrs[i].String(), pubkeys[i], sdk.NewCoin(sdk.DefaultBondDenom, valTokens), - TestDescription, TestCommissionRates, math.OneInt(), + TestDescription, TestCommissionRates, ) require.NoError(t, err) res, err := stakingMsgSvr.CreateValidator(ctx, valCreateMsg) diff --git a/x/group/errors/orm.go b/x/group/errors/orm.go index bfebd0e54deb..b0f1df156fe6 100644 --- a/x/group/errors/orm.go +++ b/x/group/errors/orm.go @@ -2,7 +2,7 @@ package errors import "cosmossdk.io/errors" -// mathCodespace is the codespace for all errors defined in orm package +// ormCodespace is the codespace for all errors defined in orm package const ormCodespace = "legacy_orm" var ( diff --git a/x/group/simulation/operations.go b/x/group/simulation/operations.go index fe7d04833c4a..94576d36d615 100644 --- a/x/group/simulation/operations.go +++ b/x/group/simulation/operations.go @@ -1229,8 +1229,9 @@ func randomGroup(r *rand.Rand, k keeper.Keeper, ak group.AccountKeeper, switch { case groupID > initialGroupID: - // select a random ID between [initialGroupID, groupID] - groupID = uint64(simtypes.RandIntBetween(r, int(initialGroupID), int(groupID))) + // select a random ID between (initialGroupID, groupID] + // if there is at least one group information, then the groupID at this time must be greater than or equal to 1 + groupID = uint64(simtypes.RandIntBetween(r, int(initialGroupID+1), int(groupID+1))) default: // This is called on the first call to this function @@ -1238,6 +1239,11 @@ func randomGroup(r *rand.Rand, k keeper.Keeper, ak group.AccountKeeper, initialGroupID = groupID } + // when groupID is 0, it proves that SimulateMsgCreateGroup has never been called. that is, no group exists in the chain + if groupID == 0 { + return nil, simtypes.Account{}, nil, nil + } + res, err := k.GroupInfo(ctx, &group.QueryGroupInfoRequest{GroupId: groupID}) if err != nil { return nil, simtypes.Account{}, nil, err diff --git a/x/nft/go.mod b/x/nft/go.mod index 2dfa740bc174..d1a387c20e08 100644 --- a/x/nft/go.mod +++ b/x/nft/go.mod @@ -10,10 +10,10 @@ require ( cosmossdk.io/log v1.3.1 cosmossdk.io/math v1.3.0 cosmossdk.io/store v1.1.0 - github.com/cometbft/cometbft v0.38.7 + github.com/cometbft/cometbft v0.38.9 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.50.6 - github.com/cosmos/gogoproto v1.4.12 + github.com/cosmos/gogoproto v1.5.0 github.com/golang/mock v1.6.0 github.com/golang/protobuf v1.5.4 github.com/grpc-ecosystem/grpc-gateway v1.16.0 @@ -84,6 +84,7 @@ require ( github.com/hashicorp/go-metrics v0.5.3 // indirect github.com/hashicorp/go-plugin v1.5.2 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.1.0 // indirect diff --git a/x/nft/go.sum b/x/nft/go.sum index 3567a0e69d81..4308f10ea049 100644 --- a/x/nft/go.sum +++ b/x/nft/go.sum @@ -125,8 +125,8 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/cometbft/cometbft v0.38.7 h1:ULhIOJ9+LgSy6nLekhq9ae3juX3NnQUMMPyVdhZV6Hk= -github.com/cometbft/cometbft v0.38.7/go.mod h1:HIyf811dFMI73IE0F7RrnY/Fr+d1+HuJAgtkEpQjCMY= +github.com/cometbft/cometbft v0.38.9 h1:cJBJBG0mPKz+sqelCi/hlfZjadZQGdDNnu6YQ1ZsUHQ= +github.com/cometbft/cometbft v0.38.9/go.mod h1:xOoGZrtUT+A5izWfHSJgl0gYZUE7lu7Z2XIS1vWG/QQ= github.com/cometbft/cometbft-db v0.9.1 h1:MIhVX5ja5bXNHF8EYrThkG9F7r9kSfv8BX4LWaxWJ4M= github.com/cometbft/cometbft-db v0.9.1/go.mod h1:iliyWaoV0mRwBJoizElCwwRA9Tf7jZJOURcRZF9m60U= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= @@ -150,8 +150,8 @@ github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4x github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= -github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= -github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= +github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= +github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= github.com/cosmos/iavl v1.1.2 h1:zL9FK7C4L/P4IF1Dm5fIwz0WXCnn7Bp1M2FxH0ayM7Y= github.com/cosmos/iavl v1.1.2/go.mod h1:jLeUvm6bGT1YutCaL2fIar/8vGUE8cPZvh/gXEWDaDM= github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= @@ -389,6 +389,8 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= diff --git a/x/simulation/client/cli/flags.go b/x/simulation/client/cli/flags.go index 43f0e4c52465..c157bdb8e805 100644 --- a/x/simulation/client/cli/flags.go +++ b/x/simulation/client/cli/flags.go @@ -30,6 +30,7 @@ var ( FlagVerboseValue bool FlagPeriodValue uint FlagGenesisTimeValue int64 + FlagSigverifyTxValue bool ) // GetSimulatorFlags gets the values of all the available simulation flags @@ -56,6 +57,7 @@ func GetSimulatorFlags() { flag.BoolVar(&FlagVerboseValue, "Verbose", false, "verbose log output") flag.UintVar(&FlagPeriodValue, "Period", 0, "run slow invariants only once every period assertions") flag.Int64Var(&FlagGenesisTimeValue, "GenesisTime", 0, "override genesis UNIX time instead of using a random UNIX time") + flag.BoolVar(&FlagSigverifyTxValue, "SigverifyTx", true, "whether to sigverify check for transaction ") } // NewConfigFromFlags creates a simulation from the retrieved values of the flags. diff --git a/x/simulation/simulate.go b/x/simulation/simulate.go index 4ee83ea8d6a8..6af294c962ce 100644 --- a/x/simulation/simulate.go +++ b/x/simulation/simulate.go @@ -81,8 +81,10 @@ func SimulateFromSeed( // Second variable to keep pending validator set (delayed one block since // TM 0.24) Initially this is the same as the initial validator set validators, blockTime, accs, chainID := initChain(r, params, accs, app, appStateFn, config, cdc) - if len(accs) == 0 { - return true, params, fmt.Errorf("must have greater than zero genesis accounts") + // At least 2 accounts must be added here, otherwise when executing SimulateMsgSend + // two accounts will be selected to meet the conditions from != to and it will fall into an infinite loop. + if len(accs) <= 1 { + return true, params, fmt.Errorf("at least two genesis accounts are required") } config.ChainID = chainID diff --git a/x/slashing/app_test.go b/x/slashing/app_test.go index 700840a77aff..a86ad75a2864 100644 --- a/x/slashing/app_test.go +++ b/x/slashing/app_test.go @@ -81,7 +81,7 @@ func TestSlashingMsgs(t *testing.T) { commission := stakingtypes.NewCommissionRates(math.LegacyZeroDec(), math.LegacyZeroDec(), math.LegacyZeroDec()) createValidatorMsg, err := stakingtypes.NewMsgCreateValidator( - sdk.ValAddress(addr1).String(), valKey.PubKey(), bondCoin, description, commission, math.OneInt(), + sdk.ValAddress(addr1).String(), valKey.PubKey(), bondCoin, description, commission, ) require.NoError(t, err) diff --git a/x/slashing/keeper/hooks.go b/x/slashing/keeper/hooks.go index f90ba4da96d6..51129fabcde4 100644 --- a/x/slashing/keeper/hooks.go +++ b/x/slashing/keeper/hooks.go @@ -96,3 +96,7 @@ func (h Hooks) BeforeValidatorSlashed(_ context.Context, _ sdk.ValAddress, _ sdk func (h Hooks) AfterUnbondingInitiated(_ context.Context, _ uint64) error { return nil } + +func (h Hooks) BeforeTokenizeShareRecordRemoved(_ context.Context, _ uint64) error { + return nil +} diff --git a/x/slashing/keeper/slash_redelegation_test.go b/x/slashing/keeper/slash_redelegation_test.go index f569903e19df..8b3031c0e2de 100644 --- a/x/slashing/keeper/slash_redelegation_test.go +++ b/x/slashing/keeper/slash_redelegation_test.go @@ -69,7 +69,7 @@ func TestSlashRedelegation(t *testing.T) { evilValAddr := sdk.ValAddress(evilValPubKey.Address()) banktestutil.FundAccount(ctx, bankKeeper, sdk.AccAddress(evilValAddr), testCoins) createValMsg1, _ := stakingtypes.NewMsgCreateValidator( - evilValAddr.String(), evilValPubKey, testCoins[0], stakingtypes.Description{Details: "test"}, stakingtypes.NewCommissionRates(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0)), math.OneInt()) + evilValAddr.String(), evilValPubKey, testCoins[0], stakingtypes.Description{Details: "test"}, stakingtypes.NewCommissionRates(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0))) _, err = stakingMsgServer.CreateValidator(ctx, createValMsg1) require.NoError(t, err) @@ -77,7 +77,7 @@ func TestSlashRedelegation(t *testing.T) { goodValAddr := sdk.ValAddress(goodValPubKey.Address()) banktestutil.FundAccount(ctx, bankKeeper, sdk.AccAddress(goodValAddr), testCoins) createValMsg2, _ := stakingtypes.NewMsgCreateValidator( - goodValAddr.String(), goodValPubKey, testCoins[0], stakingtypes.Description{Details: "test"}, stakingtypes.NewCommissionRates(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0)), math.OneInt()) + goodValAddr.String(), goodValPubKey, testCoins[0], stakingtypes.Description{Details: "test"}, stakingtypes.NewCommissionRates(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0))) _, err = stakingMsgServer.CreateValidator(ctx, createValMsg2) require.NoError(t, err) diff --git a/x/slashing/keeper/unjail.go b/x/slashing/keeper/unjail.go index b3ab0706e243..52e241fb6f4e 100644 --- a/x/slashing/keeper/unjail.go +++ b/x/slashing/keeper/unjail.go @@ -3,8 +3,6 @@ package keeper import ( "context" - "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/slashing/types" ) @@ -30,14 +28,6 @@ func (k Keeper) Unjail(ctx context.Context, validatorAddr sdk.ValAddress) error return types.ErrMissingSelfDelegation } - tokens := validator.TokensFromShares(selfDel.GetShares()).TruncateInt() - minSelfBond := validator.GetMinSelfDelegation() - if tokens.LT(minSelfBond) { - return errors.Wrapf( - types.ErrSelfDelegationTooLowToUnjail, "%s less than %s", tokens, minSelfBond, - ) - } - // cannot be unjailed if not jailed if !validator.IsJailed() { return types.ErrValidatorNotJailed diff --git a/x/slashing/simulation/operations_test.go b/x/slashing/simulation/operations_test.go index e55e207ae021..440acebf1a35 100644 --- a/x/slashing/simulation/operations_test.go +++ b/x/slashing/simulation/operations_test.go @@ -160,7 +160,8 @@ func (suite *SimTestSuite) TestSimulateMsgUnjail() { suite.Require().NoError(err) // setup validator0 by consensus address - suite.stakingKeeper.SetValidatorByConsAddr(ctx, validator0) + err = suite.stakingKeeper.SetValidatorByConsAddr(ctx, validator0) + suite.Require().NoError(err) val0ConsAddress, err := validator0.GetConsAddr() suite.Require().NoError(err) info := types.NewValidatorSigningInfo(val0ConsAddress, int64(4), int64(3), diff --git a/x/staking/README.md b/x/staking/README.md index c011a593dd34..48ae9465726a 100644 --- a/x/staking/README.md +++ b/x/staking/README.md @@ -32,6 +32,8 @@ network. * [Redelegation](#redelegation) * [Queues](#queues) * [HistoricalInfo](#historicalinfo) + * [TotalLiquidStakedTokens](#totalliquidstakedtokens) + * [PendingTokenizeShareAuthorizations](#pendingtokenizeshareauthorizations) * [State Transitions](#state-transitions) * [Validators](#validators) * [Delegations](#delegations) @@ -45,6 +47,13 @@ network. * [MsgCancelUnbondingDelegation](#msgcancelunbondingdelegation) * [MsgBeginRedelegate](#msgbeginredelegate) * [MsgUpdateParams](#msgupdateparams) + * [MsgTokenizeShares](#msgtokenizeshares) + * [MsgRedeemTokensForShares](#msgredeemtokensforshares) + * [MsgTransferTokenizeShareRecord](#msgtransfertokenizesharerecord) + * [MsgEnableTokenizeShares](#msgenabletokenizeshares) + * [MsgDisableTokenizeShares](#msgdisabletokenizeshares) + * [MsgUnbondValidator](#msgunbondvalidator) + * [MsgValidatorBond](#msgvalidatorbond) * [Begin-Block](#begin-block) * [Historical Info Tracking](#historical-info-tracking) * [End-Block](#end-block) @@ -154,6 +163,10 @@ where `Jailed` is true are not stored within this index. last-block's bonded validators. This index remains constant during a block but is updated during the validator set update process which takes place in [`EndBlock`](#end-block). +`ValidatorBondShares` is the number of shares self bonded from the validator. + +`LiquidShares` is the number of shares either tokenized or owned by a liquid staking provider. + Each validator's state is stored in a `Validator` struct: ```protobuf reference @@ -332,6 +345,22 @@ they are in a deterministic order. The oldest HistoricalEntries will be pruned to ensure that there only exist the parameter-defined number of historical entries. + +### TotalLiquidStakedTokens + +TotalLiquidStakedTokens stores the total liquid staked tokens monitoring the progress towards the `GlobalLiquidStakingCap`. + +* TotalLiquidStakedTokens: `0x85 -> math.Int`. + + +### PendingTokenizeShareAuthorizations + +PendingTokenizeShareAuthorizations stores a queue of addresses that have their tokenize share re-enablement/unlocking in progress. When an address is enqueued, it will sit for 1 unbonding period before the tokenize share lock is removed. + +```go reference +https://github.com/cosmos/cosmos-sdk/blob/v0.45.16-ics-lsm/proto/cosmos/staking/v1beta1/staking.proto#L417-L421 +``` + ## State Transitions ### Validators @@ -400,6 +429,8 @@ When a delegation occurs both the validator and the delegation objects are affec * transfer the `delegation.Amount` from the delegator's account to the `BondedPool` or the `NotBondedPool` `ModuleAccount` depending if the `validator.Status` is `Bonded` or not * delete the existing record from `ValidatorByPowerIndex` * add an new updated record to the `ValidatorByPowerIndex` +* if the delegator is a liquid staking provider, + increment the `TotalLiquidStakedTokens` and the validator's `LiquidShares`. #### Begin Unbonding @@ -418,6 +449,7 @@ Delegation may be called. * get a unique `unbondingId` and map it to the `UnbondingDelegationEntry` in `UnbondingDelegationByUnbondingId` * call the `AfterUnbondingInitiated(unbondingId)` hook * add the unbonding delegation to `UnbondingDelegationQueue` with the completion time set to `UnbondingTime` +* if delegator is a liquid staking provider, decrement the `TotalLiquidStakedTokens` and the validator's `LiquidShares`. #### Cancel an `UnbondingDelegation` Entry @@ -446,6 +478,8 @@ Redelegations affect the delegation, source and destination validators. * otherwise, if the `sourceValidator.Status` is not `Bonded`, and the `destinationValidator` is `Bonded`, transfer the newly delegated tokens from the `NotBondedPool` to the `BondedPool` `ModuleAccount` * record the token amount in an new entry in the relevant `Redelegation` +* if the delegator is a liquid staking provider, + decrement the source validator's `LiquidShares` increment destination validator's `LiquidShares` From when a redelegation begins until it completes, the delegator is in a state of "pseudo-unbonding", and can still be slashed for infractions that occurred before the redelegation began. @@ -470,6 +504,7 @@ When a Validator is slashed, the following occurs: total slash amount. * The `remaingSlashAmount` is then slashed from the validator's tokens in the `BondedPool` or `NonBondedPool` depending on the validator's status. This reduces the total supply of tokens. +* Decrements the `TotalLiquidStakedTokens` by slash amount * liquid percentage. In the case of a slash due to any infraction that requires evidence to submitted (for example double-sign), the slash occurs at the block where the evidence is included, not at the block where the infraction occured. @@ -584,11 +619,18 @@ This message is expected to fail if: * the `Amount` `Coin` has a denomination different than one defined by `params.BondDenom` * the exchange rate is invalid, meaning the validator has no tokens (due to slashing) but there are outstanding shares * the amount delegated is less than the minimum allowed delegation +* the delegator is a liquid staking provider and the delegation exceeds +either the `GlobalLiquidStakingCap`, the `ValidatorLiquidStakingCap` or the validator bond cap. If an existing `Delegation` object for provided addresses does not already exist then it is created as part of this message otherwise the existing `Delegation` is updated to include the newly received shares. +If the delegation if is a validator bond, the `ValidatorBondShares` of the validator is increased. + +If the delegator is a liquid staking provider, the `TotalLiquidStakedTokens` +and the validator `LiquidShares` are incremented. + The delegator receives newly minted shares at the current exchange rate. The exchange rate is the number of existing shares in the validator divided by the number of currently delegated tokens. @@ -627,9 +669,15 @@ This message is expected to fail if: * the delegation has less shares than the ones worth of `Amount` * existing `UnbondingDelegation` has maximum entries as defined by `params.MaxEntries` * the `Amount` has a denomination different than one defined by `params.BondDenom` +* the unbonded delegation is a `ValidatorBond` and the reduction in validator bond would cause the existing liquid delegation to exceed the cap. When this message is processed the following actions occur: +* if the delegation is a validator bond, the `ValidatorBondShares` of the validator is decreased. + +* if the delegator is a liquid staking provider, the `TotalLiquidStakedTokens` +and the validator's `LiquidShares` are decreased. + * validator's `DelegatorShares` and the delegation's `Shares` are both reduced by the message `SharesAmount` * calculate the token worth of the shares remove that amount tokens held within the validator * with those removed tokens, if the validator is: @@ -694,9 +742,15 @@ This message is expected to fail if: * the source validator has a receiving redelegation which is not matured (aka. the redelegation may be transitive) * existing `Redelegation` has maximum entries as defined by `params.MaxEntries` * the `Amount` `Coin` has a denomination different than one defined by `params.BondDenom` +* the delegation is a `ValidatorBond` and the reduction in validator bond would cause the existing liquid delegation to exceed the cap. +* the delegator is a liquid staking provider and the delegation exceeds +either the `GlobalLiquidStakingCap`, the `ValidatorLiquidStakingCap` or the validator bond cap. When this message is processed the following actions occur: +* if the delegation if is a validator bond, the `ValidatorBondShares` of the source validator is decreased. +* if the delegator is a liquid staking provider, + the source validator's `LiquidShares` increased and the destination validator's `LiquidShares` is decreased. * the source validator's `DelegatorShares` and the delegations `Shares` are both reduced by the message `SharesAmount` * calculate the token worth of the shares remove that amount tokens held within the source validator. * if the source validator is: @@ -709,6 +763,201 @@ When this message is processed the following actions occur: ![Begin redelegation sequence](https://raw.githubusercontent.com/cosmos/cosmos-sdk/release/v0.46.x/docs/uml/svg/begin_redelegation_sequence.svg) +## MsgTokenizeShares + +The `MsgTokenizeShares` message allows users to tokenize their delegated tokens. Share tokens have denom using the validator address and record id of the underlying delegation with the format `{validatorAddress}/{recordId}`. + +```protobuf reference +https://github.com/cosmos/cosmos-sdk/blob/v0.45.16-ics-lsm/proto/cosmos/staking/v1beta1/tx.proto#L49-L50 +``` + +```protobuf reference +https://github.com/cosmos/cosmos-sdk/blob/v0.45.16-ics-lsm/proto/cosmos/staking/v1beta1/tx.proto#L190-L199 +``` + +This message returns a response containing the number of tokens generated: + +```protobuf reference +https://github.com/cosmos/cosmos-sdk/blob/v0.45.16-ics-lsm/proto/cosmos/staking/v1beta1/tx.proto#L201-L204 +``` + +This message is expected to fail if: + +* the delegation is a `ValidatorBond` +* the delegator sender's address has disabled tokenization, meaning that the account +lock status is either `LOCKED` or `LOCK_EXPIRING`. +* the account is a vesting account and the free delegation (non-vesting delegation) is exceeding the tokenized share amount. +* the sender is NOT a liquid staking provider and the tokenized shares exceeds +either the `GlobalLiquidStakingCap`, the `ValidatorLiquidStakingCap` or the validator bond cap. + + +When this message is processed the following actions occur: + +* If delegator is a NOT liquid staking provider (otherwise the shares are already included) + * Increment the `GlobalLiquidStakingCap` + * Increment the validator's `ValidatorLiquidStakingCap` +* Unbond the delegation shares and transfer the coins back to delegator +* Create an equivalent amount of tokenized shares that the initial delegation shares +* Mint the liquid coins and send them to delegator +* Create a tokenized share record +* Get validator to whom the sender delegated his shares +* Send coins to module address and delegate them to the validator + +## MsgRedeemTokensForShares + +The `MsgRedeemTokensForShares` message allows users to redeem their native delegations from share tokens. + + +```protobuf reference +https://github.com/cosmos/cosmos-sdk/blob/v0.45.16-ics-lsm/proto/cosmos/staking/v1beta1/tx.proto#L52-L54 +``` + +```protobuf reference +https://github.com/cosmos/cosmos-sdk/blob/v0.45.16-ics-lsm/proto/cosmos/staking/v1beta1/tx.proto#L206-L213 +``` + +This message returns a response containing the amount of staked tokens redeemed: + +```protobuf reference +https://github.com/cosmos/cosmos-sdk/blob/v0.45.16-ics-lsm/proto/cosmos/staking/v1beta1/tx.proto#L215-L218 +``` + +This message is expected to fail if: + +* if the sender's balance doesn't have enough liquid tokens + + +When this message is processed the following actions occur: + +* Get the tokenized shares record +* Get the validator that issued the tokenized shares from the record +* Unbond the delegation associated with the tokenized shares +* The delegator is NOT a liquid staking provider: + * Decrease the `ValidatorLiquidStakingCap` + * Decrease the validator's `LiquidShares` +* Burn the liquid coins equivalent of the tokenized shares +* Delete the tokenized shares record +* Send equivalent amount of tokens to the delegator +* Delegate sender's tokens to the validator + +## MsgTransferTokenizeShareRecord + +The `MsgTransferTokenizeShareRecord` message enables users to transfer the ownership of rewards generated from the tokenized amount of delegation. + +```protobuf reference +https://github.com/cosmos/cosmos-sdk/blob/v0.45.16-ics-lsm/proto/cosmos/staking/v1beta1/tx.proto#L56-L58 +``` + +```protobuf reference +https://github.com/cosmos/cosmos-sdk/blob/v0.45.16-ics-lsm/proto/cosmos/staking/v1beta1/tx.proto#L220-L228 +``` + +This message is expected to fail if: + +* the tokenized shares record doesn't exist +* the sender address doesn't match the owner address in the record + +When this message is processed the following actions occur: + +* the tokenized shares record is updated with the new owner address + +## MsgEnableTokenizeShares + +The `MsgEnableTokenizeShares` message begins the countdown after which tokenizing shares by the sender delegator address is re-allowed, which will complete after the unbonding period. + + +```protobuf reference +https://github.com/cosmos/cosmos-sdk/blob/v0.45.16-ics-lsm/proto/cosmos/staking/v1beta1/tx.proto#L63-L65 +``` + +```protobuf reference +https://github.com/cosmos/cosmos-sdk/blob/v0.45.16-ics-lsm/proto/cosmos/staking/v1beta1/tx.proto#L244-L250 +``` + +This message returns a response containing the time at which the lock is completely removed: + +```protobuf reference +https://github.com/cosmos/cosmos-sdk/blob/v0.45.16-ics-lsm/proto/cosmos/staking/v1beta1/tx.proto#L252-L255 +``` + +This message is expected to fail if: + +* if the sender's account lock status is either equal to `UNLOCKED` or `LOCK_EXPIRING`, +meaning that the tokenized shares aren't currently disabled. + + +When this message is processed the following actions occur: + +* queue the unlock authorization. + +## MsgDisableTokenizeShares + +The `MsgDisableTokenizeShares` message prevents the sender delegator address from tokenizing any of its delegations. + +```protobuf reference +https://github.com/cosmos/cosmos-sdk/blob/v0.45.16-ics-lsm/proto/cosmos/staking/v1beta1/tx.proto#L60-L61 +``` + +```protobuf reference +https://github.com/cosmos/cosmos-sdk/blob/v0.45.16-ics-lsm/proto/cosmos/staking/v1beta1/tx.proto#L233-L239 +``` + +This message is expected to fail if: + +* the sender's account already has the `LOCKED` lock status + + +When this message is processed the following actions occur: + +* if the sender's account lock status is equal to `LOCK_EXPIRING`, +it cancels the pending unlock authorizations by removing them from the queue. +* Create a new tokenization lock for the sender's account. Note that +if there is a lock expiration in progress, it is overridden. + +## MsgValidatorBond + +The `MsgValidatorBond` message designates a delegation as a validator bond. +It enables validators to receive more liquid staking delegations + +```protobuf reference +https://github.com/cosmos/cosmos-sdk/blob/v0.45.16-ics-lsm/proto/cosmos/staking/v1beta1/tx.proto#L67-L68 +``` + +```protobuf reference +https://github.com/cosmos/cosmos-sdk/blob/v0.45.16-ics-lsm/proto/cosmos/staking/v1beta1/tx.proto#L257-L265 +``` + +This message is expected to fail if: + +* the delegator is a liquid staking provider + +When this message is processed the following actions occur: + +* If the delegation is not already a `ValidatorBond`: + * Enable the delegation's `ValidatorBond` flag + * Update validator's `ValidatorBondShares` + +## MsgUnbondValidator + +The `MsgTransferTokenizeShareRecord` message allows validator to change their +status from transfers from `Bonded` to `Unbonding` without experiencing slashing. + +```protobuf reference +https://github.com/cosmos/cosmos-sdk/blob/v0.45.16-ics-lsm/proto/cosmos/staking/v1beta1/tx.proto#L36-L38 +``` + +```protobuf reference +https://github.com/cosmos/cosmos-sdk/blob/v0.45.16-ics-lsm/proto/cosmos/staking/v1beta1/tx.proto#L165-L169 +``` + +This message is expected to fail if: + +* the validator isn't registered or is already jailed + +When this message is processed the following actions occur: + +* the validator is jailed +* the validator status changes from `Bonded` to `Unbonding` ### MsgUpdateParams @@ -878,7 +1127,6 @@ The staking module emits the following events: | Type | Attribute Key | Attribute Value | | -------------- | ------------------- | ------------------- | | edit_validator | commission_rate | {commissionRate} | -| edit_validator | min_self_delegation | {minSelfDelegation} | | message | module | staking | | message | action | edit_validator | | message | sender | {senderAddress} | @@ -932,18 +1180,91 @@ The staking module emits the following events: * [0] Time is formatted in the RFC3339 standard +### MsgTokenizeShares + +| Type | Attribute Key | Attribute Value | +| ----------------------------- | --------------------- | ----------------------- | +| tokenize_shares | delegator | {delegatorAddress} | +| tokenize_shares | validator | {validatorAddress} | +| tokenize_shares | share_owner | {shareOwnerAddress} | +| tokenize_shares | amount | {tokenizeAmount} | +| message | module | staking | +| message | action | tokenize_share | +| message | sender | {senderAddress} | + +### MsgRedeemTokensForShares + +| Type | Attribute Key | Attribute Value | +| ----------------------------- | ------------------ | ------------------------ | +| redeem_tokens_for_shares | delegator | {delegatorAddress} | +| redeem_tokens_for_shares | amount | {redeemAmount} | +| message | module | staking | +| message | action | redeem_tokens | +| message | sender | {senderAddress} | + +### MsgTransferTokenizeShareRecord + +| Type | Attribute Key | Attribute Value | +| ---------------------------------- | ---------------------------- | ----------------------------------- | +| transfer_tokenize_share_record | share_record_id | {shareRecordID} | +| transfer_tokenize_share_record | sender | {senderAddress} | +| transfer_tokenize_share_record | share_owner | {newShareOwnerAddress} | +| message | module | staking | +| message | action | transfer-tokenize-share-record | +| message | sender | {senderAddress} | + +### MsgEnableTokenizeShares + +| Type | Attribute Key | Attribute Value | +| ----------------------------- | ------------------- | ------------------------ | +| enable_tokenize_shares | delegator | {delegatorAddress} | +| message | module | staking | +| message | action | enable_tokenize_shares | +| message | sender | {senderAddress} | + +### MsgDisableTokenizeShares + +| Type | Attribute Key | Attribute Value | +| ----------------------------- | ------------------ | ------------------------ | +| disable_tokenize_shares | delegator | {delegatorAddress} | +| message | module | staking | +| message | action | disable_tokenize_shares | +| message | sender | {senderAddress} | + +### MsgValidatorBond + +| Type | Attribute Key | Attribute Value | +| -------------------- | --------------------- | ------------------------ | +| validator_bond | validator | {validatorAddress} | +| validator_bond | delegator | {delegatorAddress} | +| message | action | validator_bond | +| message | sender | {senderAddress} | + +### MsgUnbondValidator + +| Type | Attribute Key | Attribute Value | +| -------------------- | --------------------- | ------------------------ | +| unbound_validator | validator | {validatorAddress} | +| message | action | unbond_validator | +| message | sender | {senderAddress} | + + ## Parameters The staking module contains the following parameters: -| Key | Type | Example | -|-------------------|------------------|------------------------| -| UnbondingTime | string (time ns) | "259200000000000" | -| MaxValidators | uint16 | 100 | -| KeyMaxEntries | uint16 | 7 | -| HistoricalEntries | uint16 | 3 | -| BondDenom | string | "stake" | -| MinCommissionRate | string | "0.000000000000000000" | +| Key | Type | Example | +|------------------------- |------------------|--------------------------| +| UnbondingTime | string (time ns) | "259200000000000" | +| MaxValidators | uint16 | 100 | +| KeyMaxEntries | uint16 | 7 | +| HistoricalEntries | uint16 | 3 | +| BondDenom | string | "stake" | +| MinCommissionRate | string | "0.000000000000000000" | +| ValidatorBondFactor | string | "250.0000000000000000" | +| GlobalLiquidStakingCap | string | "1.000000000000000000" | +| ValidatorLiquidStakingCap | string | "0.250000000000000000" | + ## Client @@ -1564,7 +1885,7 @@ simd tx staking --help ##### create-validator -The command `create-validator` allows users to create new validator initialized with a self-delegation to it. +The command `create-validator` allows users to create new validator. Usage: @@ -1595,8 +1916,7 @@ where `validator.json` contains: "details": "description of your validator", "commission-rate": "0.10", "commission-max-rate": "0.20", - "commission-max-change-rate": "0.01", - "min-self-delegation": "1" + "commission-max-change-rate": "0.01" } ``` diff --git a/x/staking/app_test.go b/x/staking/app_test.go index ae68287c40a7..d985429e9bbb 100644 --- a/x/staking/app_test.go +++ b/x/staking/app_test.go @@ -69,7 +69,7 @@ func TestStakingMsgs(t *testing.T) { // create validator description := types.NewDescription("foo_moniker", "", "", "", "") createValidatorMsg, err := types.NewMsgCreateValidator( - sdk.ValAddress(addr1).String(), valKey.PubKey(), bondCoin, description, commissionRates, math.OneInt(), + sdk.ValAddress(addr1).String(), valKey.PubKey(), bondCoin, description, commissionRates, ) require.NoError(t, err) @@ -94,7 +94,7 @@ func TestStakingMsgs(t *testing.T) { // edit the validator description = types.NewDescription("bar_moniker", "", "", "", "") - editValidatorMsg := types.NewMsgEditValidator(sdk.ValAddress(addr1).String(), description, nil, nil) + editValidatorMsg := types.NewMsgEditValidator(sdk.ValAddress(addr1).String(), description, nil) header = cmtproto.Header{Height: app.LastBlockHeight() + 1} _, _, err = simtestutil.SignCheckDeliver(t, txConfig, app.BaseApp, header, []sdk.Msg{editValidatorMsg}, "", []uint64{0}, []uint64{1}, true, true, priv1) diff --git a/x/staking/autocli.go b/x/staking/autocli.go index 16335d38ec13..0e9a4b988c7c 100644 --- a/x/staking/autocli.go +++ b/x/staking/autocli.go @@ -7,6 +7,7 @@ import ( _ "cosmossdk.io/api/cosmos/crypto/ed25519" // register to that it shows up in protoregistry.GlobalTypes stakingv1beta "cosmossdk.io/api/cosmos/staking/v1beta1" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/version" ) @@ -137,6 +138,68 @@ func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { Short: "Query the current staking parameters information", Long: "Query values set as staking parameters.", }, + { + RpcMethod: "TokenizeShareRecordById", + Use: "tokenize-share-record-by-id [id]", + Short: "Query individual tokenize share record information by share by id", + Example: fmt.Sprintf("$ %s query staking tokenize-share-record-by-id [id]", version.AppName), + PositionalArgs: []*autocliv1.PositionalArgDescriptor{ + {ProtoField: "id"}, + }, + }, + { + RpcMethod: "TokenizeShareRecordByDenom", + Use: "tokenize-share-record-by-denom [denom]", + Short: "Query individual tokenize share record information by share denom", + Example: fmt.Sprintf("$ %s query staking tokenize-share-record-by-denom [denom]", version.AppName), + PositionalArgs: []*autocliv1.PositionalArgDescriptor{ + {ProtoField: "denom"}, + }, + }, + { + RpcMethod: "TokenizeShareRecordsOwned", + Use: "tokenize-share-records-owned [owner]", + Short: "Query tokenize share records by address", + Example: fmt.Sprintf("$ %s query staking tokenize-share-records-owned [owner]", version.AppName), + PositionalArgs: []*autocliv1.PositionalArgDescriptor{ + {ProtoField: "owner"}, + }, + }, + { + RpcMethod: "AllTokenizeShareRecords", + Use: "all-tokenize-share-records", + Short: "Query for all tokenize share records", + Example: fmt.Sprintf("$ %s query staking all-tokenize-share-records", version.AppName), + }, + { + RpcMethod: "LastTokenizeShareRecordId", + Use: "last-tokenize-share-record-id", + Short: "Query for last tokenize share record id", + Example: fmt.Sprintf("$ %s query staking last-tokenize-share-record-id", version.AppName), + }, + { + RpcMethod: "TotalTokenizeSharedAssets", + Use: "total-tokenize-share-assets", + Short: "Query for total tokenized staked assets", + Example: fmt.Sprintf("$ %s query staking total-tokenize-share-assets", version.AppName), + }, + { + RpcMethod: "TotalLiquidStaked", + Use: "total-liquid-staked", + Short: "Query for total liquid staked tokens", + Example: fmt.Sprintf("$ %s query staking total-liquid-staked", version.AppName), + }, + { + RpcMethod: "TokenizeShareLockInfo", + Use: "tokenize-share-lock-info [address]", + Short: "Query tokenize share lock information", + Long: "Query the status of a tokenize share lock for a given account", + Example: fmt.Sprintf("$ %s query staking tokenize-share-lock-info %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj", + version.AppName, sdk.GetConfig().GetBech32AccountAddrPrefix()), + PositionalArgs: []*autocliv1.PositionalArgDescriptor{ + {ProtoField: "address"}, + }, + }, }, }, Tx: &autocliv1.ServiceCommandDescriptor{ diff --git a/x/staking/client/cli/flags.go b/x/staking/client/cli/flags.go index 08789cfa6736..f8d0e9b1e9f1 100644 --- a/x/staking/client/cli/flags.go +++ b/x/staking/client/cli/flags.go @@ -26,8 +26,6 @@ const ( FlagCommissionMaxRate = "commission-max-rate" FlagCommissionMaxChangeRate = "commission-max-change-rate" - FlagMinSelfDelegation = "min-self-delegation" - FlagGenesisFormat = "genesis-format" FlagNodeID = "node-id" FlagIP = "ip" @@ -60,13 +58,6 @@ func FlagSetCommissionCreate() *flag.FlagSet { return fs } -// FlagSetMinSelfDelegation Returns the FlagSet used for minimum set delegation. -func FlagSetMinSelfDelegation() *flag.FlagSet { - fs := flag.NewFlagSet("", flag.ContinueOnError) - fs.String(FlagMinSelfDelegation, "", "The minimum self delegation required on the validator") - return fs -} - // FlagSetAmount Returns the FlagSet for amount related operations. func FlagSetAmount() *flag.FlagSet { fs := flag.NewFlagSet("", flag.ContinueOnError) diff --git a/x/staking/client/cli/tx.go b/x/staking/client/cli/tx.go index 86ab1a815880..4b8ab02df74a 100644 --- a/x/staking/client/cli/tx.go +++ b/x/staking/client/cli/tx.go @@ -18,7 +18,6 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/version" "github.com/cosmos/cosmos-sdk/x/staking/types" ) @@ -30,7 +29,6 @@ var ( defaultCommissionRate = "0.1" defaultCommissionMaxRate = "0.2" defaultCommissionMaxChangeRate = "0.01" - defaultMinSelfDelegation = "1" ) // NewTxCmd returns a root CLI command handler for all x/staking transaction commands. @@ -49,7 +47,14 @@ func NewTxCmd(valAddrCodec, ac address.Codec) *cobra.Command { NewDelegateCmd(valAddrCodec, ac), NewRedelegateCmd(valAddrCodec, ac), NewUnbondCmd(valAddrCodec, ac), + NewUnbondValidatorCmd(valAddrCodec), NewCancelUnbondingDelegation(valAddrCodec, ac), + NewTokenizeSharesCmd(valAddrCodec, ac), + NewRedeemTokensCmd(), + NewTransferTokenizeShareRecordCmd(ac), + NewDisableTokenizeShares(), + NewEnableTokenizeShares(), + NewValidatorBondCmd(), ) return stakingTxCmd @@ -59,9 +64,9 @@ func NewTxCmd(valAddrCodec, ac address.Codec) *cobra.Command { func NewCreateValidatorCmd(ac address.Codec) *cobra.Command { cmd := &cobra.Command{ Use: "create-validator [path/to/validator.json]", - Short: "create new validator initialized with a self-delegation to it", + Short: "create new validator", Args: cobra.ExactArgs(1), - Long: `Create a new validator initialized with a self-delegation by submitting a JSON file with the new validator details.`, + Long: `Create a new validator by submitting a JSON file with the new validator details.`, Example: strings.TrimSpace( fmt.Sprintf(` $ %s tx staking create-validator path/to/validator.json --from keyname @@ -79,7 +84,6 @@ Where validator.json contains: "commission-rate": "0.1", "commission-max-rate": "0.2", "commission-max-change-rate": "0.01", - "min-self-delegation": "1" } where we can get the pubkey using "%s tendermint show-validator" @@ -148,24 +152,12 @@ func NewEditValidatorCmd(ac address.Codec) *cobra.Command { newRate = &rate } - var newMinSelfDelegation *math.Int - - minSelfDelegationString, _ := cmd.Flags().GetString(FlagMinSelfDelegation) - if minSelfDelegationString != "" { - msb, ok := math.NewIntFromString(minSelfDelegationString) - if !ok { - return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "minimum self delegation must be a positive integer") - } - - newMinSelfDelegation = &msb - } - valAddr, err := ac.BytesToString(clientCtx.GetFromAddress()) if err != nil { return err } - msg := types.NewMsgEditValidator(valAddr, description, newRate, newMinSelfDelegation) + msg := types.NewMsgEditValidator(valAddr, description, newRate) return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) }, @@ -173,7 +165,6 @@ func NewEditValidatorCmd(ac address.Codec) *cobra.Command { cmd.Flags().AddFlagSet(flagSetDescriptionEdit()) cmd.Flags().AddFlagSet(flagSetCommissionUpdate()) - cmd.Flags().AddFlagSet(FlagSetMinSelfDelegation()) flags.AddTxFlagsToCmd(cmd) return cmd @@ -324,6 +315,42 @@ $ %s tx staking unbond %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj 100stake --from return cmd } +func NewUnbondValidatorCmd(valAddrCodec address.Codec) *cobra.Command { + cmd := &cobra.Command{ + Use: "unbond-validator", + Short: "Unbond a validator", + Args: cobra.ExactArgs(0), + Long: strings.TrimSpace( + fmt.Sprintf(`Unbond a validator. + +Example: +$ %s tx staking unbond-validator --from mykey +`, + version.AppName, + ), + ), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + valStr, err := valAddrCodec.BytesToString(sdk.ValAddress(clientCtx.GetFromAddress())) + if err != nil { + return err + } + + msg := types.NewMsgUnbondValidator(valStr) + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + // NewCancelUnbondingDelegation returns a CLI command handler for creating a MsgCancelUnbondingDelegation transaction. func NewCancelUnbondingDelegation(valAddrCodec, ac address.Codec) *cobra.Command { bech32PrefixValAddr := sdk.GetConfig().GetBech32ValidatorAddrPrefix() @@ -395,7 +422,7 @@ func newBuildCreateValidatorMsg(clientCtx client.Context, txf tx.Factory, fs *fl return txf, nil, err } msg, err := types.NewMsgCreateValidator( - valStr, val.PubKey, val.Amount, description, val.CommissionRates, val.MinSelfDelegation, + valStr, val.PubKey, val.Amount, description, val.CommissionRates, ) if err != nil { return txf, nil, err @@ -431,7 +458,6 @@ func CreateValidatorMsgFlagSet(ipDefault string) (fs *flag.FlagSet, defaultsDesc fsCreateValidator.String(FlagDetails, "", "The validator's (optional) details") fsCreateValidator.String(FlagIdentity, "", "The (optional) identity signature (ex. UPort or Keybase)") fsCreateValidator.AddFlagSet(FlagSetCommissionCreate()) - fsCreateValidator.AddFlagSet(FlagSetMinSelfDelegation()) fsCreateValidator.AddFlagSet(FlagSetAmount()) fsCreateValidator.AddFlagSet(FlagSetPublicKey()) @@ -440,10 +466,8 @@ func CreateValidatorMsgFlagSet(ipDefault string) (fs *flag.FlagSet, defaultsDesc commission rate: %s commission max rate: %s commission max change rate: %s - minimum self delegation: %s `, defaultAmount, defaultCommissionRate, - defaultCommissionMaxRate, defaultCommissionMaxChangeRate, - defaultMinSelfDelegation) + defaultCommissionMaxRate, defaultCommissionMaxChangeRate) return fsCreateValidator, defaultsDesc } @@ -458,7 +482,6 @@ type TxCreateValidatorConfig struct { CommissionRate string CommissionMaxRate string CommissionMaxChangeRate string - MinSelfDelegation string PubKey cryptotypes.PubKey @@ -527,11 +550,6 @@ func PrepareConfigForTxCreateValidator(flagSet *flag.FlagSet, moniker, nodeID, c return c, err } - c.MinSelfDelegation, err = flagSet.GetString(FlagMinSelfDelegation) - if err != nil { - return c, err - } - c.IP = ip c.P2PPort = p2pPort c.Website = website @@ -562,10 +580,6 @@ func PrepareConfigForTxCreateValidator(flagSet *flag.FlagSet, moniker, nodeID, c c.CommissionMaxChangeRate = defaultCommissionMaxChangeRate } - if c.MinSelfDelegation == "" { - c.MinSelfDelegation = defaultMinSelfDelegation - } - return c, nil } @@ -595,14 +609,6 @@ func BuildCreateValidatorMsg(clientCtx client.Context, config TxCreateValidatorC return txBldr, nil, err } - // get the initial validator min self delegation - msbStr := config.MinSelfDelegation - minSelfDelegation, ok := math.NewIntFromString(msbStr) - - if !ok { - return txBldr, nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "minimum self delegation must be a positive integer") - } - valStr, err := valCodec.BytesToString(sdk.ValAddress(valAddr)) if err != nil { return txBldr, nil, err @@ -614,7 +620,6 @@ func BuildCreateValidatorMsg(clientCtx client.Context, config TxCreateValidatorC amount, description, commissionRates, - minSelfDelegation, ) if err != nil { return txBldr, msg, err @@ -632,3 +637,257 @@ func BuildCreateValidatorMsg(clientCtx client.Context, config TxCreateValidatorC return txBldr, msg, nil } + +// NewTokenizeSharesCmd defines a command for tokenizing shares from a validator. +func NewTokenizeSharesCmd(valAddrCodec, ac address.Codec) *cobra.Command { + bech32PrefixValAddr := sdk.GetConfig().GetBech32ValidatorAddrPrefix() + bech32PrefixAccAddr := sdk.GetConfig().GetBech32AccountAddrPrefix() + + cmd := &cobra.Command{ + Use: "tokenize-share [validator-addr] [amount] [rewardOwner]", + Short: "Tokenize delegation to share tokens", + Args: cobra.ExactArgs(3), + Long: strings.TrimSpace( + fmt.Sprintf(`Tokenize delegation to share tokens. + +Example: +$ %s tx staking tokenize-share %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj 100stake %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj --from mykey +`, + version.AppName, bech32PrefixValAddr, bech32PrefixAccAddr, + ), + ), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + delAddr, err := ac.BytesToString(clientCtx.GetFromAddress()) + if err != nil { + return err + } + + valAddr := args[0] + if _, err = valAddrCodec.StringToBytes(valAddr); err != nil { + return err + } + + amount, err := sdk.ParseCoinNormalized(args[1]) + if err != nil { + return err + } + + _, err = ac.StringToBytes(args[2]) + if err != nil { + return err + } + + msg := &types.MsgTokenizeShares{ + DelegatorAddress: delAddr, + ValidatorAddress: valAddr, + Amount: amount, + TokenizedShareOwner: args[2], + } + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + +// NewRedeemTokensCmd defines a command for redeeming tokens from a validator for shares. +func NewRedeemTokensCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "redeem-tokens [amount]", + Short: "Redeem specified amount of share tokens to delegation", + Args: cobra.ExactArgs(1), + Long: strings.TrimSpace( + fmt.Sprintf(`Redeem specified amount of share tokens to delegation. + +Example: +$ %s tx staking redeem-tokens 100sharetoken --from mykey +`, + version.AppName, + ), + ), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + delAddr := clientCtx.GetFromAddress() + + amount, err := sdk.ParseCoinNormalized(args[0]) + if err != nil { + return err + } + + msg := &types.MsgRedeemTokensForShares{ + DelegatorAddress: delAddr.String(), + Amount: amount, + } + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + +// NewTransferTokenizeShareRecordCmd defines a command to transfer ownership of TokenizeShareRecord +func NewTransferTokenizeShareRecordCmd(ac address.Codec) *cobra.Command { + bech32PrefixAccAddr := sdk.GetConfig().GetBech32AccountAddrPrefix() + + cmd := &cobra.Command{ + Use: "transfer-tokenize-share-record [record-id] [new-owner]", + Short: "Transfer ownership of TokenizeShareRecord", + Args: cobra.ExactArgs(2), + Long: strings.TrimSpace( + fmt.Sprintf(`Transfer ownership of TokenizeShareRecord. + +Example: +$ %s tx staking transfer-tokenize-share-record 1 %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj --from mykey +`, + version.AppName, bech32PrefixAccAddr, + ), + ), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + recordID, err := strconv.Atoi(args[0]) + if err != nil { + return err + } + + ownerAddr := args[1] + _, err = ac.StringToBytes(ownerAddr) + if err != nil { + return err + } + + msg := &types.MsgTransferTokenizeShareRecord{ + Sender: clientCtx.GetFromAddress().String(), + TokenizeShareRecordId: uint64(recordID), + NewOwner: ownerAddr, + } + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + +// NewDisableTokenizeShares defines a command to disable tokenization for an address +func NewDisableTokenizeShares() *cobra.Command { + cmd := &cobra.Command{ + Use: "disable-tokenize-shares", + Short: "Disable tokenization of shares", + Args: cobra.ExactArgs(0), + Long: strings.TrimSpace( + fmt.Sprintf(`Disables the tokenization of shares for an address. The account +must explicitly re-enable if they wish to tokenize again, at which point they must wait +the chain's unbonding period. + +Example: +$ %s tx staking disable-tokenize-shares --from mykey +`, version.AppName), + ), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := &types.MsgDisableTokenizeShares{ + DelegatorAddress: clientCtx.GetFromAddress().String(), + } + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + +// NewEnableTokenizeShares defines a command to re-enable tokenization for an address +func NewEnableTokenizeShares() *cobra.Command { + cmd := &cobra.Command{ + Use: "enable-tokenize-shares", + Short: "Enable tokenization of shares", + Args: cobra.ExactArgs(0), + Long: strings.TrimSpace( + fmt.Sprintf(`Enables the tokenization of shares for an address after +it had been disable. This transaction queues the enablement of tokenization, but +the address must wait 1 unbonding period from the time of this transaction before +tokenization is permitted. + +Example: +$ %s tx staking enable-tokenize-shares --from mykey +`, version.AppName), + ), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := &types.MsgEnableTokenizeShares{ + DelegatorAddress: clientCtx.GetFromAddress().String(), + } + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + +// NewValidatorBondCmd defines a command to mark a delegation as a validator self bond +func NewValidatorBondCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "validator-bond [validator]", + Short: "Mark a delegation as a validator self-bond", + Args: cobra.ExactArgs(1), + Long: strings.TrimSpace( + fmt.Sprintf(`Mark a delegation as a validator self-bond. + +Example: +$ %s tx staking validator-bond cosmosvaloper13h5xdxhsdaugwdrkusf8lkgu406h8t62jkqv3h --from mykey +`, + version.AppName, + ), + ), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := &types.MsgValidatorBond{ + DelegatorAddress: clientCtx.GetFromAddress().String(), + ValidatorAddress: args[0], + } + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} diff --git a/x/staking/client/cli/tx_test.go b/x/staking/client/cli/tx_test.go index 77d4727606d2..0a22daaa8038 100644 --- a/x/staking/client/cli/tx_test.go +++ b/x/staking/client/cli/tx_test.go @@ -81,7 +81,7 @@ func (s *CLITestSuite) TestPrepareConfigForTxCreateValidator() { valPubKey := privKey.PubKey() moniker := "DefaultMoniker" require := s.Require() - mkTxValCfg := func(amount, commission, commissionMax, commissionMaxChange, minSelfDelegation string) cli.TxCreateValidatorConfig { + mkTxValCfg := func(amount, commission, commissionMax, commissionMaxChange string) cli.TxCreateValidatorConfig { return cli.TxCreateValidatorConfig{ IP: ip, ChainID: chainID, @@ -93,7 +93,6 @@ func (s *CLITestSuite) TestPrepareConfigForTxCreateValidator() { CommissionRate: commission, CommissionMaxRate: commissionMax, CommissionMaxChangeRate: commissionMaxChange, - MinSelfDelegation: minSelfDelegation, } } @@ -105,42 +104,35 @@ func (s *CLITestSuite) TestPrepareConfigForTxCreateValidator() { { name: "all defaults", fsModify: func(fs *pflag.FlagSet) {}, - expectedCfg: mkTxValCfg(cli.DefaultTokens.String()+sdk.DefaultBondDenom, "0.1", "0.2", "0.01", "1"), + expectedCfg: mkTxValCfg(cli.DefaultTokens.String()+sdk.DefaultBondDenom, "0.1", "0.2", "0.01"), }, { name: "Custom amount", fsModify: func(fs *pflag.FlagSet) { require.NoError(fs.Set(cli.FlagAmount, "2000stake")) }, - expectedCfg: mkTxValCfg("2000stake", "0.1", "0.2", "0.01", "1"), + expectedCfg: mkTxValCfg("2000stake", "0.1", "0.2", "0.01"), }, { name: "Custom commission rate", fsModify: func(fs *pflag.FlagSet) { require.NoError(fs.Set(cli.FlagCommissionRate, "0.54")) }, - expectedCfg: mkTxValCfg(cli.DefaultTokens.String()+sdk.DefaultBondDenom, "0.54", "0.2", "0.01", "1"), + expectedCfg: mkTxValCfg(cli.DefaultTokens.String()+sdk.DefaultBondDenom, "0.54", "0.2", "0.01"), }, { name: "Custom commission max rate", fsModify: func(fs *pflag.FlagSet) { require.NoError(fs.Set(cli.FlagCommissionMaxRate, "0.89")) }, - expectedCfg: mkTxValCfg(cli.DefaultTokens.String()+sdk.DefaultBondDenom, "0.1", "0.89", "0.01", "1"), + expectedCfg: mkTxValCfg(cli.DefaultTokens.String()+sdk.DefaultBondDenom, "0.1", "0.89", "0.01"), }, { name: "Custom commission max change rate", fsModify: func(fs *pflag.FlagSet) { require.NoError(fs.Set(cli.FlagCommissionMaxChangeRate, "0.55")) }, - expectedCfg: mkTxValCfg(cli.DefaultTokens.String()+sdk.DefaultBondDenom, "0.1", "0.2", "0.55", "1"), - }, - { - name: "Custom min self delegations", - fsModify: func(fs *pflag.FlagSet) { - require.NoError(fs.Set(cli.FlagMinSelfDelegation, "0.33")) - }, - expectedCfg: mkTxValCfg(cli.DefaultTokens.String()+sdk.DefaultBondDenom, "0.1", "0.2", "0.01", "0.33"), + expectedCfg: mkTxValCfg(cli.DefaultTokens.String()+sdk.DefaultBondDenom, "0.1", "0.2", "0.55"), }, } @@ -175,8 +167,7 @@ func (s *CLITestSuite) TestNewCreateValidatorCmd() { "details": "'Hey, I am a new validator. Please delegate!'", "commission-rate": "0.5", "commission-max-rate": "1.0", - "commission-max-change-rate": "0.1", - "min-self-delegation": "1" + "commission-max-change-rate": "0.1" }`, 100) validJSONFile := testutil.WriteToNewTempFile(s.T(), validJSON) defer validJSONFile.Close() @@ -188,8 +179,7 @@ func (s *CLITestSuite) TestNewCreateValidatorCmd() { "moniker": "NewValidator", "commission-rate": "0.5", "commission-max-rate": "1.0", - "commission-max-change-rate": "0.1", - "min-self-delegation": "1" + "commission-max-change-rate": "0.1" }`, 100) validJSONWOOptionalFile := testutil.WriteToNewTempFile(s.T(), validJSONWithoutOptionalFields) defer validJSONWOOptionalFile.Close() @@ -200,8 +190,7 @@ func (s *CLITestSuite) TestNewCreateValidatorCmd() { "moniker": "NewValidator", "commission-rate": "0.5", "commission-max-rate": "1.0", - "commission-max-change-rate": "0.1", - "min-self-delegation": "1" + "commission-max-change-rate": "0.1" }` noAmountJSONFile := testutil.WriteToNewTempFile(s.T(), noAmountJSON) defer noAmountJSONFile.Close() @@ -212,8 +201,7 @@ func (s *CLITestSuite) TestNewCreateValidatorCmd() { "moniker": "NewValidator", "commission-rate": "0.5", "commission-max-rate": "1.0", - "commission-max-change-rate": "0.1", - "min-self-delegation": "1" + "commission-max-change-rate": "0.1" }`, 100) noPubKeyJSONFile := testutil.WriteToNewTempFile(s.T(), noPubKeyJSON) defer noPubKeyJSONFile.Close() @@ -224,8 +212,7 @@ func (s *CLITestSuite) TestNewCreateValidatorCmd() { "amount": "%dstake", "commission-rate": "0.5", "commission-max-rate": "1.0", - "commission-max-change-rate": "0.1", - "min-self-delegation": "1" + "commission-max-change-rate": "0.1" }`, 100) noMonikerJSONFile := testutil.WriteToNewTempFile(s.T(), noMonikerJSON) defer noMonikerJSONFile.Close() diff --git a/x/staking/client/cli/utils.go b/x/staking/client/cli/utils.go index bd9ba90df934..1b16645f1773 100644 --- a/x/staking/client/cli/utils.go +++ b/x/staking/client/cli/utils.go @@ -6,13 +6,11 @@ import ( "fmt" "os" - errorsmod "cosmossdk.io/errors" "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/codec" cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/x/staking/types" ) @@ -41,7 +39,6 @@ func parseAndValidateValidatorJSON(cdc codec.Codec, path string) (validator, err CommissionRate string `json:"commission-rate"` CommissionMaxRate string `json:"commission-max-rate"` CommissionMaxChange string `json:"commission-max-change-rate"` - MinSelfDelegation string `json:"min-self-delegation"` } contents, err := os.ReadFile(path) @@ -80,24 +77,15 @@ func parseAndValidateValidatorJSON(cdc codec.Codec, path string) (validator, err return validator{}, err } - if v.MinSelfDelegation == "" { - return validator{}, fmt.Errorf("must specify minimum self delegation") - } - minSelfDelegation, ok := math.NewIntFromString(v.MinSelfDelegation) - if !ok { - return validator{}, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "minimum self delegation must be a positive integer") - } - return validator{ - Amount: amount, - PubKey: pk, - Moniker: v.Moniker, - Identity: v.Identity, - Website: v.Website, - Security: v.Security, - Details: v.Details, - CommissionRates: commissionRates, - MinSelfDelegation: minSelfDelegation, + Amount: amount, + PubKey: pk, + Moniker: v.Moniker, + Identity: v.Identity, + Website: v.Website, + Security: v.Security, + Details: v.Details, + CommissionRates: commissionRates, }, nil } diff --git a/x/staking/keeper/abci.go b/x/staking/keeper/abci.go index 8131fa6dd16f..627333c82fff 100644 --- a/x/staking/keeper/abci.go +++ b/x/staking/keeper/abci.go @@ -6,6 +6,7 @@ import ( abci "github.com/cometbft/cometbft/abci/types" "github.com/cosmos/cosmos-sdk/telemetry" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/staking/types" ) @@ -13,7 +14,16 @@ import ( // and prune the oldest entry based on the HistoricalEntries parameter func (k *Keeper) BeginBlocker(ctx context.Context) error { defer telemetry.ModuleMeasureSince(types.ModuleName, telemetry.Now(), telemetry.MetricKeyBeginBlocker) - return k.TrackHistoricalInfo(ctx) + + err := k.TrackHistoricalInfo(ctx) + if err != nil { + return err + } + + sdkCtx := sdk.UnwrapSDKContext(ctx) + k.RemoveExpiredTokenizeShareLocks(ctx, sdkCtx.BlockTime()) + + return nil } // EndBlocker called at every block, update validator set diff --git a/x/staking/keeper/delegation.go b/x/staking/keeper/delegation.go index 606cb1e51c89..5b37dacb1762 100644 --- a/x/staking/keeper/delegation.go +++ b/x/staking/keeper/delegation.go @@ -1010,19 +1010,6 @@ func (k Keeper) Unbond( return amount, err } - isValidatorOperator := bytes.Equal(delegatorAddress, valbz) - - // If the delegation is the operator of the validator and undelegating will decrease the validator's - // self-delegation below their minimum, we jail the validator. - if isValidatorOperator && !validator.Jailed && - validator.TokensFromShares(delegation.Shares).TruncateInt().LT(validator.MinSelfDelegation) { - err = k.jailValidator(ctx, validator) - if err != nil { - return amount, err - } - validator = k.mustGetValidator(ctx, valbz) - } - if delegation.Shares.IsZero() { err = k.RemoveDelegation(ctx, delegation) } else { diff --git a/x/staking/keeper/delegation_test.go b/x/staking/keeper/delegation_test.go index 1404b18cd5d0..582af2e157dd 100644 --- a/x/staking/keeper/delegation_test.go +++ b/x/staking/keeper/delegation_test.go @@ -396,56 +396,6 @@ func (s *KeeperTestSuite) TestUnbondDelegation() { require.Equal(remainingTokens, validator.BondedTokens()) } -// // test undelegating self delegation from a validator pushing it below MinSelfDelegation -// // shift it from the bonded to unbonding state and jailed -func (s *KeeperTestSuite) TestUndelegateSelfDelegationBelowMinSelfDelegation() { - ctx, keeper := s.ctx, s.stakingKeeper - require := s.Require() - - addrDels, addrVals := createValAddrs(1) - delTokens := keeper.TokensFromConsensusPower(ctx, 10) - - // create a validator with a self-delegation - validator := testutil.NewValidator(s.T(), addrVals[0], PKs[0]) - - validator.MinSelfDelegation = delTokens - validator, issuedShares := validator.AddTokensFromDel(delTokens) - require.Equal(delTokens, issuedShares.RoundInt()) - - s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.NotBondedPoolName, stakingtypes.BondedPoolName, gomock.Any()) - validator = stakingkeeper.TestingUpdateValidator(keeper, ctx, validator, true) - require.NoError(keeper.SetValidatorByConsAddr(ctx, validator)) - require.True(validator.IsBonded()) - - selfDelegation := stakingtypes.NewDelegation(sdk.AccAddress(addrVals[0].Bytes()).String(), addrVals[0].String(), issuedShares) - require.NoError(keeper.SetDelegation(ctx, selfDelegation)) - - // create a second delegation to this validator - require.NoError(keeper.DeleteValidatorByPowerIndex(ctx, validator)) - validator, issuedShares = validator.AddTokensFromDel(delTokens) - require.True(validator.IsBonded()) - require.Equal(delTokens, issuedShares.RoundInt()) - - validator = stakingkeeper.TestingUpdateValidator(keeper, ctx, validator, true) - delegation := stakingtypes.NewDelegation(addrDels[0].String(), addrVals[0].String(), issuedShares) - require.NoError(keeper.SetDelegation(ctx, delegation)) - - val0AccAddr := sdk.AccAddress(addrVals[0].Bytes()) - s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.BondedPoolName, stakingtypes.NotBondedPoolName, gomock.Any()) - _, _, err := keeper.Undelegate(ctx, val0AccAddr, addrVals[0], math.LegacyNewDecFromInt(keeper.TokensFromConsensusPower(ctx, 6))) - require.NoError(err) - - // end block - s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.BondedPoolName, stakingtypes.NotBondedPoolName, gomock.Any()) - s.applyValidatorSetUpdates(ctx, keeper, 1) - - validator, err = keeper.GetValidator(ctx, addrVals[0]) - require.NoError(err) - require.Equal(keeper.TokensFromConsensusPower(ctx, 14), validator.Tokens) - require.Equal(stakingtypes.Unbonding, validator.Status) - require.True(validator.Jailed) -} - func (s *KeeperTestSuite) TestUndelegateFromUnbondingValidator() { ctx, keeper := s.ctx, s.stakingKeeper require := s.Require() @@ -484,13 +434,15 @@ func (s *KeeperTestSuite) TestUndelegateFromUnbondingValidator() { header.Time = blockTime ctx = ctx.WithBlockHeader(header) - // unbond the all self-delegation to put validator in unbonding state + // unbond the and jail the validator to put it in an unbonding state val0AccAddr := sdk.AccAddress(addrVals[0]) s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.BondedPoolName, stakingtypes.NotBondedPoolName, gomock.Any()) _, amount, err := keeper.Undelegate(ctx, val0AccAddr, addrVals[0], math.LegacyNewDecFromInt(delTokens)) require.NoError(err) require.Equal(amount, delTokens) + keeper.Jail(ctx, sdk.GetConsAddress(PKs[0])) + // end block s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.BondedPoolName, stakingtypes.NotBondedPoolName, gomock.Any()) s.applyValidatorSetUpdates(ctx, keeper, 1) @@ -556,9 +508,10 @@ func (s *KeeperTestSuite) TestUndelegateFromUnbondedValidator() { ctx = ctx.WithBlockHeight(10) ctx = ctx.WithBlockTime(time.Unix(333, 0)) - // unbond the all self-delegation to put validator in unbonding state + // unbond the and jail the validator to put it in an unbonding state s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.BondedPoolName, stakingtypes.NotBondedPoolName, gomock.Any()) _, amount, err := keeper.Undelegate(ctx, val0AccAddr, addrVals[0], math.LegacyNewDecFromInt(valTokens)) + keeper.Jail(ctx, sdk.GetConsAddress(PKs[0])) require.NoError(err) require.Equal(amount, valTokens) @@ -637,11 +590,12 @@ func (s *KeeperTestSuite) TestUnbondingAllDelegationFromValidator() { ctx = ctx.WithBlockHeight(10) ctx = ctx.WithBlockTime(time.Unix(333, 0)) - // unbond the all self-delegation to put validator in unbonding state + // unbond the and jail the validator to put it in an unbonding state s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.BondedPoolName, stakingtypes.NotBondedPoolName, gomock.Any()) _, amount, err := keeper.Undelegate(ctx, val0AccAddr, addrVals[0], math.LegacyNewDecFromInt(valTokens)) require.NoError(err) require.Equal(amount, valTokens) + keeper.Jail(ctx, sdk.GetConsAddress(PKs[0])) // end block s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.BondedPoolName, stakingtypes.NotBondedPoolName, gomock.Any()) @@ -850,6 +804,7 @@ func (s *KeeperTestSuite) TestRedelegationMaxEntries() { require.NoError(err) } +// NOTE: redelegating self-delegations does not put validators in unbonding state with LSM func (s *KeeperTestSuite) TestRedelegateSelfDelegation() { ctx, keeper := s.ctx, s.stakingKeeper require := s.Require() @@ -892,13 +847,12 @@ func (s *KeeperTestSuite) TestRedelegateSelfDelegation() { require.NoError(err) // end block - s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.BondedPoolName, stakingtypes.NotBondedPoolName, gomock.Any()) s.applyValidatorSetUpdates(ctx, keeper, 2) validator, err = keeper.GetValidator(ctx, addrVals[0]) require.NoError(err) require.Equal(valTokens, validator.Tokens) - require.Equal(stakingtypes.Unbonding, validator.Status) + require.Equal(stakingtypes.Bonded, validator.Status) } func (s *KeeperTestSuite) TestRedelegateFromUnbondingValidator() { @@ -934,7 +888,8 @@ func (s *KeeperTestSuite) TestRedelegateFromUnbondingValidator() { validator2, issuedShares = validator2.AddTokensFromDel(valTokens) require.Equal(valTokens, issuedShares.RoundInt()) s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.NotBondedPoolName, stakingtypes.BondedPoolName, gomock.Any()) - _ = stakingkeeper.TestingUpdateValidator(keeper, ctx, validator2, true) + validator2 = stakingkeeper.TestingUpdateValidator(keeper, ctx, validator2, true) + require.Equal(stakingtypes.Bonded, validator2.Status) header := ctx.BlockHeader() blockHeight := int64(10) @@ -943,11 +898,12 @@ func (s *KeeperTestSuite) TestRedelegateFromUnbondingValidator() { header.Time = blockTime ctx = ctx.WithBlockHeader(header) - // unbond the all self-delegation to put validator in unbonding state + // unbond the and jail the validator to put it in an unbonding state s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.BondedPoolName, stakingtypes.NotBondedPoolName, gomock.Any()) _, amount, err := keeper.Undelegate(ctx, val0AccAddr, addrVals[0], math.LegacyNewDecFromInt(delTokens)) require.NoError(err) require.Equal(amount, delTokens) + keeper.Jail(ctx, sdk.GetConsAddress(PKs[0])) // end block s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.BondedPoolName, stakingtypes.NotBondedPoolName, gomock.Any()) @@ -982,6 +938,7 @@ func (s *KeeperTestSuite) TestRedelegateFromUnbondingValidator() { require.True(blockTime.Add(params.UnbondingTime).Equal(ubd.Entries[0].CompletionTime)) } +// NOTE: undelegating all self-delegation does not put a validator in unbonding state with LSM func (s *KeeperTestSuite) TestRedelegateFromUnbondedValidator() { ctx, keeper := s.ctx, s.stakingKeeper require := s.Require() @@ -1021,11 +978,13 @@ func (s *KeeperTestSuite) TestRedelegateFromUnbondedValidator() { ctx = ctx.WithBlockHeight(10) ctx = ctx.WithBlockTime(time.Unix(333, 0)) - // unbond the all self-delegation to put validator in unbonding state + // unbond the all self-delegation s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.BondedPoolName, stakingtypes.NotBondedPoolName, gomock.Any()) _, amount, err := keeper.Undelegate(ctx, val0AccAddr, addrVals[0], math.LegacyNewDecFromInt(delTokens)) require.NoError(err) require.Equal(amount, delTokens) + // jail to put validator in unbonding state + keeper.Jail(ctx, sdk.ConsAddress(PKs[0].Address())) // end block s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.BondedPoolName, stakingtypes.NotBondedPoolName, gomock.Any()) diff --git a/x/staking/keeper/genesis.go b/x/staking/keeper/genesis.go index 738614ab8613..e7017e68c7bf 100644 --- a/x/staking/keeper/genesis.go +++ b/x/staking/keeper/genesis.go @@ -205,6 +205,51 @@ func (k Keeper) InitGenesis(ctx context.Context, data *types.GenesisState) (res } } + // Set the total liquid staked tokens + k.SetTotalLiquidStakedTokens(ctx, data.TotalLiquidStakedTokens) + + // Set each tokenize share record, as well as the last tokenize share record ID + latestID := uint64(0) + for _, tokenizeShareRecord := range data.TokenizeShareRecords { + if err := k.AddTokenizeShareRecord(ctx, tokenizeShareRecord); err != nil { + panic(err) + } + if tokenizeShareRecord.Id > latestID { + latestID = tokenizeShareRecord.Id + } + } + if data.LastTokenizeShareRecordId < latestID { + panic("Tokenize share record specified with ID greater than the latest ID") + } + k.SetLastTokenizeShareRecordID(ctx, data.LastTokenizeShareRecordId) + + // Set the tokenize shares locks for accounts that have disabled tokenizing shares + // The lock can either be in status LOCKED or LOCK_EXPIRING + // If it is in status LOCK_EXPIRING, a the unlocking must also be queued + for _, tokenizeShareLock := range data.TokenizeShareLocks { + address, err := k.authKeeper.AddressCodec().StringToBytes(tokenizeShareLock.Address) + if err != nil { + panic(err) + } + + switch tokenizeShareLock.Status { + case types.TOKENIZE_SHARE_LOCK_STATUS_LOCKED.String(): + k.AddTokenizeSharesLock(ctx, address) + + case types.TOKENIZE_SHARE_LOCK_STATUS_LOCK_EXPIRING.String(): + completionTime := tokenizeShareLock.CompletionTime + + authorizations := k.GetPendingTokenizeShareAuthorizations(ctx, completionTime) + authorizations.Addresses = append(authorizations.Addresses, sdk.AccAddress(address).String()) + + k.SetPendingTokenizeShareAuthorizations(ctx, completionTime, authorizations) + k.SetTokenizeSharesUnlockTime(ctx, address, completionTime) + + default: + panic(fmt.Sprintf("Unsupported tokenize share lock status %s", tokenizeShareLock.Status)) + } + } + return res } @@ -267,13 +312,17 @@ func (k Keeper) ExportGenesis(ctx sdk.Context) *types.GenesisState { } return &types.GenesisState{ - Params: params, - LastTotalPower: totalPower, - LastValidatorPowers: lastValidatorPowers, - Validators: allValidators, - Delegations: allDelegations, - UnbondingDelegations: unbondingDelegations, - Redelegations: redelegations, - Exported: true, + Params: params, + LastTotalPower: totalPower, + LastValidatorPowers: lastValidatorPowers, + Validators: allValidators, + Delegations: allDelegations, + UnbondingDelegations: unbondingDelegations, + Redelegations: redelegations, + Exported: true, + TokenizeShareRecords: k.GetAllTokenizeShareRecords(ctx), + LastTokenizeShareRecordId: k.GetLastTokenizeShareRecordID(ctx), + TotalLiquidStakedTokens: k.GetTotalLiquidStakedTokens(ctx), + TokenizeShareLocks: k.GetAllTokenizeSharesLocks(ctx), } } diff --git a/x/staking/keeper/grpc_query.go b/x/staking/keeper/grpc_query.go index 890ca859c12b..19f2077097bc 100644 --- a/x/staking/keeper/grpc_query.go +++ b/x/staking/keeper/grpc_query.go @@ -7,6 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + "cosmossdk.io/math" "cosmossdk.io/store/prefix" storetypes "cosmossdk.io/store/types" @@ -594,6 +595,7 @@ func delegationToDelegationResponse(ctx context.Context, k *Keeper, del types.De del.DelegatorAddress, del.GetValidatorAddr(), del.Shares, + del.ValidatorBond, sdk.NewCoin(bondDenom, val.TokensFromShares(del.Shares).TruncateInt()), ), nil } @@ -658,3 +660,178 @@ func redelegationsToRedelegationResponses(ctx context.Context, k *Keeper, redels return resp, nil } + +// Query for individual tokenize share record information by share by id +func (k Querier) TokenizeShareRecordById(c context.Context, req *types.QueryTokenizeShareRecordByIdRequest) (*types.QueryTokenizeShareRecordByIdResponse, error) { //nolint:revive // fixing this would require changing the .proto files, so we might as well leave it alone + if req == nil { + return nil, status.Error(codes.InvalidArgument, "empty request") + } + + ctx := sdk.UnwrapSDKContext(c) + record, err := k.GetTokenizeShareRecord(ctx, req.Id) + if err != nil { + return nil, err + } + + return &types.QueryTokenizeShareRecordByIdResponse{ + Record: record, + }, nil +} + +// Query for individual tokenize share record information by share denom +func (k Querier) TokenizeShareRecordByDenom(c context.Context, req *types.QueryTokenizeShareRecordByDenomRequest) (*types.QueryTokenizeShareRecordByDenomResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "empty request") + } + + ctx := sdk.UnwrapSDKContext(c) + record, err := k.GetTokenizeShareRecordByDenom(ctx, req.Denom) + if err != nil { + return nil, err + } + + return &types.QueryTokenizeShareRecordByDenomResponse{ + Record: record, + }, nil +} + +// Query tokenize share records by address +func (k Querier) TokenizeShareRecordsOwned(c context.Context, req *types.QueryTokenizeShareRecordsOwnedRequest) (*types.QueryTokenizeShareRecordsOwnedResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "empty request") + } + + ctx := sdk.UnwrapSDKContext(c) + owner, err := k.authKeeper.AddressCodec().StringToBytes(req.Owner) + if err != nil { + return nil, err + } + records := k.GetTokenizeShareRecordsByOwner(ctx, owner) + + return &types.QueryTokenizeShareRecordsOwnedResponse{ + Records: records, + }, nil +} + +// Query for all tokenize share records +func (k Querier) AllTokenizeShareRecords(c context.Context, req *types.QueryAllTokenizeShareRecordsRequest) (*types.QueryAllTokenizeShareRecordsResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "empty request") + } + ctx := sdk.UnwrapSDKContext(c) + + var records []types.TokenizeShareRecord + + store := k.storeService.OpenKVStore(ctx) + valStore := prefix.NewStore(runtime.KVStoreAdapter(store), types.TokenizeShareRecordPrefix) + pageRes, err := query.FilteredPaginate(valStore, req.Pagination, func(key, value []byte, accumulate bool) (bool, error) { + var tokenizeShareRecord types.TokenizeShareRecord + if err := k.cdc.Unmarshal(value, &tokenizeShareRecord); err != nil { + return false, err + } + + if accumulate { + records = append(records, tokenizeShareRecord) + } + return true, nil + }) + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + + return &types.QueryAllTokenizeShareRecordsResponse{ + Records: records, + Pagination: pageRes, + }, nil +} + +// Query for last tokenize share record id +func (k Querier) LastTokenizeShareRecordId(c context.Context, req *types.QueryLastTokenizeShareRecordIdRequest) (*types.QueryLastTokenizeShareRecordIdResponse, error) { //nolint:revive // fixing this would require changing the .proto files, so we might as well leave it alone + if req == nil { + return nil, status.Error(codes.InvalidArgument, "empty request") + } + + ctx := sdk.UnwrapSDKContext(c) + return &types.QueryLastTokenizeShareRecordIdResponse{ + Id: k.GetLastTokenizeShareRecordID(ctx), + }, nil +} + +// Query for total tokenized staked assets +func (k Querier) TotalTokenizeSharedAssets(c context.Context, req *types.QueryTotalTokenizeSharedAssetsRequest) (*types.QueryTotalTokenizeSharedAssetsResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "empty request") + } + ctx := sdk.UnwrapSDKContext(c) + records := k.GetAllTokenizeShareRecords(ctx) + totalTokenizeShared := math.ZeroInt() + + for _, record := range records { + moduleAcc := record.GetModuleAddress() + valAddr, err := k.validatorAddressCodec.StringToBytes(record.Validator) + if err != nil { + return nil, err + } + + validator, err := k.GetValidator(ctx, valAddr) + if err != nil { + return nil, err + } + + delegation, err := k.GetDelegation(ctx, moduleAcc, valAddr) + if err != nil { + return nil, err + } + + tokens := validator.TokensFromShares(delegation.Shares) + totalTokenizeShared = totalTokenizeShared.Add(tokens.RoundInt()) + } + + bondDenom, err := k.BondDenom(ctx) + if err != nil { + return nil, err + } + + return &types.QueryTotalTokenizeSharedAssetsResponse{ + Value: sdk.NewCoin(bondDenom, totalTokenizeShared), + }, nil +} + +// Query for total tokenized staked tokens +// Liquid staked tokens are either tokenized delegations or delegations +// owned by a module account +func (k Querier) TotalLiquidStaked(c context.Context, req *types.QueryTotalLiquidStaked) (*types.QueryTotalLiquidStakedResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "empty request") + } + ctx := sdk.UnwrapSDKContext(c) + totalLiquidStaked := k.GetTotalLiquidStakedTokens(ctx).String() + return &types.QueryTotalLiquidStakedResponse{ + Tokens: totalLiquidStaked, + }, nil +} + +// Query status of an account's tokenize share lock +func (k Querier) TokenizeShareLockInfo(c context.Context, req *types.QueryTokenizeShareLockInfo) (*types.QueryTokenizeShareLockInfoResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "empty request") + } + ctx := sdk.UnwrapSDKContext(c) + + address, err := k.authKeeper.AddressCodec().StringToBytes(req.Address) + if err != nil { + panic(err) + } + + status, completionTime := k.GetTokenizeSharesLock(ctx, address) + + timeString := "" + if !completionTime.IsZero() { + timeString = completionTime.String() + } + + return &types.QueryTokenizeShareLockInfoResponse{ + Status: status.String(), + ExpirationTime: timeString, + }, nil +} diff --git a/x/staking/keeper/liquid_stake.go b/x/staking/keeper/liquid_stake.go new file mode 100644 index 000000000000..91dde61a9e28 --- /dev/null +++ b/x/staking/keeper/liquid_stake.go @@ -0,0 +1,546 @@ +package keeper + +import ( + "context" + "time" + + "cosmossdk.io/math" + storetypes "cosmossdk.io/store/types" + + "github.com/cosmos/cosmos-sdk/runtime" + sdk "github.com/cosmos/cosmos-sdk/types" + vesting "github.com/cosmos/cosmos-sdk/x/auth/vesting/exported" + "github.com/cosmos/cosmos-sdk/x/staking/types" +) + +// SetTotalLiquidStakedTokens stores the total outstanding tokens owned by a liquid staking provider +func (k Keeper) SetTotalLiquidStakedTokens(ctx context.Context, tokens math.Int) { + store := k.storeService.OpenKVStore(ctx) + + tokensBz, err := tokens.Marshal() + if err != nil { + panic(err) + } + + store.Set(types.TotalLiquidStakedTokensKey, tokensBz) +} + +// GetTotalLiquidStakedTokens returns the total outstanding tokens owned by a liquid staking provider +// Returns zero if the total liquid stake amount has not been initialized +func (k Keeper) GetTotalLiquidStakedTokens(ctx context.Context) math.Int { + store := k.storeService.OpenKVStore(ctx) + tokensBz, err := store.Get(types.TotalLiquidStakedTokensKey) + if err != nil { + panic(err) + } + + if tokensBz == nil { + return math.ZeroInt() + } + + var tokens math.Int + if err := tokens.Unmarshal(tokensBz); err != nil { + panic(err) + } + + return tokens +} + +// Checks if an account associated with a given delegation is related to liquid staking +// +// This is determined by checking if the account has a 32-length address +// which will identify the following scenarios: +// - An account has tokenized their shares, and thus the delegation is +// owned by the tokenize share record module account +// - A liquid staking provider is delegating through an ICA account +// +// Both ICA accounts and tokenize share record module accounts have 32-length addresses +// NOTE: This will have to be refactored before adapting it to chains beyond gaia +// as other chains may have 32-length addresses that are not related to the above scenarios +func (k Keeper) DelegatorIsLiquidStaker(delegatorAddress sdk.AccAddress) bool { + return len(delegatorAddress) == 32 +} + +// CheckExceedsGlobalLiquidStakingCap checks if a liquid delegation would cause the +// global liquid staking cap to be exceeded +// A liquid delegation is defined as either tokenized shares, or a delegation from an ICA Account +// The total stake is determined by the balance of the bonded pool +// If the delegation's shares are already bonded (e.g. in the event of a tokenized share) +// the tokens are already included in the bonded pool +// If the delegation's shares are not bonded (e.g. normal delegation), +// we need to add the tokens to the current bonded pool balance to get the total staked +func (k Keeper) CheckExceedsGlobalLiquidStakingCap(ctx context.Context, tokens math.Int, sharesAlreadyBonded bool) (bool, error) { + liquidStakingCap, err := k.GlobalLiquidStakingCap(ctx) + if err != nil { + return false, err + } + + liquidStakedAmount := k.GetTotalLiquidStakedTokens(ctx) + + // Determine the total stake from the balance of the bonded pool + // If this is not a tokenized delegation, we need to add the tokens to the pool balance since + // they would not have been counted yet + // If this is for a tokenized delegation, the tokens are already included in the pool balance + totalStakedAmount, err := k.TotalBondedTokens(ctx) + if err != nil { + return false, err + } + + if !sharesAlreadyBonded { + totalStakedAmount = totalStakedAmount.Add(tokens) + } + + // Calculate the percentage of stake that is liquid + + updatedLiquidStaked := math.LegacyNewDecFromInt(liquidStakedAmount.Add(tokens)) + liquidStakePercent := updatedLiquidStaked.Quo(math.LegacyNewDecFromInt(totalStakedAmount)) + + return liquidStakePercent.GT(liquidStakingCap), nil +} + +// CheckExceedsValidatorBondCap checks if a liquid delegation to a validator would cause +// the liquid shares to exceed the validator bond factor +// A liquid delegation is defined as either tokenized shares, or a delegation from an ICA Account +// Returns true if the cap is exceeded +func (k Keeper) CheckExceedsValidatorBondCap(ctx context.Context, validator types.Validator, shares math.LegacyDec) (bool, error) { + validatorBondFactor, err := k.ValidatorBondFactor(ctx) + if err != nil { + return false, err + } + + if validatorBondFactor.Equal(types.ValidatorBondCapDisabled) { + return false, nil + } + maxValLiquidShares := validator.ValidatorBondShares.Mul(validatorBondFactor) + + return validator.LiquidShares.Add(shares).GT(maxValLiquidShares), nil +} + +// CheckExceedsValidatorLiquidStakingCap checks if a liquid delegation could cause the +// total liquid shares to exceed the liquid staking cap +// A liquid delegation is defined as either tokenized shares, or a delegation from an ICA Account +// If the liquid delegation's shares are already bonded (e.g. in the event of a tokenized share) +// the tokens are already included in the validator's delegator shares +// If the liquid delegation's shares are not bonded (e.g. normal delegation), +// we need to add the shares to the current validator's delegator shares to get the total shares +// Returns true if the cap is exceeded +func (k Keeper) CheckExceedsValidatorLiquidStakingCap(ctx context.Context, validator types.Validator, shares math.LegacyDec, sharesAlreadyBonded bool) (bool, error) { + updatedLiquidShares := validator.LiquidShares.Add(shares) + + updatedTotalShares := validator.DelegatorShares + if !sharesAlreadyBonded { + updatedTotalShares = updatedTotalShares.Add(shares) + } + + liquidStakePercent := updatedLiquidShares.Quo(updatedTotalShares) + liquidStakingCap, err := k.ValidatorLiquidStakingCap(ctx) + if err != nil { + return false, err + } + + return liquidStakePercent.GT(liquidStakingCap), nil +} + +// SafelyIncreaseTotalLiquidStakedTokens increments the total liquid staked tokens +// if the global cap is not surpassed by this delegation +// +// The percentage of liquid staked tokens must be less than the GlobalLiquidStakingCap: +// (TotalLiquidStakedTokens / TotalStakedTokens) <= GlobalLiquidStakingCap +func (k Keeper) SafelyIncreaseTotalLiquidStakedTokens(ctx context.Context, amount math.Int, sharesAlreadyBonded bool) error { + exceedsCap, err := k.CheckExceedsGlobalLiquidStakingCap(ctx, amount, sharesAlreadyBonded) + if err != nil { + return err + } + + if exceedsCap { + return types.ErrGlobalLiquidStakingCapExceeded + } + + k.SetTotalLiquidStakedTokens(ctx, k.GetTotalLiquidStakedTokens(ctx).Add(amount)) + return nil +} + +// DecreaseTotalLiquidStakedTokens decrements the total liquid staked tokens +func (k Keeper) DecreaseTotalLiquidStakedTokens(ctx context.Context, amount math.Int) error { + totalLiquidStake := k.GetTotalLiquidStakedTokens(ctx) + if amount.GT(totalLiquidStake) { + return types.ErrTotalLiquidStakedUnderflow + } + k.SetTotalLiquidStakedTokens(ctx, totalLiquidStake.Sub(amount)) + return nil +} + +// SafelyIncreaseValidatorLiquidShares increments the liquid shares on a validator, if: +// the validator bond factor and validator liquid staking cap will not be exceeded by this delegation +// +// The percentage of validator liquid shares must be less than the ValidatorLiquidStakingCap, +// and the total liquid staked shares cannot exceed the validator bond cap +// 1. (TotalLiquidStakedTokens / TotalStakedTokens) <= ValidatorLiquidStakingCap +// 2. LiquidShares <= (ValidatorBondShares * ValidatorBondFactor) +func (k Keeper) SafelyIncreaseValidatorLiquidShares(ctx context.Context, valAddress sdk.ValAddress, shares math.LegacyDec, sharesAlreadyBonded bool) (types.Validator, error) { + validator, err := k.GetValidator(ctx, valAddress) + if err != nil { + return validator, err + } + + // Confirm the validator bond factor and validator liquid staking cap will not be exceeded + exceedsValidatorBondCap, err := k.CheckExceedsValidatorBondCap(ctx, validator, shares) + if err != nil { + return validator, err + } + + if exceedsValidatorBondCap { + return validator, types.ErrInsufficientValidatorBondShares + } + + exceedsValidatorLiquidStakingCap, err := k.CheckExceedsValidatorLiquidStakingCap(ctx, validator, shares, sharesAlreadyBonded) + if err != nil { + return validator, err + } + + if exceedsValidatorLiquidStakingCap { + return validator, types.ErrValidatorLiquidStakingCapExceeded + } + + // Increment the validator's liquid shares + validator.LiquidShares = validator.LiquidShares.Add(shares) + k.SetValidator(ctx, validator) + + return validator, nil +} + +// DecreaseValidatorLiquidShares decrements the liquid shares on a validator +func (k Keeper) DecreaseValidatorLiquidShares(ctx context.Context, valAddress sdk.ValAddress, shares math.LegacyDec) (types.Validator, error) { + validator, err := k.GetValidator(ctx, valAddress) + if err != nil { + return validator, err + } + + if shares.GT(validator.LiquidShares) { + return validator, types.ErrValidatorLiquidSharesUnderflow + } + + validator.LiquidShares = validator.LiquidShares.Sub(shares) + k.SetValidator(ctx, validator) + + return validator, nil +} + +// Increase validator bond shares increments the validator's self bond +// in the event that the delegation amount on a validator bond delegation is increased +func (k Keeper) IncreaseValidatorBondShares(ctx context.Context, valAddress sdk.ValAddress, shares math.LegacyDec) error { + validator, err := k.GetValidator(ctx, valAddress) + if err != nil { + return err + } + + validator.ValidatorBondShares = validator.ValidatorBondShares.Add(shares) + k.SetValidator(ctx, validator) + + return nil +} + +// SafelyDecreaseValidatorBond decrements the validator's self bond +// so long as it will not cause the current delegations to exceed the threshold +// set by validator bond factor +func (k Keeper) SafelyDecreaseValidatorBond(ctx context.Context, valAddress sdk.ValAddress, shares math.LegacyDec) error { + validator, err := k.GetValidator(ctx, valAddress) + if err != nil { + return err + } + + // Check if the decreased self bond will cause the validator bond threshold to be exceeded + validatorBondFactor, err := k.ValidatorBondFactor(ctx) + if err != nil { + return err + } + + validatorBondEnabled := !validatorBondFactor.Equal(types.ValidatorBondCapDisabled) + maxValTotalShare := validator.ValidatorBondShares.Sub(shares).Mul(validatorBondFactor) + + if validatorBondEnabled && validator.LiquidShares.GT(maxValTotalShare) { + return types.ErrInsufficientValidatorBondShares + } + + // Decrement the validator's self bond + validator.ValidatorBondShares = validator.ValidatorBondShares.Sub(shares) + k.SetValidator(ctx, validator) + + return nil +} + +// Adds a lock that prevents tokenizing shares for an account +// The tokenize share lock store is implemented by keying on the account address +// and storing a timestamp as the value. The timestamp is empty when the lock is +// set and gets populated with the unlock completion time once the unlock has started +func (k Keeper) AddTokenizeSharesLock(ctx context.Context, address sdk.AccAddress) { + store := k.storeService.OpenKVStore(ctx) + key := types.GetTokenizeSharesLockKey(address) + store.Set(key, sdk.FormatTimeBytes(time.Time{})) +} + +// Removes the tokenize share lock for an account to enable tokenizing shares +func (k Keeper) RemoveTokenizeSharesLock(ctx context.Context, address sdk.AccAddress) { + store := k.storeService.OpenKVStore(ctx) + key := types.GetTokenizeSharesLockKey(address) + store.Delete(key) +} + +// Updates the timestamp associated with a lock to the time at which the lock expires +func (k Keeper) SetTokenizeSharesUnlockTime(ctx context.Context, address sdk.AccAddress, completionTime time.Time) { + store := k.storeService.OpenKVStore(ctx) + key := types.GetTokenizeSharesLockKey(address) + store.Set(key, sdk.FormatTimeBytes(completionTime)) +} + +// Checks if there is currently a tokenize share lock for a given account +// Returns the status indicating whether the account is locked, unlocked, +// or as a lock expiring. If the lock is expiring, the expiration time is returned +func (k Keeper) GetTokenizeSharesLock(ctx context.Context, address sdk.AccAddress) (status types.TokenizeShareLockStatus, unlockTime time.Time) { + store := k.storeService.OpenKVStore(ctx) + key := types.GetTokenizeSharesLockKey(address) + bz, err := store.Get(key) + if err != nil { + panic(err) + } + + if len(bz) == 0 { + return types.TOKENIZE_SHARE_LOCK_STATUS_UNLOCKED, time.Time{} + } + unlockTime, err = sdk.ParseTimeBytes(bz) + if err != nil { + panic(err) + } + if unlockTime.IsZero() { + return types.TOKENIZE_SHARE_LOCK_STATUS_LOCKED, time.Time{} + } + return types.TOKENIZE_SHARE_LOCK_STATUS_LOCK_EXPIRING, unlockTime +} + +// Returns all tokenize share locks +func (k Keeper) GetAllTokenizeSharesLocks(ctx context.Context) (tokenizeShareLocks []types.TokenizeShareLock) { + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) + + iterator := storetypes.KVStorePrefixIterator(store, types.TokenizeSharesLockPrefix) + defer iterator.Close() + + for ; iterator.Valid(); iterator.Next() { + addressBz := iterator.Key()[2:] // remove prefix bytes and address length + unlockTime, err := sdk.ParseTimeBytes(iterator.Value()) + if err != nil { + panic(err) + } + + var status types.TokenizeShareLockStatus + if unlockTime.IsZero() { + status = types.TOKENIZE_SHARE_LOCK_STATUS_LOCKED + } else { + status = types.TOKENIZE_SHARE_LOCK_STATUS_LOCK_EXPIRING + } + + bechPrefix := sdk.GetConfig().GetBech32AccountAddrPrefix() + lock := types.TokenizeShareLock{ + Address: sdk.MustBech32ifyAddressBytes(bechPrefix, addressBz), + Status: status.String(), + CompletionTime: unlockTime, + } + + tokenizeShareLocks = append(tokenizeShareLocks, lock) + } + + return tokenizeShareLocks +} + +// Stores a list of addresses pending tokenize share unlocking at the same time +func (k Keeper) SetPendingTokenizeShareAuthorizations(ctx context.Context, completionTime time.Time, authorizations types.PendingTokenizeShareAuthorizations) { + store := k.storeService.OpenKVStore(ctx) + timeKey := types.GetTokenizeShareAuthorizationTimeKey(completionTime) + bz := k.cdc.MustMarshal(&authorizations) + store.Set(timeKey, bz) +} + +// Returns a list of addresses pending tokenize share unlocking at the same time +func (k Keeper) GetPendingTokenizeShareAuthorizations(ctx context.Context, completionTime time.Time) types.PendingTokenizeShareAuthorizations { + store := k.storeService.OpenKVStore(ctx) + + timeKey := types.GetTokenizeShareAuthorizationTimeKey(completionTime) + bz, err := store.Get(timeKey) + if err != nil { + panic(err) + } + + authorizations := types.PendingTokenizeShareAuthorizations{Addresses: []string{}} + if len(bz) == 0 { + return authorizations + } + k.cdc.MustUnmarshal(bz, &authorizations) + + return authorizations +} + +// Inserts the address into a queue where it will sit for 1 unbonding period +// before the tokenize share lock is removed +// Returns the completion time +func (k Keeper) QueueTokenizeSharesAuthorization(ctx context.Context, address sdk.AccAddress) (time.Time, error) { + sdkCtx := sdk.UnwrapSDKContext(ctx) + blockTime := sdkCtx.BlockTime() + + params, err := k.GetParams(ctx) + if err != nil { + return blockTime, err + } + + completionTime := blockTime.Add(params.UnbondingTime) + + // Append the address to the list of addresses that also unlock at this time + authorizations := k.GetPendingTokenizeShareAuthorizations(ctx, completionTime) + authorizations.Addresses = append(authorizations.Addresses, address.String()) + + k.SetPendingTokenizeShareAuthorizations(ctx, completionTime, authorizations) + k.SetTokenizeSharesUnlockTime(ctx, address, completionTime) + + return completionTime, nil +} + +// Cancels a pending tokenize share authorization by removing the lock from the queue +func (k Keeper) CancelTokenizeShareLockExpiration(ctx context.Context, address sdk.AccAddress, completionTime time.Time) { + authorizations := k.GetPendingTokenizeShareAuthorizations(ctx, completionTime) + + updatedAddresses := []string{} + for _, expiringAddress := range authorizations.Addresses { + if address.String() != expiringAddress { + updatedAddresses = append(updatedAddresses, expiringAddress) + } + } + + authorizations.Addresses = updatedAddresses + k.SetPendingTokenizeShareAuthorizations(ctx, completionTime, authorizations) +} + +// Unlocks all queued tokenize share authorizations that have matured +// (i.e. have waited the full unbonding period) +func (k Keeper) RemoveExpiredTokenizeShareLocks(ctx context.Context, blockTime time.Time) ([]string, error) { + store := k.storeService.OpenKVStore(ctx) + + // iterators all time slices from time 0 until the current block time + prefixEnd := storetypes.InclusiveEndBytes(types.GetTokenizeShareAuthorizationTimeKey(blockTime)) + iterator, err := store.Iterator(types.TokenizeSharesUnlockQueuePrefix, prefixEnd) + if err != nil { + return []string{}, err + } + + defer iterator.Close() + + // collect all unlocked addresses + unlockedAddresses := []string{} + keys := [][]byte{} + for ; iterator.Valid(); iterator.Next() { + authorizations := types.PendingTokenizeShareAuthorizations{} + k.cdc.MustUnmarshal(iterator.Value(), &authorizations) + unlockedAddresses = append(unlockedAddresses, authorizations.Addresses...) + keys = append(keys, iterator.Key()) + } + + // delete unlocked addresses keys + for _, k := range keys { + store.Delete(k) + } + + // remove the lock from each unlocked address + for _, unlockedAddress := range unlockedAddresses { + unlockedAddr, err := k.authKeeper.AddressCodec().StringToBytes(unlockedAddress) + if err != nil { + return unlockedAddresses, err + } + k.RemoveTokenizeSharesLock(ctx, unlockedAddr) + } + + return unlockedAddresses, nil +} + +// Calculates and sets the global liquid staked tokens and liquid shares by validator +// The totals are determined by looping each delegation record and summing the stake +// if the delegator has a 32-length address. Checking for a 32-length address will capture +// ICA accounts, as well as tokenized delegations which are owned by module accounts +// under the hood +// This function must be called in the upgrade handler which onboards LSM +func (k Keeper) RefreshTotalLiquidStaked(ctx context.Context) error { + validators, err := k.GetAllValidators(ctx) + if err != nil { + return err + } + + // First reset each validator's liquid shares to 0 + for _, validator := range validators { + validator.LiquidShares = math.LegacyZeroDec() + k.SetValidator(ctx, validator) + } + + delegations, err := k.GetAllDelegations(ctx) + if err != nil { + return err + } + + // Sum up the total liquid tokens and increment each validator's liquid shares + totalLiquidStakedTokens := math.ZeroInt() + for _, delegation := range delegations { + delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(delegation.DelegatorAddress) + if err != nil { + return err + } + + // If the delegator is either an ICA account or a tokenize share module account, + // the delegation should be considered to be associated with liquid staking + // Consequently, the global number of liquid staked tokens, and the total + // liquid shares on the validator should be incremented + if k.DelegatorIsLiquidStaker(delegatorAddress) { + validatorAddress, err := k.ValidatorAddressCodec().StringToBytes(delegation.ValidatorAddress) + if err != nil { + return err + } + validator, err := k.GetValidator(ctx, validatorAddress) + if err != nil { + return err + } + + liquidShares := delegation.Shares + liquidTokens := validator.TokensFromShares(liquidShares).TruncateInt() + + validator.LiquidShares = validator.LiquidShares.Add(liquidShares) + k.SetValidator(ctx, validator) + + totalLiquidStakedTokens = totalLiquidStakedTokens.Add(liquidTokens) + } + } + + k.SetTotalLiquidStakedTokens(ctx, totalLiquidStakedTokens) + + return nil +} + +// CheckVestedDelegationInVestingAccount verifies whether the provided vesting account +// holds a vested delegation for an equal or greater amount of the specified coin +// at the given block time. +// +// Note that this function facilitates a specific use-case in the LSM module for tokenizing vested delegations. +// For more details, see https://github.com/cosmos/gaia/issues/2877. +func CheckVestedDelegationInVestingAccount(account vesting.VestingAccount, blockTime time.Time, coin sdk.Coin) bool { + // Get the vesting coins at the current block time + vestingAmount := account.GetVestingCoins(blockTime).AmountOf(coin.Denom) + + // Note that the "DelegatedVesting" and "DelegatedFree" values + // were computed during the last delegation or undelegation operation + delVestingAmount := account.GetDelegatedVesting().AmountOf(coin.Denom) + delVested := account.GetDelegatedFree() + + // Calculate the new vested delegated coins + x := math.MinInt(vestingAmount.Sub(delVestingAmount), math.ZeroInt()) + + // Add the newly vested delegated coins to the existing delegated vested amount + if !x.IsZero() { + delVested = delVested.Add(sdk.NewCoin(coin.Denom, x.Abs())) + } + + // Check if the total delegated vested amount is greater than or equal to the specified coin amount + return delVested.AmountOf(coin.Denom).GTE(coin.Amount) +} diff --git a/x/staking/keeper/liquid_stake_test.go b/x/staking/keeper/liquid_stake_test.go new file mode 100644 index 000000000000..0879753d47be --- /dev/null +++ b/x/staking/keeper/liquid_stake_test.go @@ -0,0 +1,928 @@ +package keeper_test + +import ( + "testing" + "time" + + "github.com/stretchr/testify/require" + + "cosmossdk.io/math" + + "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/address" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" + "github.com/cosmos/cosmos-sdk/x/staking/keeper" + "github.com/cosmos/cosmos-sdk/x/staking/types" +) + +// Tests Set/Get TotalLiquidStakedTokens +func (s *KeeperTestSuite) TestTotalLiquidStakedTokens() { + ctx, keeper := s.ctx, s.stakingKeeper + require := s.Require() + + // Update the total liquid staked + total := math.NewInt(100) + keeper.SetTotalLiquidStakedTokens(ctx, total) + + // Confirm it was updated + require.Equal(total, keeper.GetTotalLiquidStakedTokens(ctx), "initial") +} + +// Tests Increase/Decrease TotalValidatorLiquidShares +func (s *KeeperTestSuite) TestValidatorLiquidShares() { + ctx, keeper := s.ctx, s.stakingKeeper + + // Create a validator address + privKey := secp256k1.GenPrivKey() + pubKey := privKey.PubKey() + valAddress := sdk.ValAddress(pubKey.Address()) + + // Set an initial total + initial := math.LegacyNewDec(100) + validator := types.Validator{ + OperatorAddress: valAddress.String(), + LiquidShares: initial, + } + keeper.SetValidator(ctx, validator) +} + +// Tests DecreaseTotalLiquidStakedTokens +func (s *KeeperTestSuite) TestDecreaseTotalLiquidStakedTokens() { + ctx, keeper := s.ctx, s.stakingKeeper + require := s.Require() + + intitialTotalLiquidStaked := math.NewInt(100) + decreaseAmount := math.NewInt(10) + + // Set the total liquid staked to an arbitrary value + keeper.SetTotalLiquidStakedTokens(ctx, intitialTotalLiquidStaked) + + // Decrease the total liquid stake and confirm the total was updated + err := keeper.DecreaseTotalLiquidStakedTokens(ctx, decreaseAmount) + require.NoError(err, "no error expected when decreasing total liquid staked tokens") + require.Equal(intitialTotalLiquidStaked.Sub(decreaseAmount), keeper.GetTotalLiquidStakedTokens(ctx)) + + // Attempt to decrease by an excessive amount, it should error + err = keeper.DecreaseTotalLiquidStakedTokens(ctx, intitialTotalLiquidStaked) + require.ErrorIs(err, types.ErrTotalLiquidStakedUnderflow) +} + +// Tests CheckExceedsValidatorBondCap +func (s *KeeperTestSuite) TestCheckExceedsValidatorBondCap() { + ctx, keeper := s.ctx, s.stakingKeeper + require := s.Require() + + testCases := []struct { + name string + validatorShares math.LegacyDec + validatorBondFactor math.LegacyDec + currentLiquidShares math.LegacyDec + newShares math.LegacyDec + expectedExceeds bool + }{ + { + // Validator Shares: 100, Factor: 1, Current Shares: 90 => 100 Max Shares, Capacity: 10 + // New Shares: 5 - below cap + name: "factor 1 - below cap", + validatorShares: math.LegacyNewDec(100), + validatorBondFactor: math.LegacyNewDec(1), + currentLiquidShares: math.LegacyNewDec(90), + newShares: math.LegacyNewDec(5), + expectedExceeds: false, + }, + { + // Validator Shares: 100, Factor: 1, Current Shares: 90 => 100 Max Shares, Capacity: 10 + // New Shares: 10 - at cap + name: "factor 1 - at cap", + validatorShares: math.LegacyNewDec(100), + validatorBondFactor: math.LegacyNewDec(1), + currentLiquidShares: math.LegacyNewDec(90), + newShares: math.LegacyNewDec(10), + expectedExceeds: false, + }, + { + // Validator Shares: 100, Factor: 1, Current Shares: 90 => 100 Max Shares, Capacity: 10 + // New Shares: 15 - above cap + name: "factor 1 - above cap", + validatorShares: math.LegacyNewDec(100), + validatorBondFactor: math.LegacyNewDec(1), + currentLiquidShares: math.LegacyNewDec(90), + newShares: math.LegacyNewDec(15), + expectedExceeds: true, + }, + { + // Validator Shares: 100, Factor: 2, Current Shares: 90 => 200 Max Shares, Capacity: 110 + // New Shares: 5 - below cap + name: "factor 2 - well below cap", + validatorShares: math.LegacyNewDec(100), + validatorBondFactor: math.LegacyNewDec(2), + currentLiquidShares: math.LegacyNewDec(90), + newShares: math.LegacyNewDec(5), + expectedExceeds: false, + }, + { + // Validator Shares: 100, Factor: 2, Current Shares: 90 => 200 Max Shares, Capacity: 110 + // New Shares: 100 - below cap + name: "factor 2 - below cap", + validatorShares: math.LegacyNewDec(100), + validatorBondFactor: math.LegacyNewDec(2), + currentLiquidShares: math.LegacyNewDec(90), + newShares: math.LegacyNewDec(100), + expectedExceeds: false, + }, + { + // Validator Shares: 100, Factor: 2, Current Shares: 90 => 200 Max Shares, Capacity: 110 + // New Shares: 110 - below cap + name: "factor 2 - at cap", + validatorShares: math.LegacyNewDec(100), + validatorBondFactor: math.LegacyNewDec(2), + currentLiquidShares: math.LegacyNewDec(90), + newShares: math.LegacyNewDec(110), + expectedExceeds: false, + }, + { + // Validator Shares: 100, Factor: 2, Current Shares: 90 => 200 Max Shares, Capacity: 110 + // New Shares: 111 - above cap + name: "factor 2 - above cap", + validatorShares: math.LegacyNewDec(100), + validatorBondFactor: math.LegacyNewDec(2), + currentLiquidShares: math.LegacyNewDec(90), + newShares: math.LegacyNewDec(111), + expectedExceeds: true, + }, + { + // Validator Shares: 100, Factor: 100, Current Shares: 90 => 10000 Max Shares, Capacity: 9910 + // New Shares: 100 - below cap + name: "factor 100 - below cap", + validatorShares: math.LegacyNewDec(100), + validatorBondFactor: math.LegacyNewDec(100), + currentLiquidShares: math.LegacyNewDec(90), + newShares: math.LegacyNewDec(100), + expectedExceeds: false, + }, + { + // Validator Shares: 100, Factor: 100, Current Shares: 90 => 10000 Max Shares, Capacity: 9910 + // New Shares: 9910 - at cap + name: "factor 100 - at cap", + validatorShares: math.LegacyNewDec(100), + validatorBondFactor: math.LegacyNewDec(100), + currentLiquidShares: math.LegacyNewDec(90), + newShares: math.LegacyNewDec(9910), + expectedExceeds: false, + }, + { + // Validator Shares: 100, Factor: 100, Current Shares: 90 => 10000 Max Shares, Capacity: 9910 + // New Shares: 9911 - above cap + name: "factor 100 - above cap", + validatorShares: math.LegacyNewDec(100), + validatorBondFactor: math.LegacyNewDec(100), + currentLiquidShares: math.LegacyNewDec(90), + newShares: math.LegacyNewDec(9911), + expectedExceeds: true, + }, + { + // Factor of -1 (disabled): Should always return false + name: "factor disabled", + validatorShares: math.LegacyNewDec(1), + validatorBondFactor: math.LegacyNewDec(-1), + currentLiquidShares: math.LegacyNewDec(1), + newShares: math.LegacyNewDec(1_000_000), + expectedExceeds: false, + }, + } + + for _, tc := range testCases { + s.Run(tc.name, func() { + // Update the validator bond factor + params, err := keeper.GetParams(ctx) + require.NoError(err) + params.ValidatorBondFactor = tc.validatorBondFactor + keeper.SetParams(ctx, params) + + // Create a validator with designated self-bond shares + validator := types.Validator{ + LiquidShares: tc.currentLiquidShares, + ValidatorBondShares: tc.validatorShares, + } + + // Check whether the cap is exceeded + actualExceeds, err := keeper.CheckExceedsValidatorBondCap(ctx, validator, tc.newShares) + require.NoError(err) + require.Equal(tc.expectedExceeds, actualExceeds, tc.name) + }) + } +} + +// Tests TestCheckExceedsValidatorLiquidStakingCap +func (s *KeeperTestSuite) TestCheckExceedsValidatorLiquidStakingCap() { + ctx, keeper := s.ctx, s.stakingKeeper + require := s.Require() + + testCases := []struct { + name string + validatorLiquidCap math.LegacyDec + validatorLiquidShares math.LegacyDec + validatorTotalShares math.LegacyDec + newLiquidShares math.LegacyDec + tokenizingShares bool + expectedExceeds bool + }{ + { + // Cap: 10% - Delegation Below Threshold + // Liquid Shares: 5, Total Shares: 95, New Liquid Shares: 1 + // => Liquid Shares: 5+1=6, Total Shares: 95+1=96 => 6/96 = 6% < 10% cap + name: "10 percent cap _ native delegation _ below cap", + validatorLiquidCap: math.LegacyMustNewDecFromStr("0.1"), + validatorLiquidShares: math.LegacyNewDec(5), + validatorTotalShares: math.LegacyNewDec(95), + newLiquidShares: math.LegacyNewDec(1), + tokenizingShares: false, + expectedExceeds: false, + }, + { + // Cap: 10% - Delegation At Threshold + // Liquid Shares: 5, Total Shares: 95, New Liquid Shares: 5 + // => Liquid Shares: 5+5=10, Total Shares: 95+5=100 => 10/100 = 10% == 10% cap + name: "10 percent cap _ native delegation _ equals cap", + validatorLiquidCap: math.LegacyMustNewDecFromStr("0.1"), + validatorLiquidShares: math.LegacyNewDec(5), + validatorTotalShares: math.LegacyNewDec(95), + newLiquidShares: math.LegacyNewDec(4), + tokenizingShares: false, + expectedExceeds: false, + }, + { + // Cap: 10% - Delegation Exceeds Threshold + // Liquid Shares: 5, Total Shares: 95, New Liquid Shares: 6 + // => Liquid Shares: 5+6=11, Total Shares: 95+6=101 => 11/101 = 11% > 10% cap + name: "10 percent cap _ native delegation _ exceeds cap", + validatorLiquidCap: math.LegacyMustNewDecFromStr("0.1"), + validatorLiquidShares: math.LegacyNewDec(5), + validatorTotalShares: math.LegacyNewDec(95), + newLiquidShares: math.LegacyNewDec(6), + tokenizingShares: false, + expectedExceeds: true, + }, + { + // Cap: 20% - Delegation Below Threshold + // Liquid Shares: 20, Total Shares: 220, New Liquid Shares: 29 + // => Liquid Shares: 20+29=49, Total Shares: 220+29=249 => 49/249 = 19% < 20% cap + name: "20 percent cap _ native delegation _ below cap", + validatorLiquidCap: math.LegacyMustNewDecFromStr("0.2"), + validatorLiquidShares: math.LegacyNewDec(20), + validatorTotalShares: math.LegacyNewDec(220), + newLiquidShares: math.LegacyNewDec(29), + tokenizingShares: false, + expectedExceeds: false, + }, + { + // Cap: 20% - Delegation At Threshold + // Liquid Shares: 20, Total Shares: 220, New Liquid Shares: 30 + // => Liquid Shares: 20+30=50, Total Shares: 220+30=250 => 50/250 = 20% == 20% cap + name: "20 percent cap _ native delegation _ equals cap", + validatorLiquidCap: math.LegacyMustNewDecFromStr("0.2"), + validatorLiquidShares: math.LegacyNewDec(20), + validatorTotalShares: math.LegacyNewDec(220), + newLiquidShares: math.LegacyNewDec(30), + tokenizingShares: false, + expectedExceeds: false, + }, + { + // Cap: 20% - Delegation Exceeds Threshold + // Liquid Shares: 20, Total Shares: 220, New Liquid Shares: 31 + // => Liquid Shares: 20+31=51, Total Shares: 220+31=251 => 51/251 = 21% > 20% cap + name: "20 percent cap _ native delegation _ exceeds cap", + validatorLiquidCap: math.LegacyMustNewDecFromStr("0.2"), + validatorLiquidShares: math.LegacyNewDec(20), + validatorTotalShares: math.LegacyNewDec(220), + newLiquidShares: math.LegacyNewDec(31), + tokenizingShares: false, + expectedExceeds: true, + }, + { + // Cap: 50% - Native Delegation - Delegation At Threshold + // Liquid shares: 0, Total Shares: 100, New Liquid Shares: 50 + // Total Liquid Shares: 0+50=50, Total Shares: 100+50=150 + // => 50/150 = 33% < 50% cap + name: "50 percent cap _ native delegation _ delegation equals cap", + validatorLiquidCap: math.LegacyMustNewDecFromStr("0.5"), + validatorLiquidShares: math.LegacyNewDec(0), + validatorTotalShares: math.LegacyNewDec(100), + newLiquidShares: math.LegacyNewDec(50), + tokenizingShares: false, + expectedExceeds: false, + }, + { + // Cap: 50% - Tokenized Delegation - Delegation At Threshold + // Liquid shares: 0, Total Shares: 100, New Liquid Shares: 50 + // Total Liquid Shares => 0+50=50, Total Shares: 100, New Liquid Shares: 50 + // => 50 / 100 = 50% == 50% cap + name: "50 percent cap _ tokenized delegation _ delegation equals cap", + validatorLiquidCap: math.LegacyMustNewDecFromStr("0.5"), + validatorLiquidShares: math.LegacyNewDec(0), + validatorTotalShares: math.LegacyNewDec(100), + newLiquidShares: math.LegacyNewDec(50), + tokenizingShares: true, + expectedExceeds: false, + }, + { + // Cap: 50% - Native Delegation - Delegation At Threshold + // Liquid shares: 0, Total Shares: 100, New Liquid Shares: 51 + // Total Liquid Shares: 0+51=51, Total Shares: 100+51=151 + // => 51/150 = 33% < 50% cap + name: "50 percent cap _ native delegation _ delegation equals cap", + validatorLiquidCap: math.LegacyMustNewDecFromStr("0.5"), + validatorLiquidShares: math.LegacyNewDec(0), + validatorTotalShares: math.LegacyNewDec(100), + newLiquidShares: math.LegacyNewDec(51), + tokenizingShares: false, + expectedExceeds: false, + }, + { + // Cap: 50% - Tokenized Delegation - Delegation At Threshold + // Liquid shares: 0, Total Shares: 100, New Liquid Shares: 50 + // Total Liquid Shares => 0+51=51, Total Shares: 100, New Liquid Shares: 51 + // => 51 / 100 = 51% > 50% cap + name: "50 percent cap _ tokenized delegation _ delegation equals cap", + validatorLiquidCap: math.LegacyMustNewDecFromStr("0.5"), + validatorLiquidShares: math.LegacyNewDec(0), + validatorTotalShares: math.LegacyNewDec(100), + newLiquidShares: math.LegacyNewDec(51), + tokenizingShares: true, + expectedExceeds: true, + }, + { + // Cap of 0% - everything should exceed + name: "0 percent cap", + validatorLiquidCap: math.LegacyZeroDec(), + validatorLiquidShares: math.LegacyNewDec(0), + validatorTotalShares: math.LegacyNewDec(1_000_000), + newLiquidShares: math.LegacyNewDec(1), + tokenizingShares: false, + expectedExceeds: true, + }, + { + // Cap of 100% - nothing should exceed + name: "100 percent cap", + validatorLiquidCap: math.LegacyOneDec(), + validatorLiquidShares: math.LegacyNewDec(1), + validatorTotalShares: math.LegacyNewDec(1_000_000), + newLiquidShares: math.LegacyNewDec(1), + tokenizingShares: false, + expectedExceeds: false, + }, + } + + for _, tc := range testCases { + s.Run(tc.name, func() { + // Update the validator liquid staking cap + params, err := keeper.GetParams(ctx) + require.NoError(err) + params.ValidatorLiquidStakingCap = tc.validatorLiquidCap + keeper.SetParams(ctx, params) + + // Create a validator with designated self-bond shares + validator := types.Validator{ + LiquidShares: tc.validatorLiquidShares, + DelegatorShares: tc.validatorTotalShares, + } + + // Check whether the cap is exceeded + actualExceeds, err := keeper.CheckExceedsValidatorLiquidStakingCap(ctx, validator, tc.newLiquidShares, tc.tokenizingShares) + require.NoError(err) + require.Equal(tc.expectedExceeds, actualExceeds, tc.name) + }) + } +} + +// Tests SafelyIncreaseValidatorLiquidShares +func (s *KeeperTestSuite) TestSafelyIncreaseValidatorLiquidShares() { + ctx, keeper := s.ctx, s.stakingKeeper + require := s.Require() + + // Generate a test validator address + privKey := secp256k1.GenPrivKey() + pubKey := privKey.PubKey() + valAddress := sdk.ValAddress(pubKey.Address()) + + // Helper function to check the validator's liquid shares + checkValidatorLiquidShares := func(expected math.LegacyDec, description string) { + actualValidator, err := keeper.GetValidator(ctx, valAddress) + require.NoError(err) + require.Equal(expected.TruncateInt64(), actualValidator.LiquidShares.TruncateInt64(), description) + } + + // Start with the following: + // Initial Liquid Shares: 0 + // Validator Bond Shares: 10 + // Validator TotalShares: 75 + // + // Initial Caps: + // ValidatorBondFactor: 1 (Cap applied at 10 shares) + // ValidatorLiquidStakingCap: 25% (Cap applied at 25 shares) + // + // Cap Increases: + // ValidatorBondFactor: 10 (Cap applied at 100 shares) + // ValidatorLiquidStakingCap: 40% (Cap applied at 50 shares) + initialLiquidShares := math.LegacyNewDec(0) + validatorBondShares := math.LegacyNewDec(10) + validatorTotalShares := math.LegacyNewDec(75) + + firstIncreaseAmount := math.LegacyNewDec(20) + secondIncreaseAmount := math.LegacyNewDec(10) // total increase of 30 + + initialBondFactor := math.LegacyNewDec(1) + finalBondFactor := math.LegacyNewDec(10) + initialLiquidStakingCap := math.LegacyMustNewDecFromStr("0.25") + finalLiquidStakingCap := math.LegacyMustNewDecFromStr("0.4") + + // Create a validator with designated self-bond shares + initialValidator := types.Validator{ + OperatorAddress: valAddress.String(), + LiquidShares: initialLiquidShares, + ValidatorBondShares: validatorBondShares, + DelegatorShares: validatorTotalShares, + } + keeper.SetValidator(ctx, initialValidator) + + // Set validator bond factor to a small number such that any delegation would fail, + // and set the liquid staking cap such that the first stake would succeed, but the second + // would fail + params, err := keeper.GetParams(ctx) + require.NoError(err) + params.ValidatorBondFactor = initialBondFactor + params.ValidatorLiquidStakingCap = initialLiquidStakingCap + keeper.SetParams(ctx, params) + + // Attempt to increase the validator liquid shares, it should throw an + // error that the validator bond cap was exceeded + _, err = keeper.SafelyIncreaseValidatorLiquidShares(ctx, valAddress, firstIncreaseAmount, false) + require.ErrorIs(err, types.ErrInsufficientValidatorBondShares) + checkValidatorLiquidShares(initialLiquidShares, "shares after low bond factor") + + // Change validator bond factor to a more conservative number, so that the increase succeeds + params.ValidatorBondFactor = finalBondFactor + keeper.SetParams(ctx, params) + + // Try the increase again and check that it succeeded + expectedLiquidSharesAfterFirstStake := initialLiquidShares.Add(firstIncreaseAmount) + _, err = keeper.SafelyIncreaseValidatorLiquidShares(ctx, valAddress, firstIncreaseAmount, false) + require.NoError(err) + checkValidatorLiquidShares(expectedLiquidSharesAfterFirstStake, "shares with cap loose bond cap") + + // Attempt another increase, it should fail from the liquid staking cap + _, err = keeper.SafelyIncreaseValidatorLiquidShares(ctx, valAddress, secondIncreaseAmount, false) + require.ErrorIs(err, types.ErrValidatorLiquidStakingCapExceeded) + checkValidatorLiquidShares(expectedLiquidSharesAfterFirstStake, "shares after liquid staking cap hit") + + // Raise the liquid staking cap so the new increment succeeds + params.ValidatorLiquidStakingCap = finalLiquidStakingCap + keeper.SetParams(ctx, params) + + // Finally confirm that the increase succeeded this time + expectedLiquidSharesAfterSecondStake := expectedLiquidSharesAfterFirstStake.Add(secondIncreaseAmount) + _, err = keeper.SafelyIncreaseValidatorLiquidShares(ctx, valAddress, secondIncreaseAmount, false) + require.NoError(err, "no error expected after increasing liquid staking cap") + checkValidatorLiquidShares(expectedLiquidSharesAfterSecondStake, "shares after loose liquid stake cap") +} + +// Tests DecreaseValidatorLiquidShares +func (s *KeeperTestSuite) TestDecreaseValidatorLiquidShares() { + ctx, keeper := s.ctx, s.stakingKeeper + require := s.Require() + + initialLiquidShares := math.LegacyNewDec(100) + decreaseAmount := math.LegacyNewDec(10) + + // Create a validator with designated self-bond shares + privKey := secp256k1.GenPrivKey() + pubKey := privKey.PubKey() + valAddress := sdk.ValAddress(pubKey.Address()) + + initialValidator := types.Validator{ + OperatorAddress: valAddress.String(), + LiquidShares: initialLiquidShares, + } + keeper.SetValidator(ctx, initialValidator) + + // Decrease the validator liquid shares, and confirm the new share amount has been updated + _, err := keeper.DecreaseValidatorLiquidShares(ctx, valAddress, decreaseAmount) + require.NoError(err, "no error expected when decreasing validator liquid shares") + + actualValidator, err := keeper.GetValidator(ctx, valAddress) + require.NoError(err) + require.Equal(initialLiquidShares.Sub(decreaseAmount), actualValidator.LiquidShares, "liquid shares") + + // Attempt to decrease by a larger amount than it has, it should fail + _, err = keeper.DecreaseValidatorLiquidShares(ctx, valAddress, initialLiquidShares) + require.ErrorIs(err, types.ErrValidatorLiquidSharesUnderflow) +} + +// Tests SafelyDecreaseValidatorBond +func (s *KeeperTestSuite) TestSafelyDecreaseValidatorBond() { + ctx, keeper := s.ctx, s.stakingKeeper + require := s.Require() + + // Initial Bond Factor: 100, Initial Validator Bond: 10 + // => Max Liquid Shares 1000 (Initial Liquid Shares: 200) + initialBondFactor := math.LegacyNewDec(100) + initialValidatorBondShares := math.LegacyNewDec(10) + initialLiquidShares := math.LegacyNewDec(200) + + // Create a validator with designated self-bond shares + privKey := secp256k1.GenPrivKey() + pubKey := privKey.PubKey() + valAddress := sdk.ValAddress(pubKey.Address()) + + initialValidator := types.Validator{ + OperatorAddress: valAddress.String(), + ValidatorBondShares: initialValidatorBondShares, + LiquidShares: initialLiquidShares, + } + keeper.SetValidator(ctx, initialValidator) + + // Set the bond factor + params, err := keeper.GetParams(ctx) + require.NoError(err) + params.ValidatorBondFactor = initialBondFactor + keeper.SetParams(ctx, params) + + // Decrease the validator bond from 10 to 5 (minus 5) + // This will adjust the cap (factor * shares) + // from (100 * 10 = 1000) to (100 * 5 = 500) + // Since this is still above the initial liquid shares of 200, this will succeed + decreaseAmount, expectedBondShares := math.LegacyNewDec(5), math.LegacyNewDec(5) + err = keeper.SafelyDecreaseValidatorBond(ctx, valAddress, decreaseAmount) + require.NoError(err) + + actualValidator, err := keeper.GetValidator(ctx, valAddress) + require.NoError(err) + require.Equal(expectedBondShares, actualValidator.ValidatorBondShares, "validator bond shares shares") + + // Now attempt to decrease the validator bond again from 5 to 1 (minus 4) + // This time, the cap will be reduced to (factor * shares) = (100 * 1) = 100 + // However, the liquid shares are currently 200, so this should fail + decreaseAmount, expectedBondShares = math.LegacyNewDec(4), math.LegacyNewDec(1) + err = keeper.SafelyDecreaseValidatorBond(ctx, valAddress, decreaseAmount) + require.ErrorIs(err, types.ErrInsufficientValidatorBondShares) + + // Finally, disable the cap and attempt to decrease again + // This time it should succeed + params.ValidatorBondFactor = types.ValidatorBondCapDisabled + keeper.SetParams(ctx, params) + + err = keeper.SafelyDecreaseValidatorBond(ctx, valAddress, decreaseAmount) + require.NoError(err) + + actualValidator, err = keeper.GetValidator(ctx, valAddress) + require.NoError(err) + require.Equal(expectedBondShares, actualValidator.ValidatorBondShares, "validator bond shares shares") +} + +// Tests Add/Remove/Get/SetTokenizeSharesLock +func (s *KeeperTestSuite) TestTokenizeSharesLock() { + ctx, keeper := s.ctx, s.stakingKeeper + require := s.Require() + + addresses := simtestutil.CreateIncrementalAccounts(2) + addressA, addressB := addresses[0], addresses[1] + + unlocked := types.TOKENIZE_SHARE_LOCK_STATUS_UNLOCKED.String() + locked := types.TOKENIZE_SHARE_LOCK_STATUS_LOCKED.String() + lockExpiring := types.TOKENIZE_SHARE_LOCK_STATUS_LOCK_EXPIRING.String() + + // Confirm both accounts start unlocked + status, _ := keeper.GetTokenizeSharesLock(ctx, addressA) + require.Equal(unlocked, status.String(), "addressA unlocked at start") + + status, _ = keeper.GetTokenizeSharesLock(ctx, addressB) + require.Equal(unlocked, status.String(), "addressB unlocked at start") + + // Lock the first account + keeper.AddTokenizeSharesLock(ctx, addressA) + + // The first account should now have tokenize shares disabled + // and the unlock time should be the zero time + status, _ = keeper.GetTokenizeSharesLock(ctx, addressA) + require.Equal(locked, status.String(), "addressA locked") + + status, _ = keeper.GetTokenizeSharesLock(ctx, addressB) + require.Equal(unlocked, status.String(), "addressB still unlocked") + + // Update the lock time and confirm it was set + expectedUnlockTime := time.Date(2023, 1, 1, 0, 0, 0, 0, time.UTC) + keeper.SetTokenizeSharesUnlockTime(ctx, addressA, expectedUnlockTime) + + status, actualUnlockTime := keeper.GetTokenizeSharesLock(ctx, addressA) + require.Equal(lockExpiring, status.String(), "addressA lock expiring") + require.Equal(expectedUnlockTime, actualUnlockTime, "addressA unlock time") + + // Confirm B is still unlocked + status, _ = keeper.GetTokenizeSharesLock(ctx, addressB) + require.Equal(unlocked, status.String(), "addressB still unlocked") + + // Remove the lock + keeper.RemoveTokenizeSharesLock(ctx, addressA) + status, _ = keeper.GetTokenizeSharesLock(ctx, addressA) + require.Equal(unlocked, status.String(), "addressA unlocked at end") + + status, _ = keeper.GetTokenizeSharesLock(ctx, addressB) + require.Equal(unlocked, status.String(), "addressB unlocked at end") +} + +// Tests GetAllTokenizeSharesLocks +func (s *KeeperTestSuite) TestGetAllTokenizeSharesLocks() { + ctx, keeper := s.ctx, s.stakingKeeper + require := s.Require() + + addresses := simtestutil.CreateIncrementalAccounts(4) + + // Set 2 locked accounts, and two accounts with a lock expiring + keeper.AddTokenizeSharesLock(ctx, addresses[0]) + keeper.AddTokenizeSharesLock(ctx, addresses[1]) + + unlockTime1 := time.Date(2023, 1, 1, 1, 0, 0, 0, time.UTC) + unlockTime2 := time.Date(2023, 1, 2, 1, 0, 0, 0, time.UTC) + keeper.SetTokenizeSharesUnlockTime(ctx, addresses[2], unlockTime1) + keeper.SetTokenizeSharesUnlockTime(ctx, addresses[3], unlockTime2) + + // Defined expected locks after GetAll + expectedLocks := map[string]types.TokenizeShareLock{ + addresses[0].String(): { + Status: types.TOKENIZE_SHARE_LOCK_STATUS_LOCKED.String(), + }, + addresses[1].String(): { + Status: types.TOKENIZE_SHARE_LOCK_STATUS_LOCKED.String(), + }, + addresses[2].String(): { + Status: types.TOKENIZE_SHARE_LOCK_STATUS_LOCK_EXPIRING.String(), + CompletionTime: unlockTime1, + }, + addresses[3].String(): { + Status: types.TOKENIZE_SHARE_LOCK_STATUS_LOCK_EXPIRING.String(), + CompletionTime: unlockTime2, + }, + } + + // Check output from GetAll + actualLocks := keeper.GetAllTokenizeSharesLocks(ctx) + require.Len(actualLocks, len(expectedLocks), "number of locks") + + for i, actual := range actualLocks { + expected, ok := expectedLocks[actual.Address] + require.True(ok, "address %s not expected", actual.Address) + require.Equal(expected.Status, actual.Status, "tokenize share lock #%d status", i) + require.Equal(expected.CompletionTime, actual.CompletionTime, "tokenize share lock #%d completion time", i) + } +} + +// Test Get/SetPendingTokenizeShareAuthorizations +func (s *KeeperTestSuite) TestPendingTokenizeShareAuthorizations() { + ctx, keeper := s.ctx, s.stakingKeeper + require := s.Require() + + // Create dummy accounts and completion times + + addresses := simtestutil.CreateIncrementalAccounts(4) + addressStrings := []string{} + for _, address := range addresses { + addressStrings = append(addressStrings, address.String()) + } + + timeA := time.Date(2023, 1, 1, 0, 0, 0, 0, time.UTC) + timeB := timeA.Add(time.Hour) + + // There should be no addresses returned originally + authorizationsA := keeper.GetPendingTokenizeShareAuthorizations(ctx, timeA) + require.Empty(authorizationsA.Addresses, "no addresses at timeA expected") + + authorizationsB := keeper.GetPendingTokenizeShareAuthorizations(ctx, timeB) + require.Empty(authorizationsB.Addresses, "no addresses at timeB expected") + + // Store addresses for timeB + keeper.SetPendingTokenizeShareAuthorizations(ctx, timeB, types.PendingTokenizeShareAuthorizations{ + Addresses: addressStrings, + }) + + // Check addresses + authorizationsA = keeper.GetPendingTokenizeShareAuthorizations(ctx, timeA) + require.Empty(authorizationsA.Addresses, "no addresses at timeA expected at end") + + authorizationsB = keeper.GetPendingTokenizeShareAuthorizations(ctx, timeB) + require.Equal(addressStrings, authorizationsB.Addresses, "address length") +} + +// Test QueueTokenizeSharesAuthorization and RemoveExpiredTokenizeShareLocks +func (s *KeeperTestSuite) TestTokenizeShareAuthorizationQueue() { + ctx, keeper := s.ctx, s.stakingKeeper + require := s.Require() + + // Create dummy accounts and completion times + + // We'll start by adding the following addresses to the queue + // Time 0: [address0] + // Time 1: [] + // Time 2: [address1, address2, address3] + // Time 3: [address4, address5] + // Time 4: [address6] + addresses := simtestutil.CreateIncrementalAccounts(7) + addressesByTime := map[int][]sdk.AccAddress{ + 0: {addresses[0]}, + 1: {}, + 2: {addresses[1], addresses[2], addresses[3]}, + 3: {addresses[4], addresses[5]}, + 4: {addresses[6]}, + } + + // Set the unbonding time to 1 day + unbondingPeriod := time.Hour * 24 + params, err := keeper.GetParams(ctx) + require.NoError(err) + params.UnbondingTime = unbondingPeriod + keeper.SetParams(ctx, params) + + // Add each address to the queue and then increment the block time + // such that the times line up as follows + // Time 0: 2023-01-01 00:00:00 + // Time 1: 2023-01-01 00:01:00 + // Time 2: 2023-01-01 00:02:00 + // Time 3: 2023-01-01 00:03:00 + startTime := time.Date(2023, 1, 1, 0, 0, 0, 0, time.UTC) + ctx = ctx.WithBlockTime(startTime) + blockTimeIncrement := time.Hour + + for timeIndex := 0; timeIndex <= 4; timeIndex++ { + for _, address := range addressesByTime[timeIndex] { + keeper.QueueTokenizeSharesAuthorization(ctx, address) + } + ctx = ctx.WithBlockTime(ctx.BlockTime().Add(blockTimeIncrement)) + } + + // We'll unlock the tokens using the following progression + // The "alias'"/keys for these times assume a starting point of the Time 0 + // from above, plus the Unbonding Time + // Time -1 (2023-01-01 23:59:99): [] + // Time 0 (2023-01-02 00:00:00): [address0] + // Time 1 (2023-01-02 00:01:00): [] + // Time 2.5 (2023-01-02 00:02:30): [address1, address2, address3] + // Time 10 (2023-01-02 00:10:00): [address4, address5, address6] + unlockBlockTimes := map[string]time.Time{ + "-1": startTime.Add(unbondingPeriod).Add(-time.Second), + "0": startTime.Add(unbondingPeriod), + "1": startTime.Add(unbondingPeriod).Add(blockTimeIncrement), + "2.5": startTime.Add(unbondingPeriod).Add(2 * blockTimeIncrement).Add(blockTimeIncrement / 2), + "10": startTime.Add(unbondingPeriod).Add(10 * blockTimeIncrement), + } + expectedUnlockedAddresses := map[string][]string{ + "-1": {}, + "0": {addresses[0].String()}, + "1": {}, + "2.5": {addresses[1].String(), addresses[2].String(), addresses[3].String()}, + "10": {addresses[4].String(), addresses[5].String(), addresses[6].String()}, + } + + // Now we'll remove items from the queue sequentially + // First check with a block time before the first expiration - it should remove no addresses + actualAddresses, err := keeper.RemoveExpiredTokenizeShareLocks(ctx, unlockBlockTimes["-1"]) + require.NoError(err) + require.Equal(expectedUnlockedAddresses["-1"], actualAddresses, "no addresses unlocked from time -1") + + // Then pass in (time 0 + unbonding time) - it should remove the first address + actualAddresses, err = keeper.RemoveExpiredTokenizeShareLocks(ctx, unlockBlockTimes["0"]) + require.NoError(err) + require.Equal(expectedUnlockedAddresses["0"], actualAddresses, "one address unlocked from time 0") + + // Now pass in (time 1 + unbonding time) - it should remove no addresses since + // the address at time 0 was already removed + actualAddresses, err = keeper.RemoveExpiredTokenizeShareLocks(ctx, unlockBlockTimes["1"]) + require.NoError(err) + require.Equal(expectedUnlockedAddresses["1"], actualAddresses, "no addresses unlocked from time 1") + + // Now pass in (time 2.5 + unbonding time) - it should remove the three addresses from time 2 + actualAddresses, err = keeper.RemoveExpiredTokenizeShareLocks(ctx, unlockBlockTimes["2.5"]) + require.NoError(err) + require.Equal(expectedUnlockedAddresses["2.5"], actualAddresses, "addresses unlocked from time 2.5") + + // Finally pass in a block time far in the future, which should remove all the remaining locks + actualAddresses, err = keeper.RemoveExpiredTokenizeShareLocks(ctx, unlockBlockTimes["10"]) + require.NoError(err) + require.Equal(expectedUnlockedAddresses["10"], actualAddresses, "addresses unlocked from time 10") +} + +// Tests DelegatorIsLiquidStaker +func (s *KeeperTestSuite) TestDelegatorIsLiquidStaker() { + _, keeper := s.ctx, s.stakingKeeper + require := s.Require() + + // Create base and ICA accounts + baseAccountAddress := sdk.AccAddress("base-account") + icaAccountAddress := sdk.AccAddress( + address.Derive(authtypes.NewModuleAddress("icahost"), []byte("connection-0"+"icahost")), + ) + + // Only the ICA module account should be considered a liquid staking provider + require.False(keeper.DelegatorIsLiquidStaker(baseAccountAddress), "base account") + require.True(keeper.DelegatorIsLiquidStaker(icaAccountAddress), "ICA module account") +} + +func TestCheckVestedDelegationInVestingAccount(t *testing.T) { + var ( + vestingAcct *vestingtypes.ContinuousVestingAccount + startTime = time.Now() + endTime = startTime.Add(24 * time.Hour) + originalVesting = sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(100_000))) + ) + + testCases := []struct { + name string + setupAcct func() + blockTime time.Time + coinRequired sdk.Coin + expRes bool + }{ + { + name: "vesting account has zero delegations", + setupAcct: func() {}, + blockTime: endTime, + coinRequired: sdk.NewCoin(sdk.DefaultBondDenom, math.OneInt()), + expRes: false, + }, + { + name: "vested delegations exist but for a different coin", + setupAcct: func() { + vestingAcct.DelegatedFree = sdk.NewCoins(sdk.NewCoin("uatom", math.NewInt(100_000))) + }, + blockTime: endTime, + coinRequired: sdk.NewCoin(sdk.DefaultBondDenom, math.OneInt()), + expRes: false, + }, + { + name: "all delegations are vesting", + setupAcct: func() { + vestingAcct.DelegatedVesting = vestingAcct.OriginalVesting + }, + blockTime: startTime, + coinRequired: sdk.NewCoin(sdk.DefaultBondDenom, math.OneInt()), + expRes: false, + }, + { + name: "not enough vested coin", + setupAcct: func() { + vestingAcct.DelegatedFree = sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(80_000))) + }, + blockTime: endTime, + coinRequired: sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(100_000)), + expRes: false, + }, + { + name: "account is vested and have vested delegations", + setupAcct: func() { + vestingAcct.DelegatedFree = vestingAcct.OriginalVesting + }, + blockTime: endTime, + coinRequired: sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(100_000)), + expRes: true, + }, + { + name: "vesting account partially vested and have vesting and vested delegations", + setupAcct: func() { + vestingAcct.DelegatedFree = sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(50_000))) + vestingAcct.DelegatedVesting = sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(50_000))) + }, + blockTime: startTime.Add(18 * time.Hour), // vest 3/4 vesting period + coinRequired: sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(75_000)), + + expRes: true, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + pubKey := secp256k1.GenPrivKey().PubKey() + baseAcc := authtypes.NewBaseAccount(sdk.AccAddress(pubKey.Address()), pubKey, 0, 0) + + var err error + vestingAcct, err = vestingtypes.NewContinuousVestingAccount( + baseAcc, + originalVesting, + startTime.Unix(), + endTime.Unix(), + ) + require.NoError(t, err) + + tc.setupAcct() + + require.Equal( + t, + tc.expRes, keeper.CheckVestedDelegationInVestingAccount( + vestingAcct, + tc.blockTime, + tc.coinRequired, + ), + ) + }) + } +} diff --git a/x/staking/keeper/msg_server.go b/x/staking/keeper/msg_server.go index 19b7ba7a2593..c632dc5c33a0 100644 --- a/x/staking/keeper/msg_server.go +++ b/x/staking/keeper/msg_server.go @@ -2,6 +2,8 @@ package keeper import ( "context" + "errors" + "fmt" "strconv" "time" @@ -16,7 +18,9 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + vesting "github.com/cosmos/cosmos-sdk/x/auth/vesting/exported" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" "github.com/cosmos/cosmos-sdk/x/staking/types" ) @@ -115,8 +119,6 @@ func (k msgServer) CreateValidator(ctx context.Context, msg *types.MsgCreateVali return nil, err } - validator.MinSelfDelegation = msg.MinSelfDelegation - err = k.SetValidator(ctx, validator) if err != nil { return nil, err @@ -167,13 +169,6 @@ func (k msgServer) EditValidator(ctx context.Context, msg *types.MsgEditValidato return nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "empty description") } - if msg.MinSelfDelegation != nil && !msg.MinSelfDelegation.IsPositive() { - return nil, errorsmod.Wrap( - sdkerrors.ErrInvalidRequest, - "minimum self delegation must be a positive integer", - ) - } - if msg.CommissionRate != nil { if msg.CommissionRate.GT(math.LegacyOneDec()) || msg.CommissionRate.IsNegative() { return nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "commission rate must be between 0 and 1 (inclusive)") @@ -217,18 +212,6 @@ func (k msgServer) EditValidator(ctx context.Context, msg *types.MsgEditValidato validator.Commission = commission } - if msg.MinSelfDelegation != nil { - if !msg.MinSelfDelegation.GT(validator.MinSelfDelegation) { - return nil, types.ErrMinSelfDelegationDecreased - } - - if msg.MinSelfDelegation.GT(validator.Tokens) { - return nil, types.ErrSelfDelegationBelowMinimum - } - - validator.MinSelfDelegation = *msg.MinSelfDelegation - } - err = k.SetValidator(ctx, validator) if err != nil { return nil, err @@ -239,7 +222,6 @@ func (k msgServer) EditValidator(ctx context.Context, msg *types.MsgEditValidato sdk.NewEvent( types.EventTypeEditValidator, sdk.NewAttribute(types.AttributeKeyCommissionRate, validator.Commission.String()), - sdk.NewAttribute(types.AttributeKeyMinSelfDelegation, validator.MinSelfDelegation.String()), ), }) @@ -281,18 +263,47 @@ func (k msgServer) Delegate(ctx context.Context, msg *types.MsgDelegate) (*types ) } + tokens := msg.Amount.Amount + + // if this delegation is from a liquid staking provider (identified if the delegator + // is an ICA account), it cannot exceed the global or validator bond cap + if k.DelegatorIsLiquidStaker(delegatorAddress) { + shares, err := validator.SharesFromTokens(tokens) + if err != nil { + return nil, err + } + if err := k.SafelyIncreaseTotalLiquidStakedTokens(ctx, tokens, false); err != nil { + return nil, err + } + validator, err = k.SafelyIncreaseValidatorLiquidShares(ctx, valAddr, shares, false) + if err != nil { + return nil, err + } + } + // NOTE: source funds are always unbonded - newShares, err := k.Keeper.Delegate(ctx, delegatorAddress, msg.Amount.Amount, types.Unbonded, validator, true) + newShares, err := k.Keeper.Delegate(ctx, delegatorAddress, tokens, types.Unbonded, validator, true) if err != nil { return nil, err } - if msg.Amount.Amount.IsInt64() { + // If the delegation is a validator bond, increment the validator bond shares + delegation, err := k.Keeper.GetDelegation(ctx, delegatorAddress, valAddr) + if err != nil { + return nil, err + } + if delegation.ValidatorBond { + if err := k.IncreaseValidatorBondShares(ctx, valAddr, newShares); err != nil { + return nil, err + } + } + + if tokens.IsInt64() { defer func() { telemetry.IncrCounter(1, types.ModuleName, "delegate") telemetry.SetGaugeWithLabels( []string{"tx", "msg", sdk.MsgTypeURL(msg)}, - float32(msg.Amount.Amount.Int64()), + float32(tokens.Int64()), []metrics.Label{telemetry.NewLabel("denom", msg.Amount.Denom)}, ) }() @@ -318,12 +329,20 @@ func (k msgServer) BeginRedelegate(ctx context.Context, msg *types.MsgBeginRedel if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid source validator address: %s", err) } - valDstAddr, err := k.validatorAddressCodec.StringToBytes(msg.ValidatorDstAddress) if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid destination validator address: %s", err) } + _, err = k.GetValidator(ctx, valSrcAddr) + if err != nil { + return nil, err + } + dstValidator, err := k.GetValidator(ctx, valDstAddr) + if err != nil { + return nil, err + } + delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(msg.DelegatorAddress) if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid delegator address: %s", err) @@ -335,14 +354,44 @@ func (k msgServer) BeginRedelegate(ctx context.Context, msg *types.MsgBeginRedel "invalid shares amount", ) } + srcDelegation, err := k.GetDelegation(ctx, delegatorAddress, valSrcAddr) + if err != nil { + return nil, sdkerrors.ErrNotFound.Wrapf( + "delegation with delegator %s not found for validator %s. error: %s", + msg.DelegatorAddress, msg.ValidatorSrcAddress, err) + } - shares, err := k.ValidateUnbondAmount( + srcShares, err := k.ValidateUnbondAmount( ctx, delegatorAddress, valSrcAddr, msg.Amount.Amount, ) if err != nil { return nil, err } + // If this is a validator self-bond, the new liquid delegation cannot fall below the self-bond * bond factor + // The delegation on the new validator will not a validator bond + if srcDelegation.ValidatorBond { + if err := k.SafelyDecreaseValidatorBond(ctx, valSrcAddr, srcShares); err != nil { + return nil, err + } + } + + // If this delegation from a liquid staker, the delegation on the new validator + // cannot exceed that validator's self-bond cap + // The liquid shares from the source validator should get moved to the destination validator + if k.DelegatorIsLiquidStaker(delegatorAddress) { + dstShares, err := dstValidator.SharesFromTokensTruncated(msg.Amount.Amount) + if err != nil { + return nil, err + } + if _, err := k.SafelyIncreaseValidatorLiquidShares(ctx, valDstAddr, dstShares, false); err != nil { + return nil, err + } + if _, err := k.DecreaseValidatorLiquidShares(ctx, valSrcAddr, srcShares); err != nil { + return nil, err + } + } + bondDenom, err := k.BondDenom(ctx) if err != nil { return nil, err @@ -355,12 +404,27 @@ func (k msgServer) BeginRedelegate(ctx context.Context, msg *types.MsgBeginRedel } completionTime, err := k.BeginRedelegation( - ctx, delegatorAddress, valSrcAddr, valDstAddr, shares, + ctx, delegatorAddress, valSrcAddr, valDstAddr, srcShares, ) if err != nil { return nil, err } + // If the redelegation adds to a validator bond delegation, update the validator's bond shares + dstDelegation, err := k.GetDelegation(ctx, delegatorAddress, valDstAddr) + if err != nil { + return nil, err + } + if dstDelegation.ValidatorBond { + dstShares, err := dstValidator.SharesFromTokensTruncated(msg.Amount.Amount) + if err != nil { + return nil, err + } + if err := k.IncreaseValidatorBondShares(ctx, valDstAddr, dstShares); err != nil { + return nil, err + } + } + if msg.Amount.Amount.IsInt64() { defer func() { telemetry.IncrCounter(1, types.ModuleName, "redelegate") @@ -407,13 +471,44 @@ func (k msgServer) Undelegate(ctx context.Context, msg *types.MsgUndelegate) (*t ) } + tokens := msg.Amount.Amount shares, err := k.ValidateUnbondAmount( - ctx, delegatorAddress, addr, msg.Amount.Amount, + ctx, delegatorAddress, addr, tokens, ) if err != nil { return nil, err } + _, err = k.GetValidator(ctx, addr) + if err != nil { + return nil, err + } + + delegation, err := k.GetDelegation(ctx, delegatorAddress, addr) + if err != nil { + return nil, sdkerrors.ErrNotFound.Wrapf( + "delegation with delegator %s not found for validator %s. error: %s", + msg.DelegatorAddress, msg.ValidatorAddress, err) + } + + // if this is a validator self-bond, the new liquid delegation cannot fall below the self-bond * bond factor + if delegation.ValidatorBond { + if err := k.SafelyDecreaseValidatorBond(ctx, addr, shares); err != nil { + return nil, err + } + } + + // if this delegation is from a liquid staking provider (identified if the delegator + // is an ICA account), the global and validator liquid totals should be decremented + if k.DelegatorIsLiquidStaker(delegatorAddress) { + if err := k.DecreaseTotalLiquidStakedTokens(ctx, tokens); err != nil { + return nil, err + } + if _, err := k.DecreaseValidatorLiquidShares(ctx, addr, shares); err != nil { + return nil, err + } + } + bondDenom, err := k.BondDenom(ctx) if err != nil { return nil, err @@ -432,12 +527,12 @@ func (k msgServer) Undelegate(ctx context.Context, msg *types.MsgUndelegate) (*t undelegatedCoin := sdk.NewCoin(msg.Amount.Denom, undelegatedAmt) - if msg.Amount.Amount.IsInt64() { + if tokens.IsInt64() { defer func() { telemetry.IncrCounter(1, types.ModuleName, "undelegate") telemetry.SetGaugeWithLabels( []string{"tx", "msg", sdk.MsgTypeURL(msg)}, - float32(msg.Amount.Amount.Int64()), + float32(tokens.Int64()), []metrics.Label{telemetry.NewLabel("denom", msg.Amount.Denom)}, ) }() @@ -523,6 +618,23 @@ func (k msgServer) CancelUnbondingDelegation(ctx context.Context, msg *types.Msg ) } + // if this undelegation was from a liquid staking provider (identified if the delegator + // is an ICA account), the global and validator liquid totals should be incremented + tokens := msg.Amount.Amount + if k.DelegatorIsLiquidStaker(delegatorAddress) { + shares, err := validator.SharesFromTokens(tokens) + if err != nil { + return nil, err + } + if err := k.SafelyIncreaseTotalLiquidStakedTokens(ctx, tokens, false); err != nil { + return nil, err + } + validator, err = k.SafelyIncreaseValidatorLiquidShares(ctx, valAddr, shares, false) + if err != nil { + return nil, err + } + } + var ( unbondEntry types.UnbondingDelegationEntry unbondEntryIndex int64 = -1 @@ -549,10 +661,21 @@ func (k msgServer) CancelUnbondingDelegation(ctx context.Context, msg *types.Msg } // delegate back the unbonding delegation amount to the validator - _, err = k.Keeper.Delegate(ctx, delegatorAddress, msg.Amount.Amount, types.Unbonding, validator, false) + newShares, err := k.Keeper.Delegate(ctx, delegatorAddress, msg.Amount.Amount, types.Unbonding, validator, false) + if err != nil { + return nil, err + } + + // If the delegation is a validator bond, increment the validator bond shares + delegation, err := k.Keeper.GetDelegation(ctx, delegatorAddress, valAddr) if err != nil { return nil, err } + if delegation.ValidatorBond { + if err := k.IncreaseValidatorBondShares(ctx, valAddr, newShares); err != nil { + return nil, err + } + } amount := unbondEntry.Balance.Sub(msg.Amount.Amount) if amount.IsZero() { @@ -605,3 +728,493 @@ func (k msgServer) UpdateParams(ctx context.Context, msg *types.MsgUpdateParams) return &types.MsgUpdateParamsResponse{}, nil } + +// UnbondValidator defines a method for performing the status transition for +// a validator from bonded to unbonding +// This allows a validator to stop their services and jail themselves without +// experiencing a slash +func (k msgServer) UnbondValidator(ctx context.Context, msg *types.MsgUnbondValidator) (*types.MsgUnbondValidatorResponse, error) { + valAddr, err := k.validatorAddressCodec.StringToBytes(msg.ValidatorAddress) + if err != nil { + return nil, err + } + + // validator must already be registered + validator, err := k.GetValidator(ctx, valAddr) + if err != nil { + return nil, err + } + + k.jailValidator(ctx, validator) + return &types.MsgUnbondValidatorResponse{}, nil +} + +// Tokenizes shares associated with a delegation by creating a tokenize share record +// and returning tokens with a denom of the format {validatorAddress}/{recordId} +func (k msgServer) TokenizeShares(goCtx context.Context, msg *types.MsgTokenizeShares) (*types.MsgTokenizeSharesResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + valAddr, valErr := k.validatorAddressCodec.StringToBytes(msg.ValidatorAddress) + if valErr != nil { + return nil, valErr + } + validator, err := k.GetValidator(ctx, valAddr) + if err != nil { + return nil, err + } + + delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(msg.DelegatorAddress) + if err != nil { + return nil, err + } + + _, err = k.authKeeper.AddressCodec().StringToBytes(msg.TokenizedShareOwner) + if err != nil { + return nil, err + } + + if !msg.Amount.IsValid() || !msg.Amount.Amount.IsPositive() { + return nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "invalid shares amount") + } + + // Check if the delegator has disabled tokenization + lockStatus, unlockTime := k.GetTokenizeSharesLock(ctx, delegatorAddress) + if lockStatus == types.TOKENIZE_SHARE_LOCK_STATUS_LOCKED { + return nil, types.ErrTokenizeSharesDisabledForAccount + } + if lockStatus == types.TOKENIZE_SHARE_LOCK_STATUS_LOCK_EXPIRING { + return nil, types.ErrTokenizeSharesDisabledForAccount.Wrapf("tokenization will be allowed at %s", unlockTime) + } + + delegation, err := k.GetDelegation(ctx, delegatorAddress, valAddr) + if err != nil { + return nil, err + } + + if delegation.ValidatorBond { + return nil, types.ErrValidatorBondNotAllowedForTokenizeShare + } + + bondDenom, err := k.BondDenom(ctx) + if err != nil { + return nil, err + } + + if msg.Amount.Denom != bondDenom { + return nil, types.ErrOnlyBondDenomAllowdForTokenize + } + + acc := k.authKeeper.GetAccount(ctx, delegatorAddress) + if acc != nil { + acc, ok := acc.(vesting.VestingAccount) + if ok { + // if account is a vesting account, it checks if free delegation (non-vesting delegation) is not exceeding + // the tokenize share amount and execute further tokenize share process + // tokenize share is reducing unlocked tokens delegation from the vesting account and further process + // is not causing issues + if !CheckVestedDelegationInVestingAccount(acc, ctx.BlockTime(), msg.Amount) { + return nil, types.ErrExceedingFreeVestingDelegations + } + } + } + + shares, err := k.ValidateUnbondAmount( + ctx, delegatorAddress, valAddr, msg.Amount.Amount, + ) + if err != nil { + return nil, err + } + + // Check that the delegator has no ongoing redelegations to the validator + found, err := k.HasReceivingRedelegation(ctx, delegatorAddress, valAddr) + if err != nil { + return nil, err + } + if found { + return nil, types.ErrRedelegationInProgress + } + + // If this tokenization is NOT from a liquid staking provider, + // confirm it does not exceed the global and validator liquid staking cap + // If the tokenization is from a liquid staking provider, + // the shares are already considered liquid and there's no need to increment the totals + if !k.DelegatorIsLiquidStaker(delegatorAddress) { + if err := k.SafelyIncreaseTotalLiquidStakedTokens(ctx, msg.Amount.Amount, true); err != nil { + return nil, err + } + validator, err = k.SafelyIncreaseValidatorLiquidShares(ctx, valAddr, shares, true) + if err != nil { + return nil, err + } + } + + recordID := k.GetLastTokenizeShareRecordID(ctx) + 1 + k.SetLastTokenizeShareRecordID(ctx, recordID) + + record := types.TokenizeShareRecord{ + Id: recordID, + Owner: msg.TokenizedShareOwner, + ModuleAccount: fmt.Sprintf("%s%d", types.TokenizeShareModuleAccountPrefix, recordID), + Validator: msg.ValidatorAddress, + } + + // note: this returnAmount can be slightly off from the original delegation amount if there + // is a decimal to int precision error + returnAmount, err := k.Unbond(ctx, delegatorAddress, valAddr, shares) + if err != nil { + return nil, err + } + + if validator.IsBonded() { + k.bondedTokensToNotBonded(ctx, returnAmount) + } + + // Note: UndelegateCoinsFromModuleToAccount is internally calling TrackUndelegation for vesting account + returnCoin := sdk.NewCoin(bondDenom, returnAmount) + err = k.bankKeeper.UndelegateCoinsFromModuleToAccount(ctx, types.NotBondedPoolName, delegatorAddress, sdk.Coins{returnCoin}) + if err != nil { + return nil, err + } + + // Re-calculate the shares in case there was rounding precision during the undelegation + newShares, err := validator.SharesFromTokens(returnAmount) + if err != nil { + return nil, err + } + + // The share tokens returned maps 1:1 with shares + shareToken := sdk.NewCoin(record.GetShareTokenDenom(), newShares.TruncateInt()) + + err = k.bankKeeper.MintCoins(ctx, minttypes.ModuleName, sdk.Coins{shareToken}) + if err != nil { + return nil, err + } + + err = k.bankKeeper.SendCoinsFromModuleToAccount(ctx, minttypes.ModuleName, delegatorAddress, sdk.Coins{shareToken}) + if err != nil { + return nil, err + } + + // create reward ownership record + err = k.AddTokenizeShareRecord(ctx, record) + if err != nil { + return nil, err + } + // send coins to module account + err = k.bankKeeper.SendCoins(ctx, delegatorAddress, record.GetModuleAddress(), sdk.Coins{returnCoin}) + if err != nil { + return nil, err + } + + // Note: it is needed to get latest validator object to get Keeper.Delegate function work properly + validator, err = k.GetValidator(ctx, valAddr) + if err != nil { + return nil, err + } + + // delegate from module account + _, err = k.Keeper.Delegate(ctx, record.GetModuleAddress(), returnAmount, types.Unbonded, validator, true) + if err != nil { + return nil, err + } + + ctx.EventManager().EmitEvent( + sdk.NewEvent( + types.EventTypeTokenizeShares, + sdk.NewAttribute(types.AttributeKeyDelegator, msg.DelegatorAddress), + sdk.NewAttribute(types.AttributeKeyValidator, msg.ValidatorAddress), + sdk.NewAttribute(types.AttributeKeyShareOwner, msg.TokenizedShareOwner), + sdk.NewAttribute(types.AttributeKeyShareRecordID, fmt.Sprintf("%d", record.Id)), + sdk.NewAttribute(types.AttributeKeyAmount, msg.Amount.String()), + sdk.NewAttribute(types.AttributeKeyTokenizedShares, shareToken.String()), + ), + ) + + return &types.MsgTokenizeSharesResponse{ + Amount: shareToken, + }, nil +} + +// Converts tokenized shares back into a native delegation +func (k msgServer) RedeemTokensForShares(goCtx context.Context, msg *types.MsgRedeemTokensForShares) (*types.MsgRedeemTokensForSharesResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(msg.DelegatorAddress) + if err != nil { + return nil, err + } + + if !msg.Amount.IsValid() || !msg.Amount.Amount.IsPositive() { + return nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "invalid shares amount") + } + + shareToken := msg.Amount + balance := k.bankKeeper.GetBalance(ctx, delegatorAddress, shareToken.Denom) + if balance.Amount.LT(shareToken.Amount) { + return nil, types.ErrNotEnoughBalance + } + + record, err := k.GetTokenizeShareRecordByDenom(ctx, shareToken.Denom) + if err != nil { + return nil, err + } + + valAddr, valErr := k.validatorAddressCodec.StringToBytes(record.Validator) + if valErr != nil { + return nil, valErr + } + + validator, err := k.GetValidator(ctx, valAddr) + if err != nil { + return nil, err + } + + delegation, err := k.GetDelegation(ctx, record.GetModuleAddress(), valAddr) + if err != nil { + return nil, err + } + + // Similar to undelegations, if the account is attempting to tokenize the full delegation, + // but there's a precision error due to the decimal to int conversion, round up to the + // full decimal amount before modifying the delegation + shares := math.LegacyNewDecFromInt(shareToken.Amount) + if shareToken.Amount.Equal(delegation.Shares.TruncateInt()) { + shares = delegation.Shares + } + tokens := validator.TokensFromShares(shares).TruncateInt() + + // prevent redemption that returns a 0 amount + if tokens.IsZero() { + return nil, types.ErrTinyRedemptionAmount + } + + // If this redemption is NOT from a liquid staking provider, decrement the total liquid staked + // If the redemption was from a liquid staking provider, the shares are still considered + // liquid, even in their non-tokenized form (since they are owned by a liquid staking provider) + if !k.DelegatorIsLiquidStaker(delegatorAddress) { + if err := k.DecreaseTotalLiquidStakedTokens(ctx, tokens); err != nil { + return nil, err + } + validator, err = k.DecreaseValidatorLiquidShares(ctx, valAddr, shares) + if err != nil { + return nil, err + } + } + + returnAmount, err := k.Unbond(ctx, record.GetModuleAddress(), valAddr, shares) + if err != nil { + return nil, err + } + + if validator.IsBonded() { + k.bondedTokensToNotBonded(ctx, returnAmount) + } + + // Note: since delegation object has been changed from unbond call, it gets latest delegation + _, err = k.GetDelegation(ctx, record.GetModuleAddress(), valAddr) + if err != nil && !errors.Is(err, types.ErrNoDelegation) { + return nil, err + } + + // this err will be ErrNoDelegation + if err != nil { + if k.hooks != nil { + if err := k.hooks.BeforeTokenizeShareRecordRemoved(ctx, record.Id); err != nil { + return nil, err + } + } + err = k.DeleteTokenizeShareRecord(ctx, record.Id) + if err != nil { + return nil, err + } + } + + // send share tokens to NotBondedPool and burn + err = k.bankKeeper.SendCoinsFromAccountToModule(ctx, delegatorAddress, types.NotBondedPoolName, sdk.Coins{shareToken}) + if err != nil { + return nil, err + } + err = k.bankKeeper.BurnCoins(ctx, types.NotBondedPoolName, sdk.Coins{shareToken}) + if err != nil { + return nil, err + } + + bondDenom, err := k.BondDenom(ctx) + if err != nil { + return nil, err + } + // send equivalent amount of tokens to the delegator + returnCoin := sdk.NewCoin(bondDenom, returnAmount) + err = k.bankKeeper.SendCoinsFromModuleToAccount(ctx, types.NotBondedPoolName, delegatorAddress, sdk.Coins{returnCoin}) + if err != nil { + return nil, err + } + + // Note: it is needed to get latest validator object to get Keeper.Delegate function work properly + validator, err = k.GetValidator(ctx, valAddr) + if err != nil { + return nil, err + } + + // convert the share tokens to delegated status + // Note: Delegate(substractAccount => true) -> DelegateCoinsFromAccountToModule -> TrackDelegation for vesting account + _, err = k.Keeper.Delegate(ctx, delegatorAddress, returnAmount, types.Unbonded, validator, true) + if err != nil { + return nil, err + } + + ctx.EventManager().EmitEvent( + sdk.NewEvent( + types.EventTypeRedeemShares, + sdk.NewAttribute(types.AttributeKeyDelegator, msg.DelegatorAddress), + sdk.NewAttribute(types.AttributeKeyValidator, validator.OperatorAddress), + sdk.NewAttribute(types.AttributeKeyAmount, shareToken.String()), + ), + ) + + return &types.MsgRedeemTokensForSharesResponse{ + Amount: returnCoin, + }, nil +} + +// Transfers the ownership of rewards associated with a tokenize share record +func (k msgServer) TransferTokenizeShareRecord(goCtx context.Context, msg *types.MsgTransferTokenizeShareRecord) (*types.MsgTransferTokenizeShareRecordResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + record, err := k.GetTokenizeShareRecord(ctx, msg.TokenizeShareRecordId) + if err != nil { + return nil, types.ErrTokenizeShareRecordNotExists + } + + if record.Owner != msg.Sender { + return nil, types.ErrNotTokenizeShareRecordOwner + } + + // Remove old account reference + oldOwner, err := k.authKeeper.AddressCodec().StringToBytes(record.Owner) + if err != nil { + return nil, sdkerrors.ErrInvalidAddress + } + k.deleteTokenizeShareRecordWithOwner(ctx, oldOwner, record.Id) + + record.Owner = msg.NewOwner + k.setTokenizeShareRecord(ctx, record) + + // Set new account reference + newOwner, err := k.authKeeper.AddressCodec().StringToBytes(record.Owner) + if err != nil { + return nil, sdkerrors.ErrInvalidAddress + } + k.setTokenizeShareRecordWithOwner(ctx, newOwner, record.Id) + + ctx.EventManager().EmitEvent( + sdk.NewEvent( + types.EventTypeTransferTokenizeShareRecord, + sdk.NewAttribute(types.AttributeKeyShareRecordID, fmt.Sprintf("%d", msg.TokenizeShareRecordId)), + sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), + sdk.NewAttribute(types.AttributeKeyShareOwner, msg.NewOwner), + ), + ) + + return &types.MsgTransferTokenizeShareRecordResponse{}, nil +} + +// DisableTokenizeShares prevents an address from tokenizing any of their delegations +func (k msgServer) DisableTokenizeShares(ctx context.Context, msg *types.MsgDisableTokenizeShares) (*types.MsgDisableTokenizeSharesResponse, error) { + delegator, err := k.authKeeper.AddressCodec().StringToBytes(msg.DelegatorAddress) + if err != nil { + panic(err) + } + + // If tokenized shares is already disabled, alert the user + lockStatus, completionTime := k.GetTokenizeSharesLock(ctx, delegator) + if lockStatus == types.TOKENIZE_SHARE_LOCK_STATUS_LOCKED { + return nil, types.ErrTokenizeSharesAlreadyDisabledForAccount + } + + // If the tokenized shares lock is expiring, remove the pending unlock from the queue + if lockStatus == types.TOKENIZE_SHARE_LOCK_STATUS_LOCK_EXPIRING { + k.CancelTokenizeShareLockExpiration(ctx, delegator, completionTime) + } + + // Create a new tokenization lock for the user + // Note: if there is a lock expiration in progress, this will override the expiration + k.AddTokenizeSharesLock(ctx, delegator) + + return &types.MsgDisableTokenizeSharesResponse{}, nil +} + +// EnableTokenizeShares begins the countdown after which tokenizing shares by the +// sender address is re-allowed, which will complete after the unbonding period +func (k msgServer) EnableTokenizeShares(ctx context.Context, msg *types.MsgEnableTokenizeShares) (*types.MsgEnableTokenizeSharesResponse, error) { + delegator, err := k.authKeeper.AddressCodec().StringToBytes(msg.DelegatorAddress) + if err != nil { + panic(err) + } + + // If tokenized shares aren't current disabled, alert the user + lockStatus, unlockTime := k.GetTokenizeSharesLock(ctx, delegator) + if lockStatus == types.TOKENIZE_SHARE_LOCK_STATUS_UNLOCKED { + return nil, types.ErrTokenizeSharesAlreadyEnabledForAccount + } + if lockStatus == types.TOKENIZE_SHARE_LOCK_STATUS_LOCK_EXPIRING { + return nil, types.ErrTokenizeSharesAlreadyEnabledForAccount.Wrapf( + "tokenize shares re-enablement already in progress, ending at %s", unlockTime) + } + + // Otherwise queue the unlock + completionTime, err := k.QueueTokenizeSharesAuthorization(ctx, delegator) + if err != nil { + panic(err) + } + + return &types.MsgEnableTokenizeSharesResponse{CompletionTime: completionTime}, nil +} + +// Designates a delegation as a validator bond +// This enables the validator to receive more liquid staking delegations +func (k msgServer) ValidatorBond(goCtx context.Context, msg *types.MsgValidatorBond) (*types.MsgValidatorBondResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + delAddr, err := k.authKeeper.AddressCodec().StringToBytes(msg.DelegatorAddress) + if err != nil { + return nil, err + } + + valAddr, valErr := k.validatorAddressCodec.StringToBytes(msg.ValidatorAddress) + if valErr != nil { + return nil, valErr + } + + validator, err := k.GetValidator(ctx, valAddr) + if err != nil { + return nil, err + } + + delegation, err := k.GetDelegation(ctx, delAddr, valAddr) + if err != nil { + return nil, err + } + + // liquid staking providers should not be able to validator bond + if k.DelegatorIsLiquidStaker(delAddr) { + return nil, types.ErrValidatorBondNotAllowedFromModuleAccount + } + + if !delegation.ValidatorBond { + delegation.ValidatorBond = true + k.SetDelegation(ctx, delegation) + validator.ValidatorBondShares = validator.ValidatorBondShares.Add(delegation.Shares) + k.SetValidator(ctx, validator) + + ctx.EventManager().EmitEvent( + sdk.NewEvent( + types.EventTypeValidatorBondDelegation, + sdk.NewAttribute(types.AttributeKeyDelegator, msg.DelegatorAddress), + sdk.NewAttribute(types.AttributeKeyValidator, msg.ValidatorAddress), + ), + ) + } + + return &types.MsgValidatorBondResponse{}, nil +} diff --git a/x/staking/keeper/msg_server_test.go b/x/staking/keeper/msg_server_test.go index df339ae371cb..d6b1e53ed16d 100644 --- a/x/staking/keeper/msg_server_test.go +++ b/x/staking/keeper/msg_server_test.go @@ -142,66 +142,6 @@ func (s *KeeperTestSuite) TestMsgCreateValidator() { expErr: true, expErrMsg: "invalid delegation amount", }, - { - name: "zero minimum self delegation", - input: &stakingtypes.MsgCreateValidator{ - Description: stakingtypes.Description{ - Moniker: "NewValidator", - }, - Commission: stakingtypes.CommissionRates{ - Rate: math.LegacyNewDecWithPrec(5, 1), - MaxRate: math.LegacyNewDecWithPrec(5, 1), - MaxChangeRate: math.LegacyNewDec(0), - }, - MinSelfDelegation: math.NewInt(0), - DelegatorAddress: Addr.String(), - ValidatorAddress: ValAddr.String(), - Pubkey: pubkey, - Value: sdk.NewInt64Coin("stake", 10000), - }, - expErr: true, - expErrMsg: "minimum self delegation must be a positive integer", - }, - { - name: "negative minimum self delegation", - input: &stakingtypes.MsgCreateValidator{ - Description: stakingtypes.Description{ - Moniker: "NewValidator", - }, - Commission: stakingtypes.CommissionRates{ - Rate: math.LegacyNewDecWithPrec(5, 1), - MaxRate: math.LegacyNewDecWithPrec(5, 1), - MaxChangeRate: math.LegacyNewDec(0), - }, - MinSelfDelegation: math.NewInt(-1), - DelegatorAddress: Addr.String(), - ValidatorAddress: ValAddr.String(), - Pubkey: pubkey, - Value: sdk.NewInt64Coin("stake", 10000), - }, - expErr: true, - expErrMsg: "minimum self delegation must be a positive integer", - }, - { - name: "delegation less than minimum self delegation", - input: &stakingtypes.MsgCreateValidator{ - Description: stakingtypes.Description{ - Moniker: "NewValidator", - }, - Commission: stakingtypes.CommissionRates{ - Rate: math.LegacyNewDecWithPrec(5, 1), - MaxRate: math.LegacyNewDecWithPrec(5, 1), - MaxChangeRate: math.LegacyNewDec(0), - }, - MinSelfDelegation: math.NewInt(100), - DelegatorAddress: Addr.String(), - ValidatorAddress: ValAddr.String(), - Pubkey: pubkey, - Value: sdk.NewInt64Coin("stake", 10), - }, - expErr: true, - expErrMsg: "validator's self delegation must be greater than their minimum self delegation", - }, { name: "valid msg", input: &stakingtypes.MsgCreateValidator{ @@ -252,7 +192,7 @@ func (s *KeeperTestSuite) TestMsgEditValidator() { require.NotNil(pk) comm := stakingtypes.NewCommissionRates(math.LegacyNewDec(0), math.LegacyNewDec(0), math.LegacyNewDec(0)) - msg, err := stakingtypes.NewMsgCreateValidator(ValAddr.String(), pk, sdk.NewCoin("stake", math.NewInt(10)), stakingtypes.Description{Moniker: "NewVal"}, comm, math.OneInt()) + msg, err := stakingtypes.NewMsgCreateValidator(ValAddr.String(), pk, sdk.NewCoin("stake", math.NewInt(10)), stakingtypes.Description{Moniker: "NewVal"}, comm) require.NoError(err) res, err := msgServer.CreateValidator(ctx, msg) @@ -262,9 +202,6 @@ func (s *KeeperTestSuite) TestMsgEditValidator() { newRate := math.LegacyZeroDec() invalidRate := math.LegacyNewDec(2) - lowSelfDel := math.OneInt() - highSelfDel := math.NewInt(100) - negSelfDel := math.NewInt(-1) newSelfDel := math.NewInt(3) testCases := []struct { @@ -283,7 +220,7 @@ func (s *KeeperTestSuite) TestMsgEditValidator() { }, ValidatorAddress: sdk.AccAddress([]byte("invalid")).String(), CommissionRate: &newRate, - MinSelfDelegation: &newSelfDel, + MinSelfDelegation: newSelfDel, }, expErr: true, expErrMsg: "invalid validator address", @@ -295,25 +232,11 @@ func (s *KeeperTestSuite) TestMsgEditValidator() { Description: stakingtypes.Description{}, ValidatorAddress: ValAddr.String(), CommissionRate: &newRate, - MinSelfDelegation: &newSelfDel, + MinSelfDelegation: newSelfDel, }, expErr: true, expErrMsg: "empty description", }, - { - name: "negative self delegation", - ctx: newCtx, - input: &stakingtypes.MsgEditValidator{ - Description: stakingtypes.Description{ - Moniker: "TestValidator", - }, - ValidatorAddress: ValAddr.String(), - CommissionRate: &newRate, - MinSelfDelegation: &negSelfDel, - }, - expErr: true, - expErrMsg: "minimum self delegation must be a positive integer", - }, { name: "invalid commission rate", ctx: newCtx, @@ -323,7 +246,7 @@ func (s *KeeperTestSuite) TestMsgEditValidator() { }, ValidatorAddress: ValAddr.String(), CommissionRate: &invalidRate, - MinSelfDelegation: &newSelfDel, + MinSelfDelegation: newSelfDel, }, expErr: true, expErrMsg: "commission rate must be between 0 and 1 (inclusive)", @@ -337,7 +260,7 @@ func (s *KeeperTestSuite) TestMsgEditValidator() { }, ValidatorAddress: sdk.ValAddress([]byte("val")).String(), CommissionRate: &newRate, - MinSelfDelegation: &newSelfDel, + MinSelfDelegation: newSelfDel, }, expErr: true, expErrMsg: "validator does not exist", @@ -351,39 +274,11 @@ func (s *KeeperTestSuite) TestMsgEditValidator() { }, ValidatorAddress: ValAddr.String(), CommissionRate: &newRate, - MinSelfDelegation: &newSelfDel, + MinSelfDelegation: newSelfDel, }, expErr: true, expErrMsg: "commission cannot be changed more than once in 24h", }, - { - name: "minimum self delegation cannot decrease", - ctx: newCtx, - input: &stakingtypes.MsgEditValidator{ - Description: stakingtypes.Description{ - Moniker: "TestValidator", - }, - ValidatorAddress: ValAddr.String(), - CommissionRate: &newRate, - MinSelfDelegation: &lowSelfDel, - }, - expErr: true, - expErrMsg: "minimum self delegation cannot be decrease", - }, - { - name: "validator self-delegation must be greater than min self delegation", - ctx: newCtx, - input: &stakingtypes.MsgEditValidator{ - Description: stakingtypes.Description{ - Moniker: "TestValidator", - }, - ValidatorAddress: ValAddr.String(), - CommissionRate: &newRate, - MinSelfDelegation: &highSelfDel, - }, - expErr: true, - expErrMsg: "validator's self delegation must be greater than their minimum self delegation", - }, { name: "valid msg", ctx: newCtx, @@ -397,7 +292,7 @@ func (s *KeeperTestSuite) TestMsgEditValidator() { }, ValidatorAddress: ValAddr.String(), CommissionRate: &newRate, - MinSelfDelegation: &newSelfDel, + MinSelfDelegation: newSelfDel, }, expErr: false, }, @@ -426,7 +321,7 @@ func (s *KeeperTestSuite) TestMsgDelegate() { comm := stakingtypes.NewCommissionRates(math.LegacyNewDec(0), math.LegacyNewDec(0), math.LegacyNewDec(0)) - msg, err := stakingtypes.NewMsgCreateValidator(ValAddr.String(), pk, sdk.NewCoin("stake", math.NewInt(10)), stakingtypes.Description{Moniker: "NewVal"}, comm, math.OneInt()) + msg, err := stakingtypes.NewMsgCreateValidator(ValAddr.String(), pk, sdk.NewCoin("stake", math.NewInt(10)), stakingtypes.Description{Moniker: "NewVal"}, comm) require.NoError(err) res, err := msgServer.CreateValidator(ctx, msg) @@ -551,14 +446,14 @@ func (s *KeeperTestSuite) TestMsgBeginRedelegate() { comm := stakingtypes.NewCommissionRates(math.LegacyNewDec(0), math.LegacyNewDec(0), math.LegacyNewDec(0)) amt := sdk.Coin{Denom: sdk.DefaultBondDenom, Amount: keeper.TokensFromConsensusPower(s.ctx, int64(100))} - msg, err := stakingtypes.NewMsgCreateValidator(srcValAddr.String(), pk, amt, stakingtypes.Description{Moniker: "NewVal"}, comm, math.OneInt()) + msg, err := stakingtypes.NewMsgCreateValidator(srcValAddr.String(), pk, amt, stakingtypes.Description{Moniker: "NewVal"}, comm) require.NoError(err) res, err := msgServer.CreateValidator(ctx, msg) require.NoError(err) require.NotNil(res) s.bankKeeper.EXPECT().DelegateCoinsFromAccountToModule(gomock.Any(), addr2, stakingtypes.NotBondedPoolName, gomock.Any()).AnyTimes() - msg, err = stakingtypes.NewMsgCreateValidator(dstValAddr.String(), dstPk, amt, stakingtypes.Description{Moniker: "NewVal"}, comm, math.OneInt()) + msg, err = stakingtypes.NewMsgCreateValidator(dstValAddr.String(), dstPk, amt, stakingtypes.Description{Moniker: "NewVal"}, comm) require.NoError(err) res, err = msgServer.CreateValidator(ctx, msg) @@ -713,7 +608,7 @@ func (s *KeeperTestSuite) TestMsgUndelegate() { comm := stakingtypes.NewCommissionRates(math.LegacyNewDec(0), math.LegacyNewDec(0), math.LegacyNewDec(0)) amt := sdk.Coin{Denom: sdk.DefaultBondDenom, Amount: keeper.TokensFromConsensusPower(s.ctx, int64(100))} - msg, err := stakingtypes.NewMsgCreateValidator(ValAddr.String(), pk, amt, stakingtypes.Description{Moniker: "NewVal"}, comm, math.OneInt()) + msg, err := stakingtypes.NewMsgCreateValidator(ValAddr.String(), pk, amt, stakingtypes.Description{Moniker: "NewVal"}, comm) require.NoError(err) res, err := msgServer.CreateValidator(ctx, msg) require.NoError(err) @@ -838,7 +733,7 @@ func (s *KeeperTestSuite) TestMsgCancelUnbondingDelegation() { s.bankKeeper.EXPECT().DelegateCoinsFromAccountToModule(gomock.Any(), Addr, stakingtypes.NotBondedPoolName, gomock.Any()).AnyTimes() - msg, err := stakingtypes.NewMsgCreateValidator(ValAddr.String(), pk, amt, stakingtypes.Description{Moniker: "NewVal"}, comm, math.OneInt()) + msg, err := stakingtypes.NewMsgCreateValidator(ValAddr.String(), pk, amt, stakingtypes.Description{Moniker: "NewVal"}, comm) require.NoError(err) res, err := msgServer.CreateValidator(ctx, msg) require.NoError(err) diff --git a/x/staking/keeper/params.go b/x/staking/keeper/params.go index 83e29708470c..e806ec171a18 100644 --- a/x/staking/keeper/params.go +++ b/x/staking/keeper/params.go @@ -50,6 +50,24 @@ func (k Keeper) PowerReduction(ctx context.Context) math.Int { return sdk.DefaultPowerReduction } +// Validator bond factor for all validators +func (k Keeper) ValidatorBondFactor(ctx context.Context) (math.LegacyDec, error) { + params, err := k.GetParams(ctx) + return params.ValidatorBondFactor, err +} + +// Global liquid staking cap across all liquid staking providers +func (k Keeper) GlobalLiquidStakingCap(ctx context.Context) (math.LegacyDec, error) { + params, err := k.GetParams(ctx) + return params.GlobalLiquidStakingCap, err +} + +// Liquid staking cap for each validator +func (k Keeper) ValidatorLiquidStakingCap(ctx context.Context) (math.LegacyDec, error) { + params, err := k.GetParams(ctx) + return params.ValidatorLiquidStakingCap, err +} + // MinCommissionRate - Minimum validator commission rate func (k Keeper) MinCommissionRate(ctx context.Context) (math.LegacyDec, error) { params, err := k.GetParams(ctx) diff --git a/x/staking/keeper/slash.go b/x/staking/keeper/slash.go index e1fa8bb47d64..38d2c484fc75 100644 --- a/x/staking/keeper/slash.go +++ b/x/staking/keeper/slash.go @@ -174,11 +174,22 @@ func (k Keeper) Slash(ctx context.Context, consAddr sdk.ConsAddress, infractionH // Deduct from validator's bonded tokens and update the validator. // Burn the slashed tokens from the pool account and decrease the total supply. + initialLiquidTokens := validator.TokensFromShares(validator.LiquidShares).TruncateInt() validator, err = k.RemoveValidatorTokens(ctx, validator, tokensToBurn) if err != nil { return math.NewInt(0), err } + // Proportionally deduct any liquid tokens from the global total + updatedLiquidTokens := validator.TokensFromShares(validator.LiquidShares).TruncateInt() + slashedLiquidTokens := initialLiquidTokens.Sub(updatedLiquidTokens) + if err := k.DecreaseTotalLiquidStakedTokens(sdkCtx, slashedLiquidTokens); err != nil { + // This only error's if the total liquid staked tokens underflows + // which would indicate there's a corrupted state where the validator has + // liquid tokens that are not accounted for in the global total + panic(err) + } + switch validator.GetStatus() { case types.Bonded: if err := k.burnBondedTokens(ctx, tokensToBurn); err != nil { diff --git a/x/staking/keeper/tokenize_share_record.go b/x/staking/keeper/tokenize_share_record.go new file mode 100644 index 000000000000..37f0103c729e --- /dev/null +++ b/x/staking/keeper/tokenize_share_record.go @@ -0,0 +1,171 @@ +package keeper + +import ( + "context" + "fmt" + + gogotypes "github.com/cosmos/gogoproto/types" + + errorsmod "cosmossdk.io/errors" + storetypes "cosmossdk.io/store/types" + + "github.com/cosmos/cosmos-sdk/runtime" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/x/staking/types" +) + +func (k Keeper) GetLastTokenizeShareRecordID(ctx context.Context) uint64 { + store := k.storeService.OpenKVStore(ctx) + bytes, err := store.Get(types.LastTokenizeShareRecordIDKey) + if err != nil { + panic(err) + } + + if bytes == nil { + return 0 + } + return sdk.BigEndianToUint64(bytes) +} + +func (k Keeper) SetLastTokenizeShareRecordID(ctx context.Context, id uint64) { + store := k.storeService.OpenKVStore(ctx) + store.Set(types.LastTokenizeShareRecordIDKey, sdk.Uint64ToBigEndian(id)) +} + +func (k Keeper) GetTokenizeShareRecord(ctx context.Context, id uint64) (tokenizeShareRecord types.TokenizeShareRecord, err error) { + store := k.storeService.OpenKVStore(ctx) + + bz, err := store.Get(types.GetTokenizeShareRecordByIndexKey(id)) + if err != nil { + return tokenizeShareRecord, err + } + + if bz == nil { + return tokenizeShareRecord, errorsmod.Wrap(types.ErrTokenizeShareRecordNotExists, fmt.Sprintf("tokenizeShareRecord %d does not exist", id)) + } + + k.cdc.MustUnmarshal(bz, &tokenizeShareRecord) + return tokenizeShareRecord, nil +} + +func (k Keeper) GetTokenizeShareRecordsByOwner(ctx context.Context, owner sdk.AccAddress) (tokenizeShareRecords []types.TokenizeShareRecord) { + store := k.storeService.OpenKVStore(ctx) + + it := storetypes.KVStorePrefixIterator(runtime.KVStoreAdapter(store), types.GetTokenizeShareRecordIdsByOwnerPrefix(owner)) + defer it.Close() + + for ; it.Valid(); it.Next() { + var id gogotypes.UInt64Value + k.cdc.MustUnmarshal(it.Value(), &id) + + tokenizeShareRecord, err := k.GetTokenizeShareRecord(ctx, id.Value) + if err != nil { + continue + } + tokenizeShareRecords = append(tokenizeShareRecords, tokenizeShareRecord) + } + return +} + +func (k Keeper) GetTokenizeShareRecordByDenom(ctx context.Context, denom string) (types.TokenizeShareRecord, error) { + store := k.storeService.OpenKVStore(ctx) + bz, err := store.Get(types.GetTokenizeShareRecordIDByDenomKey(denom)) + if err != nil { + return types.TokenizeShareRecord{}, err + } + + if bz == nil { + return types.TokenizeShareRecord{}, fmt.Errorf("tokenize share record not found from denom: %s", denom) + } + + var id gogotypes.UInt64Value + k.cdc.MustUnmarshal(bz, &id) + + return k.GetTokenizeShareRecord(ctx, id.Value) +} + +func (k Keeper) GetAllTokenizeShareRecords(ctx context.Context) (tokenizeShareRecords []types.TokenizeShareRecord) { + store := k.storeService.OpenKVStore(ctx) + + it := storetypes.KVStorePrefixIterator(runtime.KVStoreAdapter(store), types.TokenizeShareRecordPrefix) + defer it.Close() + + for ; it.Valid(); it.Next() { + var tokenizeShareRecord types.TokenizeShareRecord + k.cdc.MustUnmarshal(it.Value(), &tokenizeShareRecord) + + tokenizeShareRecords = append(tokenizeShareRecords, tokenizeShareRecord) + } + return +} + +func (k Keeper) AddTokenizeShareRecord(ctx context.Context, tokenizeShareRecord types.TokenizeShareRecord) error { + hasRecord, err := k.hasTokenizeShareRecord(ctx, tokenizeShareRecord.Id) + if err != nil { + return err + } + + if hasRecord { + return errorsmod.Wrapf(types.ErrTokenizeShareRecordAlreadyExists, "TokenizeShareRecord already exists: %d", tokenizeShareRecord.Id) + } + + k.setTokenizeShareRecord(ctx, tokenizeShareRecord) + + owner, err := k.authKeeper.AddressCodec().StringToBytes(tokenizeShareRecord.Owner) + if err != nil { + return err + } + + k.setTokenizeShareRecordWithOwner(ctx, owner, tokenizeShareRecord.Id) + k.setTokenizeShareRecordWithDenom(ctx, tokenizeShareRecord.GetShareTokenDenom(), tokenizeShareRecord.Id) + + return nil +} + +func (k Keeper) DeleteTokenizeShareRecord(ctx context.Context, recordID uint64) error { + record, err := k.GetTokenizeShareRecord(ctx, recordID) + if err != nil { + return err + } + owner, err := k.authKeeper.AddressCodec().StringToBytes(record.Owner) + if err != nil { + return err + } + + store := k.storeService.OpenKVStore(ctx) + store.Delete(types.GetTokenizeShareRecordByIndexKey(recordID)) + store.Delete(types.GetTokenizeShareRecordIDByOwnerAndIDKey(owner, recordID)) + store.Delete(types.GetTokenizeShareRecordIDByDenomKey(record.GetShareTokenDenom())) + return nil +} + +func (k Keeper) hasTokenizeShareRecord(ctx context.Context, id uint64) (bool, error) { + store := k.storeService.OpenKVStore(ctx) + return store.Has(types.GetTokenizeShareRecordByIndexKey(id)) +} + +func (k Keeper) setTokenizeShareRecord(ctx context.Context, tokenizeShareRecord types.TokenizeShareRecord) { + store := k.storeService.OpenKVStore(ctx) + bz := k.cdc.MustMarshal(&tokenizeShareRecord) + + store.Set(types.GetTokenizeShareRecordByIndexKey(tokenizeShareRecord.Id), bz) +} + +func (k Keeper) setTokenizeShareRecordWithOwner(ctx context.Context, owner sdk.AccAddress, id uint64) { + store := k.storeService.OpenKVStore(ctx) + bz := k.cdc.MustMarshal(&gogotypes.UInt64Value{Value: id}) + + store.Set(types.GetTokenizeShareRecordIDByOwnerAndIDKey(owner, id), bz) +} + +func (k Keeper) deleteTokenizeShareRecordWithOwner(ctx context.Context, owner sdk.AccAddress, id uint64) { + store := k.storeService.OpenKVStore(ctx) + store.Delete(types.GetTokenizeShareRecordIDByOwnerAndIDKey(owner, id)) +} + +func (k Keeper) setTokenizeShareRecordWithDenom(ctx context.Context, denom string, id uint64) { + store := k.storeService.OpenKVStore(ctx) + bz := k.cdc.MustMarshal(&gogotypes.UInt64Value{Value: id}) + + store.Set(types.GetTokenizeShareRecordIDByDenomKey(denom), bz) +} diff --git a/x/staking/keeper/tokenize_share_record_test.go b/x/staking/keeper/tokenize_share_record_test.go new file mode 100644 index 000000000000..fd9dd76a6765 --- /dev/null +++ b/x/staking/keeper/tokenize_share_record_test.go @@ -0,0 +1,63 @@ +package keeper_test + +import ( + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" + "github.com/cosmos/cosmos-sdk/x/staking/types" +) + +func (suite *KeeperTestSuite) TestGetLastTokenizeShareRecordId() { + ctx, keeper := suite.ctx, suite.stakingKeeper + lastTokenizeShareRecordID := keeper.GetLastTokenizeShareRecordID(ctx) + suite.Equal(lastTokenizeShareRecordID, uint64(0)) + keeper.SetLastTokenizeShareRecordID(ctx, 100) + lastTokenizeShareRecordID = keeper.GetLastTokenizeShareRecordID(ctx) + suite.Equal(lastTokenizeShareRecordID, uint64(100)) +} + +func (suite *KeeperTestSuite) TestGetTokenizeShareRecord() { + ctx, keeper := suite.ctx, suite.stakingKeeper + addrs := simtestutil.CreateIncrementalAccounts(2) + + owner1, owner2 := addrs[0], addrs[1] + tokenizeShareRecord1 := types.TokenizeShareRecord{ + Id: 0, + Owner: owner1.String(), + ModuleAccount: "test-module-account-1", + Validator: "test-validator", + } + tokenizeShareRecord2 := types.TokenizeShareRecord{ + Id: 1, + Owner: owner2.String(), + ModuleAccount: "test-module-account-2", + Validator: "test-validator", + } + tokenizeShareRecord3 := types.TokenizeShareRecord{ + Id: 2, + Owner: owner1.String(), + ModuleAccount: "test-module-account-3", + Validator: "test-validator", + } + err := keeper.AddTokenizeShareRecord(ctx, tokenizeShareRecord1) + suite.NoError(err) + err = keeper.AddTokenizeShareRecord(ctx, tokenizeShareRecord2) + suite.NoError(err) + err = keeper.AddTokenizeShareRecord(ctx, tokenizeShareRecord3) + suite.NoError(err) + + tokenizeShareRecord, err := keeper.GetTokenizeShareRecord(ctx, 2) + suite.NoError(err) + suite.Equal(tokenizeShareRecord, tokenizeShareRecord3) + + tokenizeShareRecord, err = keeper.GetTokenizeShareRecordByDenom(ctx, tokenizeShareRecord2.GetShareTokenDenom()) + suite.NoError(err) + suite.Equal(tokenizeShareRecord, tokenizeShareRecord2) + + tokenizeShareRecords := keeper.GetAllTokenizeShareRecords(ctx) + suite.Equal(len(tokenizeShareRecords), 3) + + tokenizeShareRecords = keeper.GetTokenizeShareRecordsByOwner(ctx, owner1) + suite.Equal(len(tokenizeShareRecords), 2) + + tokenizeShareRecords = keeper.GetTokenizeShareRecordsByOwner(ctx, owner2) + suite.Equal(len(tokenizeShareRecords), 1) +} diff --git a/x/staking/migrations/v3/README.md b/x/staking/migrations/v3/README.md new file mode 100644 index 000000000000..1d2a6a64a5d6 --- /dev/null +++ b/x/staking/migrations/v3/README.md @@ -0,0 +1,9 @@ +# IMPORTANT + +The migration history of the cosmos-sdk line with LSM diverges from the mainline cosmos-sdk. + +Migrations in this directory were not executed. + +The cosmos-sdk migration has that was executed on for cosmos-sdk@v0.45.16-ics-lsm is in `./lsm` directory. +All files under `./lsm` are excluded from the build process and kept for posterity. + diff --git a/x/staking/migrations/v3/json_test.go b/x/staking/migrations/v3/json_test.go index c111f366515e..52f3c2ea27ed 100644 --- a/x/staking/migrations/v3/json_test.go +++ b/x/staking/migrations/v3/json_test.go @@ -34,21 +34,34 @@ func TestMigrateJSON(t *testing.T) { indentedBz, err := json.MarshalIndent(jsonObj, "", "\t") require.NoError(t, err) - // Make sure about new param MinCommissionRate. + // Make sure about new params MinCommissionRate. + + // NOTE: the LSM module introduces: + // params: + // - GlobalLiquidStakingCap, ValidatorBondFactor, ValidatorLiquidStakingCap + // states: + // - LastTokenizeShareRecordId, TokenizeShareLocks, TokenizeShareRecords, TotalLiquidStakeTokens expected := `{ "delegations": [], "exported": false, + "last_tokenize_share_record_id": "0", "last_total_power": "0", "last_validator_powers": [], "params": { "bond_denom": "stake", + "global_liquid_staking_cap": "1.000000000000000000", "historical_entries": 10000, "max_entries": 7, "max_validators": 100, "min_commission_rate": "0.000000000000000000", - "unbonding_time": "1814400s" + "unbonding_time": "1814400s", + "validator_bond_factor": "-1.000000000000000000", + "validator_liquid_staking_cap": "1.000000000000000000" }, "redelegations": [], + "tokenize_share_locks": [], + "tokenize_share_records": [], + "total_liquid_staked_tokens": "0", "unbonding_delegations": [], "validators": [] }` diff --git a/x/staking/migrations/v3/lsm/migrations_test.go b/x/staking/migrations/v3/lsm/migrations_test.go new file mode 100644 index 000000000000..406c27c88fd0 --- /dev/null +++ b/x/staking/migrations/v3/lsm/migrations_test.go @@ -0,0 +1,310 @@ +//go:build exclude + +package v3_test + +// import ( +// "fmt" +// "testing" +// "time" + +// "github.com/cosmos/cosmos-sdk/codec" +// codectypes "github.com/cosmos/cosmos-sdk/codec/types" +// "github.com/cosmos/cosmos-sdk/simapp" +// storetypes "github.com/cosmos/cosmos-sdk/store/types" +// "github.com/cosmos/cosmos-sdk/testutil" +// sdk "github.com/cosmos/cosmos-sdk/types" +// paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" + +// tmproto "github.com/cometbft/cometbft/proto/tendermint/types" +// v3 "github.com/cosmos/cosmos-sdk/x/staking/migrations/v3" +// legacytypes "github.com/cosmos/cosmos-sdk/x/staking/migrations/v3/types" +// "github.com/cosmos/cosmos-sdk/x/staking/types" +// "github.com/stretchr/testify/require" +// ) + +// // Helper function to write a validator using the old schema +// func setLegacyValidator(store sdk.KVStore, cdc codec.BinaryCodec, validator legacytypes.Validator) { +// bz := cdc.MustMarshal(&validator) +// store.Set(types.GetValidatorKey(validator.GetOperator()), bz) +// } + +// // Helper function to write a delegation using the old schema +// func setLegacyDelegation(store sdk.KVStore, cdc codec.BinaryCodec, delegation legacytypes.Delegation) { +// delegatorAddress := sdk.MustAccAddressFromBech32(delegation.DelegatorAddress) + +// bz := cdc.MustMarshal(&delegation) +// store.Set(types.GetDelegationKey(delegatorAddress, delegation.GetValidatorAddr()), bz) +// } + +// // Helper function to get unbonding delegation records +// func getUBD(store storetypes.KVStore, cdc codec.BinaryCodec, accAddr sdk.AccAddress, valAddr sdk.ValAddress) (ubdRes types.UnbondingDelegation) { +// ubdbz := store.Get(types.GetUBDKey(accAddr, valAddr)) +// cdc.MustUnmarshal(ubdbz, &ubdRes) +// return ubdRes +// } + +// // createOldStateUnbonding will create the ubd entries with duplicate heights +// // 10 duplicate heights and 10 unique ubd with creation height +// func createOldUnbondingDelegationRecords(t *testing.T, creationHeight int64, valAddr sdk.ValAddress, accAddr sdk.AccAddress, cdc codec.BinaryCodec, store storetypes.KVStore) error { +// unbondBalance := sdk.NewInt(100) +// completionTime := time.Now() +// ubdEntries := make([]types.UnbondingDelegationEntry, 0, 10) + +// for i := int64(0); i < 10; i++ { +// ubdEntry := types.UnbondingDelegationEntry{ +// CreationHeight: creationHeight, +// Balance: unbondBalance, +// InitialBalance: unbondBalance, +// CompletionTime: completionTime, +// } +// ubdEntries = append(ubdEntries, ubdEntry) +// // creating more entries for testing the creation_heights +// ubdEntry.CreationHeight = i + 2 +// ubdEntry.CompletionTime = completionTime.Add(time.Minute * 10) +// ubdEntries = append(ubdEntries, ubdEntry) +// } + +// ubd := types.UnbondingDelegation{ +// ValidatorAddress: valAddr.String(), +// DelegatorAddress: accAddr.String(), +// Entries: ubdEntries, +// } + +// // set the unbond delegation with validator and delegator +// bz := types.MustMarshalUBD(cdc, ubd) +// key := types.GetUBDKey(accAddr, valAddr) +// store.Set(key, bz) +// return nil +// } + +// // Test setting params in the staking module +// func TestMigrateParamsStore(t *testing.T) { +// cdc := simapp.MakeTestEncodingConfig() +// stakingKey := storetypes.NewKVStoreKey(types.ModuleName) +// tStakingKey := sdk.NewTransientStoreKey("transient_test") +// ctx := testutil.DefaultContext(stakingKey, tStakingKey) +// paramstore := paramtypes.NewSubspace(cdc.Marshaler, cdc.Amino, stakingKey, tStakingKey, types.ModuleName) + +// // Check there are no LSM params +// require.False(t, paramstore.Has(ctx, types.KeyValidatorBondFactor)) +// require.False(t, paramstore.Has(ctx, types.KeyGlobalLiquidStakingCap)) +// require.False(t, paramstore.Has(ctx, types.KeyValidatorLiquidStakingCap)) + +// // Run migrations +// v3.MigrateParamsStore(ctx, paramstore) + +// // Make sure the new params are set +// require.True(t, paramstore.Has(ctx, types.KeyValidatorBondFactor)) +// require.True(t, paramstore.Has(ctx, types.KeyGlobalLiquidStakingCap)) +// require.True(t, paramstore.Has(ctx, types.KeyValidatorLiquidStakingCap)) + +// // Confirm default values are set +// var validatorBondFactor sdk.Dec +// paramstore.Get(ctx, types.KeyValidatorBondFactor, &validatorBondFactor) +// require.Equal(t, types.DefaultValidatorBondFactor, validatorBondFactor) + +// var globalLiquidStakingCap sdk.Dec +// paramstore.Get(ctx, types.KeyGlobalLiquidStakingCap, &globalLiquidStakingCap) +// require.Equal(t, types.DefaultGlobalLiquidStakingCap, globalLiquidStakingCap) + +// var validatorLiquidStakingCap sdk.Dec +// paramstore.Get(ctx, types.KeyValidatorLiquidStakingCap, &validatorLiquidStakingCap) +// require.Equal(t, types.DefaultValidatorLiquidStakingCap, validatorLiquidStakingCap) +// } + +// // Test setting each validator's ValidatorBondShares and LiquidShares to 0 +// func TestMigrateValidators(t *testing.T) { +// app := simapp.Setup(false) +// ctx := app.BaseApp.NewContext(false, tmproto.Header{}) +// store := ctx.KVStore(app.GetKey(legacytypes.StoreKey)) + +// addresses := simapp.AddTestAddrs(app, ctx, 10, sdk.NewInt(1_000_000)) +// pubKeys := simapp.CreateTestPubKeys(10) + +// // Write each validator with the old type +// oldValidators := []legacytypes.Validator{} +// for i := int64(0); i < 10; i++ { +// valAddress := sdk.ValAddress(addresses[i]).String() +// pkAny, err := codectypes.NewAnyWithValue(pubKeys[i]) +// require.NoError(t, err) + +// dummyTime := time.Date(2023, 1, 1, 0, 0, int(i), 0, time.UTC) + +// description := legacytypes.Description{ +// Moniker: fmt.Sprintf("moniker-%d", i), +// Identity: fmt.Sprintf("identity-%d", i), +// Website: fmt.Sprintf("website-%d", i), +// SecurityContact: fmt.Sprintf("security-contact-%d", i), +// Details: fmt.Sprintf("details-%d", i), +// } + +// commission := legacytypes.Commission{ +// UpdateTime: dummyTime, +// CommissionRates: legacytypes.CommissionRates{ +// Rate: sdk.NewDec(i), +// MaxRate: sdk.NewDec(i), +// MaxChangeRate: sdk.NewDec(i), +// }, +// } + +// validator := legacytypes.Validator{ +// OperatorAddress: valAddress, +// ConsensusPubkey: pkAny, +// Jailed: true, +// Status: legacytypes.Bonded, +// Tokens: sdk.NewInt(1_000_000), +// DelegatorShares: sdk.NewDec(1_000_000), +// UnbondingHeight: i, +// UnbondingTime: dummyTime, +// MinSelfDelegation: sdk.NewInt(1_000), +// UnbondingOnHoldRefCount: 1, +// UnbondingIds: []uint64{uint64(i)}, +// Description: description, +// Commission: commission, +// } + +// oldValidators = append(oldValidators, validator) +// setLegacyValidator(store, app.AppCodec(), validator) +// } + +// // Migrate to the new types which adds ValidatorBondShares and LiquidShares +// v3.MigrateValidators(ctx, app.StakingKeeper) + +// // check that the validator ValidatorBondShares and LiquidShares were correctly set to 0 +// for _, val := range app.StakingKeeper.GetAllValidators(ctx) { +// require.Equal(t, sdk.ZeroDec(), val.ValidatorBondShares) +// require.Equal(t, sdk.ZeroDec(), val.LiquidShares) +// } + +// // check that the other validator attributes were unchanged +// for _, oldValidator := range oldValidators { +// newValidator, found := app.StakingKeeper.GetValidator(ctx, oldValidator.GetOperator()) +// require.True(t, found) + +// require.Equal(t, oldValidator.ConsensusPubkey, newValidator.ConsensusPubkey, "pub key") +// require.Equal(t, oldValidator.Jailed, newValidator.Jailed, "jailed") +// require.Equal(t, oldValidator.Status.String(), newValidator.Status.String(), "status") +// require.Equal(t, oldValidator.Tokens.Int64(), newValidator.Tokens.Int64(), "tokens") +// require.Equal(t, oldValidator.DelegatorShares.TruncateInt64(), newValidator.DelegatorShares.TruncateInt64(), "shares") + +// require.Equal(t, oldValidator.UnbondingHeight, newValidator.UnbondingHeight, "unbonding height") +// require.Equal(t, oldValidator.UnbondingTime, newValidator.UnbondingTime, "unbonding time") +// require.Equal(t, oldValidator.UnbondingOnHoldRefCount, newValidator.UnbondingOnHoldRefCount, "unbonding on hold") +// require.Equal(t, oldValidator.UnbondingIds, newValidator.UnbondingIds, "unbonding ids") +// require.Equal(t, oldValidator.MinSelfDelegation.String(), newValidator.MinSelfDelegation.String(), "min self delegation") + +// oldDescription := oldValidator.Description +// newDescription := newValidator.Description +// require.Equal(t, oldDescription.Moniker, newDescription.Moniker, "moniker") +// require.Equal(t, oldDescription.Identity, newDescription.Identity, "identity") +// require.Equal(t, oldDescription.Website, newDescription.Website, "website") +// require.Equal(t, oldDescription.SecurityContact, newDescription.SecurityContact, "security contact") +// require.Equal(t, oldDescription.Details, newDescription.Details, "details") + +// oldCommissionRate := oldValidator.Commission.CommissionRates +// newCommissionRate := newValidator.Commission.CommissionRates +// require.Equal(t, oldValidator.Commission.UpdateTime, newValidator.Commission.UpdateTime, "commission update time") +// require.Equal(t, oldCommissionRate.Rate, newCommissionRate.Rate, "commission rate") +// require.Equal(t, oldCommissionRate.MaxRate, newCommissionRate.MaxRate, "commission max rate") +// require.Equal(t, oldCommissionRate.MaxChangeRate, newCommissionRate.MaxChangeRate, "commission max rate change") +// } +// } + +// // Test setting each delegation's validator bond to false +// func TestMigrateDelegations(t *testing.T) { +// app := simapp.Setup(false) +// ctx := app.BaseApp.NewContext(false, tmproto.Header{}) +// store := ctx.KVStore(app.GetKey(legacytypes.StoreKey)) + +// validatorAddresses := simapp.AddTestAddrs(app, ctx, 10, sdk.NewInt(1_000_000)) +// delegatorAddresses := simapp.AddTestAddrs(app, ctx, 10, sdk.NewInt(1_000_000)) + +// // Write each delegation with the old type +// oldDelegations := []legacytypes.Delegation{} +// for i := int64(0); i < 10; i++ { +// delegation := legacytypes.Delegation{ +// DelegatorAddress: delegatorAddresses[i].String(), +// ValidatorAddress: sdk.ValAddress(validatorAddresses[i]).String(), +// Shares: sdk.NewDec(i * 1000), +// } + +// oldDelegations = append(oldDelegations, delegation) +// setLegacyDelegation(store, app.AppCodec(), delegation) +// } + +// // Migrate the new delegations which should add the ValidatorBond field +// v3.MigrateDelegations(ctx, app.StakingKeeper) + +// // check that the delegation is not a validator bond +// for _, delegation := range app.StakingKeeper.GetAllDelegations(ctx) { +// require.Equal(t, false, delegation.ValidatorBond) +// } + +// // check that the other delegation attributes were unchanged +// for _, oldDelegation := range oldDelegations { +// newDelegation, found := app.StakingKeeper.GetDelegation(ctx, oldDelegation.GetDelegatorAddr(), oldDelegation.GetValidatorAddr()) +// require.True(t, found) + +// require.Equal(t, oldDelegation.DelegatorAddress, newDelegation.DelegatorAddress, "delegator address") +// require.Equal(t, oldDelegation.ValidatorAddress, newDelegation.ValidatorAddress, "validator address") +// require.Equal(t, oldDelegation.Shares.TruncateInt64(), newDelegation.Shares.TruncateInt64(), "shares") +// } +// } + +// // Tests unbonding delegation records with the same height are removed and combined into a new record +// func TestMigrateUBD(t *testing.T) { +// cdc := simapp.MakeTestEncodingConfig().Marshaler + +// storeKey := sdk.NewKVStoreKey(legacytypes.ModuleName) +// tKey := sdk.NewTransientStoreKey("transient_test") +// ctx := testutil.DefaultContext(storeKey, tKey) +// store := ctx.KVStore(storeKey) +// duplicateCreationHeight := int64(1) + +// accAddrs := v3.CreateIncrementalAccounts(1) +// accAddr := accAddrs[0] + +// valAddrs := v3.ConvertAddrsToValAddrs(accAddrs) +// valAddr := valAddrs[0] + +// // creating 10 ubdEntries with same height and 10 ubdEntries with different creation height +// err := createOldUnbondingDelegationRecords(t, duplicateCreationHeight, valAddr, accAddr, cdc, store) +// require.NoError(t, err) + +// testCases := []struct { +// name string +// doMigration bool +// }{ +// { +// name: "without state migration", +// doMigration: false, +// }, +// { +// name: "with state migration", +// doMigration: true, +// }, +// } + +// for _, tc := range testCases { +// t.Run(tc.name, func(t *testing.T) { +// if tc.doMigration { +// require.NoError(t, v3.MigrateUBDEntries(ctx, store, cdc)) +// } + +// ubd := getUBD(store, cdc, accAddr, valAddr) +// if tc.doMigration { +// // checking the updated balance for duplicateCreationHeight +// for _, ubdEntry := range ubd.Entries { +// if ubdEntry.CreationHeight == duplicateCreationHeight { +// require.Equal(t, sdk.NewInt(100*10), ubdEntry.Balance) +// break +// } +// } +// require.Equal(t, 11, len(ubd.Entries)) +// } else { +// require.Equal(t, true, true) +// require.Equal(t, 20, len(ubd.Entries)) +// } +// }) +// } +// } diff --git a/x/staking/migrations/v3/lsm/store.go b/x/staking/migrations/v3/lsm/store.go new file mode 100644 index 000000000000..e0dc7c593629 --- /dev/null +++ b/x/staking/migrations/v3/lsm/store.go @@ -0,0 +1,147 @@ +//go:build exclude + +package v3 + +import ( + "sort" + + sdkmath "cosmossdk.io/math" + storetypes "cosmossdk.io/store/types" + "github.com/cosmos/cosmos-sdk/codec" + sdk "github.com/cosmos/cosmos-sdk/types" + paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" + "github.com/cosmos/cosmos-sdk/x/staking/types" +) + +// subspace contains the method needed for migrations of the +// legacy Params subspace +type subspace interface { + GetParamSet(ctx sdk.Context, ps paramtypes.ParamSet) + HasKeyTable() bool + WithKeyTable(paramtypes.KeyTable) paramtypes.Subspace + Set(ctx sdk.Context, key []byte, value interface{}) +} + +// keeper contains the staking keeper functions required +// for the migration +type keeper interface { + GetAllDelegations(ctx sdk.Context) []types.Delegation + GetAllValidators(ctx sdk.Context) []types.Validator + SetDelegation(ctx sdk.Context, delegation types.Delegation) + SetValidator(ctx sdk.Context, validator types.Validator) + RefreshTotalLiquidStaked(ctx sdk.Context) error +} + +// Adds the following LSM params: +// - ValidatorBondFactor +// - GlobalLiquidStakingCap +// - ValidatorLiquidStakingCap +func MigrateParamsStore(ctx sdk.Context, paramstore subspace) { + if !paramstore.HasKeyTable() { + paramstore.WithKeyTable(types.ParamKeyTable()) + } + paramstore.Set(ctx, types.KeyValidatorBondFactor, types.DefaultValidatorBondFactor) + paramstore.Set(ctx, types.KeyGlobalLiquidStakingCap, types.DefaultGlobalLiquidStakingCap) + paramstore.Set(ctx, types.KeyValidatorLiquidStakingCap, types.DefaultValidatorLiquidStakingCap) +} + +// Set each validator's ValidatorBondShares and LiquidShares to 0 +func MigrateValidators(ctx sdk.Context, k keeper) { + for _, validator := range k.GetAllValidators(ctx) { + validator.ValidatorBondShares = sdkmath.LegacyZeroDec() + validator.LiquidShares = sdkmath.LegacyZeroDec() + k.SetValidator(ctx, validator) + } +} + +// Set each delegation's ValidatorBond field to false +func MigrateDelegations(ctx sdk.Context, k keeper) { + for _, delegation := range k.GetAllDelegations(ctx) { + delegation.ValidatorBond = false + k.SetDelegation(ctx, delegation) + } +} + +// migrateUBDEntries will remove the ubdEntries with same creation_height +// and create a new ubdEntry with updated balance and initial_balance +func MigrateUBDEntries(ctx sdk.Context, store storetypes.KVStore, cdc codec.BinaryCodec) error { + iterator := storetypes.KVStorePrefixIterator(store, types.UnbondingDelegationKey) + defer iterator.Close() + + for ; iterator.Valid(); iterator.Next() { + ubd := types.MustUnmarshalUBD(cdc, iterator.Value()) + + entriesAtSameCreationHeight := make(map[int64][]types.UnbondingDelegationEntry) + for _, ubdEntry := range ubd.Entries { + entriesAtSameCreationHeight[ubdEntry.CreationHeight] = append(entriesAtSameCreationHeight[ubdEntry.CreationHeight], ubdEntry) + } + + creationHeights := make([]int64, 0, len(entriesAtSameCreationHeight)) + for k := range entriesAtSameCreationHeight { + creationHeights = append(creationHeights, k) + } + + sort.Slice(creationHeights, func(i, j int) bool { return creationHeights[i] < creationHeights[j] }) + + ubd.Entries = make([]types.UnbondingDelegationEntry, 0, len(creationHeights)) + + for _, h := range creationHeights { + ubdEntry := types.UnbondingDelegationEntry{ + Balance: sdkmath.ZeroInt(), + InitialBalance: sdkmath.ZeroInt(), + } + for _, entry := range entriesAtSameCreationHeight[h] { + ubdEntry.Balance = ubdEntry.Balance.Add(entry.Balance) + ubdEntry.InitialBalance = ubdEntry.InitialBalance.Add(entry.InitialBalance) + ubdEntry.CreationHeight = entry.CreationHeight + ubdEntry.CompletionTime = entry.CompletionTime + } + ubd.Entries = append(ubd.Entries, ubdEntry) + } + + // set the new ubd to the store + setUBDToStore(ctx, store, cdc, ubd) + } + return nil +} + +func setUBDToStore(ctx sdk.Context, store storetypes.KVStore, cdc codec.BinaryCodec, ubd types.UnbondingDelegation) { + delegatorAddress := sdk.MustAccAddressFromBech32(ubd.DelegatorAddress) + + bz := types.MustMarshalUBD(cdc, ubd) + + addr, err := sdk.ValAddressFromBech32(ubd.ValidatorAddress) + if err != nil { + panic(err) + } + + key := types.GetUBDKey(delegatorAddress, addr) + + store.Set(key, bz) +} + +// Peforms the in-place store migration for adding LSM support to v0.45.16-ics, including: +// - Adding params ValidatorBondFactor, GlobalLiquidStakingCap, ValidatorLiquidStakingCap +// - Setting each validator's ValidatorBondShares and LiquidShares to 0 +// - Setting each delegation's ValidatorBond field to false +// - Calculating the total liquid staked by summing the delegations from ICA accounts +func MigrateStore(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.BinaryCodec, k keeper, paramstore subspace) error { + store := ctx.KVStore(storeKey) + + ctx.Logger().Info("Staking LSM Migration: Migrating param store") + MigrateParamsStore(ctx, paramstore) + + ctx.Logger().Info("Staking LSM Migration: Migrating validators") + MigrateValidators(ctx, k) + + ctx.Logger().Info("Staking LSM Migration: Migrating delegations") + MigrateDelegations(ctx, k) + + ctx.Logger().Info("Staking LSM Migration: Migrating UBD entries") + if err := MigrateUBDEntries(ctx, store, cdc); err != nil { + return err + } + + ctx.Logger().Info("Staking LSM Migration: Calculating total liquid staked") + return k.RefreshTotalLiquidStaked(ctx) +} diff --git a/x/staking/migrations/v3/lsm/test_helpers.go b/x/staking/migrations/v3/lsm/test_helpers.go new file mode 100644 index 000000000000..cfed9fa8110c --- /dev/null +++ b/x/staking/migrations/v3/lsm/test_helpers.go @@ -0,0 +1,85 @@ +//go:build exclude + +// This file contains utility testing functions from SDK 47 that are required for the UBD migration unit test +package v3 + +// import ( +// "bytes" +// "encoding/hex" +// "fmt" +// "strconv" + +// sdk "github.com/cosmos/cosmos-sdk/types" +// ) + +// // CreateIncrementalAccounts is a strategy used by addTestAddrs() in order to generated addresses in ascending order. +// func CreateIncrementalAccounts(accNum int) []sdk.AccAddress { +// var addresses []sdk.AccAddress +// var buffer bytes.Buffer + +// // start at 100 so we can make up to 999 test addresses with valid test addresses +// for i := 100; i < (accNum + 100); i++ { +// numString := strconv.Itoa(i) +// buffer.WriteString("A58856F0FD53BF058B4909A21AEC019107BA6") // base address string + +// buffer.WriteString(numString) // adding on final two digits to make addresses unique +// res, _ := AccAddressFromHexUnsafe(buffer.String()) +// bech := res.String() +// addr, _ := CheckHexConversion(buffer.String(), bech) + +// addresses = append(addresses, addr) +// buffer.Reset() +// } + +// return addresses +// } + +// func CheckHexConversion(addr string, bech string) (sdk.AccAddress, error) { +// res, err := AccAddressFromHexUnsafe(addr) +// if err != nil { +// return nil, err +// } +// bechexpected := res.String() +// if bech != bechexpected { +// return nil, fmt.Errorf("bech encoding doesn't match reference") +// } + +// bechres, err := sdk.AccAddressFromBech32(bech) +// if err != nil { +// return nil, err +// } +// if !bytes.Equal(bechres, res) { +// return nil, err +// } + +// return res, nil +// } + +// // ConvertAddrsToValAddrs converts the provided addresses to ValAddress. +// func ConvertAddrsToValAddrs(addrs []sdk.AccAddress) []sdk.ValAddress { +// valAddrs := make([]sdk.ValAddress, len(addrs)) + +// for i, addr := range addrs { +// valAddrs[i] = sdk.ValAddress(addr) +// } + +// return valAddrs +// } + +// // AccAddressFromHexUnsafe creates an AccAddress from a HEX-encoded string. +// // +// // Note, this function is considered unsafe as it may produce an AccAddress from +// // otherwise invalid input, such as a transaction hash. Please use +// // AccAddressFromBech32. +// func AccAddressFromHexUnsafe(address string) (addr sdk.AccAddress, err error) { +// bz, err := addressBytesFromHexString(address) +// return sdk.AccAddress(bz), err +// } + +// func addressBytesFromHexString(address string) ([]byte, error) { +// if len(address) == 0 { +// return nil, fmt.Errorf("empty hex address") +// } + +// return hex.DecodeString(address) +// } diff --git a/x/staking/migrations/v3/lsm/types/keys.go b/x/staking/migrations/v3/lsm/types/keys.go new file mode 100644 index 000000000000..0fcfa50df4c7 --- /dev/null +++ b/x/staking/migrations/v3/lsm/types/keys.go @@ -0,0 +1,39 @@ +//go:build exclude + +package types + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/address" +) + +const ( + // ModuleName is the name of the staking module + ModuleName = "staking" + + // StoreKey is the string store representation + StoreKey = ModuleName +) + +var ( + ValidatorsKey = []byte{0x21} // prefix for each key to a validator + DelegationKey = []byte{0x31} // key for a delegation + ParamsKey = []byte{0x51} // prefix for parameters for module x/staking +) + +// GetValidatorKey creates the key for the validator with address +// VALUE: staking/Validator +func GetValidatorKey(operatorAddr sdk.ValAddress) []byte { + return append(ValidatorsKey, address.MustLengthPrefix(operatorAddr)...) +} + +// GetDelegationKey creates the key for delegator bond with validator +// VALUE: staking/Delegation +func GetDelegationKey(delAddr sdk.AccAddress, valAddr sdk.ValAddress) []byte { + return append(GetDelegationsKey(delAddr), address.MustLengthPrefix(valAddr)...) +} + +// GetDelegationsKey creates the prefix for a delegator for all validators +func GetDelegationsKey(delAddr sdk.AccAddress) []byte { + return append(DelegationKey, address.MustLengthPrefix(delAddr)...) +} diff --git a/x/staking/migrations/v3/lsm/types/staking.go b/x/staking/migrations/v3/lsm/types/staking.go new file mode 100644 index 000000000000..0edc0a862c81 --- /dev/null +++ b/x/staking/migrations/v3/lsm/types/staking.go @@ -0,0 +1,90 @@ +//go:build exclude + +package types + +import ( + "github.com/cosmos/cosmos-sdk/codec" + sdk "github.com/cosmos/cosmos-sdk/types" + "gopkg.in/yaml.v2" +) + +// String implements the Stringer interface for a Commission object. +func (c Commission) String() string { + out, _ := yaml.Marshal(c) + return string(out) +} + +// String implements the Stringer interface for a CommissionRates object. +func (cr CommissionRates) String() string { + out, _ := yaml.Marshal(cr) + return string(out) +} + +// String implements the Stringer interface for a Validator object. +func (v Validator) String() string { + out, _ := yaml.Marshal(v) + return string(out) +} + +// String returns a human readable string representation of a Delegation. +func (d Delegation) String() string { + out, _ := yaml.Marshal(d) + return string(out) +} + +// String implements the Stringer interface for a Description object. +func (d Description) String() string { + out, _ := yaml.Marshal(d) + return string(out) +} + +// String returns a human readable string representation of the parameters. +func (p Params) String() string { + out, _ := yaml.Marshal(p) + return string(out) +} + +// unmarshal the current staking params value from store key or panic +func MustUnmarshalParams(cdc *codec.LegacyAmino, value []byte) Params { + params, err := UnmarshalParams(cdc, value) + if err != nil { + panic(err) + } + + return params +} + +// unmarshal the current staking params value from store key +func UnmarshalParams(cdc *codec.LegacyAmino, value []byte) (params Params, err error) { + err = cdc.Unmarshal(value, ¶ms) + if err != nil { + return + } + + return +} + +func (v Validator) GetOperator() sdk.ValAddress { + if v.OperatorAddress == "" { + return nil + } + addr, err := sdk.ValAddressFromBech32(v.OperatorAddress) + if err != nil { + panic(err) + } + return addr +} + +func (d Delegation) GetDelegatorAddr() sdk.AccAddress { + delAddr := sdk.MustAccAddressFromBech32(d.DelegatorAddress) + + return delAddr +} + +func (d Delegation) GetValidatorAddr() sdk.ValAddress { + addr, err := sdk.ValAddressFromBech32(d.ValidatorAddress) + if err != nil { + panic(err) + } + return addr +} diff --git a/x/staking/migrations/v3/lsm/types/staking.pb.go b/x/staking/migrations/v3/lsm/types/staking.pb.go new file mode 100644 index 000000000000..c71d81a6e9dc --- /dev/null +++ b/x/staking/migrations/v3/lsm/types/staking.pb.go @@ -0,0 +1,3446 @@ +// go:build exclude +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: cosmos/staking/v1beta1/staking.proto + +package types + +// import ( +// bytes "bytes" +// compress_gzip "compress/gzip" +// fmt "fmt" +// types1 "github.com/cosmos/cosmos-sdk/codec/types" +// github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" +// _ "github.com/gogo/protobuf/gogoproto" +// github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto" +// proto "github.com/gogo/protobuf/proto" +// github_com_gogo_protobuf_protoc_gen_gogo_descriptor "github.com/gogo/protobuf/protoc-gen-gogo/descriptor" +// github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" +// _ "github.com/regen-network/cosmos-proto" +// _ "google.golang.org/protobuf/types/known/durationpb" +// _ "google.golang.org/protobuf/types/known/timestamppb" +// io "io" +// io_ioutil "io/ioutil" +// math "math" +// math_bits "math/bits" +// reflect "reflect" +// time "time" +// ) + +// // Reference imports to suppress errors if they are not otherwise used. +// var _ = proto.Marshal +// var _ = fmt.Errorf +// var _ = math.Inf +// var _ = time.Kitchen + +// // This is a compile-time assertion to ensure that this generated file +// // is compatible with the proto package it is being compiled against. +// // A compilation error at this line likely means your copy of the +// // proto package needs to be updated. +// const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// // BondStatus is the status of a validator. +// type BondStatus int32 + +// const ( +// // UNSPECIFIED defines an invalid validator status. +// Unspecified BondStatus = 0 +// // UNBONDED defines a validator that is not bonded. +// Unbonded BondStatus = 1 +// // UNBONDING defines a validator that is unbonding. +// Unbonding BondStatus = 2 +// // BONDED defines a validator that is bonded. +// Bonded BondStatus = 3 +// ) + +// var BondStatus_name = map[int32]string{ +// 0: "BOND_STATUS_UNSPECIFIED", +// 1: "BOND_STATUS_UNBONDED", +// 2: "BOND_STATUS_UNBONDING", +// 3: "BOND_STATUS_BONDED", +// } + +// var BondStatus_value = map[string]int32{ +// "BOND_STATUS_UNSPECIFIED": 0, +// "BOND_STATUS_UNBONDED": 1, +// "BOND_STATUS_UNBONDING": 2, +// "BOND_STATUS_BONDED": 3, +// } + +// func (x BondStatus) String() string { +// return proto.EnumName(BondStatus_name, int32(x)) +// } + +// func (BondStatus) EnumDescriptor() ([]byte, []int) { +// return fileDescriptor_64c30c6cf92913c9, []int{0} +// } + +// // CommissionRates defines the initial commission rates to be used for creating +// // a validator. +// type CommissionRates struct { +// // rate is the commission rate charged to delegators, as a fraction. +// Rate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,1,opt,name=rate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"rate"` +// // max_rate defines the maximum commission rate which validator can ever charge, as a fraction. +// MaxRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,2,opt,name=max_rate,json=maxRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"max_rate" yaml:"max_rate"` +// // max_change_rate defines the maximum daily increase of the validator commission, as a fraction. +// MaxChangeRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,3,opt,name=max_change_rate,json=maxChangeRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"max_change_rate" yaml:"max_change_rate"` +// } + +// func (m *CommissionRates) Reset() { *m = CommissionRates{} } +// func (*CommissionRates) ProtoMessage() {} +// func (*CommissionRates) Descriptor() ([]byte, []int) { +// return fileDescriptor_64c30c6cf92913c9, []int{1} +// } +// func (m *CommissionRates) XXX_Unmarshal(b []byte) error { +// return m.Unmarshal(b) +// } +// func (m *CommissionRates) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +// if deterministic { +// return xxx_messageInfo_CommissionRates.Marshal(b, m, deterministic) +// } else { +// b = b[:cap(b)] +// n, err := m.MarshalToSizedBuffer(b) +// if err != nil { +// return nil, err +// } +// return b[:n], nil +// } +// } +// func (m *CommissionRates) XXX_Merge(src proto.Message) { +// xxx_messageInfo_CommissionRates.Merge(m, src) +// } +// func (m *CommissionRates) XXX_Size() int { +// return m.Size() +// } +// func (m *CommissionRates) XXX_DiscardUnknown() { +// xxx_messageInfo_CommissionRates.DiscardUnknown(m) +// } + +// var xxx_messageInfo_CommissionRates proto.InternalMessageInfo + +// // Commission defines commission parameters for a given validator. +// type Commission struct { +// // commission_rates defines the initial commission rates to be used for creating a validator. +// CommissionRates `protobuf:"bytes,1,opt,name=commission_rates,json=commissionRates,proto3,embedded=commission_rates" json:"commission_rates"` +// // update_time is the last time the commission rate was changed. +// UpdateTime time.Time `protobuf:"bytes,2,opt,name=update_time,json=updateTime,proto3,stdtime" json:"update_time" yaml:"update_time"` +// } + +// func (m *Commission) Reset() { *m = Commission{} } +// func (*Commission) ProtoMessage() {} +// func (*Commission) Descriptor() ([]byte, []int) { +// return fileDescriptor_64c30c6cf92913c9, []int{2} +// } +// func (m *Commission) XXX_Unmarshal(b []byte) error { +// return m.Unmarshal(b) +// } +// func (m *Commission) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +// if deterministic { +// return xxx_messageInfo_Commission.Marshal(b, m, deterministic) +// } else { +// b = b[:cap(b)] +// n, err := m.MarshalToSizedBuffer(b) +// if err != nil { +// return nil, err +// } +// return b[:n], nil +// } +// } +// func (m *Commission) XXX_Merge(src proto.Message) { +// xxx_messageInfo_Commission.Merge(m, src) +// } +// func (m *Commission) XXX_Size() int { +// return m.Size() +// } +// func (m *Commission) XXX_DiscardUnknown() { +// xxx_messageInfo_Commission.DiscardUnknown(m) +// } + +// var xxx_messageInfo_Commission proto.InternalMessageInfo + +// func (m *Commission) GetUpdateTime() time.Time { +// if m != nil { +// return m.UpdateTime +// } +// return time.Time{} +// } + +// // Description defines a validator description. +// type Description struct { +// // moniker defines a human-readable name for the validator. +// Moniker string `protobuf:"bytes,1,opt,name=moniker,proto3" json:"moniker,omitempty"` +// // identity defines an optional identity signature (ex. UPort or Keybase). +// Identity string `protobuf:"bytes,2,opt,name=identity,proto3" json:"identity,omitempty"` +// // website defines an optional website link. +// Website string `protobuf:"bytes,3,opt,name=website,proto3" json:"website,omitempty"` +// // security_contact defines an optional email for security contact. +// SecurityContact string `protobuf:"bytes,4,opt,name=security_contact,json=securityContact,proto3" json:"security_contact,omitempty" yaml:"security_contact"` +// // details define other optional details. +// Details string `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` +// } + +// func (m *Description) Reset() { *m = Description{} } +// func (*Description) ProtoMessage() {} +// func (*Description) Descriptor() ([]byte, []int) { +// return fileDescriptor_64c30c6cf92913c9, []int{3} +// } +// func (m *Description) XXX_Unmarshal(b []byte) error { +// return m.Unmarshal(b) +// } +// func (m *Description) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +// if deterministic { +// return xxx_messageInfo_Description.Marshal(b, m, deterministic) +// } else { +// b = b[:cap(b)] +// n, err := m.MarshalToSizedBuffer(b) +// if err != nil { +// return nil, err +// } +// return b[:n], nil +// } +// } +// func (m *Description) XXX_Merge(src proto.Message) { +// xxx_messageInfo_Description.Merge(m, src) +// } +// func (m *Description) XXX_Size() int { +// return m.Size() +// } +// func (m *Description) XXX_DiscardUnknown() { +// xxx_messageInfo_Description.DiscardUnknown(m) +// } + +// var xxx_messageInfo_Description proto.InternalMessageInfo + +// func (m *Description) GetMoniker() string { +// if m != nil { +// return m.Moniker +// } +// return "" +// } + +// func (m *Description) GetIdentity() string { +// if m != nil { +// return m.Identity +// } +// return "" +// } + +// func (m *Description) GetWebsite() string { +// if m != nil { +// return m.Website +// } +// return "" +// } + +// func (m *Description) GetSecurityContact() string { +// if m != nil { +// return m.SecurityContact +// } +// return "" +// } + +// func (m *Description) GetDetails() string { +// if m != nil { +// return m.Details +// } +// return "" +// } + +// // Validator defines a validator, together with the total amount of the +// // Validator's bond shares and their exchange rate to coins. Slashing results in +// // a decrease in the exchange rate, allowing correct calculation of future +// // undelegations without iterating over delegators. When coins are delegated to +// // this validator, the validator is credited with a delegation whose number of +// // bond shares is based on the amount of coins delegated divided by the current +// // exchange rate. Voting power can be calculated as total bonded shares +// // multiplied by exchange rate. +// type Validator struct { +// // operator_address defines the address of the validator's operator; bech encoded in JSON. +// OperatorAddress string `protobuf:"bytes,1,opt,name=operator_address,json=operatorAddress,proto3" json:"operator_address,omitempty" yaml:"operator_address"` +// // consensus_pubkey is the consensus public key of the validator, as a Protobuf Any. +// ConsensusPubkey *types1.Any `protobuf:"bytes,2,opt,name=consensus_pubkey,json=consensusPubkey,proto3" json:"consensus_pubkey,omitempty" yaml:"consensus_pubkey"` +// // jailed defined whether the validator has been jailed from bonded status or not. +// Jailed bool `protobuf:"varint,3,opt,name=jailed,proto3" json:"jailed,omitempty"` +// // status is the validator status (bonded/unbonding/unbonded). +// Status BondStatus `protobuf:"varint,4,opt,name=status,proto3,enum=cosmos.staking.v1beta1.BondStatus" json:"status,omitempty"` +// // tokens define the delegated tokens (incl. self-delegation). +// Tokens github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,5,opt,name=tokens,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"tokens"` +// // delegator_shares defines total shares issued to a validator's delegators. +// DelegatorShares github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,6,opt,name=delegator_shares,json=delegatorShares,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"delegator_shares" yaml:"delegator_shares"` +// // description defines the description terms for the validator. +// Description Description `protobuf:"bytes,7,opt,name=description,proto3" json:"description"` +// // unbonding_height defines, if unbonding, the height at which this validator has begun unbonding. +// UnbondingHeight int64 `protobuf:"varint,8,opt,name=unbonding_height,json=unbondingHeight,proto3" json:"unbonding_height,omitempty" yaml:"unbonding_height"` +// // unbonding_time defines, if unbonding, the min time for the validator to complete unbonding. +// UnbondingTime time.Time `protobuf:"bytes,9,opt,name=unbonding_time,json=unbondingTime,proto3,stdtime" json:"unbonding_time" yaml:"unbonding_time"` +// // commission defines the commission parameters. +// Commission Commission `protobuf:"bytes,10,opt,name=commission,proto3" json:"commission"` +// // min_self_delegation is the validator's self declared minimum self delegation. +// 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" yaml:"min_self_delegation"` +// // strictly positive if this validator's unbonding has been stopped by external modules +// UnbondingOnHoldRefCount int64 `protobuf:"varint,12,opt,name=unbonding_on_hold_ref_count,json=unbondingOnHoldRefCount,proto3" json:"unbonding_on_hold_ref_count,omitempty"` +// // list of unbonding ids, each uniquely identifing an unbonding of this validator +// UnbondingIds []uint64 `protobuf:"varint,13,rep,packed,name=unbonding_ids,json=unbondingIds,proto3" json:"unbonding_ids,omitempty"` +// } + +// func (m *Validator) Reset() { *m = Validator{} } +// func (*Validator) ProtoMessage() {} +// func (*Validator) Descriptor() ([]byte, []int) { +// return fileDescriptor_64c30c6cf92913c9, []int{4} +// } +// func (m *Validator) XXX_Unmarshal(b []byte) error { +// return m.Unmarshal(b) +// } +// func (m *Validator) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +// if deterministic { +// return xxx_messageInfo_Validator.Marshal(b, m, deterministic) +// } else { +// b = b[:cap(b)] +// n, err := m.MarshalToSizedBuffer(b) +// if err != nil { +// return nil, err +// } +// return b[:n], nil +// } +// } +// func (m *Validator) XXX_Merge(src proto.Message) { +// xxx_messageInfo_Validator.Merge(m, src) +// } +// func (m *Validator) XXX_Size() int { +// return m.Size() +// } +// func (m *Validator) XXX_DiscardUnknown() { +// xxx_messageInfo_Validator.DiscardUnknown(m) +// } + +// var xxx_messageInfo_Validator proto.InternalMessageInfo + +// // Delegation represents the bond with tokens held by an account. It is +// // owned by one delegator, and is associated with the voting power of one +// // validator. +// type Delegation struct { +// // delegator_address is the bech32-encoded address of the delegator. +// DelegatorAddress string `protobuf:"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty" yaml:"delegator_address"` +// // validator_address is the bech32-encoded address of the validator. +// ValidatorAddress string `protobuf:"bytes,2,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty" yaml:"validator_address"` +// // shares define the delegation shares received. +// Shares github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,3,opt,name=shares,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"shares"` +// } + +// func (m *Delegation) Reset() { *m = Delegation{} } +// func (*Delegation) ProtoMessage() {} +// func (*Delegation) Descriptor() ([]byte, []int) { +// return fileDescriptor_64c30c6cf92913c9, []int{10} +// } +// func (m *Delegation) XXX_Unmarshal(b []byte) error { +// return m.Unmarshal(b) +// } +// func (m *Delegation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +// if deterministic { +// return xxx_messageInfo_Delegation.Marshal(b, m, deterministic) +// } else { +// b = b[:cap(b)] +// n, err := m.MarshalToSizedBuffer(b) +// if err != nil { +// return nil, err +// } +// return b[:n], nil +// } +// } +// func (m *Delegation) XXX_Merge(src proto.Message) { +// xxx_messageInfo_Delegation.Merge(m, src) +// } +// func (m *Delegation) XXX_Size() int { +// return m.Size() +// } +// func (m *Delegation) XXX_DiscardUnknown() { +// xxx_messageInfo_Delegation.DiscardUnknown(m) +// } + +// var xxx_messageInfo_Delegation proto.InternalMessageInfo + +// // Params defines the parameters for the staking module. +// type Params struct { +// // unbonding_time is the time duration of unbonding. +// UnbondingTime time.Duration `protobuf:"bytes,1,opt,name=unbonding_time,json=unbondingTime,proto3,stdduration" json:"unbonding_time" yaml:"unbonding_time"` +// // max_validators is the maximum number of validators. +// MaxValidators uint32 `protobuf:"varint,2,opt,name=max_validators,json=maxValidators,proto3" json:"max_validators,omitempty" yaml:"max_validators"` +// // max_entries is the max entries for either unbonding delegation or redelegation (per pair/trio). +// MaxEntries uint32 `protobuf:"varint,3,opt,name=max_entries,json=maxEntries,proto3" json:"max_entries,omitempty" yaml:"max_entries"` +// // historical_entries is the number of historical entries to persist. +// HistoricalEntries uint32 `protobuf:"varint,4,opt,name=historical_entries,json=historicalEntries,proto3" json:"historical_entries,omitempty" yaml:"historical_entries"` +// // bond_denom defines the bondable coin denomination. +// BondDenom string `protobuf:"bytes,5,opt,name=bond_denom,json=bondDenom,proto3" json:"bond_denom,omitempty" yaml:"bond_denom"` +// } + +// func (m *Params) Reset() { *m = Params{} } +// func (*Params) ProtoMessage() {} +// func (*Params) Descriptor() ([]byte, []int) { +// return fileDescriptor_64c30c6cf92913c9, []int{15} +// } +// func (m *Params) XXX_Unmarshal(b []byte) error { +// return m.Unmarshal(b) +// } +// func (m *Params) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +// if deterministic { +// return xxx_messageInfo_Params.Marshal(b, m, deterministic) +// } else { +// b = b[:cap(b)] +// n, err := m.MarshalToSizedBuffer(b) +// if err != nil { +// return nil, err +// } +// return b[:n], nil +// } +// } +// func (m *Params) XXX_Merge(src proto.Message) { +// xxx_messageInfo_Params.Merge(m, src) +// } +// func (m *Params) XXX_Size() int { +// return m.Size() +// } +// func (m *Params) XXX_DiscardUnknown() { +// xxx_messageInfo_Params.DiscardUnknown(m) +// } + +// var xxx_messageInfo_Params proto.InternalMessageInfo + +// func (m *Params) GetUnbondingTime() time.Duration { +// if m != nil { +// return m.UnbondingTime +// } +// return 0 +// } + +// func (m *Params) GetMaxValidators() uint32 { +// if m != nil { +// return m.MaxValidators +// } +// return 0 +// } + +// func (m *Params) GetMaxEntries() uint32 { +// if m != nil { +// return m.MaxEntries +// } +// return 0 +// } + +// func (m *Params) GetHistoricalEntries() uint32 { +// if m != nil { +// return m.HistoricalEntries +// } +// return 0 +// } + +// func (m *Params) GetBondDenom() string { +// if m != nil { +// return m.BondDenom +// } +// return "" +// } + +// func init() { +// proto.RegisterEnum("cosmos.staking.v1beta1.BondStatus.v3", BondStatus_name, BondStatus_value) +// proto.RegisterType((*CommissionRates)(nil), "cosmos.staking.v1beta1.CommissionRates.v3") +// proto.RegisterType((*Commission)(nil), "cosmos.staking.v1beta1.Commission.v3") +// proto.RegisterType((*Description)(nil), "cosmos.staking.v1beta1.Description.v3") +// proto.RegisterType((*Validator)(nil), "cosmos.staking.v1beta1.Validator.v3") +// proto.RegisterType((*Delegation)(nil), "cosmos.staking.v1beta1.Delegation.v3") +// proto.RegisterType((*Params)(nil), "cosmos.staking.v1beta1.Params.v3") +// } + +// func init() { +// proto.RegisterFile("cosmos/staking/v1beta1/staking.proto", fileDescriptor_64c30c6cf92913c9) +// } + +// var fileDescriptor_64c30c6cf92913c9 = []byte{ +// // 2021 bytes of a gzipped FileDescriptorProto +// 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0x4f, 0x6c, 0x23, 0x57, +// 0x19, 0xf7, 0xd8, 0xae, 0xe3, 0x7c, 0x4e, 0xe2, 0xe4, 0x6d, 0x76, 0xd7, 0xf1, 0x2e, 0xb6, 0x77, +// 0x5a, 0x95, 0xb0, 0x6a, 0x1d, 0x36, 0xad, 0x8a, 0x88, 0x90, 0x68, 0x1c, 0x3b, 0x8d, 0xd5, 0x6d, +// 0x36, 0x8c, 0x9d, 0x54, 0x40, 0xc5, 0x68, 0x3c, 0xf3, 0xe2, 0x0c, 0xb1, 0x67, 0xcc, 0xbc, 0xe7, +// 0x6d, 0x2c, 0xf5, 0xc0, 0xb1, 0x84, 0x03, 0xe5, 0xd6, 0x4b, 0xa4, 0x95, 0x7a, 0x42, 0x42, 0xe2, +// 0x82, 0xb8, 0x72, 0x2d, 0x70, 0x59, 0x6e, 0x08, 0x21, 0x83, 0x76, 0x2f, 0x88, 0x03, 0xaa, 0x72, +// 0x40, 0xdc, 0x40, 0xef, 0xcf, 0xfc, 0xc9, 0x38, 0xd9, 0xdd, 0xac, 0x2a, 0x54, 0x89, 0x5e, 0x76, +// 0xfd, 0xbe, 0xf7, 0x7d, 0xbf, 0xef, 0x7d, 0xff, 0xdf, 0x9b, 0xc0, 0x4b, 0xa6, 0x4b, 0xfa, 0x2e, +// 0x59, 0x21, 0xd4, 0x38, 0xb4, 0x9d, 0xee, 0xca, 0xfd, 0x3b, 0x1d, 0x4c, 0x8d, 0x3b, 0xfe, 0xba, +// 0x3a, 0xf0, 0x5c, 0xea, 0xa2, 0x6b, 0x82, 0xab, 0xea, 0x53, 0x25, 0x57, 0x71, 0xb1, 0xeb, 0x76, +// 0x5d, 0xce, 0xb2, 0xc2, 0x7e, 0x09, 0xee, 0xe2, 0x52, 0xd7, 0x75, 0xbb, 0x3d, 0xbc, 0xc2, 0x57, +// 0x9d, 0xe1, 0xfe, 0x8a, 0xe1, 0x8c, 0xe4, 0x56, 0x29, 0xbe, 0x65, 0x0d, 0x3d, 0x83, 0xda, 0xae, +// 0x23, 0xf7, 0xcb, 0xf1, 0x7d, 0x6a, 0xf7, 0x31, 0xa1, 0x46, 0x7f, 0xe0, 0x63, 0x8b, 0x93, 0xe8, +// 0x42, 0xa9, 0x3c, 0x96, 0xc4, 0x96, 0xa6, 0x74, 0x0c, 0x82, 0x03, 0x3b, 0x4c, 0xd7, 0xf6, 0xb1, +// 0x6f, 0x52, 0xec, 0x58, 0xd8, 0xeb, 0xdb, 0x0e, 0x5d, 0xa1, 0xa3, 0x01, 0x26, 0xe2, 0x5f, 0xb9, +// 0x7b, 0x23, 0xb2, 0x6b, 0x74, 0x4c, 0x3b, 0xba, 0xa9, 0xfe, 0x44, 0x81, 0xb9, 0x2d, 0x9b, 0x50, +// 0xd7, 0xb3, 0x4d, 0xa3, 0xd7, 0x74, 0xf6, 0x5d, 0xf4, 0x06, 0x64, 0x0e, 0xb0, 0x61, 0x61, 0xaf, +// 0xa0, 0x54, 0x94, 0xe5, 0xdc, 0x6a, 0xa1, 0x1a, 0x02, 0x54, 0x85, 0xec, 0x16, 0xdf, 0xaf, 0xa5, +// 0x3f, 0x1d, 0x97, 0x13, 0x9a, 0xe4, 0x46, 0xdf, 0x86, 0xcc, 0x7d, 0xa3, 0x47, 0x30, 0x2d, 0x24, +// 0x2b, 0xa9, 0xe5, 0xdc, 0xea, 0xad, 0xea, 0xf9, 0xbe, 0xad, 0xee, 0x19, 0x3d, 0xdb, 0x32, 0xa8, +// 0x1b, 0x00, 0x08, 0x31, 0xf5, 0x57, 0x49, 0xc8, 0x6f, 0xb8, 0xfd, 0xbe, 0x4d, 0x88, 0xed, 0x3a, +// 0x9a, 0x41, 0x31, 0x41, 0x35, 0x48, 0x7b, 0x06, 0xc5, 0xfc, 0x28, 0xd3, 0xb5, 0x2a, 0xe3, 0xff, +// 0xf3, 0xb8, 0xfc, 0x72, 0xd7, 0xa6, 0x07, 0xc3, 0x4e, 0xd5, 0x74, 0xfb, 0xd2, 0x53, 0xf2, 0xbf, +// 0x57, 0x89, 0x75, 0x28, 0xed, 0xab, 0x63, 0x53, 0xe3, 0xb2, 0xe8, 0x3d, 0xc8, 0xf6, 0x8d, 0x23, +// 0x9d, 0xe3, 0x24, 0x39, 0xce, 0xfa, 0xe5, 0x70, 0x4e, 0xc7, 0xe5, 0xfc, 0xc8, 0xe8, 0xf7, 0xd6, +// 0x54, 0x1f, 0x47, 0xd5, 0xa6, 0xfa, 0xc6, 0x11, 0x3b, 0x22, 0x1a, 0x40, 0x9e, 0x51, 0xcd, 0x03, +// 0xc3, 0xe9, 0x62, 0xa1, 0x24, 0xc5, 0x95, 0x6c, 0x5d, 0x5a, 0xc9, 0xb5, 0x50, 0x49, 0x04, 0x4e, +// 0xd5, 0x66, 0xfb, 0xc6, 0xd1, 0x06, 0x27, 0x30, 0x8d, 0x6b, 0xd9, 0x8f, 0x1f, 0x94, 0x13, 0x7f, +// 0x7f, 0x50, 0x56, 0xd4, 0x3f, 0x2a, 0x00, 0xa1, 0xc7, 0xd0, 0x7b, 0x30, 0x6f, 0x06, 0x2b, 0x2e, +// 0x4b, 0x64, 0x0c, 0xbf, 0x7a, 0x51, 0x2c, 0x62, 0xfe, 0xae, 0x65, 0xd9, 0xa1, 0x1f, 0x8e, 0xcb, +// 0x8a, 0x96, 0x37, 0x63, 0xa1, 0xf8, 0x3e, 0xe4, 0x86, 0x03, 0xcb, 0xa0, 0x58, 0x67, 0xa9, 0xcb, +// 0x3d, 0x99, 0x5b, 0x2d, 0x56, 0x45, 0x5e, 0x57, 0xfd, 0xbc, 0xae, 0xb6, 0xfd, 0xbc, 0xae, 0x95, +// 0x18, 0xd6, 0xe9, 0xb8, 0x8c, 0x84, 0x59, 0x11, 0x61, 0xf5, 0xa3, 0xbf, 0x96, 0x15, 0x0d, 0x04, +// 0x85, 0x09, 0x44, 0x6c, 0xfa, 0x9d, 0x02, 0xb9, 0x3a, 0x26, 0xa6, 0x67, 0x0f, 0x58, 0xf9, 0xa0, +// 0x02, 0x4c, 0xf5, 0x5d, 0xc7, 0x3e, 0x94, 0xf9, 0x38, 0xad, 0xf9, 0x4b, 0x54, 0x84, 0xac, 0x6d, +// 0x61, 0x87, 0xda, 0x74, 0x24, 0xe2, 0xaa, 0x05, 0x6b, 0x26, 0xf5, 0x3e, 0xee, 0x10, 0xdb, 0x8f, +// 0x86, 0xe6, 0x2f, 0xd1, 0x26, 0xcc, 0x13, 0x6c, 0x0e, 0x3d, 0x9b, 0x8e, 0x74, 0xd3, 0x75, 0xa8, +// 0x61, 0xd2, 0x42, 0x9a, 0x07, 0xec, 0xc6, 0xe9, 0xb8, 0x7c, 0x5d, 0x9c, 0x35, 0xce, 0xa1, 0x6a, +// 0x79, 0x9f, 0xb4, 0x21, 0x28, 0x4c, 0x83, 0x85, 0xa9, 0x61, 0xf7, 0x48, 0xe1, 0x05, 0xa1, 0x41, +// 0x2e, 0x23, 0xb6, 0xfc, 0x2c, 0x0b, 0xd3, 0x41, 0xb6, 0x33, 0xcd, 0xee, 0x00, 0x7b, 0xec, 0xb7, +// 0x6e, 0x58, 0x96, 0x87, 0x09, 0x91, 0x79, 0x1d, 0xd1, 0x1c, 0xe7, 0x50, 0xb5, 0xbc, 0x4f, 0x5a, +// 0x17, 0x14, 0x44, 0x59, 0x98, 0x1d, 0x82, 0x1d, 0x32, 0x24, 0xfa, 0x60, 0xd8, 0x39, 0xc4, 0x23, +// 0x19, 0x8d, 0xc5, 0x89, 0x68, 0xac, 0x3b, 0xa3, 0xda, 0x6b, 0x21, 0x7a, 0x5c, 0x4e, 0xfd, 0xfd, +// 0xaf, 0x5f, 0x5d, 0x94, 0xa9, 0x61, 0x7a, 0xa3, 0x01, 0x75, 0xab, 0x3b, 0xc3, 0xce, 0xdb, 0x78, +// 0xc4, 0xc2, 0x2f, 0x59, 0x77, 0x38, 0x27, 0xba, 0x06, 0x99, 0x1f, 0x1a, 0x76, 0x0f, 0x5b, 0xdc, +// 0xa1, 0x59, 0x4d, 0xae, 0xd0, 0x1a, 0x64, 0x08, 0x35, 0xe8, 0x90, 0x70, 0x2f, 0xce, 0xad, 0xaa, +// 0x17, 0xa5, 0x5a, 0xcd, 0x75, 0xac, 0x16, 0xe7, 0xd4, 0xa4, 0x04, 0xda, 0x84, 0x0c, 0x75, 0x0f, +// 0xb1, 0x23, 0x5d, 0x78, 0xa9, 0xfa, 0x6e, 0x3a, 0x54, 0x93, 0xd2, 0xcc, 0x23, 0x16, 0xee, 0xe1, +// 0x2e, 0x77, 0x1c, 0x39, 0x30, 0x3c, 0x4c, 0x0a, 0x19, 0x8e, 0xd8, 0xbc, 0x74, 0x11, 0x4a, 0x4f, +// 0xc5, 0xf1, 0x54, 0x2d, 0x1f, 0x90, 0x5a, 0x9c, 0x82, 0xde, 0x86, 0x9c, 0x15, 0x26, 0x6a, 0x61, +// 0x8a, 0x87, 0xe0, 0xc5, 0x8b, 0xcc, 0x8f, 0xe4, 0xb4, 0xec, 0x7b, 0x51, 0x69, 0x96, 0x1c, 0x43, +// 0xa7, 0xe3, 0x3a, 0x96, 0xed, 0x74, 0xf5, 0x03, 0x6c, 0x77, 0x0f, 0x68, 0x21, 0x5b, 0x51, 0x96, +// 0x53, 0xd1, 0xe4, 0x88, 0x73, 0xa8, 0x5a, 0x3e, 0x20, 0x6d, 0x71, 0x0a, 0xb2, 0x60, 0x2e, 0xe4, +// 0xe2, 0x85, 0x3a, 0xfd, 0xd4, 0x42, 0xbd, 0x25, 0x0b, 0xf5, 0x6a, 0x5c, 0x4b, 0x58, 0xab, 0xb3, +// 0x01, 0x91, 0x89, 0xa1, 0x2d, 0x80, 0xb0, 0x3d, 0x14, 0x80, 0x6b, 0x50, 0x9f, 0xde, 0x63, 0xa4, +// 0xe1, 0x11, 0x59, 0xf4, 0x01, 0x5c, 0xe9, 0xdb, 0x8e, 0x4e, 0x70, 0x6f, 0x5f, 0x97, 0x0e, 0x66, +// 0x90, 0x39, 0x1e, 0xbd, 0xbb, 0x97, 0xcb, 0x87, 0xd3, 0x71, 0xb9, 0x28, 0x5b, 0xe8, 0x24, 0xa4, +// 0xaa, 0x2d, 0xf4, 0x6d, 0xa7, 0x85, 0x7b, 0xfb, 0xf5, 0x80, 0x86, 0xbe, 0x05, 0x37, 0x42, 0x6b, +// 0x5d, 0x47, 0x3f, 0x70, 0x7b, 0x96, 0xee, 0xe1, 0x7d, 0xdd, 0x74, 0x87, 0x0e, 0x2d, 0xcc, 0xb0, +// 0x00, 0x68, 0xd7, 0x03, 0x96, 0x7b, 0xce, 0x96, 0xdb, 0xb3, 0x34, 0xbc, 0xbf, 0xc1, 0xb6, 0xd1, +// 0x8b, 0x10, 0xba, 0x45, 0xb7, 0x2d, 0x52, 0x98, 0xad, 0xa4, 0x96, 0xd3, 0xda, 0x4c, 0x40, 0x6c, +// 0x5a, 0x64, 0x6d, 0xe6, 0xc3, 0x07, 0xe5, 0x84, 0xec, 0x08, 0x09, 0xf5, 0x0d, 0x98, 0xd9, 0x33, +// 0x7a, 0xb2, 0x92, 0x31, 0x41, 0x37, 0x61, 0xda, 0xf0, 0x17, 0x05, 0xa5, 0x92, 0x5a, 0x9e, 0xd6, +// 0x42, 0x82, 0xe8, 0x24, 0x3f, 0xfe, 0x4b, 0x45, 0x51, 0x7f, 0xa9, 0x40, 0xa6, 0xbe, 0xb7, 0x63, +// 0xd8, 0x1e, 0x6a, 0xc2, 0x42, 0x98, 0x9c, 0x67, 0xfb, 0xc8, 0xcd, 0xd3, 0x71, 0xb9, 0x10, 0xcf, +// 0xdf, 0xa0, 0x91, 0x84, 0x35, 0xe2, 0x77, 0x92, 0x26, 0x2c, 0xdc, 0xf7, 0xdb, 0x53, 0x00, 0x95, +// 0x8c, 0x43, 0x4d, 0xb0, 0xa8, 0xda, 0x7c, 0x40, 0x93, 0x50, 0x31, 0x33, 0x1b, 0x30, 0x25, 0x4e, +// 0x4b, 0xd0, 0x1a, 0xbc, 0x30, 0x60, 0x3f, 0xb8, 0x75, 0xb9, 0xd5, 0xd2, 0x85, 0xf5, 0xc1, 0xf9, +// 0x65, 0x86, 0x08, 0x11, 0xf5, 0xe7, 0x49, 0x80, 0xfa, 0xde, 0x5e, 0xdb, 0xb3, 0x07, 0x3d, 0x4c, +// 0x3f, 0x4f, 0xcb, 0xdb, 0x70, 0x35, 0x34, 0x8b, 0x78, 0x66, 0xcc, 0xfa, 0xca, 0xe9, 0xb8, 0x7c, +// 0x33, 0x6e, 0x7d, 0x84, 0x4d, 0xd5, 0xae, 0x04, 0xf4, 0x96, 0x67, 0x9e, 0x8b, 0x6a, 0x11, 0x1a, +// 0xa0, 0xa6, 0x2e, 0x46, 0x8d, 0xb0, 0x45, 0x51, 0xeb, 0x84, 0x9e, 0xef, 0xda, 0x16, 0xe4, 0x42, +// 0x97, 0x10, 0x54, 0x87, 0x2c, 0x95, 0xbf, 0xa5, 0x87, 0xd5, 0x8b, 0x3d, 0xec, 0x8b, 0x49, 0x2f, +// 0x07, 0x92, 0xea, 0xbf, 0x15, 0x80, 0x48, 0x59, 0x7c, 0x21, 0x53, 0x8c, 0x4d, 0x0b, 0xd9, 0xdb, +// 0x53, 0xcf, 0x75, 0x1b, 0x94, 0xd2, 0x31, 0x7f, 0xfe, 0x34, 0x09, 0x57, 0x76, 0xfd, 0x82, 0xfd, +// 0xc2, 0xfb, 0x60, 0x07, 0xa6, 0xb0, 0x43, 0x3d, 0x9b, 0x3b, 0x81, 0x45, 0xfb, 0xeb, 0x17, 0x45, +// 0xfb, 0x1c, 0x9b, 0x1a, 0x0e, 0xf5, 0x46, 0x32, 0xf6, 0x3e, 0x4c, 0xcc, 0x1b, 0x9f, 0xa5, 0xa0, +// 0x70, 0x91, 0x24, 0xda, 0x80, 0xbc, 0xe9, 0x61, 0x4e, 0xf0, 0x47, 0x94, 0xc2, 0x47, 0x54, 0x31, +// 0xbc, 0xbc, 0xc6, 0x18, 0x54, 0x6d, 0xce, 0xa7, 0xc8, 0x01, 0xd5, 0x05, 0x76, 0xb3, 0x64, 0x69, +// 0xc7, 0xb8, 0x9e, 0xf1, 0x2a, 0xa9, 0xca, 0x09, 0xe5, 0x2b, 0x39, 0x0b, 0x20, 0x46, 0xd4, 0x5c, +// 0x48, 0xe5, 0x33, 0xea, 0x47, 0x90, 0xb7, 0x1d, 0x9b, 0xda, 0x46, 0x4f, 0xef, 0x18, 0x3d, 0xc3, +// 0x31, 0x9f, 0xe7, 0x62, 0x2e, 0xa6, 0x8a, 0x54, 0x1b, 0x83, 0x53, 0xb5, 0x39, 0x49, 0xa9, 0x09, +// 0x02, 0xda, 0x82, 0x29, 0x5f, 0x55, 0xfa, 0xb9, 0x2e, 0x34, 0xbe, 0x38, 0xba, 0x05, 0x33, 0xd1, +// 0xd1, 0xc2, 0xef, 0x47, 0x69, 0x2d, 0x17, 0x99, 0x2c, 0x4f, 0x9b, 0x5d, 0x99, 0x27, 0xce, 0xae, +// 0xc8, 0x25, 0xf5, 0x9f, 0x29, 0x58, 0xd0, 0xb0, 0xf5, 0x65, 0xac, 0x2f, 0x17, 0xeb, 0x77, 0x00, +// 0x44, 0x3f, 0x61, 0x1d, 0xfc, 0x39, 0xc2, 0xcd, 0x3a, 0xd2, 0xb4, 0x40, 0xa8, 0x13, 0xfa, 0xbf, +// 0x0c, 0xf8, 0x38, 0x09, 0x33, 0xd1, 0x80, 0xff, 0x9f, 0xce, 0x55, 0xd4, 0x0c, 0x7b, 0x69, 0x9a, +// 0xf7, 0xd2, 0xaf, 0x5d, 0xd4, 0x4b, 0x27, 0xca, 0xe3, 0xc9, 0x4d, 0xf4, 0x5f, 0x49, 0xc8, 0xec, +// 0x18, 0x9e, 0xd1, 0x27, 0xc8, 0x9c, 0xb8, 0x8e, 0x8b, 0x07, 0xf9, 0xd2, 0x44, 0x01, 0xd4, 0xe5, +// 0xf7, 0xa2, 0xa7, 0xdc, 0xc6, 0x3f, 0x3e, 0xe7, 0x36, 0xfe, 0x26, 0xcc, 0xf5, 0x8d, 0x23, 0x3d, +// 0xb0, 0x51, 0x78, 0x7b, 0xb6, 0xb6, 0x14, 0xa2, 0x9c, 0xdd, 0x17, 0x9f, 0x14, 0x82, 0x97, 0x29, +// 0x41, 0xdf, 0x80, 0x1c, 0xe3, 0x08, 0x47, 0x0b, 0x13, 0xbf, 0x16, 0xbe, 0xdd, 0x23, 0x9b, 0xaa, +// 0x06, 0x7d, 0xe3, 0xa8, 0x21, 0x16, 0xe8, 0x2e, 0xa0, 0x83, 0xe0, 0xf3, 0x91, 0x1e, 0xba, 0x93, +// 0xc9, 0x7f, 0xe5, 0x74, 0x5c, 0x5e, 0x12, 0xf2, 0x93, 0x3c, 0xaa, 0xb6, 0x10, 0x12, 0x7d, 0xb4, +// 0xd7, 0x01, 0x98, 0x5d, 0xba, 0x85, 0x1d, 0xb7, 0x2f, 0xdf, 0x84, 0x57, 0x4f, 0xc7, 0xe5, 0x05, +// 0x81, 0x12, 0xee, 0xa9, 0xda, 0x34, 0x5b, 0xd4, 0xd9, 0xef, 0x48, 0x66, 0x7f, 0xa2, 0x00, 0x0a, +// 0x87, 0x96, 0x86, 0xc9, 0x80, 0x3d, 0x62, 0xd9, 0x6b, 0x25, 0xf2, 0xb4, 0x50, 0x9e, 0xfc, 0x5a, +// 0x09, 0xe5, 0xfd, 0xd7, 0x4a, 0xa4, 0x52, 0xbe, 0x19, 0x36, 0xf8, 0xa4, 0x8c, 0xa3, 0x84, 0xe9, +// 0x18, 0x04, 0x47, 0x5e, 0x3c, 0xb6, 0x2f, 0xed, 0xf3, 0x07, 0xa7, 0x4c, 0xa8, 0x7f, 0x50, 0x60, +// 0x69, 0x22, 0xa3, 0x82, 0xc3, 0xfe, 0x00, 0x90, 0x17, 0xd9, 0xe4, 0xfe, 0x1a, 0xc9, 0x43, 0x5f, +// 0x3a, 0x41, 0x17, 0xbc, 0x89, 0xc6, 0xfe, 0xb9, 0xcd, 0xa8, 0xb5, 0x34, 0xf7, 0xf9, 0x6f, 0x15, +// 0x58, 0x8c, 0xaa, 0x0f, 0x0c, 0xd9, 0x86, 0x99, 0xa8, 0x76, 0x69, 0xc2, 0x4b, 0xcf, 0x62, 0x82, +// 0x3c, 0xfd, 0x19, 0x79, 0xf4, 0x9d, 0xb0, 0x5c, 0xc5, 0x07, 0xc6, 0x3b, 0xcf, 0xec, 0x0d, 0xff, +// 0x4c, 0xf1, 0xb2, 0x4d, 0xf3, 0x78, 0xfc, 0x47, 0x81, 0xf4, 0x8e, 0xeb, 0xf6, 0x90, 0x0b, 0x0b, +// 0x8e, 0x4b, 0x75, 0x96, 0x59, 0xd8, 0xd2, 0xe5, 0x97, 0x09, 0xd1, 0x07, 0x37, 0x2e, 0xe7, 0xa4, +// 0x7f, 0x8c, 0xcb, 0x93, 0x50, 0x5a, 0xde, 0x71, 0x69, 0x8d, 0x53, 0xda, 0xe2, 0xbb, 0xc5, 0x07, +// 0x30, 0x7b, 0x56, 0x99, 0xe8, 0x92, 0xef, 0x5e, 0x5a, 0xd9, 0x59, 0x98, 0xd3, 0x71, 0x79, 0x31, +// 0xac, 0x98, 0x80, 0xac, 0x6a, 0x33, 0x9d, 0x88, 0xf6, 0xb5, 0x2c, 0x8b, 0xdf, 0x67, 0x2c, 0x86, +// 0x6d, 0x98, 0x0f, 0x9a, 0xc1, 0x2e, 0xff, 0x28, 0x47, 0xd0, 0x9b, 0x30, 0x25, 0xbe, 0xcf, 0xf9, +// 0xef, 0x8a, 0x4a, 0xf4, 0x3b, 0xb0, 0xd1, 0x31, 0xed, 0x6a, 0x4c, 0xc6, 0xf7, 0xae, 0x14, 0xbb, +// 0xfd, 0x1b, 0x05, 0x20, 0xfc, 0xe8, 0x83, 0x5e, 0x81, 0xeb, 0xb5, 0x7b, 0xdb, 0x75, 0xbd, 0xd5, +// 0x5e, 0x6f, 0xef, 0xb6, 0xf4, 0xdd, 0xed, 0xd6, 0x4e, 0x63, 0xa3, 0xb9, 0xd9, 0x6c, 0xd4, 0xe7, +// 0x13, 0xc5, 0xfc, 0xf1, 0x49, 0x25, 0xb7, 0xeb, 0x90, 0x01, 0x36, 0xed, 0x7d, 0x1b, 0x5b, 0xe8, +// 0x65, 0x58, 0x3c, 0xcb, 0xcd, 0x56, 0x8d, 0xfa, 0xbc, 0x52, 0x9c, 0x39, 0x3e, 0xa9, 0x64, 0xc5, +// 0x1d, 0x15, 0x5b, 0x68, 0x19, 0xae, 0x4e, 0xf2, 0x35, 0xb7, 0xdf, 0x9a, 0x4f, 0x16, 0x67, 0x8f, +// 0x4f, 0x2a, 0xd3, 0xc1, 0x65, 0x16, 0xa9, 0x80, 0xa2, 0x9c, 0x12, 0x2f, 0x55, 0x84, 0xe3, 0x93, +// 0x4a, 0x46, 0x84, 0xa5, 0x98, 0xfe, 0xf0, 0x93, 0x52, 0xe2, 0xf6, 0x2f, 0x14, 0x98, 0x6b, 0x3a, +// 0xfb, 0x9e, 0x61, 0xf2, 0x0b, 0xc6, 0x68, 0x80, 0xd1, 0xeb, 0x70, 0xa3, 0xb9, 0xbd, 0xa9, 0xad, +// 0x6f, 0xb4, 0x9b, 0xf7, 0xb6, 0xf5, 0xf6, 0x77, 0x77, 0x1a, 0x31, 0x03, 0xae, 0x1c, 0x9f, 0x54, +// 0xf2, 0xa1, 0x50, 0xa3, 0x3f, 0xa0, 0x23, 0xb4, 0x32, 0x29, 0x55, 0xbf, 0xb7, 0x5b, 0xbb, 0xdb, +// 0xd0, 0x5b, 0xcd, 0xb7, 0xb6, 0xe7, 0x95, 0xe2, 0xdc, 0xf1, 0x49, 0x05, 0xea, 0xee, 0xb0, 0xd3, +// 0xc3, 0x2d, 0xbb, 0xeb, 0xa0, 0xdb, 0x50, 0x98, 0x14, 0x78, 0x77, 0xbb, 0xdd, 0x7c, 0xa7, 0x31, +// 0x9f, 0x14, 0x96, 0xd7, 0xdd, 0xf7, 0x1d, 0x36, 0x09, 0xc4, 0x59, 0x6b, 0x9b, 0x9f, 0x3e, 0x2a, +// 0x29, 0x0f, 0x1f, 0x95, 0x94, 0xbf, 0x3d, 0x2a, 0x29, 0x1f, 0x3d, 0x2e, 0x25, 0x1e, 0x3e, 0x2e, +// 0x25, 0xfe, 0xf4, 0xb8, 0x94, 0xf8, 0xde, 0x2b, 0x4f, 0xcc, 0x9e, 0xa3, 0xe0, 0x0f, 0x23, 0x3c, +// 0x8f, 0x3a, 0x19, 0x3e, 0x88, 0x5e, 0xfb, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x53, 0xe2, 0xd3, +// 0xf7, 0x37, 0x19, 0x00, 0x00, +// } + +// 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{ +// // 12543 bytes of a gzipped FileDescriptorSet +// 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x74, 0x1c, 0xd7, +// 0x75, 0x18, 0x66, 0x3f, 0x80, 0xdd, 0x8b, 0x05, 0xb0, 0x78, 0x00, 0x49, 0x70, 0x49, 0x01, 0xd0, +// 0xe8, 0x8b, 0xa2, 0x24, 0x50, 0xa2, 0x44, 0x4a, 0x04, 0x6d, 0xcb, 0xbb, 0xc0, 0x12, 0x80, 0x84, +// 0x2f, 0x0d, 0x40, 0x4a, 0x96, 0x3f, 0x26, 0x83, 0xdd, 0x87, 0xc5, 0x88, 0xbb, 0x33, 0xe3, 0x9d, +// 0x59, 0x12, 0x50, 0x92, 0x1e, 0xc5, 0x76, 0x52, 0x9b, 0x39, 0x6d, 0xe2, 0xba, 0xa7, 0x51, 0x9c, +// 0xd0, 0x95, 0xe3, 0xb4, 0x4e, 0x9c, 0xb4, 0xf9, 0x72, 0xf3, 0xd1, 0xf6, 0xb4, 0x4e, 0x7b, 0xd2, +// 0x24, 0x4e, 0xd3, 0x63, 0xb7, 0x39, 0x6d, 0x9a, 0x93, 0xd2, 0xa9, 0xec, 0xb6, 0xae, 0xeb, 0x26, +// 0x8e, 0xea, 0x36, 0xe9, 0xf1, 0x49, 0xd3, 0xf3, 0xbe, 0xe6, 0x6b, 0x77, 0x76, 0x76, 0x21, 0xd2, +// 0x4e, 0xea, 0xfe, 0x02, 0xde, 0x9d, 0x7b, 0xef, 0x7b, 0xef, 0xbe, 0xfb, 0xee, 0xbd, 0xef, 0xbe, +// 0x8f, 0x85, 0x9f, 0xbb, 0x08, 0xb3, 0x35, 0xd3, 0xac, 0xd5, 0xf1, 0x19, 0xab, 0x69, 0x3a, 0xe6, +// 0x4e, 0x6b, 0xf7, 0x4c, 0x15, 0xdb, 0x95, 0xa6, 0x6e, 0x39, 0x66, 0x73, 0x8e, 0xc2, 0xd0, 0x18, +// 0xc3, 0x98, 0x13, 0x18, 0xf2, 0x1a, 0x8c, 0x5f, 0xd2, 0xeb, 0x78, 0xd1, 0x45, 0xdc, 0xc2, 0x0e, +// 0x7a, 0x0a, 0x52, 0xbb, 0x7a, 0x1d, 0x4f, 0x49, 0xb3, 0xc9, 0x53, 0xc3, 0x67, 0xef, 0x9d, 0x0b, +// 0x11, 0xcd, 0x05, 0x29, 0x36, 0x09, 0x58, 0xa1, 0x14, 0xf2, 0x97, 0x52, 0x30, 0xd1, 0xe1, 0x2b, +// 0x42, 0x90, 0x32, 0xb4, 0x06, 0xe1, 0x28, 0x9d, 0xca, 0x2a, 0xf4, 0x7f, 0x34, 0x05, 0x43, 0x96, +// 0x56, 0xb9, 0xaa, 0xd5, 0xf0, 0x54, 0x82, 0x82, 0x45, 0x11, 0x4d, 0x03, 0x54, 0xb1, 0x85, 0x8d, +// 0x2a, 0x36, 0x2a, 0x07, 0x53, 0xc9, 0xd9, 0xe4, 0xa9, 0xac, 0xe2, 0x83, 0xa0, 0x87, 0x60, 0xdc, +// 0x6a, 0xed, 0xd4, 0xf5, 0x8a, 0xea, 0x43, 0x83, 0xd9, 0xe4, 0xa9, 0xb4, 0x92, 0x67, 0x1f, 0x16, +// 0x3d, 0xe4, 0x07, 0x60, 0xec, 0x3a, 0xd6, 0xae, 0xfa, 0x51, 0x87, 0x29, 0xea, 0x28, 0x01, 0xfb, +// 0x10, 0x17, 0x20, 0xd7, 0xc0, 0xb6, 0xad, 0xd5, 0xb0, 0xea, 0x1c, 0x58, 0x78, 0x2a, 0x45, 0x7b, +// 0x3f, 0xdb, 0xd6, 0xfb, 0x70, 0xcf, 0x87, 0x39, 0xd5, 0xf6, 0x81, 0x85, 0x51, 0x11, 0xb2, 0xd8, +// 0x68, 0x35, 0x18, 0x87, 0x74, 0x84, 0xfc, 0xca, 0x46, 0xab, 0x11, 0xe6, 0x92, 0x21, 0x64, 0x9c, +// 0xc5, 0x90, 0x8d, 0x9b, 0xd7, 0xf4, 0x0a, 0x9e, 0x1a, 0xa4, 0x0c, 0x1e, 0x68, 0x63, 0xb0, 0xc5, +// 0xbe, 0x87, 0x79, 0x08, 0x3a, 0xb4, 0x00, 0x59, 0xbc, 0xef, 0x60, 0xc3, 0xd6, 0x4d, 0x63, 0x6a, +// 0x88, 0x32, 0xb9, 0xaf, 0xc3, 0x28, 0xe2, 0x7a, 0x35, 0xcc, 0xc2, 0xa3, 0x43, 0xe7, 0x61, 0xc8, +// 0xb4, 0x1c, 0xdd, 0x34, 0xec, 0xa9, 0xcc, 0xac, 0x74, 0x6a, 0xf8, 0xec, 0xc9, 0x8e, 0x8a, 0xb0, +// 0xc1, 0x70, 0x14, 0x81, 0x8c, 0x56, 0x20, 0x6f, 0x9b, 0xad, 0x66, 0x05, 0xab, 0x15, 0xb3, 0x8a, +// 0x55, 0xdd, 0xd8, 0x35, 0xa7, 0xb2, 0x94, 0xc1, 0x4c, 0x7b, 0x47, 0x28, 0xe2, 0x82, 0x59, 0xc5, +// 0x2b, 0xc6, 0xae, 0xa9, 0x8c, 0xda, 0x81, 0x32, 0x3a, 0x0a, 0x83, 0xf6, 0x81, 0xe1, 0x68, 0xfb, +// 0x53, 0x39, 0xaa, 0x21, 0xbc, 0x24, 0xff, 0xca, 0x20, 0x8c, 0xf5, 0xa2, 0x62, 0x17, 0x21, 0xbd, +// 0x4b, 0x7a, 0x39, 0x95, 0xe8, 0x47, 0x06, 0x8c, 0x26, 0x28, 0xc4, 0xc1, 0x43, 0x0a, 0xb1, 0x08, +// 0xc3, 0x06, 0xb6, 0x1d, 0x5c, 0x65, 0x1a, 0x91, 0xec, 0x51, 0xa7, 0x80, 0x11, 0xb5, 0xab, 0x54, +// 0xea, 0x50, 0x2a, 0xf5, 0x02, 0x8c, 0xb9, 0x4d, 0x52, 0x9b, 0x9a, 0x51, 0x13, 0xba, 0x79, 0x26, +// 0xae, 0x25, 0x73, 0x65, 0x41, 0xa7, 0x10, 0x32, 0x65, 0x14, 0x07, 0xca, 0x68, 0x11, 0xc0, 0x34, +// 0xb0, 0xb9, 0xab, 0x56, 0x71, 0xa5, 0x3e, 0x95, 0x89, 0x90, 0xd2, 0x06, 0x41, 0x69, 0x93, 0x92, +// 0xc9, 0xa0, 0x95, 0x3a, 0xba, 0xe0, 0xa9, 0xda, 0x50, 0x84, 0xa6, 0xac, 0xb1, 0x49, 0xd6, 0xa6, +// 0x6d, 0x97, 0x61, 0xb4, 0x89, 0x89, 0xde, 0xe3, 0x2a, 0xef, 0x59, 0x96, 0x36, 0x62, 0x2e, 0xb6, +// 0x67, 0x0a, 0x27, 0x63, 0x1d, 0x1b, 0x69, 0xfa, 0x8b, 0xe8, 0x1e, 0x70, 0x01, 0x2a, 0x55, 0x2b, +// 0xa0, 0x56, 0x28, 0x27, 0x80, 0xeb, 0x5a, 0x03, 0x17, 0x5e, 0x86, 0xd1, 0xa0, 0x78, 0xd0, 0x24, +// 0xa4, 0x6d, 0x47, 0x6b, 0x3a, 0x54, 0x0b, 0xd3, 0x0a, 0x2b, 0xa0, 0x3c, 0x24, 0xb1, 0x51, 0xa5, +// 0x56, 0x2e, 0xad, 0x90, 0x7f, 0xd1, 0xdb, 0xbd, 0x0e, 0x27, 0x69, 0x87, 0xef, 0x6f, 0x1f, 0xd1, +// 0x00, 0xe7, 0x70, 0xbf, 0x0b, 0x4f, 0xc2, 0x48, 0xa0, 0x03, 0xbd, 0x56, 0x2d, 0x7f, 0x17, 0x1c, +// 0xe9, 0xc8, 0x1a, 0xbd, 0x00, 0x93, 0x2d, 0x43, 0x37, 0x1c, 0xdc, 0xb4, 0x9a, 0x98, 0x68, 0x2c, +// 0xab, 0x6a, 0xea, 0xbf, 0x0c, 0x45, 0xe8, 0xdc, 0x65, 0x3f, 0x36, 0xe3, 0xa2, 0x4c, 0xb4, 0xda, +// 0x81, 0xa7, 0xb3, 0x99, 0x2f, 0x0f, 0xe5, 0x5f, 0x79, 0xe5, 0x95, 0x57, 0x12, 0xf2, 0xaf, 0x0e, +// 0xc2, 0x64, 0xa7, 0x39, 0xd3, 0x71, 0xfa, 0x1e, 0x85, 0x41, 0xa3, 0xd5, 0xd8, 0xc1, 0x4d, 0x2a, +// 0xa4, 0xb4, 0xc2, 0x4b, 0xa8, 0x08, 0xe9, 0xba, 0xb6, 0x83, 0xeb, 0x53, 0xa9, 0x59, 0xe9, 0xd4, +// 0xe8, 0xd9, 0x87, 0x7a, 0x9a, 0x95, 0x73, 0xab, 0x84, 0x44, 0x61, 0x94, 0xe8, 0x6d, 0x90, 0xe2, +// 0x26, 0x9a, 0x70, 0x38, 0xdd, 0x1b, 0x07, 0x32, 0x97, 0x14, 0x4a, 0x87, 0x4e, 0x40, 0x96, 0xfc, +// 0x65, 0xba, 0x31, 0x48, 0xdb, 0x9c, 0x21, 0x00, 0xa2, 0x17, 0xa8, 0x00, 0x19, 0x3a, 0x4d, 0xaa, +// 0x58, 0xb8, 0x36, 0xb7, 0x4c, 0x14, 0xab, 0x8a, 0x77, 0xb5, 0x56, 0xdd, 0x51, 0xaf, 0x69, 0xf5, +// 0x16, 0xa6, 0x0a, 0x9f, 0x55, 0x72, 0x1c, 0x78, 0x85, 0xc0, 0xd0, 0x0c, 0x0c, 0xb3, 0x59, 0xa5, +// 0x1b, 0x55, 0xbc, 0x4f, 0xad, 0x67, 0x5a, 0x61, 0x13, 0x6d, 0x85, 0x40, 0x48, 0xf5, 0x2f, 0xd9, +// 0xa6, 0x21, 0x54, 0x93, 0x56, 0x41, 0x00, 0xb4, 0xfa, 0x27, 0xc3, 0x86, 0xfb, 0xae, 0xce, 0xdd, +// 0x6b, 0x9b, 0x4b, 0x0f, 0xc0, 0x18, 0xc5, 0x78, 0x9c, 0x0f, 0xbd, 0x56, 0x9f, 0x1a, 0x9f, 0x95, +// 0x4e, 0x65, 0x94, 0x51, 0x06, 0xde, 0xe0, 0x50, 0xf9, 0x17, 0x13, 0x90, 0xa2, 0x86, 0x65, 0x0c, +// 0x86, 0xb7, 0xdf, 0xb1, 0x59, 0x56, 0x17, 0x37, 0x2e, 0x97, 0x56, 0xcb, 0x79, 0x09, 0x8d, 0x02, +// 0x50, 0xc0, 0xa5, 0xd5, 0x8d, 0xe2, 0x76, 0x3e, 0xe1, 0x96, 0x57, 0xd6, 0xb7, 0xcf, 0x3f, 0x91, +// 0x4f, 0xba, 0x04, 0x97, 0x19, 0x20, 0xe5, 0x47, 0x78, 0xfc, 0x6c, 0x3e, 0x8d, 0xf2, 0x90, 0x63, +// 0x0c, 0x56, 0x5e, 0x28, 0x2f, 0x9e, 0x7f, 0x22, 0x3f, 0x18, 0x84, 0x3c, 0x7e, 0x36, 0x3f, 0x84, +// 0x46, 0x20, 0x4b, 0x21, 0xa5, 0x8d, 0x8d, 0xd5, 0x7c, 0xc6, 0xe5, 0xb9, 0xb5, 0xad, 0xac, 0xac, +// 0x2f, 0xe5, 0xb3, 0x2e, 0xcf, 0x25, 0x65, 0xe3, 0xf2, 0x66, 0x1e, 0x5c, 0x0e, 0x6b, 0xe5, 0xad, +// 0xad, 0xe2, 0x52, 0x39, 0x3f, 0xec, 0x62, 0x94, 0xde, 0xb1, 0x5d, 0xde, 0xca, 0xe7, 0x02, 0xcd, +// 0x7a, 0xfc, 0x6c, 0x7e, 0xc4, 0xad, 0xa2, 0xbc, 0x7e, 0x79, 0x2d, 0x3f, 0x8a, 0xc6, 0x61, 0x84, +// 0x55, 0x21, 0x1a, 0x31, 0x16, 0x02, 0x9d, 0x7f, 0x22, 0x9f, 0xf7, 0x1a, 0xc2, 0xb8, 0x8c, 0x07, +// 0x00, 0xe7, 0x9f, 0xc8, 0x23, 0x79, 0x01, 0xd2, 0x54, 0x0d, 0x11, 0x82, 0xd1, 0xd5, 0x62, 0xa9, +// 0xbc, 0xaa, 0x6e, 0x6c, 0x6e, 0xaf, 0x6c, 0xac, 0x17, 0x57, 0xf3, 0x92, 0x07, 0x53, 0xca, 0xcf, +// 0x5d, 0x5e, 0x51, 0xca, 0x8b, 0xf9, 0x84, 0x1f, 0xb6, 0x59, 0x2e, 0x6e, 0x97, 0x17, 0xf3, 0x49, +// 0xb9, 0x02, 0x93, 0x9d, 0x0c, 0x6a, 0xc7, 0x29, 0xe4, 0xd3, 0x85, 0x44, 0x84, 0x2e, 0x50, 0x5e, +// 0x61, 0x5d, 0x90, 0xbf, 0x98, 0x80, 0x89, 0x0e, 0x4e, 0xa5, 0x63, 0x25, 0x4f, 0x43, 0x9a, 0xe9, +// 0x32, 0x73, 0xb3, 0x0f, 0x76, 0xf4, 0x4e, 0x54, 0xb3, 0xdb, 0x5c, 0x2d, 0xa5, 0xf3, 0x87, 0x1a, +// 0xc9, 0x88, 0x50, 0x83, 0xb0, 0x68, 0x53, 0xd8, 0x77, 0xb7, 0x19, 0x7f, 0xe6, 0x1f, 0xcf, 0xf7, +// 0xe2, 0x1f, 0x29, 0xac, 0x3f, 0x27, 0x90, 0xee, 0xe0, 0x04, 0x2e, 0xc2, 0x78, 0x1b, 0xa3, 0x9e, +// 0x8d, 0xf1, 0xfb, 0x25, 0x98, 0x8a, 0x12, 0x4e, 0x8c, 0x49, 0x4c, 0x04, 0x4c, 0xe2, 0xc5, 0xb0, +// 0x04, 0xef, 0x8e, 0x1e, 0x84, 0xb6, 0xb1, 0xfe, 0xa4, 0x04, 0x47, 0x3b, 0x87, 0x94, 0x1d, 0xdb, +// 0xf0, 0x36, 0x18, 0x6c, 0x60, 0x67, 0xcf, 0x14, 0x61, 0xd5, 0xfd, 0x1d, 0x9c, 0x35, 0xf9, 0x1c, +// 0x1e, 0x6c, 0x4e, 0xe5, 0xf7, 0xf6, 0xc9, 0xa8, 0xb8, 0x90, 0xb5, 0xa6, 0xad, 0xa5, 0x1f, 0x4a, +// 0xc0, 0x91, 0x8e, 0xcc, 0x3b, 0x36, 0xf4, 0x2e, 0x00, 0xdd, 0xb0, 0x5a, 0x0e, 0x0b, 0x9d, 0x98, +// 0x25, 0xce, 0x52, 0x08, 0x35, 0x5e, 0xc4, 0xca, 0xb6, 0x1c, 0xf7, 0x7b, 0x92, 0x7e, 0x07, 0x06, +// 0xa2, 0x08, 0x4f, 0x79, 0x0d, 0x4d, 0xd1, 0x86, 0x4e, 0x47, 0xf4, 0xb4, 0x4d, 0x31, 0x1f, 0x85, +// 0x7c, 0xa5, 0xae, 0x63, 0xc3, 0x51, 0x6d, 0xa7, 0x89, 0xb5, 0x86, 0x6e, 0xd4, 0xa8, 0xab, 0xc9, +// 0xcc, 0xa7, 0x77, 0xb5, 0xba, 0x8d, 0x95, 0x31, 0xf6, 0x79, 0x4b, 0x7c, 0x25, 0x14, 0x54, 0x81, +// 0x9a, 0x3e, 0x8a, 0xc1, 0x00, 0x05, 0xfb, 0xec, 0x52, 0xc8, 0x1f, 0xce, 0xc2, 0xb0, 0x2f, 0x00, +// 0x47, 0x77, 0x43, 0xee, 0x25, 0xed, 0x9a, 0xa6, 0x8a, 0x45, 0x15, 0x93, 0xc4, 0x30, 0x81, 0x6d, +// 0xf2, 0x85, 0xd5, 0xa3, 0x30, 0x49, 0x51, 0xcc, 0x96, 0x83, 0x9b, 0x6a, 0xa5, 0xae, 0xd9, 0x36, +// 0x15, 0x5a, 0x86, 0xa2, 0x22, 0xf2, 0x6d, 0x83, 0x7c, 0x5a, 0x10, 0x5f, 0xd0, 0x39, 0x98, 0xa0, +// 0x14, 0x8d, 0x56, 0xdd, 0xd1, 0xad, 0x3a, 0x56, 0xc9, 0x32, 0xcf, 0xa6, 0x2e, 0xc7, 0x6d, 0xd9, +// 0x38, 0xc1, 0x58, 0xe3, 0x08, 0xa4, 0x45, 0x36, 0x5a, 0x84, 0xbb, 0x28, 0x59, 0x0d, 0x1b, 0xb8, +// 0xa9, 0x39, 0x58, 0xc5, 0xef, 0x6d, 0x69, 0x75, 0x5b, 0xd5, 0x8c, 0xaa, 0xba, 0xa7, 0xd9, 0x7b, +// 0x53, 0x93, 0x84, 0x41, 0x29, 0x31, 0x25, 0x29, 0xc7, 0x09, 0xe2, 0x12, 0xc7, 0x2b, 0x53, 0xb4, +// 0xa2, 0x51, 0x5d, 0xd6, 0xec, 0x3d, 0x34, 0x0f, 0x47, 0x29, 0x17, 0xdb, 0x69, 0xea, 0x46, 0x4d, +// 0xad, 0xec, 0xe1, 0xca, 0x55, 0xb5, 0xe5, 0xec, 0x3e, 0x35, 0x75, 0xc2, 0x5f, 0x3f, 0x6d, 0xe1, +// 0x16, 0xc5, 0x59, 0x20, 0x28, 0x97, 0x9d, 0xdd, 0xa7, 0xd0, 0x16, 0xe4, 0xc8, 0x60, 0x34, 0xf4, +// 0x97, 0xb1, 0xba, 0x6b, 0x36, 0xa9, 0x0f, 0x1d, 0xed, 0x60, 0x9a, 0x7c, 0x12, 0x9c, 0xdb, 0xe0, +// 0x04, 0x6b, 0x66, 0x15, 0xcf, 0xa7, 0xb7, 0x36, 0xcb, 0xe5, 0x45, 0x65, 0x58, 0x70, 0xb9, 0x64, +// 0x36, 0x89, 0x42, 0xd5, 0x4c, 0x57, 0xc0, 0xc3, 0x4c, 0xa1, 0x6a, 0xa6, 0x10, 0xef, 0x39, 0x98, +// 0xa8, 0x54, 0x58, 0x9f, 0xf5, 0x8a, 0xca, 0x17, 0x63, 0xf6, 0x54, 0x3e, 0x20, 0xac, 0x4a, 0x65, +// 0x89, 0x21, 0x70, 0x1d, 0xb7, 0xd1, 0x05, 0x38, 0xe2, 0x09, 0xcb, 0x4f, 0x38, 0xde, 0xd6, 0xcb, +// 0x30, 0xe9, 0x39, 0x98, 0xb0, 0x0e, 0xda, 0x09, 0x51, 0xa0, 0x46, 0xeb, 0x20, 0x4c, 0xf6, 0x24, +// 0x4c, 0x5a, 0x7b, 0x56, 0x3b, 0xdd, 0x69, 0x3f, 0x1d, 0xb2, 0xf6, 0xac, 0x30, 0xe1, 0x7d, 0x74, +// 0x65, 0xde, 0xc4, 0x15, 0xcd, 0xc1, 0xd5, 0xa9, 0x63, 0x7e, 0x74, 0xdf, 0x07, 0x34, 0x07, 0xf9, +// 0x4a, 0x45, 0xc5, 0x86, 0xb6, 0x53, 0xc7, 0xaa, 0xd6, 0xc4, 0x86, 0x66, 0x4f, 0xcd, 0x50, 0xe4, +// 0x94, 0xd3, 0x6c, 0x61, 0x65, 0xb4, 0x52, 0x29, 0xd3, 0x8f, 0x45, 0xfa, 0x0d, 0x9d, 0x86, 0x71, +// 0x73, 0xe7, 0xa5, 0x0a, 0xd3, 0x48, 0xd5, 0x6a, 0xe2, 0x5d, 0x7d, 0x7f, 0xea, 0x5e, 0x2a, 0xde, +// 0x31, 0xf2, 0x81, 0xea, 0xe3, 0x26, 0x05, 0xa3, 0x07, 0x21, 0x5f, 0xb1, 0xf7, 0xb4, 0xa6, 0x45, +// 0x4d, 0xb2, 0x6d, 0x69, 0x15, 0x3c, 0x75, 0x1f, 0x43, 0x65, 0xf0, 0x75, 0x01, 0x26, 0x33, 0xc2, +// 0xbe, 0xae, 0xef, 0x3a, 0x82, 0xe3, 0x03, 0x6c, 0x46, 0x50, 0x18, 0xe7, 0x76, 0x0a, 0xf2, 0x44, +// 0x12, 0x81, 0x8a, 0x4f, 0x51, 0xb4, 0x51, 0x6b, 0xcf, 0xf2, 0xd7, 0x7b, 0x0f, 0x8c, 0x10, 0x4c, +// 0xaf, 0xd2, 0x07, 0x59, 0xe0, 0x66, 0xed, 0xf9, 0x6a, 0x7c, 0x02, 0x8e, 0x12, 0xa4, 0x06, 0x76, +// 0xb4, 0xaa, 0xe6, 0x68, 0x3e, 0xec, 0x87, 0x29, 0x36, 0x11, 0xfb, 0x1a, 0xff, 0x18, 0x68, 0x67, +// 0xb3, 0xb5, 0x73, 0xe0, 0x2a, 0xd6, 0x23, 0xac, 0x9d, 0x04, 0x26, 0x54, 0xeb, 0x8e, 0x05, 0xe7, +// 0xf2, 0x3c, 0xe4, 0xfc, 0x7a, 0x8f, 0xb2, 0xc0, 0x34, 0x3f, 0x2f, 0x91, 0x20, 0x68, 0x61, 0x63, +// 0x91, 0x84, 0x2f, 0x2f, 0x96, 0xf3, 0x09, 0x12, 0x46, 0xad, 0xae, 0x6c, 0x97, 0x55, 0xe5, 0xf2, +// 0xfa, 0xf6, 0xca, 0x5a, 0x39, 0x9f, 0xf4, 0x05, 0xf6, 0xcf, 0xa4, 0x32, 0xf7, 0xe7, 0x1f, 0x90, +// 0x3f, 0x9f, 0x80, 0xd1, 0xe0, 0x4a, 0x0d, 0xbd, 0x05, 0x8e, 0x89, 0xb4, 0x8a, 0x8d, 0x1d, 0xf5, +// 0xba, 0xde, 0xa4, 0x13, 0xb2, 0xa1, 0x31, 0xe7, 0xe8, 0xea, 0xcf, 0x24, 0xc7, 0xda, 0xc2, 0xce, +// 0xf3, 0x7a, 0x93, 0x4c, 0xb7, 0x86, 0xe6, 0xa0, 0x55, 0x98, 0x31, 0x4c, 0xd5, 0x76, 0x34, 0xa3, +// 0xaa, 0x35, 0xab, 0xaa, 0x97, 0xd0, 0x52, 0xb5, 0x4a, 0x05, 0xdb, 0xb6, 0xc9, 0x1c, 0xa1, 0xcb, +// 0xe5, 0xa4, 0x61, 0x6e, 0x71, 0x64, 0xcf, 0x43, 0x14, 0x39, 0x6a, 0x48, 0x7d, 0x93, 0x51, 0xea, +// 0x7b, 0x02, 0xb2, 0x0d, 0xcd, 0x52, 0xb1, 0xe1, 0x34, 0x0f, 0x68, 0x7c, 0x9e, 0x51, 0x32, 0x0d, +// 0xcd, 0x2a, 0x93, 0xf2, 0x37, 0x65, 0x99, 0xf4, 0x4c, 0x2a, 0x93, 0xc9, 0x67, 0x9f, 0x49, 0x65, +// 0xb2, 0x79, 0x90, 0x5f, 0x4f, 0x42, 0xce, 0x1f, 0xaf, 0x93, 0xe5, 0x4f, 0x85, 0x7a, 0x2c, 0x89, +// 0xda, 0xb4, 0x7b, 0xba, 0x46, 0xf7, 0x73, 0x0b, 0xc4, 0x95, 0xcd, 0x0f, 0xb2, 0xe0, 0x58, 0x61, +// 0x94, 0x24, 0x8c, 0x20, 0xca, 0x86, 0x59, 0x30, 0x92, 0x51, 0x78, 0x09, 0x2d, 0xc1, 0xe0, 0x4b, +// 0x36, 0xe5, 0x3d, 0x48, 0x79, 0xdf, 0xdb, 0x9d, 0xf7, 0x33, 0x5b, 0x94, 0x79, 0xf6, 0x99, 0x2d, +// 0x75, 0x7d, 0x43, 0x59, 0x2b, 0xae, 0x2a, 0x9c, 0x1c, 0x1d, 0x87, 0x54, 0x5d, 0x7b, 0xf9, 0x20, +// 0xe8, 0xf4, 0x28, 0xa8, 0xd7, 0x41, 0x38, 0x0e, 0xa9, 0xeb, 0x58, 0xbb, 0x1a, 0x74, 0x35, 0x14, +// 0x74, 0x07, 0x27, 0xc3, 0x19, 0x48, 0x53, 0x79, 0x21, 0x00, 0x2e, 0xb1, 0xfc, 0x00, 0xca, 0x40, +// 0x6a, 0x61, 0x43, 0x21, 0x13, 0x22, 0x0f, 0x39, 0x06, 0x55, 0x37, 0x57, 0xca, 0x0b, 0xe5, 0x7c, +// 0x42, 0x3e, 0x07, 0x83, 0x4c, 0x08, 0x64, 0xb2, 0xb8, 0x62, 0xc8, 0x0f, 0xf0, 0x22, 0xe7, 0x21, +// 0x89, 0xaf, 0x97, 0xd7, 0x4a, 0x65, 0x25, 0x9f, 0x08, 0x0e, 0x75, 0x2a, 0x9f, 0x96, 0x6d, 0xc8, +// 0xf9, 0xe3, 0xf0, 0x6f, 0xce, 0x62, 0xfc, 0x33, 0x12, 0x0c, 0xfb, 0xe2, 0x6a, 0x12, 0x10, 0x69, +// 0xf5, 0xba, 0x79, 0x5d, 0xd5, 0xea, 0xba, 0x66, 0x73, 0xd5, 0x00, 0x0a, 0x2a, 0x12, 0x48, 0xaf, +// 0x43, 0xf7, 0x4d, 0x9a, 0x22, 0xe9, 0xfc, 0xa0, 0xfc, 0x31, 0x09, 0xf2, 0xe1, 0xc0, 0x36, 0xd4, +// 0x4c, 0xe9, 0x5b, 0xd9, 0x4c, 0xf9, 0x47, 0x25, 0x18, 0x0d, 0x46, 0xb3, 0xa1, 0xe6, 0xdd, 0xfd, +// 0x2d, 0x6d, 0xde, 0x1f, 0x24, 0x60, 0x24, 0x10, 0xc3, 0xf6, 0xda, 0xba, 0xf7, 0xc2, 0xb8, 0x5e, +// 0xc5, 0x0d, 0xcb, 0x74, 0xb0, 0x51, 0x39, 0x50, 0xeb, 0xf8, 0x1a, 0xae, 0x4f, 0xc9, 0xd4, 0x68, +// 0x9c, 0xe9, 0x1e, 0x25, 0xcf, 0xad, 0x78, 0x74, 0xab, 0x84, 0x6c, 0x7e, 0x62, 0x65, 0xb1, 0xbc, +// 0xb6, 0xb9, 0xb1, 0x5d, 0x5e, 0x5f, 0x78, 0x87, 0x7a, 0x79, 0xfd, 0xd9, 0xf5, 0x8d, 0xe7, 0xd7, +// 0x95, 0xbc, 0x1e, 0x42, 0xbb, 0x83, 0xd3, 0x7e, 0x13, 0xf2, 0xe1, 0x46, 0xa1, 0x63, 0xd0, 0xa9, +// 0x59, 0xf9, 0x01, 0x34, 0x01, 0x63, 0xeb, 0x1b, 0xea, 0xd6, 0xca, 0x62, 0x59, 0x2d, 0x5f, 0xba, +// 0x54, 0x5e, 0xd8, 0xde, 0x62, 0x79, 0x0f, 0x17, 0x7b, 0x3b, 0x30, 0xc1, 0xe5, 0x8f, 0x26, 0x61, +// 0xa2, 0x43, 0x4b, 0x50, 0x91, 0xaf, 0x58, 0xd8, 0x22, 0xea, 0x91, 0x5e, 0x5a, 0x3f, 0x47, 0x62, +// 0x86, 0x4d, 0xad, 0xe9, 0xf0, 0x05, 0xce, 0x83, 0x40, 0xa4, 0x64, 0x38, 0xfa, 0xae, 0x8e, 0x9b, +// 0x3c, 0x9f, 0xc4, 0x96, 0x31, 0x63, 0x1e, 0x9c, 0xa5, 0x94, 0x1e, 0x06, 0x64, 0x99, 0xb6, 0xee, +// 0xe8, 0xd7, 0xb0, 0xaa, 0x1b, 0x22, 0xf9, 0x44, 0x96, 0x35, 0x29, 0x25, 0x2f, 0xbe, 0xac, 0x18, +// 0x8e, 0x8b, 0x6d, 0xe0, 0x9a, 0x16, 0xc2, 0x26, 0xc6, 0x3c, 0xa9, 0xe4, 0xc5, 0x17, 0x17, 0xfb, +// 0x6e, 0xc8, 0x55, 0xcd, 0x16, 0x89, 0xf5, 0x18, 0x1e, 0xf1, 0x1d, 0x92, 0x32, 0xcc, 0x60, 0x2e, +// 0x0a, 0x8f, 0xe2, 0xbd, 0xac, 0x57, 0x4e, 0x19, 0x66, 0x30, 0x86, 0xf2, 0x00, 0x8c, 0x69, 0xb5, +// 0x5a, 0x93, 0x30, 0x17, 0x8c, 0xd8, 0xba, 0x64, 0xd4, 0x05, 0x53, 0xc4, 0xc2, 0x33, 0x90, 0x11, +// 0x72, 0x20, 0xae, 0x9a, 0x48, 0x42, 0xb5, 0xd8, 0x62, 0x3b, 0x71, 0x2a, 0xab, 0x64, 0x0c, 0xf1, +// 0xf1, 0x6e, 0xc8, 0xe9, 0xb6, 0xea, 0x25, 0xf1, 0x13, 0xb3, 0x89, 0x53, 0x19, 0x65, 0x58, 0xb7, +// 0xdd, 0x04, 0xa8, 0xfc, 0xc9, 0x04, 0x8c, 0x06, 0x37, 0x21, 0xd0, 0x22, 0x64, 0xea, 0x66, 0x45, +// 0xa3, 0xaa, 0xc5, 0x76, 0xc0, 0x4e, 0xc5, 0xec, 0x5b, 0xcc, 0xad, 0x72, 0x7c, 0xc5, 0xa5, 0x2c, +// 0xfc, 0x2b, 0x09, 0x32, 0x02, 0x8c, 0x8e, 0x42, 0xca, 0xd2, 0x9c, 0x3d, 0xca, 0x2e, 0x5d, 0x4a, +// 0xe4, 0x25, 0x85, 0x96, 0x09, 0xdc, 0xb6, 0x34, 0x83, 0xaa, 0x00, 0x87, 0x93, 0x32, 0x19, 0xd7, +// 0x3a, 0xd6, 0xaa, 0x74, 0xd1, 0x63, 0x36, 0x1a, 0xd8, 0x70, 0x6c, 0x31, 0xae, 0x1c, 0xbe, 0xc0, +// 0xc1, 0xe8, 0x21, 0x18, 0x77, 0x9a, 0x9a, 0x5e, 0x0f, 0xe0, 0xa6, 0x28, 0x6e, 0x5e, 0x7c, 0x70, +// 0x91, 0xe7, 0xe1, 0xb8, 0xe0, 0x5b, 0xc5, 0x8e, 0x56, 0xd9, 0xc3, 0x55, 0x8f, 0x68, 0x90, 0x26, +// 0x37, 0x8e, 0x71, 0x84, 0x45, 0xfe, 0x5d, 0xd0, 0xca, 0x9f, 0x97, 0x60, 0x5c, 0x2c, 0xd3, 0xaa, +// 0xae, 0xb0, 0xd6, 0x00, 0x34, 0xc3, 0x30, 0x1d, 0xbf, 0xb8, 0xda, 0x55, 0xb9, 0x8d, 0x6e, 0xae, +// 0xe8, 0x12, 0x29, 0x3e, 0x06, 0x85, 0x06, 0x80, 0xf7, 0x25, 0x52, 0x6c, 0x33, 0x30, 0xcc, 0x77, +// 0x98, 0xe8, 0x36, 0x25, 0x5b, 0xd8, 0x03, 0x03, 0x91, 0xf5, 0x1c, 0x9a, 0x84, 0xf4, 0x0e, 0xae, +// 0xe9, 0x06, 0xcf, 0x1b, 0xb3, 0x82, 0x48, 0xbf, 0xa4, 0xdc, 0xf4, 0x4b, 0xe9, 0xaf, 0xc0, 0x44, +// 0xc5, 0x6c, 0x84, 0x9b, 0x5b, 0xca, 0x87, 0x92, 0x0b, 0xf6, 0xb2, 0xf4, 0xe2, 0x23, 0x1c, 0xa9, +// 0x66, 0xd6, 0x35, 0xa3, 0x36, 0x67, 0x36, 0x6b, 0xde, 0x36, 0x2b, 0x89, 0x78, 0x6c, 0xdf, 0x66, +// 0xab, 0xb5, 0xf3, 0xa7, 0x92, 0xf4, 0x63, 0x89, 0xe4, 0xd2, 0x66, 0xe9, 0x53, 0x89, 0xc2, 0x12, +// 0x23, 0xdc, 0x14, 0xc2, 0x50, 0xf0, 0x6e, 0x1d, 0x57, 0x48, 0x07, 0xe1, 0x2b, 0x0f, 0xc1, 0x64, +// 0xcd, 0xac, 0x99, 0x94, 0xd3, 0x19, 0xf2, 0x1f, 0xdf, 0xa7, 0xcd, 0xba, 0xd0, 0x42, 0xec, 0xa6, +// 0xee, 0xfc, 0x3a, 0x4c, 0x70, 0x64, 0x95, 0x6e, 0x14, 0xb1, 0x65, 0x0c, 0xea, 0x9a, 0x43, 0x9b, +// 0xfa, 0xb9, 0x2f, 0x51, 0xf7, 0xad, 0x8c, 0x73, 0x52, 0xf2, 0x8d, 0xad, 0x74, 0xe6, 0x15, 0x38, +// 0x12, 0xe0, 0xc7, 0x26, 0x29, 0x6e, 0xc6, 0x70, 0xfc, 0x35, 0xce, 0x71, 0xc2, 0xc7, 0x71, 0x8b, +// 0x93, 0xce, 0x2f, 0xc0, 0x48, 0x3f, 0xbc, 0xfe, 0x05, 0xe7, 0x95, 0xc3, 0x7e, 0x26, 0x4b, 0x30, +// 0x46, 0x99, 0x54, 0x5a, 0xb6, 0x63, 0x36, 0xa8, 0x05, 0xec, 0xce, 0xe6, 0xd7, 0xbf, 0xc4, 0x66, +// 0xcd, 0x28, 0x21, 0x5b, 0x70, 0xa9, 0xe6, 0xe7, 0x81, 0xee, 0x8d, 0x55, 0x71, 0xa5, 0x1e, 0xc3, +// 0xe1, 0x37, 0x78, 0x43, 0x5c, 0xfc, 0xf9, 0x2b, 0x30, 0x49, 0xfe, 0xa7, 0x06, 0xca, 0xdf, 0x92, +// 0xf8, 0x84, 0xdb, 0xd4, 0xe7, 0xdf, 0xcf, 0x26, 0xe6, 0x84, 0xcb, 0xc0, 0xd7, 0x26, 0xdf, 0x28, +// 0xd6, 0xb0, 0xe3, 0xe0, 0xa6, 0xad, 0x6a, 0xf5, 0x4e, 0xcd, 0xf3, 0x65, 0x2c, 0xa6, 0x7e, 0xf8, +// 0xab, 0xc1, 0x51, 0x5c, 0x62, 0x94, 0xc5, 0x7a, 0x7d, 0xfe, 0x32, 0x1c, 0xeb, 0xa0, 0x15, 0x3d, +// 0xf0, 0xfc, 0x28, 0xe7, 0x39, 0xd9, 0xa6, 0x19, 0x84, 0xed, 0x26, 0x08, 0xb8, 0x3b, 0x96, 0x3d, +// 0xf0, 0xfc, 0x11, 0xce, 0x13, 0x71, 0x5a, 0x31, 0xa4, 0x84, 0xe3, 0x33, 0x30, 0x7e, 0x0d, 0x37, +// 0x77, 0x4c, 0x9b, 0x67, 0x89, 0x7a, 0x60, 0xf7, 0xa3, 0x9c, 0xdd, 0x18, 0x27, 0xa4, 0x69, 0x23, +// 0xc2, 0xeb, 0x02, 0x64, 0x76, 0xb5, 0x0a, 0xee, 0x81, 0xc5, 0x4d, 0xce, 0x62, 0x88, 0xe0, 0x13, +// 0xd2, 0x22, 0xe4, 0x6a, 0x26, 0xf7, 0x51, 0xf1, 0xe4, 0x1f, 0xe3, 0xe4, 0xc3, 0x82, 0x86, 0xb3, +// 0xb0, 0x4c, 0xab, 0x55, 0x27, 0x0e, 0x2c, 0x9e, 0xc5, 0xdf, 0x16, 0x2c, 0x04, 0x0d, 0x67, 0xd1, +// 0x87, 0x58, 0x5f, 0x13, 0x2c, 0x6c, 0x9f, 0x3c, 0x9f, 0x86, 0x61, 0xd3, 0xa8, 0x1f, 0x98, 0x46, +// 0x2f, 0x8d, 0xf8, 0x38, 0xe7, 0x00, 0x9c, 0x84, 0x30, 0xb8, 0x08, 0xd9, 0x5e, 0x07, 0xe2, 0xef, +// 0x7c, 0x55, 0x4c, 0x0f, 0x31, 0x02, 0x4b, 0x30, 0x26, 0x0c, 0x94, 0x6e, 0x1a, 0x3d, 0xb0, 0xf8, +// 0xbb, 0x9c, 0xc5, 0xa8, 0x8f, 0x8c, 0x77, 0xc3, 0xc1, 0xb6, 0x53, 0xc3, 0xbd, 0x30, 0xf9, 0xa4, +// 0xe8, 0x06, 0x27, 0xe1, 0xa2, 0xdc, 0xc1, 0x46, 0x65, 0xaf, 0x37, 0x0e, 0x3f, 0x21, 0x44, 0x29, +// 0x68, 0x08, 0x8b, 0x05, 0x18, 0x69, 0x68, 0x4d, 0x7b, 0x4f, 0xab, 0xf7, 0x34, 0x1c, 0x3f, 0xc9, +// 0x79, 0xe4, 0x5c, 0x22, 0x2e, 0x91, 0x96, 0xd1, 0x0f, 0x9b, 0x4f, 0x09, 0x89, 0xf8, 0xc8, 0xf8, +// 0xd4, 0xb3, 0x1d, 0x9a, 0x52, 0xeb, 0x87, 0xdb, 0x4f, 0x89, 0xa9, 0xc7, 0x68, 0xd7, 0xfc, 0x1c, +// 0x2f, 0x42, 0xd6, 0xd6, 0x5f, 0xee, 0x89, 0xcd, 0x4f, 0x8b, 0x91, 0xa6, 0x04, 0x84, 0xf8, 0x1d, +// 0x70, 0xbc, 0xa3, 0x9b, 0xe8, 0x81, 0xd9, 0xdf, 0xe3, 0xcc, 0x8e, 0x76, 0x70, 0x15, 0xdc, 0x24, +// 0xf4, 0xcb, 0xf2, 0xef, 0x0b, 0x93, 0x80, 0x43, 0xbc, 0x36, 0xc9, 0xaa, 0xc1, 0xd6, 0x76, 0xfb, +// 0x93, 0xda, 0xcf, 0x08, 0xa9, 0x31, 0xda, 0x80, 0xd4, 0xb6, 0xe1, 0x28, 0xe7, 0xd8, 0xdf, 0xb8, +// 0xfe, 0xac, 0x30, 0xac, 0x8c, 0xfa, 0x72, 0x70, 0x74, 0xdf, 0x09, 0x05, 0x57, 0x9c, 0x22, 0x3c, +// 0xb5, 0xd5, 0x86, 0x66, 0xf5, 0xc0, 0xf9, 0xe7, 0x38, 0x67, 0x61, 0xf1, 0xdd, 0xf8, 0xd6, 0x5e, +// 0xd3, 0x2c, 0xc2, 0xfc, 0x05, 0x98, 0x12, 0xcc, 0x5b, 0x46, 0x13, 0x57, 0xcc, 0x9a, 0xa1, 0xbf, +// 0x8c, 0xab, 0x3d, 0xb0, 0xfe, 0xf9, 0xd0, 0x50, 0x5d, 0xf6, 0x91, 0x13, 0xce, 0x2b, 0x90, 0x77, +// 0x63, 0x15, 0x55, 0x6f, 0x58, 0x66, 0xd3, 0x89, 0xe1, 0xf8, 0x0b, 0x62, 0xa4, 0x5c, 0xba, 0x15, +// 0x4a, 0x36, 0x5f, 0x06, 0xb6, 0xcf, 0xdc, 0xab, 0x4a, 0x7e, 0x9a, 0x33, 0x1a, 0xf1, 0xa8, 0xb8, +// 0xe1, 0xa8, 0x98, 0x0d, 0x4b, 0x6b, 0xf6, 0x62, 0xff, 0xfe, 0x81, 0x30, 0x1c, 0x9c, 0x84, 0x1b, +// 0x0e, 0x12, 0xd1, 0x11, 0x6f, 0xdf, 0x03, 0x87, 0x5f, 0x14, 0x86, 0x43, 0xd0, 0x70, 0x16, 0x22, +// 0x60, 0xe8, 0x81, 0xc5, 0x2f, 0x09, 0x16, 0x82, 0x86, 0xb0, 0x78, 0xce, 0x73, 0xb4, 0x4d, 0x5c, +// 0xd3, 0x6d, 0xa7, 0xc9, 0x82, 0xe2, 0xee, 0xac, 0x7e, 0xf9, 0xab, 0xc1, 0x20, 0x4c, 0xf1, 0x91, +// 0x12, 0x4b, 0xc4, 0x93, 0xac, 0x74, 0xcd, 0x14, 0xdf, 0xb0, 0x5f, 0x11, 0x96, 0xc8, 0x47, 0x46, +// 0xda, 0xe6, 0x8b, 0x10, 0x89, 0xd8, 0x2b, 0x64, 0xa5, 0xd0, 0x03, 0xbb, 0x7f, 0x18, 0x6a, 0xdc, +// 0x96, 0xa0, 0x25, 0x3c, 0x7d, 0xf1, 0x4f, 0xcb, 0xb8, 0x8a, 0x0f, 0x7a, 0xd2, 0xce, 0x7f, 0x14, +// 0x8a, 0x7f, 0x2e, 0x33, 0x4a, 0x66, 0x43, 0xc6, 0x42, 0xf1, 0x14, 0x8a, 0x3b, 0x55, 0x34, 0xf5, +// 0x3d, 0x5f, 0xe7, 0xfd, 0x0d, 0x86, 0x53, 0xf3, 0xab, 0x44, 0xc9, 0x83, 0x41, 0x4f, 0x3c, 0xb3, +// 0xf7, 0x7f, 0xdd, 0xd5, 0xf3, 0x40, 0xcc, 0x33, 0x7f, 0x09, 0x46, 0x02, 0x01, 0x4f, 0x3c, 0xab, +// 0x0f, 0x70, 0x56, 0x39, 0x7f, 0xbc, 0x33, 0x7f, 0x0e, 0x52, 0x24, 0x78, 0x89, 0x27, 0xff, 0x5e, +// 0x4e, 0x4e, 0xd1, 0xe7, 0xdf, 0x0a, 0x19, 0x11, 0xb4, 0xc4, 0x93, 0x7e, 0x1f, 0x27, 0x75, 0x49, +// 0x08, 0xb9, 0x08, 0x58, 0xe2, 0xc9, 0xff, 0xaa, 0x20, 0x17, 0x24, 0x84, 0xbc, 0x77, 0x11, 0x7e, +// 0xe6, 0xfb, 0x53, 0xdc, 0xe9, 0x08, 0xd9, 0x5d, 0x84, 0x21, 0x1e, 0xa9, 0xc4, 0x53, 0x7f, 0x88, +// 0x57, 0x2e, 0x28, 0xe6, 0x9f, 0x84, 0x74, 0x8f, 0x02, 0xff, 0x6b, 0x9c, 0x94, 0xe1, 0xcf, 0x2f, +// 0xc0, 0xb0, 0x2f, 0x3a, 0x89, 0x27, 0xff, 0xeb, 0x9c, 0xdc, 0x4f, 0x45, 0x9a, 0xce, 0xa3, 0x93, +// 0x78, 0x06, 0x3f, 0x20, 0x9a, 0xce, 0x29, 0x88, 0xd8, 0x44, 0x60, 0x12, 0x4f, 0xfd, 0x83, 0x42, +// 0xea, 0x82, 0x64, 0xfe, 0x69, 0xc8, 0xba, 0xce, 0x26, 0x9e, 0xfe, 0xc3, 0x9c, 0xde, 0xa3, 0x21, +// 0x12, 0xf0, 0x39, 0xbb, 0x78, 0x16, 0x7f, 0x43, 0x48, 0xc0, 0x47, 0x45, 0xa6, 0x51, 0x38, 0x80, +// 0x89, 0xe7, 0xf4, 0x11, 0x31, 0x8d, 0x42, 0xf1, 0x0b, 0x19, 0x4d, 0x6a, 0xf3, 0xe3, 0x59, 0xfc, +// 0x4d, 0x31, 0x9a, 0x14, 0x9f, 0x34, 0x23, 0x1c, 0x11, 0xc4, 0xf3, 0xf8, 0x21, 0xd1, 0x8c, 0x50, +// 0x40, 0x30, 0xbf, 0x09, 0xa8, 0x3d, 0x1a, 0x88, 0xe7, 0xf7, 0x2a, 0xe7, 0x37, 0xde, 0x16, 0x0c, +// 0xcc, 0x3f, 0x0f, 0x47, 0x3b, 0x47, 0x02, 0xf1, 0x5c, 0x7f, 0xf8, 0xeb, 0xa1, 0xb5, 0x9b, 0x3f, +// 0x10, 0x98, 0xdf, 0xf6, 0x5c, 0x8a, 0x3f, 0x0a, 0x88, 0x67, 0xfb, 0xd1, 0xaf, 0x07, 0x0d, 0xb7, +// 0x3f, 0x08, 0x98, 0x2f, 0x02, 0x78, 0x0e, 0x38, 0x9e, 0xd7, 0x8f, 0x72, 0x5e, 0x3e, 0x22, 0x32, +// 0x35, 0xb8, 0xff, 0x8d, 0xa7, 0xbf, 0x29, 0xa6, 0x06, 0xa7, 0x20, 0x53, 0x43, 0xb8, 0xde, 0x78, +// 0xea, 0x8f, 0x89, 0xa9, 0x21, 0x48, 0x88, 0x66, 0xfb, 0xbc, 0x5b, 0x3c, 0x87, 0x8f, 0x0b, 0xcd, +// 0xf6, 0x51, 0xcd, 0xaf, 0xc3, 0x78, 0x9b, 0x43, 0x8c, 0x67, 0xf5, 0x63, 0x9c, 0x55, 0x3e, 0xec, +// 0x0f, 0xfd, 0xce, 0x8b, 0x3b, 0xc3, 0x78, 0x6e, 0x9f, 0x08, 0x39, 0x2f, 0xee, 0x0b, 0xe7, 0x2f, +// 0x42, 0xc6, 0x68, 0xd5, 0xeb, 0x64, 0xf2, 0xa0, 0xee, 0x27, 0x01, 0xa7, 0xfe, 0xeb, 0x37, 0xb8, +// 0x74, 0x04, 0xc1, 0xfc, 0x39, 0x48, 0xe3, 0xc6, 0x0e, 0xae, 0xc6, 0x51, 0x7e, 0xe5, 0x1b, 0xc2, +// 0x60, 0x12, 0xec, 0xf9, 0xa7, 0x01, 0x58, 0x6a, 0x84, 0x6e, 0x06, 0xc6, 0xd0, 0xfe, 0xb7, 0x6f, +// 0xf0, 0xa3, 0x37, 0x1e, 0x89, 0xc7, 0x80, 0x1d, 0xe4, 0xe9, 0xce, 0xe0, 0xab, 0x41, 0x06, 0x74, +// 0x44, 0x2e, 0xc0, 0xd0, 0x4b, 0xb6, 0x69, 0x38, 0x5a, 0x2d, 0x8e, 0xfa, 0xbf, 0x73, 0x6a, 0x81, +// 0x4f, 0x04, 0xd6, 0x30, 0x9b, 0xd8, 0xd1, 0x6a, 0x76, 0x1c, 0xed, 0x1f, 0x72, 0x5a, 0x97, 0x80, +// 0x10, 0x57, 0x34, 0xdb, 0xe9, 0xa5, 0xdf, 0x7f, 0x24, 0x88, 0x05, 0x01, 0x69, 0x34, 0xf9, 0xff, +// 0x2a, 0x3e, 0x88, 0xa3, 0xfd, 0x9a, 0x68, 0x34, 0xc7, 0x9f, 0x7f, 0x2b, 0x64, 0xc9, 0xbf, 0xec, +// 0x3c, 0x5d, 0x0c, 0xf1, 0x1f, 0x73, 0x62, 0x8f, 0x82, 0xd4, 0x6c, 0x3b, 0x55, 0x47, 0x8f, 0x17, +// 0xf6, 0x1b, 0x7c, 0xa4, 0x05, 0xfe, 0x7c, 0x11, 0x86, 0x6d, 0xa7, 0x5a, 0x6d, 0xf1, 0xf8, 0x34, +// 0x86, 0xfc, 0x7f, 0x7c, 0xc3, 0x4d, 0x59, 0xb8, 0x34, 0x64, 0xb4, 0xaf, 0x5f, 0x75, 0x2c, 0x93, +// 0x6e, 0x78, 0xc4, 0x71, 0xf8, 0x3a, 0xe7, 0xe0, 0x23, 0x99, 0x5f, 0x80, 0x1c, 0xe9, 0x4b, 0x13, +// 0x5b, 0x98, 0xee, 0x4e, 0xc5, 0xb0, 0xf8, 0x9f, 0x5c, 0x00, 0x01, 0xa2, 0xd2, 0xbb, 0x7f, 0xe3, +// 0xf5, 0x69, 0xe9, 0x73, 0xaf, 0x4f, 0x4b, 0x7f, 0xf0, 0xfa, 0xb4, 0xf4, 0x83, 0x5f, 0x9c, 0x1e, +// 0xf8, 0xdc, 0x17, 0xa7, 0x07, 0x7e, 0xf7, 0x8b, 0xd3, 0x03, 0x9d, 0xb3, 0xc4, 0xb0, 0x64, 0x2e, +// 0x99, 0x2c, 0x3f, 0xfc, 0xa2, 0x5c, 0xd3, 0x9d, 0xbd, 0xd6, 0xce, 0x5c, 0xc5, 0x6c, 0xd0, 0x34, +// 0xae, 0x97, 0xad, 0x75, 0x17, 0x39, 0xf0, 0xbe, 0x24, 0x1c, 0xaf, 0x98, 0x76, 0xc3, 0xb4, 0x55, +// 0x96, 0xef, 0x65, 0x05, 0x9e, 0xf1, 0xcd, 0xf9, 0x3f, 0xf5, 0x90, 0xf4, 0x5d, 0x86, 0x51, 0xda, +// 0x75, 0x9a, 0xee, 0xa2, 0xda, 0x16, 0x6b, 0x20, 0x7e, 0xf3, 0xdf, 0xa6, 0x69, 0xaf, 0x47, 0x5c, +// 0x42, 0xba, 0x7b, 0xbf, 0x0d, 0x93, 0x7a, 0xc3, 0xaa, 0x63, 0x9a, 0xe6, 0x57, 0xdd, 0x6f, 0xf1, +// 0xfc, 0x3e, 0xcb, 0xf9, 0x4d, 0x78, 0xe4, 0x2b, 0x82, 0x7a, 0x7e, 0x15, 0xc6, 0xb5, 0x4a, 0x05, +// 0x5b, 0x01, 0x96, 0x31, 0xc3, 0x22, 0x1a, 0x98, 0xe7, 0x94, 0x2e, 0xb7, 0xd2, 0xd3, 0x51, 0x43, +// 0xf3, 0xe2, 0x7d, 0x3e, 0xc9, 0x37, 0x71, 0x0d, 0x1b, 0x8f, 0x18, 0xd8, 0xb9, 0x6e, 0x36, 0xaf, +// 0x72, 0xf1, 0x3e, 0xc2, 0xaa, 0x1a, 0x64, 0x27, 0x98, 0xe1, 0x03, 0x49, 0x98, 0x66, 0x1f, 0xce, +// 0xec, 0x68, 0x36, 0x3e, 0x73, 0xed, 0xb1, 0x1d, 0xec, 0x68, 0x8f, 0x9d, 0xa9, 0x98, 0xba, 0xc1, +// 0x47, 0x62, 0x82, 0x8f, 0x0b, 0xf9, 0x3e, 0xc7, 0xbf, 0x17, 0x3a, 0xa6, 0xe9, 0xe5, 0x25, 0x48, +// 0x2d, 0x98, 0xba, 0x81, 0x26, 0x21, 0x5d, 0xc5, 0x86, 0xd9, 0xe0, 0x67, 0xee, 0x58, 0x01, 0xdd, +// 0x03, 0x83, 0x5a, 0xc3, 0x6c, 0x19, 0x0e, 0xdb, 0xa1, 0x28, 0x0d, 0xff, 0xc6, 0xad, 0x99, 0x81, +// 0xdf, 0xbb, 0x35, 0x93, 0x5c, 0x31, 0x1c, 0x85, 0x7f, 0x9a, 0x4f, 0x7d, 0xf9, 0xb5, 0x19, 0x49, +// 0x7e, 0x06, 0x86, 0x16, 0x71, 0xe5, 0x30, 0xbc, 0x16, 0x71, 0x25, 0xc4, 0xeb, 0x41, 0xc8, 0xac, +// 0x18, 0x0e, 0x3b, 0x15, 0x79, 0x17, 0x24, 0x75, 0x83, 0x1d, 0xb4, 0x09, 0xd5, 0x4f, 0xe0, 0x04, +// 0x75, 0x11, 0x57, 0x5c, 0xd4, 0x2a, 0xae, 0x84, 0x51, 0x09, 0x7b, 0x02, 0x2f, 0x2d, 0xfe, 0xee, +// 0x7f, 0x9c, 0x1e, 0x78, 0xe5, 0xf5, 0xe9, 0x81, 0xc8, 0x91, 0xf0, 0xcf, 0x01, 0x2e, 0x62, 0x3e, +// 0x04, 0x76, 0xf5, 0x2a, 0xdb, 0x23, 0x71, 0x87, 0xe1, 0xb7, 0x07, 0x41, 0xe6, 0x38, 0xb6, 0xa3, +// 0x5d, 0xd5, 0x8d, 0x9a, 0x3b, 0x12, 0x5a, 0xcb, 0xd9, 0x7b, 0x99, 0x0f, 0xc5, 0x51, 0x3e, 0x14, +// 0x1c, 0xa7, 0xfb, 0x68, 0x14, 0xa2, 0x67, 0x57, 0x21, 0x66, 0xcc, 0xe5, 0x7f, 0x99, 0x04, 0xb4, +// 0xe5, 0x68, 0x57, 0x71, 0xb1, 0xe5, 0xec, 0x99, 0x4d, 0xfd, 0x65, 0x66, 0xcb, 0x30, 0x40, 0x43, +// 0xdb, 0x57, 0x1d, 0xf3, 0x2a, 0x36, 0x6c, 0x2a, 0x9a, 0xe1, 0xb3, 0xc7, 0xe7, 0x3a, 0xe8, 0xc7, +// 0x1c, 0x19, 0xba, 0xd2, 0x43, 0x9f, 0xfa, 0xc2, 0xcc, 0x03, 0xf1, 0x52, 0xa0, 0xc8, 0x24, 0xb8, +// 0xde, 0xdf, 0xa6, 0x8c, 0xd1, 0x15, 0x60, 0x87, 0x2c, 0xd4, 0xba, 0x6e, 0x3b, 0xfc, 0x9c, 0xf6, +// 0xb9, 0xb9, 0xce, 0x7d, 0x9f, 0x6b, 0x6f, 0xe6, 0xdc, 0x15, 0xad, 0xae, 0x57, 0x35, 0xc7, 0x6c, +// 0xda, 0xcb, 0x03, 0x4a, 0x96, 0xb2, 0x5a, 0xd5, 0x6d, 0x07, 0x6d, 0x43, 0xb6, 0x8a, 0x8d, 0x03, +// 0xc6, 0x36, 0xf9, 0xe6, 0xd8, 0x66, 0x08, 0x27, 0xca, 0xf5, 0x05, 0x40, 0x9a, 0x1f, 0x4f, 0x5c, +// 0x4c, 0x62, 0xe7, 0x2b, 0x23, 0xd8, 0x07, 0x38, 0xd3, 0x7b, 0x14, 0xe3, 0x5a, 0x18, 0x54, 0xb8, +// 0x1f, 0xc0, 0xab, 0x13, 0x4d, 0xc1, 0x90, 0x56, 0xad, 0x36, 0xb1, 0x6d, 0xd3, 0x0d, 0xc0, 0xac, +// 0x22, 0x8a, 0xf3, 0xe3, 0xff, 0xfa, 0xd3, 0x8f, 0x8c, 0x04, 0x38, 0x96, 0x72, 0x00, 0xd7, 0x5c, +// 0xd2, 0xd3, 0x1f, 0x93, 0x60, 0xbc, 0xad, 0x46, 0x24, 0xc3, 0x74, 0xf1, 0xf2, 0xf6, 0xf2, 0x86, +// 0xb2, 0xf2, 0x62, 0x71, 0x7b, 0x65, 0x63, 0x5d, 0x65, 0x47, 0xfe, 0xd7, 0xb7, 0x36, 0xcb, 0x0b, +// 0x2b, 0x97, 0x56, 0xca, 0x8b, 0xf9, 0x01, 0x34, 0x03, 0x27, 0x3a, 0xe0, 0x2c, 0x96, 0x57, 0xcb, +// 0x4b, 0xc5, 0xed, 0x72, 0x5e, 0x42, 0x77, 0xc3, 0x5d, 0x1d, 0x99, 0xb8, 0x28, 0x89, 0x08, 0x14, +// 0xa5, 0xec, 0xa2, 0x24, 0x4b, 0x97, 0x22, 0x67, 0xd1, 0xc3, 0x5d, 0xf5, 0x67, 0xdf, 0x9d, 0x2e, +// 0xc1, 0xf9, 0xf4, 0x3d, 0x09, 0x38, 0x1e, 0x76, 0x19, 0x9a, 0x71, 0x10, 0x71, 0xeb, 0x33, 0xc2, +// 0x9a, 0x2d, 0x43, 0xb2, 0x68, 0x1c, 0xa0, 0xe3, 0x2c, 0x9e, 0x56, 0x5b, 0xcd, 0x3a, 0xb7, 0x41, +// 0x43, 0xa4, 0x7c, 0xb9, 0x59, 0x27, 0xb6, 0x49, 0x1c, 0xf4, 0x97, 0x4e, 0xe5, 0xf8, 0xe9, 0xfd, +// 0xf9, 0xfc, 0xab, 0xaf, 0xcd, 0x0c, 0xfc, 0xec, 0x6b, 0x33, 0x03, 0x5f, 0xfb, 0xf8, 0xcc, 0xc0, +// 0x2b, 0xbf, 0x3f, 0x3b, 0x50, 0xba, 0x1a, 0xee, 0xde, 0x67, 0x62, 0xbd, 0x69, 0xa6, 0x68, 0x1c, +// 0x50, 0x43, 0xb4, 0x29, 0xbd, 0x98, 0xa6, 0x9d, 0x13, 0x1b, 0xa8, 0xd3, 0xe1, 0x0d, 0xd4, 0xe7, +// 0x71, 0xbd, 0xfe, 0xac, 0x61, 0x5e, 0xa7, 0xa3, 0xea, 0xc9, 0xe0, 0x23, 0x09, 0x98, 0x6e, 0x73, +// 0x9b, 0x3c, 0xc2, 0x88, 0xba, 0xfe, 0x3a, 0x0f, 0x99, 0x45, 0x11, 0xb8, 0x4c, 0xc1, 0x90, 0x8d, +// 0x2b, 0xa6, 0x51, 0x65, 0x33, 0x3d, 0xa9, 0x88, 0x22, 0xe9, 0xb6, 0xa1, 0x19, 0xa6, 0xcd, 0xcf, +// 0xdc, 0xb3, 0x42, 0xe9, 0x47, 0xa4, 0xfe, 0xe2, 0x85, 0x11, 0x51, 0x93, 0xe8, 0xe6, 0x63, 0xb1, +// 0x5b, 0xca, 0x57, 0x49, 0x2f, 0xdd, 0x4e, 0x04, 0xb6, 0x95, 0x7b, 0x95, 0xca, 0x0f, 0x25, 0x60, +// 0x26, 0x2c, 0x15, 0x12, 0xb6, 0xd9, 0x8e, 0xd6, 0xb0, 0xa2, 0xc4, 0x72, 0x11, 0xb2, 0xdb, 0x02, +// 0xa7, 0x6f, 0xb9, 0xdc, 0xec, 0x53, 0x2e, 0xa3, 0x6e, 0x55, 0x42, 0x30, 0x67, 0x7b, 0x14, 0x8c, +// 0xdb, 0x8f, 0x43, 0x49, 0xe6, 0x53, 0x29, 0xb8, 0x8b, 0x5e, 0xca, 0x6a, 0x36, 0x74, 0xc3, 0x39, +// 0x53, 0x69, 0x1e, 0x58, 0x0e, 0x0d, 0xdc, 0xcc, 0x5d, 0x2e, 0x97, 0x71, 0xef, 0xf3, 0x1c, 0xfb, +// 0x1c, 0x31, 0x73, 0x76, 0x21, 0xbd, 0x49, 0xe8, 0x88, 0x44, 0x1c, 0xd3, 0xd1, 0xea, 0x5c, 0x52, +// 0xac, 0x40, 0xa0, 0xec, 0x22, 0x57, 0x82, 0x41, 0x75, 0x71, 0x87, 0xab, 0x8e, 0xb5, 0x5d, 0x76, +// 0x1e, 0x3e, 0x49, 0x27, 0x54, 0x86, 0x00, 0xe8, 0xd1, 0xf7, 0x49, 0x48, 0x6b, 0x2d, 0x76, 0x94, +// 0x23, 0x49, 0x66, 0x1a, 0x2d, 0xc8, 0xcf, 0xc2, 0x10, 0xdf, 0x50, 0x46, 0x79, 0x48, 0x5e, 0xc5, +// 0x07, 0xb4, 0x9e, 0x9c, 0x42, 0xfe, 0x45, 0x73, 0x90, 0xa6, 0x8d, 0xe7, 0x0e, 0x64, 0x6a, 0xae, +// 0xad, 0xf5, 0x73, 0xb4, 0x91, 0x0a, 0x43, 0x93, 0x9f, 0x81, 0xcc, 0xa2, 0xd9, 0xd0, 0x0d, 0x33, +// 0xc8, 0x2d, 0xcb, 0xb8, 0xd1, 0x36, 0x5b, 0x2d, 0x1e, 0x6f, 0x28, 0xac, 0x80, 0x8e, 0xc2, 0x20, +// 0xbb, 0x1f, 0xc1, 0x8f, 0xa3, 0xf0, 0x92, 0xbc, 0x00, 0x43, 0x94, 0xf7, 0x86, 0x85, 0x10, 0xbf, +// 0x59, 0xc7, 0x2f, 0x62, 0xd0, 0xd0, 0x94, 0xb3, 0x4f, 0x78, 0x8d, 0x45, 0x90, 0xaa, 0x6a, 0x8e, +// 0xc6, 0xfb, 0x4d, 0xff, 0x97, 0xdf, 0x06, 0x19, 0xce, 0xc4, 0x46, 0x67, 0x21, 0x69, 0x5a, 0x36, +// 0x3f, 0x50, 0x52, 0x88, 0xea, 0xca, 0x86, 0x55, 0x4a, 0x91, 0x48, 0x45, 0x21, 0xc8, 0x25, 0x25, +// 0xd2, 0xa8, 0x3e, 0xe5, 0x33, 0xaa, 0xbe, 0x21, 0xf7, 0xfd, 0xcb, 0x86, 0xb4, 0x4d, 0x1d, 0x5c, +// 0x65, 0xf9, 0x78, 0x02, 0xa6, 0x7d, 0x5f, 0xaf, 0xe1, 0xa6, 0xad, 0x9b, 0x06, 0xf7, 0xe7, 0x4c, +// 0x5b, 0x90, 0xaf, 0x91, 0xfc, 0x7b, 0x84, 0xba, 0xbc, 0x15, 0x92, 0x45, 0xcb, 0x42, 0x05, 0xc8, +// 0xd0, 0x72, 0xc5, 0x64, 0xfa, 0x92, 0x52, 0xdc, 0x32, 0xf9, 0x66, 0x9b, 0xbb, 0xce, 0x75, 0xad, +// 0xe9, 0x5e, 0x21, 0x14, 0x65, 0xf9, 0x02, 0x64, 0x17, 0x4c, 0xc3, 0xc6, 0x86, 0xdd, 0xa2, 0x73, +// 0x70, 0xa7, 0x6e, 0x56, 0xae, 0x72, 0x0e, 0xac, 0x40, 0x04, 0xae, 0x59, 0x16, 0xa5, 0x4c, 0x29, +// 0xe4, 0x5f, 0x16, 0x1b, 0x96, 0xb6, 0x22, 0x45, 0x74, 0xa1, 0x7f, 0x11, 0xf1, 0x4e, 0xba, 0x32, +// 0xfa, 0x33, 0x09, 0x4e, 0xb6, 0x4f, 0xa8, 0xab, 0xf8, 0xc0, 0xee, 0x77, 0x3e, 0xbd, 0x00, 0xd9, +// 0x4d, 0x7a, 0x8f, 0xff, 0x59, 0x7c, 0x80, 0x0a, 0x30, 0x84, 0xab, 0x67, 0xcf, 0x9d, 0x7b, 0xec, +// 0x02, 0xd3, 0xf6, 0xe5, 0x01, 0x45, 0x00, 0xd0, 0x34, 0x64, 0x6d, 0x5c, 0xb1, 0xce, 0x9e, 0x3b, +// 0x7f, 0xf5, 0x31, 0xa6, 0x5e, 0x24, 0x02, 0x72, 0x41, 0xf3, 0x19, 0xd2, 0xeb, 0x2f, 0x7f, 0x7c, +// 0x46, 0x2a, 0xa5, 0x21, 0x69, 0xb7, 0x1a, 0x77, 0x54, 0x47, 0x3e, 0x9a, 0x86, 0x59, 0x3f, 0x25, +// 0xb5, 0x54, 0x6e, 0x54, 0xc2, 0x65, 0x90, 0xf7, 0xc9, 0x80, 0x62, 0x44, 0x04, 0xb3, 0x5d, 0x25, +// 0x29, 0xff, 0xbc, 0x04, 0x39, 0x37, 0x54, 0xda, 0xc2, 0x0e, 0xba, 0xe8, 0x8f, 0x7f, 0xf8, 0xb4, +// 0x39, 0x31, 0x17, 0xae, 0xcb, 0x0b, 0xe9, 0x14, 0x1f, 0x3a, 0x7a, 0x92, 0x2a, 0xa2, 0x65, 0xda, +// 0xfc, 0x5a, 0x59, 0x0c, 0xa9, 0x8b, 0x8c, 0x1e, 0x06, 0x44, 0x2d, 0x9c, 0x7a, 0xcd, 0x74, 0x74, +// 0xa3, 0xa6, 0x5a, 0xe6, 0x75, 0x7e, 0x59, 0x37, 0xa9, 0xe4, 0xe9, 0x97, 0x2b, 0xf4, 0xc3, 0x26, +// 0x81, 0x93, 0x46, 0x67, 0x5d, 0x2e, 0xc1, 0xf0, 0x8e, 0x18, 0x01, 0x51, 0x44, 0x17, 0x61, 0xc8, +// 0x6a, 0xed, 0xa8, 0xc2, 0x62, 0x0c, 0x9f, 0x3d, 0xd9, 0x69, 0xfe, 0x0b, 0xfd, 0xe0, 0x16, 0x60, +// 0xd0, 0x6a, 0xed, 0x10, 0x6d, 0xb9, 0x1b, 0x72, 0x1d, 0x1a, 0x33, 0x7c, 0xcd, 0x6b, 0x07, 0x7d, +// 0x3e, 0x82, 0xf7, 0x40, 0xb5, 0x9a, 0xba, 0xd9, 0xd4, 0x9d, 0x03, 0x1a, 0xbf, 0x26, 0x95, 0xbc, +// 0xf8, 0xb0, 0xc9, 0xe1, 0xf2, 0x55, 0x18, 0xdb, 0xa2, 0xeb, 0x5b, 0xaf, 0xe5, 0xe7, 0xbc, 0xf6, +// 0x49, 0xf1, 0xed, 0x8b, 0x6c, 0x59, 0xa2, 0xad, 0x65, 0xa5, 0xe7, 0x22, 0xb5, 0xf3, 0xc9, 0xfe, +// 0xb5, 0x33, 0x18, 0x21, 0xfe, 0xd1, 0xf1, 0xc0, 0xe4, 0x64, 0xca, 0xe9, 0x37, 0x5f, 0xbd, 0x2a, +// 0x66, 0x5c, 0x34, 0x51, 0xe8, 0xee, 0x54, 0x0b, 0x31, 0x66, 0xb4, 0x10, 0x3b, 0x85, 0xe4, 0x0b, +// 0x30, 0xb2, 0xa9, 0x35, 0x9d, 0x2d, 0xec, 0x2c, 0x63, 0xad, 0x8a, 0x9b, 0x41, 0xaf, 0x3b, 0x22, +// 0xbc, 0x2e, 0x82, 0x14, 0x75, 0xad, 0xcc, 0xeb, 0xd0, 0xff, 0xe5, 0x3d, 0x48, 0xd1, 0x93, 0xa1, +// 0xae, 0x47, 0xe6, 0x14, 0xcc, 0x23, 0x13, 0x5b, 0x7a, 0xe0, 0x60, 0x5b, 0x84, 0xb7, 0xb4, 0x80, +// 0x9e, 0x10, 0x7e, 0x35, 0xd9, 0xdd, 0xaf, 0x72, 0x45, 0xe4, 0xde, 0xb5, 0x0e, 0x43, 0x25, 0x62, +// 0x8a, 0x57, 0x16, 0xdd, 0x86, 0x48, 0x5e, 0x43, 0xd0, 0x1a, 0x8c, 0x59, 0x5a, 0xd3, 0xa1, 0x57, +// 0x62, 0xf6, 0x68, 0x2f, 0xb8, 0xae, 0xcf, 0xb4, 0xcf, 0xbc, 0x40, 0x67, 0x79, 0x2d, 0x23, 0x96, +// 0x1f, 0x28, 0xff, 0xe7, 0x14, 0x0c, 0x72, 0x61, 0xbc, 0x15, 0x86, 0xb8, 0x58, 0xb9, 0x76, 0xde, +// 0x35, 0xd7, 0xee, 0x98, 0xe6, 0x5c, 0x07, 0xc2, 0xf9, 0x09, 0x1a, 0x74, 0x3f, 0x64, 0x2a, 0x7b, +// 0x9a, 0x6e, 0xa8, 0x7a, 0x55, 0xa4, 0x1a, 0x5e, 0xbf, 0x35, 0x33, 0xb4, 0x40, 0x60, 0x2b, 0x8b, +// 0xca, 0x10, 0xfd, 0xb8, 0x52, 0x25, 0x91, 0xc0, 0x1e, 0xd6, 0x6b, 0x7b, 0x0e, 0x9f, 0x61, 0xbc, +// 0x84, 0x9e, 0x82, 0x14, 0x51, 0x08, 0x7e, 0x61, 0xb2, 0xd0, 0x96, 0xf0, 0x71, 0x83, 0xbd, 0x52, +// 0x86, 0x54, 0xfc, 0x83, 0x5f, 0x98, 0x91, 0x14, 0x4a, 0x81, 0x16, 0x60, 0xa4, 0xae, 0xd9, 0x8e, +// 0x4a, 0x3d, 0x18, 0xa9, 0x3e, 0xcd, 0xd7, 0xdb, 0x6d, 0x02, 0xe1, 0x82, 0xe5, 0x4d, 0x1f, 0x26, +// 0x54, 0x0c, 0x54, 0x45, 0xa7, 0x20, 0x4f, 0x99, 0x54, 0xcc, 0x46, 0x43, 0x77, 0x58, 0x6c, 0x35, +// 0x48, 0xe5, 0x3e, 0x4a, 0xe0, 0x0b, 0x14, 0x4c, 0x23, 0xac, 0x13, 0x90, 0xa5, 0x57, 0xb4, 0x28, +// 0x0a, 0x3b, 0x8e, 0x9c, 0x21, 0x00, 0xfa, 0xf1, 0x01, 0x18, 0xf3, 0xec, 0x23, 0x43, 0xc9, 0x30, +// 0x2e, 0x1e, 0x98, 0x22, 0x3e, 0x0a, 0x93, 0x06, 0xde, 0xa7, 0x07, 0xa4, 0x03, 0xd8, 0x59, 0x8a, +// 0x8d, 0xc8, 0xb7, 0x2b, 0x41, 0x8a, 0xfb, 0x60, 0xb4, 0x22, 0x84, 0xcf, 0x70, 0x81, 0xe2, 0x8e, +// 0xb8, 0x50, 0x8a, 0x76, 0x1c, 0x32, 0x9a, 0x65, 0x31, 0x84, 0x61, 0x6e, 0x1f, 0x2d, 0x8b, 0x7e, +// 0x3a, 0x0d, 0xe3, 0xb4, 0x8f, 0x4d, 0x6c, 0xb7, 0xea, 0x0e, 0x67, 0x92, 0xa3, 0x38, 0x63, 0xe4, +// 0x83, 0xc2, 0xe0, 0x14, 0xf7, 0x1e, 0x18, 0xc1, 0xd7, 0xf4, 0x2a, 0x36, 0x2a, 0x98, 0xe1, 0x8d, +// 0x50, 0xbc, 0x9c, 0x00, 0x52, 0xa4, 0x07, 0xc1, 0xb5, 0x7b, 0xaa, 0xb0, 0xc9, 0xa3, 0x8c, 0x9f, +// 0x80, 0x17, 0x19, 0x58, 0x9e, 0x82, 0xd4, 0xa2, 0xe6, 0x68, 0x24, 0xc0, 0x70, 0xf6, 0x99, 0xa3, +// 0xc9, 0x29, 0xe4, 0x5f, 0xf9, 0xcb, 0x09, 0x48, 0x5d, 0x31, 0x1d, 0x8c, 0x1e, 0xf7, 0x05, 0x80, +// 0xa3, 0x9d, 0xf4, 0x79, 0x4b, 0xaf, 0x19, 0xb8, 0xba, 0x66, 0xd7, 0x7c, 0xef, 0x29, 0x78, 0xea, +// 0x94, 0x08, 0xa8, 0xd3, 0x24, 0xa4, 0x9b, 0x66, 0xcb, 0xa8, 0x8a, 0x93, 0xbc, 0xb4, 0x80, 0xca, +// 0x90, 0x71, 0xb5, 0x24, 0x15, 0xa7, 0x25, 0x63, 0x44, 0x4b, 0x88, 0x0e, 0x73, 0x80, 0x32, 0xb4, +// 0xc3, 0x95, 0xa5, 0x04, 0x59, 0xd7, 0x78, 0x71, 0x6d, 0xeb, 0x4d, 0x61, 0x3d, 0x32, 0xe2, 0x4c, +// 0xdc, 0xb1, 0x77, 0x85, 0xc7, 0x34, 0x2e, 0xef, 0x7e, 0xe0, 0xd2, 0x0b, 0xa8, 0x15, 0x7f, 0xdb, +// 0x61, 0x88, 0xf6, 0xcb, 0x53, 0x2b, 0xf6, 0xbe, 0xc3, 0x49, 0xc8, 0xda, 0x7a, 0xcd, 0xd0, 0x9c, +// 0x56, 0x13, 0x73, 0xcd, 0xf3, 0x00, 0xf2, 0x67, 0x24, 0x18, 0x64, 0x9a, 0xec, 0x93, 0x9b, 0xd4, +// 0x59, 0x6e, 0x89, 0x28, 0xb9, 0x25, 0x0f, 0x2f, 0xb7, 0x22, 0x80, 0xdb, 0x18, 0x9b, 0x5f, 0xb9, +// 0xef, 0x10, 0x31, 0xb0, 0x26, 0x6e, 0xe9, 0x35, 0x3e, 0x51, 0x7d, 0x44, 0xf2, 0x7f, 0x90, 0x48, +// 0x10, 0xcb, 0xbf, 0xa3, 0x22, 0x8c, 0x88, 0x76, 0xa9, 0xbb, 0x75, 0xad, 0xc6, 0x75, 0xe7, 0xae, +// 0xc8, 0xc6, 0x5d, 0xaa, 0x6b, 0x35, 0x65, 0x98, 0xb7, 0x87, 0x14, 0x3a, 0x8f, 0x43, 0x22, 0x62, +// 0x1c, 0x02, 0x03, 0x9f, 0x3c, 0xdc, 0xc0, 0x07, 0x86, 0x28, 0x15, 0x1e, 0xa2, 0x5f, 0x48, 0xd0, +// 0xc5, 0x8c, 0x65, 0xda, 0x5a, 0xfd, 0x9b, 0x31, 0x23, 0x4e, 0x40, 0xd6, 0x32, 0xeb, 0x2a, 0xfb, +// 0xc2, 0x4e, 0xb8, 0x67, 0x2c, 0xb3, 0xae, 0xb4, 0x0d, 0x7b, 0xfa, 0x36, 0x4d, 0x97, 0xc1, 0xdb, +// 0x20, 0xb5, 0xa1, 0xb0, 0xd4, 0x9a, 0x90, 0x63, 0xa2, 0xe0, 0xbe, 0xec, 0x51, 0x22, 0x03, 0xea, +// 0x1c, 0xa5, 0x76, 0xdf, 0xcb, 0x9a, 0xcd, 0x30, 0x15, 0x8e, 0x47, 0x28, 0x98, 0xe9, 0xef, 0xb4, +// 0x0a, 0xf6, 0xab, 0xa5, 0xc2, 0xf1, 0xe4, 0xbf, 0x25, 0x01, 0xac, 0x12, 0xc9, 0xd2, 0xfe, 0x12, +// 0x2f, 0x64, 0xd3, 0x26, 0xa8, 0x81, 0x9a, 0xa7, 0xa3, 0x06, 0x8d, 0xd7, 0x9f, 0xb3, 0xfd, 0xed, +// 0x5e, 0x80, 0x11, 0x4f, 0x19, 0x6d, 0x2c, 0x1a, 0x33, 0xdd, 0x25, 0xaa, 0xde, 0xc2, 0x8e, 0x92, +// 0xbb, 0xe6, 0x2b, 0xc9, 0xff, 0x4c, 0x82, 0x2c, 0x6d, 0xd3, 0x1a, 0x76, 0xb4, 0xc0, 0x18, 0x4a, +// 0x87, 0x1f, 0xc3, 0xbb, 0x00, 0x18, 0x1b, 0x5b, 0x7f, 0x19, 0x73, 0xcd, 0xca, 0x52, 0xc8, 0x96, +// 0xfe, 0x32, 0x46, 0xe7, 0x5d, 0x81, 0x27, 0xbb, 0x0b, 0x5c, 0x44, 0xdd, 0x5c, 0xec, 0xc7, 0x60, +// 0x88, 0x3e, 0x51, 0xb5, 0x6f, 0xf3, 0x40, 0x7a, 0xd0, 0x68, 0x35, 0xb6, 0xf7, 0x6d, 0xf9, 0x25, +// 0x18, 0xda, 0xde, 0x67, 0xb9, 0x91, 0x13, 0x90, 0x6d, 0x9a, 0x26, 0xf7, 0xc9, 0x2c, 0x16, 0xca, +// 0x10, 0x00, 0x75, 0x41, 0x22, 0x1f, 0x90, 0xf0, 0xf2, 0x01, 0x5e, 0x42, 0x23, 0xd9, 0x53, 0x42, +// 0xe3, 0xf4, 0xbf, 0x93, 0x60, 0xd8, 0x67, 0x1f, 0xd0, 0x63, 0x70, 0xa4, 0xb4, 0xba, 0xb1, 0xf0, +// 0xac, 0xba, 0xb2, 0xa8, 0x5e, 0x5a, 0x2d, 0x2e, 0x79, 0x77, 0xb8, 0x0a, 0x47, 0x6f, 0xdc, 0x9c, +// 0x45, 0x3e, 0xdc, 0xcb, 0x06, 0xcd, 0x28, 0xa1, 0x33, 0x30, 0x19, 0x24, 0x29, 0x96, 0xb6, 0xca, +// 0xeb, 0xdb, 0x79, 0xa9, 0x70, 0xe4, 0xc6, 0xcd, 0xd9, 0x71, 0x1f, 0x45, 0x71, 0xc7, 0xc6, 0x86, +// 0xd3, 0x4e, 0xb0, 0xb0, 0xb1, 0xb6, 0xb6, 0xb2, 0x9d, 0x4f, 0xb4, 0x11, 0x70, 0x83, 0xfd, 0x20, +// 0x8c, 0x07, 0x09, 0xd6, 0x57, 0x56, 0xf3, 0xc9, 0x02, 0xba, 0x71, 0x73, 0x76, 0xd4, 0x87, 0xbd, +// 0xae, 0xd7, 0x0b, 0x99, 0x0f, 0x7e, 0x62, 0x7a, 0xe0, 0x27, 0x7e, 0x7c, 0x5a, 0x22, 0x3d, 0x1b, +// 0x09, 0xd8, 0x08, 0xf4, 0x30, 0x1c, 0xdb, 0x5a, 0x59, 0x5a, 0x2f, 0x2f, 0xaa, 0x6b, 0x5b, 0x4b, +// 0x22, 0x07, 0x2d, 0x7a, 0x37, 0x76, 0xe3, 0xe6, 0xec, 0x30, 0xef, 0x52, 0x14, 0xf6, 0xa6, 0x52, +// 0xbe, 0xb2, 0xb1, 0x5d, 0xce, 0x4b, 0x0c, 0x7b, 0xb3, 0x89, 0xaf, 0x99, 0x0e, 0x7b, 0xc3, 0xee, +// 0x51, 0x38, 0xde, 0x01, 0xdb, 0xed, 0xd8, 0xf8, 0x8d, 0x9b, 0xb3, 0x23, 0x9b, 0x4d, 0xcc, 0xe6, +// 0x0f, 0xa5, 0x98, 0x83, 0xa9, 0x76, 0x8a, 0x8d, 0xcd, 0x8d, 0xad, 0xe2, 0x6a, 0x7e, 0xb6, 0x90, +// 0xbf, 0x71, 0x73, 0x36, 0x27, 0x8c, 0x21, 0x4d, 0xf4, 0xbb, 0x3d, 0xbb, 0x93, 0x2b, 0x9e, 0xdf, +// 0x1e, 0x0a, 0xe4, 0xf7, 0xd8, 0x5a, 0xc2, 0xd2, 0x9a, 0x5a, 0xa3, 0xdf, 0x25, 0x4f, 0x4c, 0x5a, +// 0x59, 0x7e, 0x35, 0x01, 0x63, 0x6e, 0x40, 0xbd, 0x49, 0x6b, 0x40, 0x17, 0xfc, 0x79, 0x99, 0xe1, +// 0x48, 0x57, 0xc6, 0xb0, 0xc5, 0xd2, 0x81, 0x25, 0x6f, 0x4a, 0x90, 0x11, 0xe1, 0x19, 0x37, 0x1c, +// 0xb3, 0xed, 0xd4, 0x65, 0x8e, 0x11, 0x60, 0xe0, 0xd2, 0xa1, 0x32, 0x64, 0x5d, 0x63, 0xe2, 0xbe, +// 0x08, 0x13, 0x6d, 0x7d, 0x02, 0x5c, 0x3c, 0x4a, 0xf4, 0xb4, 0xb7, 0x98, 0x48, 0x45, 0x2d, 0x4f, +// 0xae, 0x30, 0x84, 0x00, 0x0b, 0x41, 0x25, 0x63, 0x3e, 0x25, 0xb9, 0x54, 0xe8, 0xcd, 0xfa, 0x7d, +// 0x95, 0xad, 0xb2, 0x58, 0xc4, 0x92, 0x69, 0x68, 0xfb, 0x25, 0xba, 0xd0, 0x3a, 0x06, 0x43, 0xe4, +// 0x63, 0x8d, 0x5f, 0x3d, 0x4e, 0x2a, 0x83, 0x0d, 0x6d, 0x7f, 0x49, 0xb3, 0xd1, 0x2c, 0xe4, 0x88, +// 0x07, 0x51, 0x75, 0xd3, 0xd1, 0xd4, 0x86, 0xcd, 0x57, 0x1c, 0x40, 0x60, 0x2b, 0xa6, 0xa3, 0xad, +// 0xd9, 0xf2, 0x4f, 0x4a, 0x30, 0x1a, 0x94, 0x08, 0x7a, 0x08, 0x10, 0xe1, 0xa6, 0xd5, 0xb0, 0x4a, +// 0x4c, 0x13, 0x15, 0xad, 0xa8, 0x73, 0xac, 0xa1, 0xed, 0x17, 0x6b, 0x78, 0xbd, 0xd5, 0xa0, 0x8d, +// 0xb3, 0xd1, 0x1a, 0xe4, 0x05, 0xb2, 0x18, 0x5b, 0x2e, 0xfa, 0xe3, 0xed, 0xef, 0xc8, 0x71, 0x04, +// 0xe6, 0xe0, 0x5e, 0x25, 0x0e, 0x6e, 0x94, 0xf1, 0x73, 0xb7, 0x12, 0x02, 0xdd, 0x4c, 0x06, 0xbb, +// 0x29, 0x3f, 0x0d, 0x63, 0x21, 0xb9, 0x23, 0x19, 0x46, 0x78, 0x46, 0x81, 0x6e, 0xa6, 0x89, 0x0d, +// 0xaf, 0x61, 0x96, 0x39, 0xa0, 0x69, 0xeb, 0xf9, 0xcc, 0x2f, 0xbf, 0x36, 0x23, 0xd1, 0x0d, 0xde, +// 0x79, 0x18, 0x09, 0xc8, 0x9c, 0xde, 0xdb, 0xb6, 0x2c, 0xd5, 0xbf, 0xec, 0x4b, 0x29, 0xa0, 0x59, +// 0x16, 0x47, 0xf3, 0xd1, 0xbe, 0x08, 0x39, 0x62, 0x6f, 0x71, 0x95, 0x93, 0xde, 0x0f, 0x63, 0xcc, +// 0x1f, 0x84, 0x87, 0x85, 0x05, 0x64, 0x6b, 0x62, 0x6c, 0x64, 0x11, 0xa1, 0x05, 0x47, 0x68, 0x58, +// 0x60, 0x2d, 0x69, 0x76, 0xe9, 0xf2, 0x4f, 0xbc, 0x3e, 0x2d, 0xdd, 0xb9, 0xf9, 0x7c, 0x73, 0x19, +// 0x4e, 0xf8, 0x3e, 0x6a, 0x3b, 0x15, 0x3d, 0x90, 0xc0, 0x18, 0xf3, 0x69, 0x26, 0xf9, 0x18, 0x97, +// 0x88, 0xe8, 0x9a, 0x0e, 0xe9, 0x9e, 0x7f, 0x2b, 0x74, 0x37, 0x2c, 0xf1, 0x39, 0x92, 0xce, 0x69, +// 0xcf, 0x0f, 0x67, 0x60, 0x48, 0xc1, 0xef, 0x6d, 0x61, 0xdb, 0x41, 0x67, 0x21, 0x85, 0x2b, 0x7b, +// 0x66, 0xa7, 0x0c, 0x13, 0xe9, 0xdc, 0x1c, 0xc7, 0x2b, 0x57, 0xf6, 0xcc, 0xe5, 0x01, 0x85, 0xe2, +// 0xa2, 0x73, 0x90, 0xde, 0xad, 0xb7, 0x78, 0xca, 0x23, 0x64, 0x73, 0xfc, 0x44, 0x97, 0x08, 0xd2, +// 0xf2, 0x80, 0xc2, 0xb0, 0x49, 0x55, 0xf4, 0x91, 0xce, 0x64, 0xf7, 0xaa, 0x56, 0x8c, 0x5d, 0x5a, +// 0x15, 0xc1, 0x45, 0x25, 0x00, 0x1b, 0x3b, 0xe2, 0x06, 0x76, 0xaa, 0xdd, 0xc0, 0xf8, 0x29, 0xb7, +// 0xb0, 0xc3, 0x8e, 0x78, 0xb0, 0xe4, 0x2c, 0x2f, 0x10, 0x1e, 0xba, 0xa1, 0x3b, 0x2a, 0x4d, 0x29, +// 0xf0, 0xc0, 0xf4, 0xee, 0xe8, 0xda, 0x75, 0x87, 0x26, 0x21, 0x08, 0x0f, 0x5d, 0x14, 0x48, 0x97, +// 0xdf, 0xdb, 0xc2, 0xcd, 0x03, 0x1e, 0x8f, 0x46, 0x76, 0xf9, 0x39, 0x82, 0x44, 0xba, 0x4c, 0xb1, +// 0x51, 0x19, 0x86, 0xe9, 0x9d, 0x50, 0x66, 0x16, 0xf8, 0xa3, 0x93, 0x72, 0x14, 0x71, 0x89, 0xa0, +// 0x52, 0x4b, 0xb1, 0x3c, 0xa0, 0xc0, 0x8e, 0x5b, 0x42, 0x6f, 0x81, 0x0c, 0x7b, 0x94, 0xc8, 0xd9, +// 0xe7, 0x4f, 0xed, 0xcd, 0x44, 0xf1, 0xa0, 0x2f, 0x13, 0x6d, 0xef, 0x2f, 0x0f, 0x28, 0x43, 0x15, +// 0xf6, 0x2f, 0xe9, 0x7f, 0x15, 0xd7, 0xf5, 0x6b, 0xb8, 0x49, 0xe8, 0xb3, 0xdd, 0xfb, 0xbf, 0xc8, +// 0x30, 0x29, 0x87, 0x6c, 0x55, 0x14, 0xd0, 0xd3, 0x90, 0xc5, 0x46, 0x95, 0x77, 0x03, 0xda, 0x9d, +// 0x45, 0x40, 0x57, 0x8c, 0xaa, 0xe8, 0x44, 0x06, 0xf3, 0xff, 0xd1, 0x53, 0x6e, 0xc0, 0x3c, 0xdc, +// 0x1e, 0xa3, 0x06, 0x3a, 0xc0, 0x52, 0x27, 0x03, 0x22, 0x70, 0x46, 0xeb, 0x30, 0x5a, 0xd7, 0x6d, +// 0x47, 0xb5, 0x0d, 0xcd, 0xb2, 0xf7, 0x4c, 0xc7, 0xa6, 0x39, 0x88, 0xe1, 0xb3, 0xf7, 0x45, 0x71, +// 0x58, 0xd5, 0x6d, 0x67, 0x4b, 0x20, 0x2f, 0x0f, 0x28, 0x23, 0x75, 0x3f, 0x80, 0xf0, 0x33, 0x77, +// 0x77, 0x71, 0xd3, 0x65, 0x48, 0x73, 0x15, 0x5d, 0xf8, 0x6d, 0x10, 0x6c, 0x41, 0x4f, 0xf8, 0x99, +// 0x7e, 0x00, 0x7a, 0x27, 0x4c, 0xd4, 0x4d, 0xad, 0xea, 0xb2, 0x53, 0x2b, 0x7b, 0x2d, 0xe3, 0x2a, +// 0x4d, 0x6c, 0x0c, 0x9f, 0x7d, 0x30, 0xb2, 0x91, 0xa6, 0x56, 0x15, 0x2c, 0x16, 0x08, 0xc1, 0xf2, +// 0x80, 0x32, 0x5e, 0x0f, 0x03, 0xd1, 0x7b, 0x60, 0x52, 0xb3, 0xac, 0xfa, 0x41, 0x98, 0xfb, 0x18, +// 0xe5, 0x7e, 0x3a, 0x8a, 0x7b, 0x91, 0xd0, 0x84, 0xd9, 0x23, 0xad, 0x0d, 0x5a, 0x1a, 0xe2, 0x3b, +// 0xed, 0xf2, 0x03, 0x30, 0xec, 0x9b, 0xea, 0x68, 0x0a, 0x86, 0xf8, 0xb9, 0x53, 0xb1, 0x37, 0xcf, +// 0x8b, 0xf2, 0x28, 0xe4, 0xfc, 0xd3, 0x5b, 0x6e, 0xb8, 0x84, 0xf4, 0xa2, 0xf6, 0x54, 0x30, 0x2d, +// 0x98, 0xf5, 0x32, 0x7e, 0xf7, 0x08, 0xd3, 0x2e, 0xbe, 0xb3, 0x5d, 0xa3, 0x1c, 0x05, 0x72, 0x0f, +// 0x42, 0x5c, 0x8c, 0x75, 0xd6, 0x73, 0x31, 0x49, 0xe6, 0x62, 0xac, 0xb3, 0xc2, 0xc5, 0xc8, 0xf3, +// 0x90, 0x0f, 0xcf, 0xf6, 0xce, 0xbb, 0x8a, 0xde, 0x01, 0x82, 0x2c, 0x3f, 0x40, 0x20, 0xff, 0x56, +// 0xc2, 0x25, 0x76, 0xa7, 0xb9, 0x9b, 0x48, 0x94, 0xfa, 0x4e, 0x24, 0x1e, 0x0f, 0xa7, 0x30, 0xbd, +// 0xac, 0xe5, 0xb3, 0x90, 0xf7, 0x92, 0x6f, 0xcc, 0x64, 0x73, 0xb3, 0xd7, 0x3e, 0x6b, 0x42, 0x11, +// 0x9d, 0x32, 0x56, 0x09, 0x85, 0x78, 0x97, 0x02, 0x7b, 0x2e, 0xe2, 0xb9, 0xe8, 0x30, 0x1b, 0xd7, +// 0xd7, 0x5f, 0xb6, 0xaa, 0x9a, 0x83, 0x45, 0x2e, 0xc4, 0xb7, 0xfd, 0x72, 0x3f, 0x8c, 0x11, 0xf7, +// 0x6d, 0x3b, 0x9a, 0x83, 0xb9, 0x0f, 0x4e, 0xb3, 0x94, 0xa0, 0x66, 0x59, 0x5b, 0x04, 0xca, 0x7c, +// 0xf0, 0x7d, 0x30, 0x4a, 0x0c, 0x9f, 0xae, 0xd5, 0x55, 0x9e, 0x19, 0x18, 0x64, 0xae, 0x9a, 0x43, +// 0x97, 0x29, 0x50, 0xae, 0xba, 0x8a, 0x40, 0x8d, 0x9e, 0xbb, 0xb4, 0x92, 0x7c, 0x4b, 0x2b, 0xc4, +// 0x6f, 0xd6, 0x33, 0xf1, 0x88, 0xc7, 0x08, 0x3a, 0x67, 0x74, 0x27, 0xe9, 0x32, 0xec, 0x1a, 0x4b, +// 0x72, 0x64, 0x14, 0x56, 0x90, 0x3f, 0x90, 0x80, 0xf1, 0x36, 0xf3, 0xd8, 0x31, 0xd5, 0xed, 0xad, +// 0x29, 0x13, 0x7d, 0xad, 0x29, 0x37, 0x82, 0xa9, 0x5c, 0x9f, 0x8b, 0x6a, 0x37, 0xb2, 0xab, 0x6e, +// 0x6e, 0x97, 0x28, 0x3b, 0x67, 0xe4, 0xcb, 0xf8, 0xd2, 0x29, 0xa0, 0xc0, 0xe4, 0xce, 0xc1, 0xcb, +// 0x9a, 0xe1, 0xe8, 0x06, 0x56, 0xdb, 0x46, 0xee, 0x78, 0x1b, 0x53, 0x11, 0x50, 0x72, 0x76, 0x13, +// 0x2e, 0xb1, 0x97, 0xd1, 0x95, 0x15, 0x18, 0x0d, 0x1a, 0x78, 0x34, 0x0a, 0x09, 0x67, 0x9f, 0x0b, +// 0x20, 0xe1, 0xec, 0xa3, 0x47, 0x79, 0xf2, 0x27, 0x41, 0x93, 0x3f, 0xed, 0xde, 0x95, 0xd3, 0x79, +// 0x99, 0x1f, 0x59, 0x76, 0x67, 0x83, 0x6b, 0xf4, 0xc3, 0x5c, 0xe5, 0x07, 0x61, 0x2c, 0x64, 0xd5, +// 0xa3, 0x52, 0x81, 0xf2, 0x18, 0x8c, 0x04, 0x4c, 0xb8, 0x7c, 0x14, 0x26, 0x3b, 0x59, 0x64, 0x79, +// 0xcf, 0x85, 0x07, 0x2c, 0x2b, 0x3a, 0x07, 0x19, 0xd7, 0x24, 0x77, 0x48, 0x3d, 0xd0, 0x5e, 0x08, +// 0x64, 0xc5, 0x45, 0x0d, 0x64, 0xb0, 0x13, 0x81, 0x0c, 0xb6, 0xfc, 0x1d, 0x30, 0x15, 0x65, 0x6e, +// 0x43, 0xdd, 0x48, 0xb9, 0x6a, 0x78, 0x14, 0x06, 0xf9, 0xb3, 0x61, 0x09, 0xba, 0x67, 0xc3, 0x4b, +// 0x44, 0x3d, 0x99, 0xe9, 0x4d, 0xb2, 0xad, 0x1c, 0x5a, 0x90, 0x55, 0x38, 0x1e, 0x69, 0x72, 0xa3, +// 0x77, 0x7f, 0x18, 0x23, 0xbe, 0xfb, 0x53, 0x11, 0xcd, 0xb1, 0x69, 0x5f, 0xc5, 0x89, 0x07, 0x56, +// 0x92, 0xff, 0x53, 0x06, 0x32, 0x0a, 0xb6, 0x2d, 0x62, 0x13, 0x50, 0x09, 0xb2, 0x78, 0xbf, 0x82, +// 0x2d, 0xc7, 0xdb, 0x75, 0xe9, 0x14, 0x4c, 0x30, 0xec, 0xb2, 0xc0, 0x24, 0x9e, 0xdc, 0x25, 0x43, +// 0x8f, 0xf3, 0x80, 0x2f, 0x3a, 0x76, 0xe3, 0xe4, 0xfe, 0x88, 0xef, 0xbc, 0x88, 0xf8, 0x92, 0x91, +// 0xce, 0x9b, 0x51, 0x85, 0x42, 0xbe, 0xc7, 0x79, 0xc8, 0x97, 0x8a, 0xa9, 0x2c, 0x10, 0xf3, 0x2d, +// 0x04, 0x62, 0xbe, 0x74, 0x4c, 0x37, 0x23, 0x82, 0xbe, 0x85, 0x40, 0xd0, 0x37, 0x18, 0xc3, 0x24, +// 0x22, 0xea, 0x3b, 0x2f, 0xa2, 0xbe, 0xa1, 0x98, 0x6e, 0x87, 0xc2, 0xbe, 0x4b, 0xc1, 0xb0, 0x8f, +// 0x85, 0x6c, 0xf7, 0x44, 0x52, 0x47, 0xc6, 0x7d, 0x6f, 0xf5, 0xc5, 0x7d, 0xd9, 0xc8, 0xa0, 0x8b, +// 0x31, 0xe9, 0x10, 0xf8, 0x2d, 0x04, 0x02, 0x3f, 0x88, 0x91, 0x41, 0x44, 0xe4, 0xf7, 0x76, 0x7f, +// 0xe4, 0x37, 0x1c, 0x19, 0x3c, 0x72, 0xa5, 0xe9, 0x14, 0xfa, 0x5d, 0x70, 0x43, 0xbf, 0x5c, 0x64, +// 0xec, 0xca, 0xfb, 0x10, 0x8e, 0xfd, 0x36, 0xda, 0x62, 0xbf, 0x11, 0xfe, 0x8c, 0x79, 0x14, 0x8b, +// 0x98, 0xe0, 0x6f, 0xa3, 0x2d, 0xf8, 0x1b, 0x8d, 0x61, 0x18, 0x13, 0xfd, 0xbd, 0xab, 0x73, 0xf4, +// 0x17, 0x1d, 0x9f, 0xf1, 0x66, 0xf6, 0x16, 0xfe, 0xa9, 0x11, 0xe1, 0x5f, 0x9e, 0xb2, 0x7f, 0x28, +// 0x92, 0x7d, 0xff, 0xf1, 0xdf, 0x83, 0xc4, 0xcd, 0x86, 0x0c, 0x07, 0x31, 0x55, 0xb8, 0xd9, 0x34, +// 0x9b, 0xe2, 0x8c, 0x38, 0x2d, 0xc8, 0xa7, 0x88, 0xe3, 0xf7, 0x8c, 0x44, 0x97, 0x58, 0x91, 0xba, +// 0x04, 0x9f, 0x61, 0x90, 0x7f, 0x59, 0xf2, 0x68, 0xa9, 0xaf, 0xf4, 0x07, 0x0d, 0x59, 0x1e, 0x34, +// 0xf8, 0x42, 0xc8, 0x44, 0x30, 0x84, 0x0c, 0x25, 0x20, 0x92, 0xe1, 0x04, 0x84, 0xbb, 0x65, 0xc9, +// 0x02, 0x4d, 0x6e, 0xdf, 0x59, 0xa6, 0x78, 0xcc, 0xdd, 0xbe, 0x65, 0xf1, 0x0b, 0x7a, 0x04, 0x26, +// 0x7c, 0xb8, 0xae, 0x0b, 0x61, 0x21, 0x51, 0xde, 0xc5, 0x2e, 0x72, 0x5f, 0xb2, 0xe6, 0x09, 0xc8, +// 0x8b, 0x3c, 0x11, 0xa4, 0x2a, 0x66, 0x15, 0x73, 0x03, 0x4f, 0xff, 0x27, 0xd1, 0x68, 0xdd, 0xac, +// 0x71, 0x33, 0x4e, 0xfe, 0x25, 0x58, 0xae, 0x15, 0xcc, 0x32, 0x23, 0x27, 0xff, 0x73, 0xc9, 0xe3, +// 0xe7, 0x05, 0xa3, 0x9d, 0xe2, 0x46, 0xe9, 0xf6, 0xc4, 0x8d, 0x89, 0x43, 0xc7, 0x8d, 0x7e, 0x07, +// 0x9b, 0x0c, 0x3a, 0xd8, 0x3f, 0x91, 0xbc, 0x11, 0x76, 0xa3, 0xc0, 0xc3, 0x49, 0xc4, 0xf3, 0x96, +// 0x69, 0xff, 0xe9, 0x45, 0x1e, 0xdb, 0x0f, 0x7a, 0x47, 0xfa, 0xdc, 0xd8, 0x7e, 0xc8, 0x77, 0x38, +// 0x18, 0x3d, 0x05, 0x59, 0x9a, 0x74, 0x51, 0x4d, 0x4b, 0x3c, 0x47, 0x7f, 0x22, 0xfa, 0x38, 0x9f, +// 0x4d, 0x0f, 0x17, 0xb1, 0x23, 0x80, 0x5e, 0x20, 0x90, 0x0d, 0xc4, 0xa3, 0x27, 0x21, 0x4b, 0x5a, +// 0xcf, 0x9e, 0x55, 0x05, 0x7e, 0x91, 0x49, 0x00, 0xe4, 0xf7, 0x00, 0x6a, 0x37, 0xdf, 0x68, 0x19, +// 0x06, 0xf1, 0x35, 0xfa, 0xca, 0x15, 0x3b, 0x1a, 0x75, 0xb4, 0x43, 0xb0, 0x87, 0x0d, 0xa7, 0x34, +// 0x45, 0x84, 0xfc, 0x95, 0x5b, 0x33, 0x79, 0x86, 0xfd, 0xb0, 0xd9, 0xd0, 0x1d, 0xdc, 0xb0, 0x9c, +// 0x03, 0x85, 0xd3, 0xcb, 0xbf, 0x9f, 0x20, 0x91, 0x57, 0xc0, 0xb4, 0x77, 0x94, 0x6d, 0xa7, 0x0d, +// 0x8d, 0xde, 0xe4, 0x3d, 0x0d, 0x50, 0xd3, 0x6c, 0xf5, 0xba, 0x66, 0x38, 0xb8, 0xca, 0x85, 0xee, +// 0x83, 0xa0, 0x02, 0x64, 0x48, 0xa9, 0x65, 0xe3, 0x2a, 0x5f, 0x00, 0xb8, 0x65, 0x5f, 0x3f, 0x87, +// 0xde, 0x5c, 0x3f, 0x83, 0x52, 0xce, 0x84, 0xa4, 0xec, 0x8b, 0x8a, 0xb2, 0xfe, 0xa8, 0x88, 0x1d, +// 0x69, 0xe4, 0x27, 0xaa, 0x80, 0xb5, 0x4d, 0x94, 0xc9, 0x3a, 0xb3, 0x81, 0x1b, 0x96, 0x69, 0xd6, +// 0x55, 0x66, 0xbc, 0xd8, 0xfb, 0xc9, 0x39, 0x0e, 0x2c, 0x53, 0x1b, 0xf6, 0xbd, 0x09, 0x6f, 0xfa, +// 0x79, 0xd1, 0xef, 0xb7, 0x9d, 0x80, 0xe5, 0xef, 0xa7, 0x4b, 0xe2, 0xa0, 0xf3, 0x46, 0x5b, 0xfe, +// 0x3d, 0xee, 0x16, 0x35, 0x0b, 0x42, 0xa1, 0x7b, 0xb5, 0x1f, 0xde, 0x5e, 0x38, 0x03, 0xdb, 0xe8, +// 0x05, 0x38, 0x16, 0x32, 0x6d, 0x2e, 0xeb, 0x44, 0x8f, 0x16, 0xee, 0x48, 0xd0, 0xc2, 0x09, 0xce, +// 0x9e, 0xac, 0x92, 0x6f, 0x72, 0xd2, 0xad, 0x90, 0x55, 0x96, 0x3f, 0x14, 0xe9, 0x38, 0xfa, 0xf4, +// 0xb9, 0x7e, 0x87, 0x2c, 0xfc, 0x03, 0xeb, 0xd8, 0x1c, 0x03, 0xf2, 0xd5, 0xf1, 0x26, 0x1c, 0xe9, +// 0x18, 0x92, 0xa0, 0x27, 0x21, 0xeb, 0x45, 0x33, 0x52, 0xc4, 0x92, 0xd0, 0x5d, 0xe6, 0x78, 0xb8, +// 0xf2, 0x3f, 0x91, 0x3c, 0x96, 0xc1, 0x85, 0x53, 0x19, 0x06, 0xd9, 0x19, 0x1d, 0xbe, 0xf3, 0xff, +// 0x48, 0x6f, 0xc1, 0xcc, 0x1c, 0x3b, 0xc0, 0xa3, 0x70, 0x62, 0xf9, 0x3d, 0x30, 0xc8, 0x20, 0x68, +// 0x18, 0x86, 0xbc, 0x77, 0x28, 0x01, 0x06, 0x8b, 0x0b, 0x0b, 0xe5, 0xcd, 0xed, 0xbc, 0x84, 0xb2, +// 0x90, 0x2e, 0x96, 0x36, 0x94, 0xed, 0x7c, 0x82, 0x80, 0x95, 0xf2, 0x33, 0xe5, 0x85, 0xed, 0x7c, +// 0x12, 0x8d, 0xc3, 0x08, 0xfb, 0x5f, 0xbd, 0xb4, 0xa1, 0xac, 0x15, 0xb7, 0xf3, 0x29, 0x1f, 0x68, +// 0xab, 0xbc, 0xbe, 0x58, 0x56, 0xf2, 0x69, 0xf9, 0x31, 0xb2, 0x56, 0x8a, 0x08, 0x7f, 0xbc, 0x55, +// 0x91, 0xe4, 0x5b, 0x15, 0xc9, 0xaf, 0x26, 0xa0, 0x10, 0x1d, 0xd3, 0xa0, 0x67, 0x42, 0x1d, 0x3f, +// 0xdb, 0x47, 0x40, 0x14, 0xea, 0x3d, 0xba, 0x0f, 0x46, 0x9b, 0x78, 0x17, 0x3b, 0x95, 0x3d, 0x16, +// 0x63, 0x31, 0x8f, 0x39, 0xa2, 0x8c, 0x70, 0x28, 0x25, 0xb2, 0x19, 0xda, 0x4b, 0xb8, 0xe2, 0xa8, +// 0xcc, 0x14, 0xd9, 0xfc, 0x77, 0xc3, 0x46, 0x18, 0x74, 0x8b, 0x01, 0xe5, 0xef, 0xe8, 0x4b, 0x96, +// 0x59, 0x48, 0x2b, 0xe5, 0x6d, 0xe5, 0x1d, 0xf9, 0x24, 0x42, 0x30, 0x4a, 0xff, 0x55, 0xb7, 0xd6, +// 0x8b, 0x9b, 0x5b, 0xcb, 0x1b, 0x44, 0x96, 0x13, 0x30, 0x26, 0x64, 0x29, 0x80, 0x69, 0xf9, 0xcf, +// 0xa5, 0xf6, 0xcd, 0xc0, 0xb3, 0xc1, 0xcd, 0xc0, 0xf6, 0x24, 0x80, 0x6f, 0x8f, 0x4c, 0xec, 0x02, +// 0xbe, 0xa5, 0xff, 0x5d, 0x40, 0xdf, 0xfe, 0xdf, 0xd3, 0x87, 0xd9, 0xff, 0xf3, 0xef, 0xfc, 0x5d, +// 0xe8, 0x77, 0xe7, 0xcf, 0xdb, 0xf3, 0x5b, 0xb8, 0x0d, 0x7b, 0x7e, 0xf2, 0xbb, 0x61, 0x34, 0x98, +// 0xd4, 0xf1, 0x0e, 0xbe, 0x48, 0xfe, 0x83, 0x2f, 0xe7, 0x20, 0x7d, 0xcd, 0x64, 0xc6, 0xaa, 0xf3, +// 0x94, 0xbd, 0x62, 0x3a, 0xd8, 0x97, 0x14, 0x62, 0xd8, 0xf2, 0xcb, 0x90, 0xa6, 0xc6, 0xa7, 0xe3, +// 0x75, 0x85, 0x77, 0x03, 0x68, 0x8e, 0xd3, 0xd4, 0x77, 0x5a, 0x1e, 0xe3, 0x99, 0xce, 0xc6, 0xab, +// 0x28, 0xf0, 0x4a, 0x27, 0xb9, 0x15, 0x9b, 0xf4, 0x48, 0x7d, 0x96, 0xcc, 0xc7, 0x50, 0x5e, 0x87, +// 0xd1, 0x20, 0x6d, 0x87, 0xcb, 0x1c, 0x1d, 0x6f, 0x5a, 0x79, 0xa1, 0x18, 0xbf, 0x6c, 0x4f, 0x0b, +// 0xf2, 0x0d, 0x09, 0x32, 0xdb, 0xfb, 0x5c, 0xad, 0xbb, 0x1c, 0x08, 0xf3, 0xee, 0xa0, 0xb8, 0x39, +// 0x0f, 0x96, 0x56, 0x4a, 0xba, 0xc9, 0xaa, 0xb7, 0xbb, 0x13, 0x37, 0xd5, 0xeb, 0xaa, 0x54, 0x64, +// 0xed, 0xb8, 0xb1, 0xba, 0xd8, 0xdb, 0x19, 0xef, 0x49, 0x48, 0xfb, 0xcf, 0x67, 0xb3, 0x82, 0x5c, +// 0xf5, 0x6d, 0x8d, 0x32, 0x2f, 0xe2, 0x3f, 0x0c, 0x2e, 0xf5, 0x7d, 0x18, 0xdc, 0xad, 0x25, 0xe1, +// 0xaf, 0xe5, 0x1a, 0x64, 0x84, 0x52, 0xa0, 0xb7, 0xf9, 0xe7, 0x89, 0x48, 0x35, 0x47, 0xba, 0xd2, +// 0xf6, 0x0d, 0xf2, 0xd3, 0x30, 0xce, 0x8f, 0x0b, 0x79, 0x6b, 0x16, 0xfe, 0x70, 0xf6, 0x18, 0xfb, +// 0xb0, 0x2a, 0x16, 0x2c, 0xf2, 0x9f, 0x49, 0x90, 0x11, 0x13, 0x16, 0x3d, 0x16, 0x38, 0x13, 0x76, +// 0x57, 0x64, 0xf2, 0xd1, 0x77, 0x22, 0x2c, 0xd0, 0xd6, 0x44, 0xff, 0x6d, 0xbd, 0xfd, 0x47, 0x76, +// 0x3b, 0x9f, 0xff, 0x4f, 0x47, 0x9c, 0xff, 0x7f, 0x9f, 0x04, 0x19, 0xd7, 0x37, 0xf6, 0x9b, 0xe6, +// 0x3b, 0x0a, 0x83, 0xdc, 0xfc, 0xb3, 0x3c, 0x1f, 0x2f, 0xb9, 0x19, 0xe7, 0x94, 0x2f, 0xe3, 0x5c, +// 0x80, 0x8c, 0xf8, 0x05, 0x06, 0xbe, 0x6c, 0x74, 0xcb, 0xa7, 0x2f, 0xc0, 0xb0, 0x2f, 0xe3, 0x4a, +// 0x66, 0xde, 0x7a, 0xf9, 0xf9, 0xfc, 0x40, 0x61, 0xe8, 0xc6, 0xcd, 0xd9, 0xe4, 0x3a, 0xbe, 0x4e, +// 0x74, 0x56, 0x29, 0x2f, 0x2c, 0x97, 0x17, 0x9e, 0xcd, 0x4b, 0x85, 0xe1, 0x1b, 0x37, 0x67, 0x87, +// 0x14, 0x4c, 0x13, 0x37, 0xa7, 0x97, 0x21, 0xe7, 0x1f, 0x95, 0xa0, 0x07, 0x41, 0x30, 0xba, 0x78, +// 0x79, 0x73, 0x75, 0x65, 0xa1, 0xb8, 0x5d, 0x56, 0xd9, 0xc9, 0x1a, 0x74, 0x0c, 0x26, 0x56, 0x57, +// 0x96, 0x96, 0xb7, 0xd5, 0x85, 0xd5, 0x95, 0xf2, 0xfa, 0xb6, 0x5a, 0xdc, 0xde, 0x2e, 0x2e, 0x3c, +// 0x9b, 0x4f, 0x9c, 0x7d, 0x3f, 0xc0, 0x58, 0xb1, 0xb4, 0xb0, 0x42, 0xbc, 0x9f, 0xce, 0xdf, 0x08, +// 0x5e, 0x80, 0x14, 0x5d, 0xb5, 0x77, 0xdd, 0xea, 0x2d, 0x74, 0xcf, 0x0b, 0xa2, 0x4b, 0x90, 0xa6, +// 0x0b, 0x7a, 0xd4, 0x7d, 0xef, 0xb7, 0x10, 0x93, 0x28, 0x24, 0x8d, 0xa1, 0xd3, 0xa3, 0xeb, 0x66, +// 0x70, 0xa1, 0x7b, 0xde, 0x10, 0x29, 0x90, 0xf5, 0x56, 0xe4, 0xf1, 0x9b, 0xc3, 0x85, 0x1e, 0x72, +// 0x89, 0x84, 0xa7, 0xb7, 0x2c, 0x88, 0xdf, 0x2c, 0x2d, 0xf4, 0x60, 0xc0, 0xd0, 0x2a, 0x0c, 0x89, +// 0x95, 0x5c, 0xdc, 0xf6, 0x6d, 0x21, 0x36, 0xcf, 0x47, 0x86, 0x80, 0xad, 0xb8, 0xbb, 0xef, 0x45, +// 0x17, 0x62, 0x92, 0x96, 0x68, 0xc5, 0x3d, 0xe3, 0x1b, 0xb3, 0x25, 0x5b, 0x88, 0xcb, 0xdb, 0x11, +// 0xa1, 0x79, 0xa9, 0x8c, 0xf8, 0x1d, 0xf6, 0x42, 0x0f, 0xf9, 0x58, 0x74, 0x19, 0xc0, 0xb7, 0xbe, +// 0xee, 0x61, 0xeb, 0xbc, 0xd0, 0x4b, 0x9e, 0x15, 0x6d, 0x40, 0xc6, 0x5d, 0xee, 0xc4, 0x6e, 0x64, +// 0x17, 0xe2, 0x13, 0x9e, 0xe8, 0x3d, 0x30, 0x12, 0x8c, 0xf3, 0x7b, 0xdb, 0x9e, 0x2e, 0xf4, 0x98, +// 0xc9, 0x24, 0xfc, 0x83, 0x41, 0x7f, 0x6f, 0xdb, 0xd5, 0x85, 0x1e, 0x13, 0x9b, 0xe8, 0x25, 0x18, +// 0x6f, 0x0f, 0xca, 0x7b, 0xdf, 0xbd, 0x2e, 0xf4, 0x91, 0xea, 0x44, 0x0d, 0x40, 0x1d, 0x82, 0xf9, +// 0x3e, 0x36, 0xb3, 0x0b, 0xfd, 0x64, 0x3e, 0x4b, 0xe5, 0xc8, 0xb3, 0x42, 0x0f, 0xc5, 0x9e, 0x15, +// 0xf2, 0x4e, 0xff, 0xb8, 0xe7, 0x83, 0x7e, 0xe9, 0x2c, 0xdc, 0x1b, 0xf1, 0xa6, 0x84, 0x78, 0x8d, +// 0xe0, 0x50, 0xaf, 0x4a, 0x44, 0xde, 0xab, 0x8f, 0x3b, 0x17, 0x18, 0x7f, 0x0c, 0xe8, 0xf0, 0x2f, +// 0x56, 0xc4, 0x9c, 0x5e, 0xea, 0x76, 0x50, 0x4a, 0xfe, 0x90, 0x04, 0xa3, 0xcb, 0xba, 0xed, 0x98, +// 0x4d, 0xbd, 0xa2, 0xd5, 0xa9, 0xa9, 0x3e, 0xdf, 0xeb, 0x41, 0xeb, 0xd0, 0x1e, 0xed, 0xd3, 0x30, +// 0x78, 0x4d, 0xab, 0xb3, 0x13, 0xce, 0x49, 0xba, 0xc6, 0x88, 0x78, 0xff, 0x21, 0x1c, 0x96, 0x70, +// 0x32, 0xf9, 0x67, 0xe8, 0xd1, 0xc9, 0x46, 0x43, 0xb7, 0xd9, 0xef, 0x91, 0x92, 0x35, 0x41, 0x09, +// 0x52, 0x4d, 0xcd, 0xe1, 0x21, 0x79, 0x69, 0x8e, 0x3f, 0x45, 0x72, 0x7f, 0x0f, 0x0f, 0x6b, 0x2c, +// 0xe2, 0x8a, 0x42, 0x69, 0xd1, 0xbb, 0x80, 0xac, 0x31, 0x54, 0xca, 0x87, 0x5d, 0x63, 0x2a, 0xf6, +// 0xc7, 0xe7, 0x8d, 0x5b, 0x33, 0x63, 0x07, 0x5a, 0xa3, 0x3e, 0x2f, 0x0b, 0x3e, 0xb2, 0x42, 0x96, +// 0x2a, 0xa4, 0x89, 0xc8, 0x82, 0x31, 0x02, 0xad, 0xec, 0x69, 0x46, 0x0d, 0xb3, 0x4a, 0x68, 0xce, +// 0xa9, 0xb4, 0xdc, 0x77, 0x25, 0x47, 0xbd, 0x4a, 0x7c, 0xec, 0x64, 0x65, 0xa4, 0xa1, 0xed, 0x2f, +// 0x50, 0x00, 0xa9, 0x71, 0x3e, 0xf3, 0xea, 0x6b, 0x33, 0x03, 0xf4, 0x04, 0xdf, 0xe7, 0x25, 0x00, +// 0x4f, 0x62, 0xe8, 0x5d, 0x90, 0xaf, 0xb8, 0x25, 0x4a, 0x2b, 0x32, 0xd3, 0x0f, 0x44, 0x8d, 0x45, +// 0x48, 0xde, 0x2c, 0xaa, 0xfb, 0xdc, 0xad, 0x19, 0x49, 0x19, 0xab, 0x84, 0x86, 0xe2, 0x9d, 0x30, +// 0xcc, 0x92, 0x41, 0x2a, 0x8d, 0x10, 0x13, 0xb1, 0x11, 0xe2, 0x34, 0xe1, 0xf5, 0xc6, 0xad, 0x19, +// 0xc4, 0xba, 0xe5, 0x23, 0x96, 0x69, 0xdc, 0x08, 0x0c, 0x42, 0x08, 0x7c, 0x7d, 0xfa, 0x4d, 0x09, +// 0x86, 0x17, 0x7d, 0x0f, 0x2c, 0x4e, 0xc1, 0x50, 0xc3, 0x34, 0xf4, 0xab, 0xb8, 0xe9, 0xee, 0x5c, +// 0xb0, 0x22, 0x09, 0xed, 0xd8, 0x2f, 0x5b, 0x38, 0x07, 0xe2, 0x5e, 0xb4, 0x28, 0x13, 0xaa, 0xeb, +// 0x78, 0xc7, 0xd6, 0xc5, 0x68, 0x28, 0xa2, 0x88, 0x2e, 0x41, 0xde, 0xc6, 0x95, 0x56, 0x53, 0x77, +// 0x0e, 0xd4, 0x8a, 0x69, 0x38, 0x5a, 0x85, 0x2d, 0x70, 0xb2, 0xa5, 0x13, 0x6f, 0xdc, 0x9a, 0x39, +// 0xc6, 0xda, 0x1a, 0xc6, 0x90, 0x95, 0x31, 0x01, 0x5a, 0x60, 0x10, 0x52, 0x43, 0x15, 0x3b, 0x9a, +// 0x5e, 0x67, 0x27, 0x34, 0xb2, 0x8a, 0x28, 0xfa, 0xfa, 0xf2, 0x03, 0x19, 0xff, 0x0a, 0xe8, 0x12, +// 0xe4, 0x4d, 0x0b, 0x37, 0x03, 0xb7, 0x52, 0xa4, 0x70, 0xcd, 0x61, 0x0c, 0x59, 0x19, 0x13, 0x20, +// 0x71, 0x63, 0xc5, 0x09, 0x6c, 0x40, 0xb4, 0x76, 0xbc, 0xcb, 0xb1, 0x93, 0x6d, 0xa3, 0x51, 0x34, +// 0x0e, 0x4a, 0x8f, 0x7b, 0xdc, 0xc3, 0x74, 0xf2, 0x67, 0x3f, 0xfd, 0xc8, 0x24, 0x57, 0x0d, 0x6f, +// 0xfd, 0xf4, 0x2c, 0x3e, 0xf0, 0xef, 0x54, 0x50, 0x4c, 0x12, 0x74, 0xbf, 0xa4, 0xe9, 0x75, 0xf1, +// 0x5b, 0x3f, 0x0a, 0x2f, 0xa1, 0x79, 0x18, 0xb4, 0x1d, 0xcd, 0x69, 0xd9, 0xfc, 0xd9, 0x17, 0x39, +// 0x4a, 0xd5, 0x4a, 0xa6, 0x51, 0xdd, 0xa2, 0x98, 0x0a, 0xa7, 0x40, 0x97, 0x60, 0x90, 0xbf, 0xa7, +// 0x93, 0xee, 0x7b, 0x7e, 0xd3, 0x87, 0x93, 0x18, 0x35, 0x91, 0x48, 0x15, 0xd7, 0x71, 0x8d, 0xdd, +// 0xb1, 0xd8, 0xd3, 0x9a, 0x98, 0xdd, 0xbb, 0xca, 0x96, 0x56, 0xfa, 0x9e, 0x84, 0x5c, 0x52, 0x61, +// 0x7e, 0xb2, 0x32, 0xe6, 0x82, 0xb6, 0x28, 0x04, 0x3d, 0x1b, 0x78, 0x09, 0x94, 0xef, 0x3f, 0xdf, +// 0x13, 0xd5, 0x7d, 0x9f, 0x4e, 0x8b, 0xcb, 0x8a, 0xfe, 0x77, 0x44, 0x2f, 0x41, 0xbe, 0x65, 0xec, +// 0x98, 0x06, 0xfd, 0x41, 0x0e, 0xbe, 0x1a, 0xca, 0x90, 0xc5, 0x93, 0x5f, 0x39, 0xc2, 0x18, 0xb2, +// 0x32, 0xe6, 0x82, 0xf8, 0x8e, 0x59, 0x15, 0x46, 0x3d, 0x2c, 0x3a, 0x51, 0xb3, 0xb1, 0x13, 0xf5, +// 0x6e, 0x3e, 0x51, 0x8f, 0x84, 0x6b, 0xf1, 0xe6, 0xea, 0x88, 0x0b, 0x24, 0x64, 0x68, 0x19, 0xc0, +// 0x33, 0x0f, 0xee, 0xae, 0x75, 0xac, 0x8d, 0x11, 0x1b, 0x57, 0x1e, 0x2d, 0xfa, 0x2e, 0x98, 0x68, +// 0xe8, 0x86, 0x6a, 0xe3, 0xfa, 0xae, 0xca, 0x05, 0x4c, 0x58, 0xd2, 0xfd, 0x80, 0xd2, 0x6a, 0x7f, +// 0xfa, 0xf0, 0xc6, 0xad, 0x99, 0x02, 0x37, 0xa1, 0xed, 0x2c, 0x65, 0x65, 0xbc, 0xa1, 0x1b, 0x5b, +// 0xb8, 0xbe, 0xbb, 0xe8, 0xc2, 0xd0, 0x5b, 0xe0, 0x84, 0xd7, 0x5b, 0xd3, 0x50, 0xf7, 0xcc, 0x7a, +// 0x55, 0x6d, 0xe2, 0x5d, 0xb5, 0x42, 0xdf, 0xd7, 0xca, 0xd1, 0xd5, 0xeb, 0x31, 0x17, 0x65, 0xc3, +// 0x58, 0x36, 0xeb, 0x55, 0x05, 0xef, 0x2e, 0x90, 0xcf, 0xe8, 0x1e, 0xf0, 0xc4, 0xa2, 0xea, 0x55, +// 0x7b, 0x6a, 0x64, 0x36, 0x79, 0x2a, 0xa5, 0xe4, 0x5c, 0xe0, 0x4a, 0xd5, 0x9e, 0xcf, 0x7d, 0xf0, +// 0xb5, 0x99, 0x01, 0x6e, 0x11, 0x06, 0xe4, 0xf3, 0xf4, 0xae, 0x3e, 0x9f, 0xc9, 0x98, 0x66, 0xfe, +// 0x35, 0x51, 0xe0, 0x27, 0xbd, 0x3d, 0x00, 0xb3, 0x24, 0xaf, 0xfc, 0xfe, 0xac, 0x24, 0xff, 0xb4, +// 0x04, 0x83, 0x8b, 0x57, 0x36, 0x35, 0xbd, 0x89, 0x56, 0x60, 0xdc, 0x53, 0xce, 0xa0, 0x1d, 0x39, +// 0xf9, 0xc6, 0xad, 0x99, 0xa9, 0xb0, 0xfe, 0xba, 0x86, 0xc4, 0x9b, 0x23, 0xc2, 0x92, 0xac, 0x44, +// 0x5d, 0x94, 0x0b, 0xb0, 0x6a, 0x43, 0x91, 0xdb, 0xaf, 0xd1, 0x85, 0xba, 0x59, 0x86, 0x21, 0xd6, +// 0x5a, 0x1b, 0xcd, 0x43, 0xda, 0x22, 0xff, 0xf0, 0x3c, 0xfa, 0x74, 0xe4, 0xfc, 0xa0, 0xf8, 0xee, +// 0xc5, 0x69, 0x42, 0x22, 0x7f, 0x38, 0x01, 0xb0, 0x78, 0xe5, 0xca, 0x76, 0x53, 0xb7, 0xea, 0xd8, +// 0xb9, 0x9d, 0x3d, 0xdf, 0x86, 0x23, 0xbe, 0x5b, 0x59, 0xcd, 0x4a, 0xa8, 0xf7, 0xb3, 0x6f, 0xdc, +// 0x9a, 0x39, 0x19, 0xee, 0xbd, 0x0f, 0x4d, 0x56, 0x26, 0xbc, 0xfb, 0x59, 0xcd, 0x4a, 0x47, 0xae, +// 0x55, 0xdb, 0x71, 0xb9, 0x26, 0xa3, 0xb9, 0xfa, 0xd0, 0xfc, 0x5c, 0x17, 0x6d, 0xa7, 0xb3, 0x68, +// 0xb7, 0x60, 0xd8, 0x13, 0x89, 0x8d, 0x16, 0x21, 0xe3, 0xf0, 0xff, 0xb9, 0x84, 0xe5, 0x68, 0x09, +// 0x0b, 0x32, 0x71, 0x45, 0x44, 0x50, 0xca, 0x7f, 0x2a, 0x01, 0xf8, 0xa6, 0xc5, 0x5f, 0x48, 0x15, +// 0x23, 0xde, 0x82, 0xdb, 0xf6, 0xe4, 0xa1, 0xa2, 0x41, 0x4e, 0x1d, 0x92, 0xe7, 0xf7, 0x27, 0x60, +// 0xe2, 0xb2, 0x98, 0xb0, 0x7f, 0xe1, 0x65, 0xb0, 0x09, 0x43, 0xd8, 0x70, 0x9a, 0x3a, 0x16, 0x1b, +// 0x69, 0x8f, 0x46, 0x8d, 0x76, 0x87, 0x3e, 0xd1, 0x1f, 0xad, 0x14, 0xb7, 0x72, 0x38, 0x9b, 0x90, +// 0x34, 0xbe, 0x96, 0x84, 0xa9, 0x28, 0x4a, 0xb4, 0x00, 0x63, 0x95, 0x26, 0x66, 0x0f, 0xbd, 0xf9, +// 0x13, 0xcb, 0xa5, 0x82, 0x17, 0xbc, 0x86, 0x10, 0x64, 0x65, 0x54, 0x40, 0xb8, 0x83, 0xaa, 0x01, +// 0x89, 0x2c, 0x89, 0xda, 0xd1, 0xf7, 0xe2, 0x7a, 0x0b, 0x25, 0x65, 0xee, 0xa1, 0x44, 0x25, 0x41, +// 0x06, 0xcc, 0x45, 0x8d, 0x7a, 0x50, 0xea, 0xa3, 0xde, 0x0b, 0x63, 0xe2, 0x88, 0xec, 0x8e, 0x56, +// 0xd7, 0x8c, 0xca, 0x61, 0x02, 0x73, 0xe6, 0x55, 0x78, 0xb5, 0x21, 0x76, 0xb2, 0x22, 0xce, 0xe0, +// 0x96, 0x18, 0x00, 0x2d, 0xc3, 0x90, 0xa8, 0x2a, 0x75, 0xa8, 0x80, 0x46, 0x90, 0xa3, 0xbb, 0x21, +// 0xe7, 0x77, 0x2d, 0x34, 0x3e, 0x4a, 0x29, 0xc3, 0x3e, 0xcf, 0x12, 0xe7, 0xbb, 0x06, 0xbb, 0xfa, +// 0x2e, 0x5f, 0x90, 0xfa, 0x87, 0x49, 0x18, 0x57, 0x70, 0xf5, 0xff, 0x8f, 0x75, 0x7f, 0x63, 0xbd, +// 0x06, 0xc0, 0xec, 0x09, 0xb1, 0xe0, 0x87, 0x18, 0x6e, 0x62, 0x91, 0xb2, 0x8c, 0xc3, 0xa2, 0xed, +// 0x7c, 0x33, 0x07, 0xfc, 0x56, 0x02, 0x72, 0xfe, 0x01, 0xff, 0x36, 0xf5, 0xab, 0x68, 0xc5, 0xb3, +// 0xa5, 0xec, 0xd8, 0x77, 0xe4, 0x8b, 0x95, 0x6d, 0xd3, 0xa3, 0xbb, 0x11, 0xfd, 0x5f, 0x09, 0x18, +// 0xe4, 0x1b, 0x9e, 0x95, 0xb6, 0x70, 0x5c, 0x8a, 0xbb, 0x4a, 0xd8, 0x3d, 0x1a, 0x7f, 0xb5, 0x43, +// 0x34, 0xfe, 0x76, 0x18, 0x6d, 0x68, 0xfb, 0x6a, 0xe0, 0x20, 0x99, 0x74, 0x6a, 0xa4, 0x74, 0xdc, +// 0xe3, 0x12, 0xfc, 0xce, 0x52, 0x0a, 0x57, 0xfc, 0xaf, 0x3e, 0x0d, 0x13, 0x0c, 0xcf, 0xb5, 0x10, +// 0xf2, 0xa3, 0xde, 0xda, 0xdd, 0xf7, 0x51, 0x56, 0xa0, 0xa1, 0xed, 0x97, 0x59, 0x01, 0xad, 0x02, +// 0xda, 0x73, 0xd3, 0x47, 0xaa, 0x27, 0x4e, 0x42, 0x7f, 0xd7, 0x1b, 0xb7, 0x66, 0x8e, 0x33, 0xfa, +// 0x76, 0x1c, 0x59, 0x19, 0xf7, 0x80, 0x82, 0xdb, 0x13, 0x00, 0xa4, 0x5f, 0x2a, 0x7b, 0xf4, 0x96, +// 0xad, 0x09, 0x8f, 0xbc, 0x71, 0x6b, 0x66, 0x9c, 0x71, 0xf1, 0xbe, 0xc9, 0x4a, 0x96, 0x14, 0x16, +// 0xc9, 0xff, 0x3e, 0xcd, 0xfe, 0x84, 0x04, 0xc8, 0x73, 0x5a, 0xee, 0x91, 0xec, 0x65, 0x7a, 0xc6, +// 0x56, 0x2c, 0x2d, 0xa4, 0xee, 0xab, 0x15, 0x8f, 0x5e, 0xac, 0x56, 0x7c, 0x33, 0xe5, 0x82, 0x67, +// 0xe0, 0x13, 0x71, 0x2f, 0xc0, 0x72, 0x15, 0xe1, 0xf8, 0x6e, 0x2b, 0x07, 0xe4, 0xdf, 0x92, 0xe0, +// 0x78, 0x9b, 0x46, 0xb9, 0x8d, 0x7d, 0x0f, 0xa0, 0xa6, 0xef, 0x23, 0xff, 0xe5, 0x69, 0x89, 0xdf, +// 0x54, 0xea, 0x53, 0x41, 0xc7, 0x9b, 0x6d, 0x86, 0xfd, 0xb6, 0xf9, 0x28, 0xfe, 0xc4, 0xf0, 0x3f, +// 0x95, 0x60, 0xd2, 0x5f, 0xbd, 0xdb, 0x91, 0x75, 0xc8, 0xf9, 0x6b, 0xe7, 0x5d, 0xb8, 0xb7, 0x97, +// 0x2e, 0xf0, 0xd6, 0x07, 0xe8, 0xd1, 0x73, 0xde, 0x74, 0x65, 0x09, 0xc6, 0xc7, 0x7a, 0x96, 0x86, +// 0xbb, 0xb9, 0x10, 0x9a, 0xb6, 0x29, 0x3a, 0x1e, 0x7f, 0x2e, 0x41, 0x6a, 0xd3, 0x34, 0xeb, 0xc8, +// 0x84, 0x71, 0xc3, 0x74, 0x54, 0xa2, 0x59, 0xb8, 0xea, 0x7f, 0xe9, 0x37, 0x5b, 0x5a, 0xe8, 0x4f, +// 0x48, 0x5f, 0xb9, 0x35, 0xd3, 0xce, 0x4a, 0x19, 0x33, 0x4c, 0xa7, 0x44, 0x21, 0xfc, 0xb1, 0xdf, +// 0xef, 0x82, 0x91, 0x60, 0x65, 0xcc, 0x4a, 0x3e, 0xdf, 0x77, 0x65, 0x41, 0x36, 0x6f, 0xdc, 0x9a, +// 0x99, 0xf4, 0x66, 0x8c, 0x0b, 0x96, 0x95, 0xdc, 0x8e, 0xaf, 0x76, 0xf6, 0x20, 0xde, 0xd7, 0xc8, +// 0x18, 0x6e, 0x43, 0xfe, 0x4a, 0xf8, 0x2c, 0xd8, 0xdb, 0x61, 0xe8, 0x70, 0xc7, 0xca, 0x04, 0xd9, +// 0xe9, 0x5f, 0x94, 0x00, 0xbc, 0xa4, 0x0f, 0x7a, 0x18, 0x8e, 0x95, 0x36, 0xd6, 0x17, 0xd5, 0xad, +// 0xed, 0xe2, 0xf6, 0xe5, 0xad, 0xe0, 0x5b, 0xbb, 0xe2, 0x99, 0x02, 0xdb, 0xc2, 0x15, 0x7d, 0x57, +// 0xc7, 0x55, 0x74, 0x3f, 0x4c, 0x06, 0xb1, 0x49, 0xa9, 0xbc, 0x98, 0x97, 0x0a, 0xb9, 0x1b, 0x37, +// 0x67, 0x33, 0x2c, 0x46, 0xc5, 0x55, 0x74, 0x0a, 0x8e, 0xb4, 0xe3, 0xad, 0xac, 0x2f, 0xe5, 0x13, +// 0x85, 0x91, 0x1b, 0x37, 0x67, 0xb3, 0x6e, 0x30, 0x8b, 0x64, 0x40, 0x7e, 0x4c, 0xce, 0x2f, 0x59, +// 0x80, 0x1b, 0x37, 0x67, 0x07, 0xd9, 0xb0, 0x14, 0x52, 0x1f, 0xfc, 0xc4, 0xf4, 0xc0, 0xe9, 0x9f, +// 0x94, 0x60, 0x74, 0xc5, 0xd8, 0x6d, 0x6a, 0x15, 0xf7, 0xbd, 0xe0, 0x27, 0xe0, 0xc4, 0xca, 0xfa, +// 0x25, 0xa5, 0xb8, 0x10, 0xf1, 0x58, 0x70, 0x61, 0xe2, 0xc6, 0xcd, 0xd9, 0x31, 0x8f, 0xa8, 0xdc, +// 0xb0, 0x9c, 0x03, 0x74, 0xa6, 0x9d, 0x6a, 0x71, 0xe3, 0x72, 0x69, 0xb5, 0xac, 0x6e, 0xad, 0x2c, +// 0xad, 0xe7, 0xa5, 0xc2, 0xe8, 0x8d, 0x9b, 0xb3, 0xb0, 0x48, 0x7f, 0x1b, 0x77, 0x4b, 0xaf, 0x19, +// 0xe8, 0x34, 0x4c, 0xb5, 0x13, 0x3c, 0xcf, 0x7e, 0x62, 0x3f, 0xc1, 0x7a, 0xbe, 0x68, 0x5e, 0x37, +// 0x88, 0x27, 0x60, 0x6d, 0xbd, 0xed, 0xaf, 0x07, 0xff, 0xf1, 0x50, 0xe4, 0xce, 0x49, 0x0d, 0x1b, +// 0xd8, 0xd6, 0xed, 0x43, 0xed, 0x9c, 0xf4, 0xb4, 0x1b, 0x23, 0xff, 0x4e, 0x1a, 0x72, 0x4b, 0xac, +// 0x16, 0x7a, 0xd7, 0x0d, 0xbd, 0x05, 0x06, 0x03, 0x27, 0xac, 0x23, 0xb3, 0x07, 0x81, 0x17, 0x07, +// 0x38, 0x0d, 0xb2, 0xf9, 0xad, 0x31, 0x76, 0x2e, 0xc1, 0x3b, 0xfd, 0x91, 0xeb, 0x2b, 0x2d, 0xc8, +// 0xc2, 0x42, 0x9e, 0x81, 0x0b, 0xf3, 0x93, 0xd9, 0xcd, 0xb2, 0x6d, 0x02, 0x61, 0x2f, 0x0a, 0x7e, +// 0x40, 0x82, 0x23, 0x14, 0xcb, 0x0b, 0x45, 0x28, 0xa6, 0x58, 0xb0, 0x9d, 0x8e, 0xea, 0xc2, 0xaa, +// 0x66, 0x7b, 0xef, 0x83, 0xb1, 0x37, 0x00, 0xef, 0xe5, 0xa1, 0xc0, 0x49, 0x5f, 0xe5, 0x61, 0xb6, +// 0xb2, 0x42, 0x8f, 0xc8, 0x07, 0x29, 0x6d, 0xb4, 0xd4, 0xe1, 0x42, 0x62, 0xcf, 0x3b, 0x32, 0xfe, +// 0x93, 0xe5, 0xcf, 0xc0, 0xb0, 0x67, 0x4d, 0xed, 0xa9, 0x74, 0x4c, 0x8e, 0x21, 0x6c, 0xc3, 0xfd, +// 0xc4, 0xe8, 0xfb, 0x24, 0x38, 0xe2, 0xc5, 0x33, 0x7e, 0xb6, 0x83, 0x94, 0xed, 0x43, 0x7d, 0x2c, +// 0x66, 0xc3, 0xc2, 0xe9, 0xc8, 0x57, 0x56, 0x26, 0x5b, 0xed, 0xa4, 0x64, 0x19, 0x3d, 0xe2, 0xf7, +// 0x2d, 0xe2, 0x04, 0x6f, 0x3f, 0xce, 0x29, 0xc8, 0x00, 0x15, 0x20, 0x83, 0xf7, 0x2d, 0xb3, 0xe9, +// 0xe0, 0x2a, 0xcd, 0xdb, 0x66, 0x14, 0xb7, 0x2c, 0xaf, 0x03, 0x6a, 0x1f, 0xdc, 0xf0, 0x81, 0xa8, +// 0x6c, 0x87, 0x03, 0x51, 0xfe, 0xa3, 0x4a, 0xf3, 0x99, 0x0f, 0xf2, 0x00, 0xe2, 0xb6, 0xcf, 0xf9, +// 0x2f, 0x24, 0xe0, 0xb4, 0x7f, 0x8b, 0x91, 0x5e, 0x90, 0x72, 0xa7, 0xa8, 0xa5, 0xd5, 0x74, 0xc3, +// 0xff, 0x72, 0xf6, 0x71, 0x7f, 0xc8, 0x43, 0x71, 0x85, 0x9c, 0xe4, 0x0f, 0x4a, 0x30, 0xbc, 0xa9, +// 0xd5, 0xb0, 0x78, 0xb9, 0xa0, 0xfd, 0x30, 0xdb, 0x51, 0x18, 0x34, 0x77, 0x77, 0xc5, 0x3b, 0x48, +// 0x29, 0x85, 0x97, 0x48, 0x9f, 0xeb, 0x7a, 0x43, 0x77, 0xf8, 0x85, 0x11, 0x56, 0x40, 0x33, 0x30, +// 0x4c, 0x17, 0x37, 0x6c, 0xca, 0xf1, 0x5b, 0xa7, 0x40, 0x41, 0x74, 0xca, 0x11, 0x21, 0x36, 0xf1, +// 0x35, 0xdc, 0xb4, 0xd9, 0x2f, 0x92, 0x67, 0x14, 0x51, 0x94, 0x9f, 0x86, 0x1c, 0x6b, 0x09, 0x0f, +// 0x47, 0x8e, 0x43, 0x86, 0xbe, 0xce, 0xe7, 0xb5, 0x67, 0x88, 0x94, 0xf9, 0xd1, 0x30, 0xc6, 0x9f, +// 0x35, 0x89, 0x15, 0x4a, 0xa5, 0x48, 0x29, 0x9f, 0x8a, 0xb7, 0x1a, 0x4c, 0x86, 0xae, 0x84, 0x7f, +// 0x2d, 0x0d, 0x47, 0xf8, 0x06, 0xb0, 0x66, 0xe9, 0x67, 0xf6, 0x1c, 0x47, 0xbc, 0xb7, 0x0d, 0x7c, +// 0x1d, 0xa0, 0x59, 0xba, 0x7c, 0x00, 0xa9, 0x65, 0xc7, 0xb1, 0xd0, 0x69, 0x48, 0x37, 0x5b, 0x75, +// 0xd7, 0xf1, 0xba, 0xbb, 0x3a, 0x9a, 0xa5, 0xcf, 0x11, 0x04, 0xa5, 0x55, 0xc7, 0x0a, 0x43, 0x41, +// 0x65, 0x98, 0xd9, 0x6d, 0xd5, 0xeb, 0x07, 0x6a, 0x15, 0x57, 0xcc, 0x2a, 0x56, 0x9b, 0xd8, 0xc6, +// 0xcd, 0x6b, 0xb8, 0xaa, 0xe2, 0x7d, 0x4b, 0x33, 0xdc, 0x0b, 0x3a, 0x19, 0xe5, 0x24, 0x45, 0x5b, +// 0xa4, 0x58, 0x0a, 0x47, 0x2a, 0x0b, 0x1c, 0xf9, 0xf7, 0x12, 0x90, 0x11, 0xac, 0xe9, 0x83, 0xc3, +// 0xb8, 0x8e, 0x2b, 0x8e, 0x7b, 0xab, 0xc8, 0x2d, 0x23, 0x04, 0xc9, 0x1a, 0x1f, 0xbc, 0xec, 0xf2, +// 0x80, 0x42, 0x0a, 0x04, 0xe6, 0x3e, 0x03, 0x4d, 0x60, 0x56, 0x8b, 0x8c, 0x67, 0xca, 0x32, 0xc5, +// 0xc2, 0x78, 0x79, 0x40, 0xa1, 0x25, 0x34, 0x05, 0x83, 0x64, 0xd2, 0x38, 0x6c, 0xb4, 0x08, 0x9c, +// 0x97, 0xd1, 0x51, 0x48, 0x5b, 0x9a, 0x53, 0x61, 0x2f, 0x34, 0x92, 0x0f, 0xac, 0x88, 0x9e, 0x84, +// 0x41, 0xf6, 0x4b, 0x3e, 0xfc, 0xc2, 0xc8, 0x5d, 0x7e, 0x61, 0xb0, 0x9f, 0x4c, 0x26, 0xed, 0xde, +// 0xd4, 0x1c, 0x07, 0x37, 0x0d, 0x7a, 0x2d, 0x8d, 0x02, 0x11, 0x82, 0xd4, 0x8e, 0x59, 0x65, 0xd7, +// 0x02, 0xb3, 0x0a, 0xfd, 0x9f, 0x9d, 0x0a, 0x67, 0xfa, 0xa0, 0xd2, 0x8f, 0x39, 0x76, 0xed, 0x40, +// 0x00, 0x4b, 0x04, 0xa9, 0x0c, 0x13, 0x5a, 0xb5, 0xaa, 0x13, 0x85, 0x27, 0xeb, 0x7f, 0x9d, 0x1a, +// 0x0f, 0x7b, 0x6a, 0xb8, 0xcb, 0x58, 0x20, 0x8f, 0xa0, 0xc4, 0xf1, 0x4b, 0x59, 0x18, 0xb2, 0x58, +// 0xa3, 0xe4, 0x8b, 0x30, 0xde, 0xd6, 0x52, 0xd2, 0xbe, 0xab, 0x3a, 0x3f, 0xc1, 0x9a, 0x55, 0xe8, +// 0xff, 0x9d, 0xae, 0x62, 0x97, 0xde, 0x17, 0xfd, 0x84, 0xfa, 0xa8, 0xef, 0x09, 0x75, 0xcd, 0xd2, +// 0x4b, 0x59, 0xca, 0x9f, 0x3f, 0x9c, 0x5e, 0x6c, 0x7f, 0x38, 0xbd, 0x86, 0x0d, 0xe1, 0x98, 0xc9, +// 0x27, 0xcd, 0xd2, 0x6d, 0xaa, 0x8e, 0xde, 0x8f, 0xae, 0xdb, 0x17, 0x7d, 0xff, 0xd3, 0x77, 0xd4, +// 0x53, 0x4b, 0xc5, 0xcd, 0x15, 0x57, 0x8f, 0x7f, 0x35, 0x01, 0x27, 0x7d, 0x7a, 0xec, 0x43, 0x6e, +// 0x57, 0xe7, 0x42, 0x67, 0x8d, 0xef, 0xe1, 0xf7, 0x6c, 0x9e, 0x85, 0x14, 0xc1, 0x47, 0xd3, 0x1d, +// 0x7e, 0x75, 0xc6, 0xd9, 0x33, 0xdd, 0xdf, 0x88, 0xf9, 0xd9, 0xcf, 0xfe, 0x63, 0x39, 0xb8, 0xef, +// 0x19, 0x18, 0x15, 0xca, 0xa4, 0xf4, 0x7d, 0xbd, 0xcb, 0x2f, 0xef, 0xfd, 0xde, 0xbc, 0x7d, 0xfb, +// 0xc4, 0x18, 0x96, 0xe1, 0x97, 0xce, 0x45, 0xfe, 0xde, 0x09, 0x33, 0xa6, 0xdd, 0xe3, 0xab, 0x3e, +// 0x2c, 0x75, 0xd4, 0x73, 0xd2, 0xdd, 0x46, 0xb0, 0xc7, 0x48, 0x6d, 0x1f, 0x8e, 0xd2, 0xa3, 0x69, +// 0x5e, 0x0e, 0x41, 0x98, 0xfc, 0xa3, 0xee, 0x7e, 0xb0, 0xc4, 0xaf, 0x03, 0x89, 0xbd, 0x5e, 0xf0, +// 0xda, 0xc7, 0x57, 0xcf, 0xf7, 0xcf, 0x45, 0xba, 0x92, 0x39, 0x9f, 0x1b, 0x51, 0x7c, 0x94, 0xf2, +// 0x4f, 0x49, 0x70, 0xac, 0xad, 0x6a, 0x6e, 0xe3, 0x97, 0x3a, 0xbc, 0x7c, 0x7d, 0xa8, 0xa0, 0x67, +// 0xa9, 0x43, 0x63, 0x1f, 0x88, 0x6d, 0x2c, 0x6b, 0x45, 0xa0, 0xb5, 0x6f, 0x83, 0x23, 0xc1, 0xc6, +// 0x0a, 0x31, 0xdd, 0x07, 0xa3, 0xc1, 0x84, 0x3f, 0x17, 0xd7, 0x48, 0x20, 0xe5, 0x2f, 0xab, 0x61, +// 0x39, 0xbb, 0x7d, 0x2d, 0xb7, 0x9f, 0x56, 0xee, 0xb9, 0xab, 0x1e, 0xa5, 0xfc, 0x61, 0x09, 0x66, +// 0x83, 0x35, 0xf8, 0xe2, 0xa4, 0xfe, 0x1a, 0x7b, 0xdb, 0x86, 0xf8, 0xcb, 0x12, 0xdc, 0xdd, 0xa5, +// 0x4d, 0x5c, 0x00, 0x2f, 0xc3, 0xa4, 0x2f, 0x4d, 0x22, 0x4c, 0xb8, 0x18, 0xf6, 0xd3, 0xf1, 0x11, +// 0xaa, 0x9b, 0x15, 0x38, 0x41, 0x84, 0xf2, 0xa9, 0x2f, 0xcc, 0x4c, 0xb4, 0x7f, 0xb3, 0x95, 0x89, +// 0xf6, 0xd4, 0xc6, 0x6d, 0xd4, 0x8f, 0x8f, 0x4a, 0xf0, 0x60, 0xb0, 0xab, 0x1d, 0x42, 0xdd, 0x6f, +// 0xd5, 0x38, 0xfc, 0x7b, 0x09, 0x4e, 0xf7, 0xd2, 0x38, 0x3e, 0x20, 0x3b, 0x30, 0xe1, 0x05, 0xe1, +// 0xe1, 0xf1, 0xe8, 0x2b, 0xb4, 0x67, 0x5a, 0x8a, 0x5c, 0x6e, 0x77, 0x40, 0xf0, 0x16, 0x9f, 0x58, +// 0xfe, 0x21, 0x77, 0x85, 0x1c, 0x4c, 0x75, 0x0b, 0x21, 0x07, 0x92, 0xdd, 0x1d, 0xc6, 0x22, 0xd1, +// 0x61, 0x2c, 0xbc, 0xa8, 0x5d, 0xbe, 0xc6, 0xed, 0x56, 0x87, 0x04, 0xe5, 0x3b, 0x61, 0xa2, 0x83, +// 0x2a, 0xf3, 0x59, 0xdd, 0x87, 0x26, 0x2b, 0xa8, 0x5d, 0x59, 0xe5, 0x03, 0x98, 0xa1, 0xf5, 0x76, +// 0x10, 0xf4, 0x9d, 0xee, 0x72, 0x83, 0xdb, 0x96, 0x8e, 0x55, 0xf3, 0xbe, 0xaf, 0xc0, 0x20, 0x1b, +// 0x67, 0xde, 0xdd, 0x43, 0x28, 0x0a, 0x67, 0x20, 0xff, 0x88, 0xb0, 0x65, 0x8b, 0xa2, 0xd9, 0x9d, +// 0xe7, 0x50, 0x2f, 0x7d, 0xbd, 0x4d, 0x73, 0xc8, 0x27, 0x8c, 0xcf, 0x0b, 0xab, 0xd6, 0xb9, 0x75, +// 0x5c, 0x1c, 0x95, 0xdb, 0x66, 0xd5, 0xf8, 0x4b, 0x35, 0x77, 0xd4, 0x7c, 0xfd, 0xb8, 0x30, 0x5f, +// 0x6e, 0x9f, 0x62, 0xcc, 0xd7, 0xb7, 0x46, 0xf4, 0xae, 0x21, 0x8b, 0x69, 0xe6, 0x5f, 0x46, 0x43, +// 0xf6, 0x35, 0x09, 0x8e, 0xd3, 0xbe, 0xf9, 0x73, 0x14, 0xfd, 0x8a, 0xfc, 0x61, 0x40, 0x76, 0xb3, +// 0xa2, 0x76, 0x9c, 0xdd, 0x79, 0xbb, 0x59, 0xb9, 0x12, 0xf0, 0x2f, 0x0f, 0x03, 0xaa, 0x06, 0x32, +// 0x51, 0x14, 0x9b, 0x9d, 0xb3, 0xcc, 0x57, 0x7d, 0x89, 0x8e, 0x0e, 0xc3, 0x99, 0xba, 0x0d, 0xc3, +// 0xf9, 0x39, 0x09, 0x0a, 0x9d, 0xba, 0xcc, 0x87, 0x4f, 0x87, 0xa3, 0x81, 0x1d, 0x94, 0xf0, 0x08, +// 0x3e, 0xdc, 0x4b, 0x96, 0x27, 0x34, 0x8d, 0x8e, 0x34, 0xf1, 0x9d, 0x8e, 0x03, 0x66, 0x82, 0x1a, +// 0xda, 0x1e, 0x59, 0x7f, 0xcb, 0xa6, 0xcf, 0xa7, 0xdb, 0xec, 0xea, 0x5f, 0x8a, 0xd8, 0x7b, 0x1f, +// 0xa6, 0x23, 0x5a, 0x7d, 0xa7, 0xfd, 0xde, 0x5e, 0xe4, 0x60, 0xde, 0xee, 0xf0, 0xfd, 0x09, 0x3e, +// 0x13, 0x82, 0x67, 0xf8, 0x7d, 0x6b, 0xb1, 0x8e, 0xcf, 0x80, 0xbd, 0x03, 0x4e, 0x74, 0xa4, 0xe2, +// 0x6d, 0x9b, 0x87, 0xd4, 0x9e, 0x6e, 0x8b, 0x07, 0xbe, 0xee, 0x8f, 0x6a, 0x56, 0x88, 0x9a, 0xd2, +// 0xc8, 0x08, 0xf2, 0x94, 0xf5, 0xa6, 0x69, 0xd6, 0x79, 0x33, 0xe4, 0x67, 0x61, 0xdc, 0x07, 0xe3, +// 0x95, 0x9c, 0x87, 0x94, 0x65, 0xf2, 0x5f, 0xbb, 0x1a, 0x3e, 0x7b, 0x32, 0x32, 0xb1, 0x6f, 0x9a, +// 0x75, 0xde, 0x6d, 0x8a, 0x2f, 0x4f, 0x02, 0x62, 0xcc, 0xd8, 0x4d, 0x63, 0x5e, 0xc5, 0x16, 0x4c, +// 0x04, 0xa0, 0xbc, 0x92, 0x37, 0xb5, 0x7f, 0x70, 0xf6, 0x2b, 0x47, 0xc4, 0xfd, 0xad, 0x1f, 0x96, +// 0x02, 0x3f, 0x47, 0x39, 0x17, 0xc5, 0xa6, 0xf3, 0x9a, 0xb8, 0x70, 0xa6, 0x67, 0x7c, 0x1e, 0xb3, +// 0x9d, 0x7e, 0xdf, 0xbf, 0xf9, 0xd2, 0x47, 0x12, 0xf7, 0x22, 0xf9, 0x4c, 0xc4, 0x6a, 0xdc, 0x37, +// 0x5f, 0x3e, 0x19, 0xf8, 0x29, 0xa5, 0x47, 0x7a, 0xab, 0x4a, 0xb4, 0x6c, 0xae, 0x57, 0x74, 0xde, +// 0xb0, 0x8b, 0xb4, 0x61, 0xe7, 0xd0, 0xe3, 0xf1, 0x0d, 0x3b, 0xf3, 0x9d, 0xc1, 0x49, 0xf3, 0xdd, +// 0xe8, 0x77, 0x24, 0x98, 0xec, 0xb4, 0xa4, 0x43, 0x4f, 0xf5, 0xd6, 0x8a, 0xf6, 0x90, 0xa2, 0x70, +// 0xe1, 0x10, 0x94, 0xbc, 0x2b, 0x4b, 0xb4, 0x2b, 0x45, 0xf4, 0xf4, 0x21, 0xba, 0x72, 0xc6, 0x9f, +// 0xfa, 0xff, 0xdf, 0x12, 0xdc, 0xd5, 0x75, 0x85, 0x84, 0x8a, 0xbd, 0xb5, 0xb2, 0x4b, 0xec, 0x54, +// 0x28, 0xbd, 0x19, 0x16, 0xbc, 0xc7, 0xcf, 0xd1, 0x1e, 0x3f, 0x8b, 0x56, 0x0e, 0xd3, 0xe3, 0x8e, +// 0xfb, 0x2b, 0xe8, 0xd7, 0x83, 0x07, 0x47, 0xbb, 0xab, 0x53, 0xdb, 0xc2, 0x23, 0x66, 0x62, 0xb4, +// 0x07, 0xb5, 0xf2, 0x0b, 0xb4, 0x0b, 0x0a, 0xda, 0x7c, 0x93, 0x83, 0x76, 0xe6, 0x3b, 0x83, 0x86, +// 0xff, 0xbb, 0xd1, 0x9f, 0x48, 0x9d, 0xcf, 0x81, 0x3e, 0xd9, 0xb5, 0x89, 0xd1, 0x8b, 0xaa, 0xc2, +// 0x53, 0xfd, 0x13, 0xf2, 0x4e, 0x36, 0x68, 0x27, 0x6b, 0x08, 0xdf, 0xee, 0x4e, 0x76, 0x1c, 0x44, +// 0xf4, 0x9b, 0x12, 0x4c, 0x76, 0x5a, 0x93, 0xc4, 0x4c, 0xcb, 0x2e, 0x8b, 0xac, 0x98, 0x69, 0xd9, +// 0x6d, 0x01, 0x24, 0xbf, 0x85, 0x76, 0xfe, 0x3c, 0x7a, 0x22, 0xaa, 0xf3, 0x5d, 0x47, 0x91, 0xcc, +// 0xc5, 0xae, 0x41, 0x7e, 0xcc, 0x5c, 0xec, 0x65, 0x1d, 0x13, 0x33, 0x17, 0x7b, 0x5a, 0x63, 0xc4, +// 0xcf, 0x45, 0xb7, 0x67, 0x3d, 0x0e, 0xa3, 0x8d, 0x7e, 0x95, 0x3e, 0xf4, 0xe5, 0x87, 0x3c, 0xd6, +// 0xb5, 0xa1, 0x9d, 0x16, 0x0c, 0x85, 0xb3, 0xfd, 0x90, 0xf0, 0xbe, 0xac, 0xd0, 0xbe, 0x2c, 0xa0, +// 0xe2, 0x61, 0xfa, 0x12, 0xdc, 0x46, 0xfd, 0x9c, 0x04, 0x13, 0x1d, 0xa2, 0xcc, 0x98, 0x59, 0x18, +// 0x1d, 0x34, 0x17, 0x9e, 0xea, 0x9f, 0x90, 0xf7, 0xea, 0x12, 0xed, 0xd5, 0xdb, 0xd1, 0xdb, 0x0e, +// 0xd3, 0x2b, 0x9f, 0x7f, 0xbe, 0xe5, 0x1d, 0x4a, 0xf3, 0xd5, 0x83, 0xce, 0xf7, 0xd9, 0x30, 0xd1, +// 0xa1, 0x27, 0xfb, 0xa6, 0xe3, 0xfd, 0x79, 0x9e, 0xf6, 0xe7, 0x39, 0xb4, 0xf1, 0xe6, 0xfa, 0xd3, +// 0xee, 0xd6, 0x7f, 0xa1, 0xfd, 0x0e, 0x69, 0x77, 0x2d, 0xea, 0x18, 0xac, 0x16, 0x1e, 0xef, 0x8b, +// 0x86, 0x77, 0xea, 0x29, 0xda, 0xa9, 0xb3, 0xe8, 0xd1, 0xa8, 0x4e, 0xf9, 0x4e, 0x1e, 0xea, 0xc6, +// 0xae, 0x79, 0xe6, 0x3b, 0x59, 0x08, 0xfc, 0xdd, 0xe8, 0x7b, 0xc4, 0xa9, 0xaf, 0x53, 0x5d, 0xeb, +// 0xf5, 0xc5, 0xb1, 0x85, 0x07, 0x7b, 0xc0, 0xe4, 0xed, 0xba, 0x97, 0xb6, 0x6b, 0x1a, 0x9d, 0x8c, +// 0x6a, 0x17, 0x89, 0x65, 0xd1, 0x87, 0x24, 0xf7, 0xa0, 0xe8, 0xe9, 0xee, 0xbc, 0xfd, 0xc1, 0x6e, +// 0xe1, 0xa1, 0x9e, 0x70, 0x79, 0x4b, 0xee, 0xa7, 0x2d, 0x99, 0x45, 0xd3, 0x91, 0x2d, 0x61, 0xa1, +// 0xef, 0xed, 0x3e, 0x54, 0xf0, 0x7f, 0x8e, 0xc2, 0x4c, 0x44, 0x8d, 0xce, 0x7e, 0xcc, 0x1e, 0x57, +// 0x97, 0x7b, 0xd6, 0x87, 0xfb, 0x39, 0x85, 0x37, 0x73, 0xbb, 0xba, 0xb7, 0x0d, 0xb1, 0xdf, 0x4e, +// 0x01, 0x5a, 0xb3, 0x6b, 0x0b, 0x4d, 0xac, 0x39, 0xbe, 0xdf, 0x07, 0x0d, 0xdd, 0x11, 0x94, 0xde, +// 0xd4, 0x1d, 0xc1, 0xb5, 0xc0, 0xad, 0xbb, 0x44, 0x7f, 0x37, 0x7b, 0x7b, 0xbe, 0x7a, 0x97, 0xfc, +// 0xe6, 0x5c, 0xbd, 0xeb, 0x78, 0xe8, 0x3c, 0x75, 0xfb, 0xee, 0xd7, 0xa4, 0x0f, 0x7b, 0xc7, 0x88, +// 0xdf, 0xa8, 0x1d, 0xec, 0x72, 0xa3, 0x76, 0x2a, 0xf2, 0xda, 0x2c, 0xa7, 0xa6, 0x4f, 0x51, 0xb9, +// 0x0f, 0x60, 0xf6, 0x70, 0x4c, 0x98, 0xff, 0x7c, 0xbe, 0x97, 0x42, 0x38, 0x09, 0x85, 0x76, 0x75, +// 0x72, 0x27, 0xf5, 0x47, 0x92, 0x90, 0x5f, 0xb3, 0x6b, 0xe5, 0xaa, 0xee, 0xdc, 0x21, 0x5d, 0x7b, +// 0x3a, 0xfa, 0xce, 0x12, 0x7a, 0xe3, 0xd6, 0xcc, 0x28, 0x93, 0x69, 0x17, 0x49, 0x36, 0x60, 0x2c, +// 0x74, 0x19, 0x9d, 0x6b, 0xd6, 0xe2, 0x61, 0xee, 0xc4, 0x87, 0x58, 0xc9, 0xf4, 0x06, 0x88, 0x4f, +// 0xbf, 0xd1, 0x7e, 0x67, 0x65, 0x66, 0x0a, 0xb5, 0x7c, 0x07, 0x15, 0xd9, 0x37, 0x66, 0x05, 0x98, +// 0x0a, 0x0f, 0x8a, 0x3b, 0x62, 0xaf, 0x4b, 0x30, 0xbc, 0x66, 0x8b, 0x50, 0x10, 0xff, 0x05, 0xbd, +// 0x5e, 0xf6, 0x24, 0x0c, 0x6a, 0x0d, 0x7a, 0x9b, 0x24, 0xd9, 0x9b, 0xde, 0x72, 0x74, 0x7e, 0x92, +// 0xfa, 0x08, 0x4c, 0xf8, 0xfa, 0xe8, 0xf6, 0xfd, 0xb3, 0x09, 0x6a, 0x1b, 0xe9, 0xd3, 0x2e, 0x6e, +// 0x04, 0x89, 0xbf, 0x5d, 0xaf, 0x9d, 0x78, 0x32, 0x4e, 0x1d, 0x46, 0xc6, 0x57, 0xa9, 0x61, 0x08, +// 0xc9, 0xd2, 0x4d, 0x78, 0xad, 0xb5, 0xdf, 0xb8, 0xea, 0xe7, 0x47, 0x33, 0x42, 0xf7, 0xaa, 0xe4, +// 0x2f, 0x49, 0x30, 0xb2, 0x66, 0xd7, 0x2e, 0x1b, 0xd5, 0xff, 0xa7, 0xf5, 0x76, 0x17, 0x8e, 0x04, +// 0x7a, 0x79, 0x87, 0xc4, 0x79, 0xf6, 0xa3, 0x29, 0x48, 0xae, 0xd9, 0x35, 0xf4, 0x5e, 0x18, 0x0b, +// 0x07, 0x0a, 0x91, 0xf1, 0x5f, 0xbb, 0x17, 0x88, 0x5e, 0xa3, 0x45, 0x7b, 0x0c, 0x74, 0x15, 0x46, +// 0x82, 0xde, 0xe2, 0x54, 0x17, 0x26, 0x01, 0xcc, 0xc2, 0xa3, 0xbd, 0x62, 0xba, 0x95, 0xbd, 0x0b, +// 0x32, 0xae, 0xa1, 0xbb, 0xa7, 0x0b, 0xb5, 0x40, 0x8a, 0x8e, 0x68, 0x3b, 0x98, 0x13, 0x22, 0xbd, +// 0xb0, 0x29, 0xe9, 0x26, 0xbd, 0x10, 0x6e, 0x57, 0xe9, 0x45, 0x4d, 0xab, 0x1d, 0x00, 0xdf, 0x1c, +// 0xb8, 0xaf, 0x0b, 0x07, 0x0f, 0xad, 0xf0, 0x48, 0x4f, 0x68, 0xee, 0x46, 0xd3, 0x6d, 0x0e, 0xc0, +// 0xff, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0c, 0x97, 0xcb, 0xb2, 0x05, 0xc2, 0x00, 0x00, +// } +// r := bytes.NewReader(gzipped) +// gzipr, err := compress_gzip.NewReader(r) +// if err != nil { +// panic(err) +// } +// ungzipped, err := io_ioutil.ReadAll(gzipr) +// if err != nil { +// panic(err) +// } +// if err := github_com_gogo_protobuf_proto.Unmarshal(ungzipped, d); err != nil { +// panic(err) +// } +// return d +// } +// func (this *CommissionRates) Equal(that interface{}) bool { +// if that == nil { +// return this == nil +// } + +// that1, ok := that.(*CommissionRates) +// if !ok { +// that2, ok := that.(CommissionRates) +// if ok { +// that1 = &that2 +// } else { +// return false +// } +// } +// if that1 == nil { +// return this == nil +// } else if this == nil { +// return false +// } +// if !this.Rate.Equal(that1.Rate) { +// return false +// } +// if !this.MaxRate.Equal(that1.MaxRate) { +// return false +// } +// if !this.MaxChangeRate.Equal(that1.MaxChangeRate) { +// return false +// } +// return true +// } +// func (this *Commission) Equal(that interface{}) bool { +// if that == nil { +// return this == nil +// } + +// that1, ok := that.(*Commission) +// if !ok { +// that2, ok := that.(Commission) +// if ok { +// that1 = &that2 +// } else { +// return false +// } +// } +// if that1 == nil { +// return this == nil +// } else if this == nil { +// return false +// } +// if !this.CommissionRates.Equal(&that1.CommissionRates) { +// return false +// } +// if !this.UpdateTime.Equal(that1.UpdateTime) { +// return false +// } +// return true +// } +// func (this *Description) Equal(that interface{}) bool { +// if that == nil { +// return this == nil +// } + +// that1, ok := that.(*Description) +// if !ok { +// that2, ok := that.(Description) +// if ok { +// that1 = &that2 +// } else { +// return false +// } +// } +// if that1 == nil { +// return this == nil +// } else if this == nil { +// return false +// } +// if this.Moniker != that1.Moniker { +// return false +// } +// if this.Identity != that1.Identity { +// return false +// } +// if this.Website != that1.Website { +// return false +// } +// if this.SecurityContact != that1.SecurityContact { +// return false +// } +// if this.Details != that1.Details { +// return false +// } +// return true +// } +// func (this *Params) Equal(that interface{}) bool { +// if that == nil { +// return this == nil +// } + +// that1, ok := that.(*Params) +// if !ok { +// that2, ok := that.(Params) +// if ok { +// that1 = &that2 +// } else { +// return false +// } +// } +// if that1 == nil { +// return this == nil +// } else if this == nil { +// return false +// } +// if this.UnbondingTime != that1.UnbondingTime { +// return false +// } +// if this.MaxValidators != that1.MaxValidators { +// return false +// } +// if this.MaxEntries != that1.MaxEntries { +// return false +// } +// if this.HistoricalEntries != that1.HistoricalEntries { +// return false +// } +// if this.BondDenom != that1.BondDenom { +// return false +// } +// return true +// } + +// func (m *CommissionRates) Marshal() (dAtA []byte, err error) { +// size := m.Size() +// dAtA = make([]byte, size) +// n, err := m.MarshalToSizedBuffer(dAtA[:size]) +// if err != nil { +// return nil, err +// } +// return dAtA[:n], nil +// } + +// func (m *CommissionRates) MarshalTo(dAtA []byte) (int, error) { +// size := m.Size() +// return m.MarshalToSizedBuffer(dAtA[:size]) +// } + +// func (m *CommissionRates) MarshalToSizedBuffer(dAtA []byte) (int, error) { +// i := len(dAtA) +// _ = i +// var l int +// _ = l +// { +// size := m.MaxChangeRate.Size() +// i -= size +// if _, err := m.MaxChangeRate.MarshalTo(dAtA[i:]); err != nil { +// return 0, err +// } +// i = encodeVarintStaking(dAtA, i, uint64(size)) +// } +// i-- +// dAtA[i] = 0x1a +// { +// size := m.MaxRate.Size() +// i -= size +// if _, err := m.MaxRate.MarshalTo(dAtA[i:]); err != nil { +// return 0, err +// } +// i = encodeVarintStaking(dAtA, i, uint64(size)) +// } +// i-- +// dAtA[i] = 0x12 +// { +// size := m.Rate.Size() +// i -= size +// if _, err := m.Rate.MarshalTo(dAtA[i:]); err != nil { +// return 0, err +// } +// i = encodeVarintStaking(dAtA, i, uint64(size)) +// } +// i-- +// dAtA[i] = 0xa +// return len(dAtA) - i, nil +// } + +// func (m *Commission) Marshal() (dAtA []byte, err error) { +// size := m.Size() +// dAtA = make([]byte, size) +// n, err := m.MarshalToSizedBuffer(dAtA[:size]) +// if err != nil { +// return nil, err +// } +// return dAtA[:n], nil +// } + +// func (m *Commission) MarshalTo(dAtA []byte) (int, error) { +// size := m.Size() +// return m.MarshalToSizedBuffer(dAtA[:size]) +// } + +// func (m *Commission) MarshalToSizedBuffer(dAtA []byte) (int, error) { +// i := len(dAtA) +// _ = i +// var l int +// _ = l +// n2, err2 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.UpdateTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.UpdateTime):]) +// if err2 != nil { +// return 0, err2 +// } +// i -= n2 +// i = encodeVarintStaking(dAtA, i, uint64(n2)) +// i-- +// dAtA[i] = 0x12 +// { +// size, err := m.CommissionRates.MarshalToSizedBuffer(dAtA[:i]) +// if err != nil { +// return 0, err +// } +// i -= size +// i = encodeVarintStaking(dAtA, i, uint64(size)) +// } +// i-- +// dAtA[i] = 0xa +// return len(dAtA) - i, nil +// } + +// func (m *Description) Marshal() (dAtA []byte, err error) { +// size := m.Size() +// dAtA = make([]byte, size) +// n, err := m.MarshalToSizedBuffer(dAtA[:size]) +// if err != nil { +// return nil, err +// } +// return dAtA[:n], nil +// } + +// func (m *Description) MarshalTo(dAtA []byte) (int, error) { +// size := m.Size() +// return m.MarshalToSizedBuffer(dAtA[:size]) +// } + +// func (m *Description) MarshalToSizedBuffer(dAtA []byte) (int, error) { +// i := len(dAtA) +// _ = i +// var l int +// _ = l +// if len(m.Details) > 0 { +// i -= len(m.Details) +// copy(dAtA[i:], m.Details) +// i = encodeVarintStaking(dAtA, i, uint64(len(m.Details))) +// i-- +// dAtA[i] = 0x2a +// } +// if len(m.SecurityContact) > 0 { +// i -= len(m.SecurityContact) +// copy(dAtA[i:], m.SecurityContact) +// i = encodeVarintStaking(dAtA, i, uint64(len(m.SecurityContact))) +// i-- +// dAtA[i] = 0x22 +// } +// if len(m.Website) > 0 { +// i -= len(m.Website) +// copy(dAtA[i:], m.Website) +// i = encodeVarintStaking(dAtA, i, uint64(len(m.Website))) +// i-- +// dAtA[i] = 0x1a +// } +// if len(m.Identity) > 0 { +// i -= len(m.Identity) +// copy(dAtA[i:], m.Identity) +// i = encodeVarintStaking(dAtA, i, uint64(len(m.Identity))) +// i-- +// dAtA[i] = 0x12 +// } +// if len(m.Moniker) > 0 { +// i -= len(m.Moniker) +// copy(dAtA[i:], m.Moniker) +// i = encodeVarintStaking(dAtA, i, uint64(len(m.Moniker))) +// i-- +// dAtA[i] = 0xa +// } +// return len(dAtA) - i, nil +// } + +// func (m *Validator) Marshal() (dAtA []byte, err error) { +// size := m.Size() +// dAtA = make([]byte, size) +// n, err := m.MarshalToSizedBuffer(dAtA[:size]) +// if err != nil { +// return nil, err +// } +// return dAtA[:n], nil +// } + +// func (m *Validator) MarshalTo(dAtA []byte) (int, error) { +// size := m.Size() +// return m.MarshalToSizedBuffer(dAtA[:size]) +// } + +// func (m *Validator) MarshalToSizedBuffer(dAtA []byte) (int, error) { +// i := len(dAtA) +// _ = i +// var l int +// _ = l +// if len(m.UnbondingIds) > 0 { +// dAtA5 := make([]byte, len(m.UnbondingIds)*10) +// var j4 int +// for _, num := range m.UnbondingIds { +// for num >= 1<<7 { +// dAtA5[j4] = uint8(uint64(num)&0x7f | 0x80) +// num >>= 7 +// j4++ +// } +// dAtA5[j4] = uint8(num) +// j4++ +// } +// i -= j4 +// copy(dAtA[i:], dAtA5[:j4]) +// i = encodeVarintStaking(dAtA, i, uint64(j4)) +// i-- +// dAtA[i] = 0x6a +// } +// if m.UnbondingOnHoldRefCount != 0 { +// i = encodeVarintStaking(dAtA, i, uint64(m.UnbondingOnHoldRefCount)) +// i-- +// dAtA[i] = 0x60 +// } +// { +// size := m.MinSelfDelegation.Size() +// i -= size +// if _, err := m.MinSelfDelegation.MarshalTo(dAtA[i:]); err != nil { +// return 0, err +// } +// i = encodeVarintStaking(dAtA, i, uint64(size)) +// } +// i-- +// dAtA[i] = 0x5a +// { +// size, err := m.Commission.MarshalToSizedBuffer(dAtA[:i]) +// if err != nil { +// return 0, err +// } +// i -= size +// i = encodeVarintStaking(dAtA, i, uint64(size)) +// } +// i-- +// dAtA[i] = 0x52 +// n7, err7 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.UnbondingTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.UnbondingTime):]) +// if err7 != nil { +// return 0, err7 +// } +// i -= n7 +// i = encodeVarintStaking(dAtA, i, uint64(n7)) +// i-- +// dAtA[i] = 0x4a +// if m.UnbondingHeight != 0 { +// i = encodeVarintStaking(dAtA, i, uint64(m.UnbondingHeight)) +// i-- +// dAtA[i] = 0x40 +// } +// { +// size, err := m.Description.MarshalToSizedBuffer(dAtA[:i]) +// if err != nil { +// return 0, err +// } +// i -= size +// i = encodeVarintStaking(dAtA, i, uint64(size)) +// } +// i-- +// dAtA[i] = 0x3a +// { +// size := m.DelegatorShares.Size() +// i -= size +// if _, err := m.DelegatorShares.MarshalTo(dAtA[i:]); err != nil { +// return 0, err +// } +// i = encodeVarintStaking(dAtA, i, uint64(size)) +// } +// i-- +// dAtA[i] = 0x32 +// { +// size := m.Tokens.Size() +// i -= size +// if _, err := m.Tokens.MarshalTo(dAtA[i:]); err != nil { +// return 0, err +// } +// i = encodeVarintStaking(dAtA, i, uint64(size)) +// } +// i-- +// dAtA[i] = 0x2a +// if m.Status != 0 { +// i = encodeVarintStaking(dAtA, i, uint64(m.Status)) +// i-- +// dAtA[i] = 0x20 +// } +// if m.Jailed { +// i-- +// if m.Jailed { +// dAtA[i] = 1 +// } else { +// dAtA[i] = 0 +// } +// i-- +// dAtA[i] = 0x18 +// } +// if m.ConsensusPubkey != nil { +// { +// size, err := m.ConsensusPubkey.MarshalToSizedBuffer(dAtA[:i]) +// if err != nil { +// return 0, err +// } +// i -= size +// i = encodeVarintStaking(dAtA, i, uint64(size)) +// } +// i-- +// dAtA[i] = 0x12 +// } +// if len(m.OperatorAddress) > 0 { +// i -= len(m.OperatorAddress) +// copy(dAtA[i:], m.OperatorAddress) +// i = encodeVarintStaking(dAtA, i, uint64(len(m.OperatorAddress))) +// i-- +// dAtA[i] = 0xa +// } +// return len(dAtA) - i, nil +// } + +// func (m *Delegation) Marshal() (dAtA []byte, err error) { +// size := m.Size() +// dAtA = make([]byte, size) +// n, err := m.MarshalToSizedBuffer(dAtA[:size]) +// if err != nil { +// return nil, err +// } +// return dAtA[:n], nil +// } + +// func (m *Delegation) MarshalTo(dAtA []byte) (int, error) { +// size := m.Size() +// return m.MarshalToSizedBuffer(dAtA[:size]) +// } + +// func (m *Delegation) MarshalToSizedBuffer(dAtA []byte) (int, error) { +// i := len(dAtA) +// _ = i +// var l int +// _ = l +// { +// size := m.Shares.Size() +// i -= size +// if _, err := m.Shares.MarshalTo(dAtA[i:]); err != nil { +// return 0, err +// } +// i = encodeVarintStaking(dAtA, i, uint64(size)) +// } +// i-- +// dAtA[i] = 0x1a +// if len(m.ValidatorAddress) > 0 { +// i -= len(m.ValidatorAddress) +// copy(dAtA[i:], m.ValidatorAddress) +// i = encodeVarintStaking(dAtA, i, uint64(len(m.ValidatorAddress))) +// i-- +// dAtA[i] = 0x12 +// } +// if len(m.DelegatorAddress) > 0 { +// i -= len(m.DelegatorAddress) +// copy(dAtA[i:], m.DelegatorAddress) +// i = encodeVarintStaking(dAtA, i, uint64(len(m.DelegatorAddress))) +// i-- +// dAtA[i] = 0xa +// } +// return len(dAtA) - i, nil +// } + +// func (m *Params) Marshal() (dAtA []byte, err error) { +// size := m.Size() +// dAtA = make([]byte, size) +// n, err := m.MarshalToSizedBuffer(dAtA[:size]) +// if err != nil { +// return nil, err +// } +// return dAtA[:n], nil +// } + +// func (m *Params) MarshalTo(dAtA []byte) (int, error) { +// size := m.Size() +// return m.MarshalToSizedBuffer(dAtA[:size]) +// } + +// func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { +// i := len(dAtA) +// _ = i +// var l int +// _ = l +// if len(m.BondDenom) > 0 { +// i -= len(m.BondDenom) +// copy(dAtA[i:], m.BondDenom) +// i = encodeVarintStaking(dAtA, i, uint64(len(m.BondDenom))) +// i-- +// dAtA[i] = 0x2a +// } +// if m.HistoricalEntries != 0 { +// i = encodeVarintStaking(dAtA, i, uint64(m.HistoricalEntries)) +// i-- +// dAtA[i] = 0x20 +// } +// if m.MaxEntries != 0 { +// i = encodeVarintStaking(dAtA, i, uint64(m.MaxEntries)) +// i-- +// dAtA[i] = 0x18 +// } +// if m.MaxValidators != 0 { +// i = encodeVarintStaking(dAtA, i, uint64(m.MaxValidators)) +// i-- +// dAtA[i] = 0x10 +// } +// n12, err12 := github_com_gogo_protobuf_types.StdDurationMarshalTo(m.UnbondingTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdDuration(m.UnbondingTime):]) +// if err12 != nil { +// return 0, err12 +// } +// i -= n12 +// i = encodeVarintStaking(dAtA, i, uint64(n12)) +// i-- +// dAtA[i] = 0xa +// return len(dAtA) - i, nil +// } + +// func encodeVarintStaking(dAtA []byte, offset int, v uint64) int { +// offset -= sovStaking(v) +// base := offset +// for v >= 1<<7 { +// dAtA[offset] = uint8(v&0x7f | 0x80) +// v >>= 7 +// offset++ +// } +// dAtA[offset] = uint8(v) +// return base +// } + +// func (m *CommissionRates) Size() (n int) { +// if m == nil { +// return 0 +// } +// var l int +// _ = l +// l = m.Rate.Size() +// n += 1 + l + sovStaking(uint64(l)) +// l = m.MaxRate.Size() +// n += 1 + l + sovStaking(uint64(l)) +// l = m.MaxChangeRate.Size() +// n += 1 + l + sovStaking(uint64(l)) +// return n +// } + +// func (m *Commission) Size() (n int) { +// if m == nil { +// return 0 +// } +// var l int +// _ = l +// l = m.CommissionRates.Size() +// n += 1 + l + sovStaking(uint64(l)) +// l = github_com_gogo_protobuf_types.SizeOfStdTime(m.UpdateTime) +// n += 1 + l + sovStaking(uint64(l)) +// return n +// } + +// func (m *Description) Size() (n int) { +// if m == nil { +// return 0 +// } +// var l int +// _ = l +// l = len(m.Moniker) +// if l > 0 { +// n += 1 + l + sovStaking(uint64(l)) +// } +// l = len(m.Identity) +// if l > 0 { +// n += 1 + l + sovStaking(uint64(l)) +// } +// l = len(m.Website) +// if l > 0 { +// n += 1 + l + sovStaking(uint64(l)) +// } +// l = len(m.SecurityContact) +// if l > 0 { +// n += 1 + l + sovStaking(uint64(l)) +// } +// l = len(m.Details) +// if l > 0 { +// n += 1 + l + sovStaking(uint64(l)) +// } +// return n +// } + +// func (m *Validator) Size() (n int) { +// if m == nil { +// return 0 +// } +// var l int +// _ = l +// l = len(m.OperatorAddress) +// if l > 0 { +// n += 1 + l + sovStaking(uint64(l)) +// } +// if m.ConsensusPubkey != nil { +// l = m.ConsensusPubkey.Size() +// n += 1 + l + sovStaking(uint64(l)) +// } +// if m.Jailed { +// n += 2 +// } +// if m.Status != 0 { +// n += 1 + sovStaking(uint64(m.Status)) +// } +// l = m.Tokens.Size() +// n += 1 + l + sovStaking(uint64(l)) +// l = m.DelegatorShares.Size() +// n += 1 + l + sovStaking(uint64(l)) +// l = m.Description.Size() +// n += 1 + l + sovStaking(uint64(l)) +// if m.UnbondingHeight != 0 { +// n += 1 + sovStaking(uint64(m.UnbondingHeight)) +// } +// l = github_com_gogo_protobuf_types.SizeOfStdTime(m.UnbondingTime) +// n += 1 + l + sovStaking(uint64(l)) +// l = m.Commission.Size() +// n += 1 + l + sovStaking(uint64(l)) +// l = m.MinSelfDelegation.Size() +// n += 1 + l + sovStaking(uint64(l)) +// if m.UnbondingOnHoldRefCount != 0 { +// n += 1 + sovStaking(uint64(m.UnbondingOnHoldRefCount)) +// } +// if len(m.UnbondingIds) > 0 { +// l = 0 +// for _, e := range m.UnbondingIds { +// l += sovStaking(uint64(e)) +// } +// n += 1 + sovStaking(uint64(l)) + l +// } +// return n +// } + +// func (m *Delegation) Size() (n int) { +// if m == nil { +// return 0 +// } +// var l int +// _ = l +// l = len(m.DelegatorAddress) +// if l > 0 { +// n += 1 + l + sovStaking(uint64(l)) +// } +// l = len(m.ValidatorAddress) +// if l > 0 { +// n += 1 + l + sovStaking(uint64(l)) +// } +// l = m.Shares.Size() +// n += 1 + l + sovStaking(uint64(l)) +// return n +// } + +// func (m *Params) Size() (n int) { +// if m == nil { +// return 0 +// } +// var l int +// _ = l +// l = github_com_gogo_protobuf_types.SizeOfStdDuration(m.UnbondingTime) +// n += 1 + l + sovStaking(uint64(l)) +// if m.MaxValidators != 0 { +// n += 1 + sovStaking(uint64(m.MaxValidators)) +// } +// if m.MaxEntries != 0 { +// n += 1 + sovStaking(uint64(m.MaxEntries)) +// } +// if m.HistoricalEntries != 0 { +// n += 1 + sovStaking(uint64(m.HistoricalEntries)) +// } +// l = len(m.BondDenom) +// if l > 0 { +// n += 1 + l + sovStaking(uint64(l)) +// } +// return n +// } + +// func sovStaking(x uint64) (n int) { +// return (math_bits.Len64(x|1) + 6) / 7 +// } +// func sozStaking(x uint64) (n int) { +// return sovStaking(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +// } + +// func valueToStringStaking(v interface{}) string { +// rv := reflect.ValueOf(v) +// if rv.IsNil() { +// return "nil" +// } +// pv := reflect.Indirect(rv).Interface() +// return fmt.Sprintf("*%v", pv) +// } + +// func (m *CommissionRates) Unmarshal(dAtA []byte) error { +// l := len(dAtA) +// iNdEx := 0 +// for iNdEx < l { +// preIndex := iNdEx +// var wire uint64 +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// wire |= uint64(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// fieldNum := int32(wire >> 3) +// wireType := int(wire & 0x7) +// if wireType == 4 { +// return fmt.Errorf("proto: CommissionRates: wiretype end group for non-group") +// } +// if fieldNum <= 0 { +// return fmt.Errorf("proto: CommissionRates: illegal tag %d (wire type %d)", fieldNum, wire) +// } +// switch fieldNum { +// case 1: +// if wireType != 2 { +// return fmt.Errorf("proto: wrong wireType = %d for field Rate", wireType) +// } +// var stringLen uint64 +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// stringLen |= uint64(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// intStringLen := int(stringLen) +// if intStringLen < 0 { +// return ErrInvalidLengthStaking +// } +// postIndex := iNdEx + intStringLen +// if postIndex < 0 { +// return ErrInvalidLengthStaking +// } +// if postIndex > l { +// return io.ErrUnexpectedEOF +// } +// if err := m.Rate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { +// return err +// } +// iNdEx = postIndex +// case 2: +// if wireType != 2 { +// return fmt.Errorf("proto: wrong wireType = %d for field MaxRate", wireType) +// } +// var stringLen uint64 +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// stringLen |= uint64(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// intStringLen := int(stringLen) +// if intStringLen < 0 { +// return ErrInvalidLengthStaking +// } +// postIndex := iNdEx + intStringLen +// if postIndex < 0 { +// return ErrInvalidLengthStaking +// } +// if postIndex > l { +// return io.ErrUnexpectedEOF +// } +// if err := m.MaxRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { +// return err +// } +// iNdEx = postIndex +// case 3: +// if wireType != 2 { +// return fmt.Errorf("proto: wrong wireType = %d for field MaxChangeRate", wireType) +// } +// var stringLen uint64 +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// stringLen |= uint64(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// intStringLen := int(stringLen) +// if intStringLen < 0 { +// return ErrInvalidLengthStaking +// } +// postIndex := iNdEx + intStringLen +// if postIndex < 0 { +// return ErrInvalidLengthStaking +// } +// if postIndex > l { +// return io.ErrUnexpectedEOF +// } +// if err := m.MaxChangeRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { +// return err +// } +// iNdEx = postIndex +// default: +// iNdEx = preIndex +// skippy, err := skipStaking(dAtA[iNdEx:]) +// if err != nil { +// return err +// } +// if (skippy < 0) || (iNdEx+skippy) < 0 { +// return ErrInvalidLengthStaking +// } +// if (iNdEx + skippy) > l { +// return io.ErrUnexpectedEOF +// } +// iNdEx += skippy +// } +// } + +// if iNdEx > l { +// return io.ErrUnexpectedEOF +// } +// return nil +// } +// func (m *Commission) Unmarshal(dAtA []byte) error { +// l := len(dAtA) +// iNdEx := 0 +// for iNdEx < l { +// preIndex := iNdEx +// var wire uint64 +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// wire |= uint64(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// fieldNum := int32(wire >> 3) +// wireType := int(wire & 0x7) +// if wireType == 4 { +// return fmt.Errorf("proto: Commission: wiretype end group for non-group") +// } +// if fieldNum <= 0 { +// return fmt.Errorf("proto: Commission: illegal tag %d (wire type %d)", fieldNum, wire) +// } +// switch fieldNum { +// case 1: +// if wireType != 2 { +// return fmt.Errorf("proto: wrong wireType = %d for field CommissionRates", wireType) +// } +// var msglen int +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// msglen |= int(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// if msglen < 0 { +// return ErrInvalidLengthStaking +// } +// postIndex := iNdEx + msglen +// if postIndex < 0 { +// return ErrInvalidLengthStaking +// } +// if postIndex > l { +// return io.ErrUnexpectedEOF +// } +// if err := m.CommissionRates.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { +// return err +// } +// iNdEx = postIndex +// case 2: +// if wireType != 2 { +// return fmt.Errorf("proto: wrong wireType = %d for field UpdateTime", wireType) +// } +// var msglen int +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// msglen |= int(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// if msglen < 0 { +// return ErrInvalidLengthStaking +// } +// postIndex := iNdEx + msglen +// if postIndex < 0 { +// return ErrInvalidLengthStaking +// } +// if postIndex > l { +// return io.ErrUnexpectedEOF +// } +// if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.UpdateTime, dAtA[iNdEx:postIndex]); err != nil { +// return err +// } +// iNdEx = postIndex +// default: +// iNdEx = preIndex +// skippy, err := skipStaking(dAtA[iNdEx:]) +// if err != nil { +// return err +// } +// if (skippy < 0) || (iNdEx+skippy) < 0 { +// return ErrInvalidLengthStaking +// } +// if (iNdEx + skippy) > l { +// return io.ErrUnexpectedEOF +// } +// iNdEx += skippy +// } +// } + +// if iNdEx > l { +// return io.ErrUnexpectedEOF +// } +// return nil +// } +// func (m *Description) Unmarshal(dAtA []byte) error { +// l := len(dAtA) +// iNdEx := 0 +// for iNdEx < l { +// preIndex := iNdEx +// var wire uint64 +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// wire |= uint64(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// fieldNum := int32(wire >> 3) +// wireType := int(wire & 0x7) +// if wireType == 4 { +// return fmt.Errorf("proto: Description: wiretype end group for non-group") +// } +// if fieldNum <= 0 { +// return fmt.Errorf("proto: Description: illegal tag %d (wire type %d)", fieldNum, wire) +// } +// switch fieldNum { +// case 1: +// if wireType != 2 { +// return fmt.Errorf("proto: wrong wireType = %d for field Moniker", 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.Moniker = string(dAtA[iNdEx:postIndex]) +// iNdEx = postIndex +// case 2: +// if wireType != 2 { +// return fmt.Errorf("proto: wrong wireType = %d for field Identity", 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.Identity = string(dAtA[iNdEx:postIndex]) +// iNdEx = postIndex +// case 3: +// if wireType != 2 { +// return fmt.Errorf("proto: wrong wireType = %d for field Website", 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.Website = string(dAtA[iNdEx:postIndex]) +// iNdEx = postIndex +// case 4: +// if wireType != 2 { +// return fmt.Errorf("proto: wrong wireType = %d for field SecurityContact", 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.SecurityContact = string(dAtA[iNdEx:postIndex]) +// iNdEx = postIndex +// case 5: +// if wireType != 2 { +// return fmt.Errorf("proto: wrong wireType = %d for field Details", 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.Details = string(dAtA[iNdEx:postIndex]) +// iNdEx = postIndex +// default: +// iNdEx = preIndex +// skippy, err := skipStaking(dAtA[iNdEx:]) +// if err != nil { +// return err +// } +// if (skippy < 0) || (iNdEx+skippy) < 0 { +// return ErrInvalidLengthStaking +// } +// if (iNdEx + skippy) > l { +// return io.ErrUnexpectedEOF +// } +// iNdEx += skippy +// } +// } + +// if iNdEx > l { +// return io.ErrUnexpectedEOF +// } +// return nil +// } +// func (m *Validator) Unmarshal(dAtA []byte) error { +// l := len(dAtA) +// iNdEx := 0 +// for iNdEx < l { +// preIndex := iNdEx +// var wire uint64 +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// wire |= uint64(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// fieldNum := int32(wire >> 3) +// wireType := int(wire & 0x7) +// if wireType == 4 { +// return fmt.Errorf("proto: Validator: wiretype end group for non-group") +// } +// if fieldNum <= 0 { +// return fmt.Errorf("proto: Validator: illegal tag %d (wire type %d)", fieldNum, wire) +// } +// switch fieldNum { +// case 1: +// if wireType != 2 { +// return fmt.Errorf("proto: wrong wireType = %d for field OperatorAddress", 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.OperatorAddress = string(dAtA[iNdEx:postIndex]) +// iNdEx = postIndex +// case 2: +// if wireType != 2 { +// return fmt.Errorf("proto: wrong wireType = %d for field ConsensusPubkey", wireType) +// } +// var msglen int +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// msglen |= int(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// if msglen < 0 { +// return ErrInvalidLengthStaking +// } +// postIndex := iNdEx + msglen +// if postIndex < 0 { +// return ErrInvalidLengthStaking +// } +// if postIndex > l { +// return io.ErrUnexpectedEOF +// } +// if m.ConsensusPubkey == nil { +// m.ConsensusPubkey = &types1.Any{} +// } +// if err := m.ConsensusPubkey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { +// return err +// } +// iNdEx = postIndex +// case 3: +// if wireType != 0 { +// return fmt.Errorf("proto: wrong wireType = %d for field Jailed", wireType) +// } +// var v int +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// v |= int(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// m.Jailed = bool(v != 0) +// case 4: +// if wireType != 0 { +// return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) +// } +// m.Status = 0 +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// m.Status |= BondStatus(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// case 5: +// if wireType != 2 { +// return fmt.Errorf("proto: wrong wireType = %d for field Tokens", wireType) +// } +// var stringLen uint64 +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// stringLen |= uint64(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// intStringLen := int(stringLen) +// if intStringLen < 0 { +// return ErrInvalidLengthStaking +// } +// postIndex := iNdEx + intStringLen +// if postIndex < 0 { +// return ErrInvalidLengthStaking +// } +// if postIndex > l { +// return io.ErrUnexpectedEOF +// } +// if err := m.Tokens.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { +// return err +// } +// iNdEx = postIndex +// case 6: +// if wireType != 2 { +// return fmt.Errorf("proto: wrong wireType = %d for field DelegatorShares", wireType) +// } +// var stringLen uint64 +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// stringLen |= uint64(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// intStringLen := int(stringLen) +// if intStringLen < 0 { +// return ErrInvalidLengthStaking +// } +// postIndex := iNdEx + intStringLen +// if postIndex < 0 { +// return ErrInvalidLengthStaking +// } +// if postIndex > l { +// return io.ErrUnexpectedEOF +// } +// if err := m.DelegatorShares.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { +// return err +// } +// iNdEx = postIndex +// case 7: +// if wireType != 2 { +// return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) +// } +// var msglen int +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// msglen |= int(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// if msglen < 0 { +// return ErrInvalidLengthStaking +// } +// postIndex := iNdEx + msglen +// if postIndex < 0 { +// return ErrInvalidLengthStaking +// } +// if postIndex > l { +// return io.ErrUnexpectedEOF +// } +// if err := m.Description.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { +// return err +// } +// iNdEx = postIndex +// case 8: +// if wireType != 0 { +// return fmt.Errorf("proto: wrong wireType = %d for field UnbondingHeight", wireType) +// } +// m.UnbondingHeight = 0 +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// m.UnbondingHeight |= int64(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// case 9: +// if wireType != 2 { +// return fmt.Errorf("proto: wrong wireType = %d for field UnbondingTime", wireType) +// } +// var msglen int +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// msglen |= int(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// if msglen < 0 { +// return ErrInvalidLengthStaking +// } +// postIndex := iNdEx + msglen +// if postIndex < 0 { +// return ErrInvalidLengthStaking +// } +// if postIndex > l { +// return io.ErrUnexpectedEOF +// } +// if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.UnbondingTime, dAtA[iNdEx:postIndex]); err != nil { +// return err +// } +// iNdEx = postIndex +// case 10: +// if wireType != 2 { +// return fmt.Errorf("proto: wrong wireType = %d for field Commission", wireType) +// } +// var msglen int +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// msglen |= int(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// if msglen < 0 { +// return ErrInvalidLengthStaking +// } +// postIndex := iNdEx + msglen +// if postIndex < 0 { +// return ErrInvalidLengthStaking +// } +// if postIndex > l { +// return io.ErrUnexpectedEOF +// } +// if err := m.Commission.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { +// return err +// } +// iNdEx = postIndex +// case 11: +// if wireType != 2 { +// return fmt.Errorf("proto: wrong wireType = %d for field MinSelfDelegation", wireType) +// } +// var stringLen uint64 +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// stringLen |= uint64(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// intStringLen := int(stringLen) +// if intStringLen < 0 { +// return ErrInvalidLengthStaking +// } +// postIndex := iNdEx + intStringLen +// if postIndex < 0 { +// return ErrInvalidLengthStaking +// } +// if postIndex > l { +// return io.ErrUnexpectedEOF +// } +// if err := m.MinSelfDelegation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { +// return err +// } +// iNdEx = postIndex +// case 12: +// if wireType != 0 { +// return fmt.Errorf("proto: wrong wireType = %d for field UnbondingOnHoldRefCount", wireType) +// } +// m.UnbondingOnHoldRefCount = 0 +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// m.UnbondingOnHoldRefCount |= int64(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// case 13: +// if wireType == 0 { +// var v uint64 +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// v |= uint64(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// m.UnbondingIds = append(m.UnbondingIds, v) +// } else if wireType == 2 { +// var packedLen int +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// packedLen |= int(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// if packedLen < 0 { +// return ErrInvalidLengthStaking +// } +// postIndex := iNdEx + packedLen +// if postIndex < 0 { +// return ErrInvalidLengthStaking +// } +// if postIndex > l { +// return io.ErrUnexpectedEOF +// } +// var elementCount int +// var count int +// for _, integer := range dAtA[iNdEx:postIndex] { +// if integer < 128 { +// count++ +// } +// } +// elementCount = count +// if elementCount != 0 && len(m.UnbondingIds) == 0 { +// m.UnbondingIds = make([]uint64, 0, elementCount) +// } +// for iNdEx < postIndex { +// var v uint64 +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// v |= uint64(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// m.UnbondingIds = append(m.UnbondingIds, v) +// } +// } else { +// return fmt.Errorf("proto: wrong wireType = %d for field UnbondingIds", wireType) +// } +// default: +// iNdEx = preIndex +// skippy, err := skipStaking(dAtA[iNdEx:]) +// if err != nil { +// return err +// } +// if (skippy < 0) || (iNdEx+skippy) < 0 { +// return ErrInvalidLengthStaking +// } +// if (iNdEx + skippy) > l { +// return io.ErrUnexpectedEOF +// } +// iNdEx += skippy +// } +// } + +// if iNdEx > l { +// return io.ErrUnexpectedEOF +// } +// return nil +// } +// func (m *Delegation) Unmarshal(dAtA []byte) error { +// l := len(dAtA) +// iNdEx := 0 +// for iNdEx < l { +// preIndex := iNdEx +// var wire uint64 +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// wire |= uint64(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// fieldNum := int32(wire >> 3) +// wireType := int(wire & 0x7) +// if wireType == 4 { +// return fmt.Errorf("proto: Delegation: wiretype end group for non-group") +// } +// if fieldNum <= 0 { +// return fmt.Errorf("proto: Delegation: illegal tag %d (wire type %d)", fieldNum, wire) +// } +// switch fieldNum { +// case 1: +// if wireType != 2 { +// return fmt.Errorf("proto: wrong wireType = %d for field DelegatorAddress", 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.DelegatorAddress = string(dAtA[iNdEx:postIndex]) +// iNdEx = postIndex +// case 2: +// if wireType != 2 { +// return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddress", 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.ValidatorAddress = string(dAtA[iNdEx:postIndex]) +// iNdEx = postIndex +// case 3: +// if wireType != 2 { +// return fmt.Errorf("proto: wrong wireType = %d for field Shares", wireType) +// } +// var stringLen uint64 +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// stringLen |= uint64(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// intStringLen := int(stringLen) +// if intStringLen < 0 { +// return ErrInvalidLengthStaking +// } +// postIndex := iNdEx + intStringLen +// if postIndex < 0 { +// return ErrInvalidLengthStaking +// } +// if postIndex > l { +// return io.ErrUnexpectedEOF +// } +// if err := m.Shares.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { +// return err +// } +// iNdEx = postIndex +// default: +// iNdEx = preIndex +// skippy, err := skipStaking(dAtA[iNdEx:]) +// if err != nil { +// return err +// } +// if (skippy < 0) || (iNdEx+skippy) < 0 { +// return ErrInvalidLengthStaking +// } +// if (iNdEx + skippy) > l { +// return io.ErrUnexpectedEOF +// } +// iNdEx += skippy +// } +// } + +// if iNdEx > l { +// return io.ErrUnexpectedEOF +// } +// return nil +// } + +// func (m *Params) Unmarshal(dAtA []byte) error { +// l := len(dAtA) +// iNdEx := 0 +// for iNdEx < l { +// preIndex := iNdEx +// var wire uint64 +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// wire |= uint64(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// fieldNum := int32(wire >> 3) +// wireType := int(wire & 0x7) +// if wireType == 4 { +// return fmt.Errorf("proto: Params: wiretype end group for non-group") +// } +// if fieldNum <= 0 { +// return fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) +// } +// switch fieldNum { +// case 1: +// if wireType != 2 { +// return fmt.Errorf("proto: wrong wireType = %d for field UnbondingTime", wireType) +// } +// var msglen int +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// msglen |= int(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// if msglen < 0 { +// return ErrInvalidLengthStaking +// } +// postIndex := iNdEx + msglen +// if postIndex < 0 { +// return ErrInvalidLengthStaking +// } +// if postIndex > l { +// return io.ErrUnexpectedEOF +// } +// if err := github_com_gogo_protobuf_types.StdDurationUnmarshal(&m.UnbondingTime, dAtA[iNdEx:postIndex]); err != nil { +// return err +// } +// iNdEx = postIndex +// case 2: +// if wireType != 0 { +// return fmt.Errorf("proto: wrong wireType = %d for field MaxValidators", wireType) +// } +// m.MaxValidators = 0 +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// m.MaxValidators |= uint32(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// case 3: +// if wireType != 0 { +// return fmt.Errorf("proto: wrong wireType = %d for field MaxEntries", wireType) +// } +// m.MaxEntries = 0 +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// m.MaxEntries |= uint32(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// case 4: +// if wireType != 0 { +// return fmt.Errorf("proto: wrong wireType = %d for field HistoricalEntries", wireType) +// } +// m.HistoricalEntries = 0 +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// m.HistoricalEntries |= uint32(b&0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// case 5: +// if wireType != 2 { +// return fmt.Errorf("proto: wrong wireType = %d for field BondDenom", 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.BondDenom = string(dAtA[iNdEx:postIndex]) +// iNdEx = postIndex +// default: +// iNdEx = preIndex +// skippy, err := skipStaking(dAtA[iNdEx:]) +// if err != nil { +// return err +// } +// if (skippy < 0) || (iNdEx+skippy) < 0 { +// return ErrInvalidLengthStaking +// } +// if (iNdEx + skippy) > l { +// return io.ErrUnexpectedEOF +// } +// iNdEx += skippy +// } +// } + +// if iNdEx > l { +// return io.ErrUnexpectedEOF +// } +// return nil +// } + +// func skipStaking(dAtA []byte) (n int, err error) { +// l := len(dAtA) +// iNdEx := 0 +// depth := 0 +// for iNdEx < l { +// var wire uint64 +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return 0, ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return 0, io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// wire |= (uint64(b) & 0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// wireType := int(wire & 0x7) +// switch wireType { +// case 0: +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return 0, ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return 0, io.ErrUnexpectedEOF +// } +// iNdEx++ +// if dAtA[iNdEx-1] < 0x80 { +// break +// } +// } +// case 1: +// iNdEx += 8 +// case 2: +// var length int +// for shift := uint(0); ; shift += 7 { +// if shift >= 64 { +// return 0, ErrIntOverflowStaking +// } +// if iNdEx >= l { +// return 0, io.ErrUnexpectedEOF +// } +// b := dAtA[iNdEx] +// iNdEx++ +// length |= (int(b) & 0x7F) << shift +// if b < 0x80 { +// break +// } +// } +// if length < 0 { +// return 0, ErrInvalidLengthStaking +// } +// iNdEx += length +// case 3: +// depth++ +// case 4: +// if depth == 0 { +// return 0, ErrUnexpectedEndOfGroupStaking +// } +// depth-- +// case 5: +// iNdEx += 4 +// default: +// return 0, fmt.Errorf("proto: illegal wireType %d", wireType) +// } +// if iNdEx < 0 { +// return 0, ErrInvalidLengthStaking +// } +// if depth == 0 { +// return iNdEx, nil +// } +// } +// return 0, io.ErrUnexpectedEOF +// } + +// var ( +// ErrInvalidLengthStaking = fmt.Errorf("proto: negative length found during unmarshaling") +// ErrIntOverflowStaking = fmt.Errorf("proto: integer overflow") +// ErrUnexpectedEndOfGroupStaking = fmt.Errorf("proto: unexpected end of group") +// ) \ No newline at end of file diff --git a/x/staking/migrations/v3/store.go b/x/staking/migrations/v3/store.go index 6cb6c6263113..3cf9b171c5ba 100644 --- a/x/staking/migrations/v3/store.go +++ b/x/staking/migrations/v3/store.go @@ -1,3 +1,5 @@ +//nolint + package v3 import ( diff --git a/x/staking/migrations/v4/migrations_test.go b/x/staking/migrations/v4/migrations_test.go index 90fa7f1ec9cf..a26a8fd28f77 100644 --- a/x/staking/migrations/v4/migrations_test.go +++ b/x/staking/migrations/v4/migrations_test.go @@ -2,16 +2,12 @@ package v4_test import ( "testing" - "time" "github.com/stretchr/testify/require" - "cosmossdk.io/math" storetypes "cosmossdk.io/store/types" - "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/testutil" - "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" @@ -32,6 +28,10 @@ func (ms mockSubspace) GetParamSet(ctx sdk.Context, ps paramtypes.ParamSet) { *ps.(*types.Params) = ms.ps } +// no-op required for type coercion +func (ms mockSubspace) Set(ctx sdk.Context, key []byte, value interface{}) { +} + func TestMigrate(t *testing.T) { cdc := moduletestutil.MakeTestEncodingConfig(staking.AppModuleBasic{}).Codec @@ -39,17 +39,6 @@ func TestMigrate(t *testing.T) { tKey := storetypes.NewTransientStoreKey("transient_test") ctx := testutil.DefaultContext(storeKey, tKey) store := ctx.KVStore(storeKey) - duplicateCreationHeight := int64(1) - - accAddrs := sims.CreateIncrementalAccounts(1) - accAddr := accAddrs[0] - - valAddrs := sims.ConvertAddrsToValAddrs(accAddrs) - valAddr := valAddrs[0] - - // creating 10 ubdEntries with same height and 10 ubdEntries with different creation height - err := createOldStateUnbonding(t, duplicateCreationHeight, valAddr, accAddr, cdc, store) - require.NoError(t, err) legacySubspace := newMockSubspace(types.DefaultParams()) @@ -73,71 +62,15 @@ func TestMigrate(t *testing.T) { require.NoError(t, v4.MigrateStore(ctx, store, cdc, legacySubspace)) } - ubd := getUBD(t, accAddr, valAddr, store, cdc) if tc.doMigration { var res types.Params bz := store.Get(v4.ParamsKey) require.NoError(t, cdc.Unmarshal(bz, &res)) require.Equal(t, legacySubspace.ps, res) - - // checking the updated balance for duplicateCreationHeight - for _, ubdEntry := range ubd.Entries { - if ubdEntry.CreationHeight == duplicateCreationHeight { - require.Equal(t, math.NewInt(100*10), ubdEntry.Balance) - break - } - } - require.Equal(t, 11, len(ubd.Entries)) + require.Equal(t, types.DefaultMinCommissionRate, legacySubspace.ps.MinCommissionRate) } else { require.Equal(t, true, true) - require.Equal(t, 20, len(ubd.Entries)) } }) } } - -// createOldStateUnbonding will create the ubd entries with duplicate heights -// 10 duplicate heights and 10 unique ubd with creation height -func createOldStateUnbonding(t *testing.T, creationHeight int64, valAddr sdk.ValAddress, accAddr sdk.AccAddress, cdc codec.BinaryCodec, store storetypes.KVStore) error { - unbondBalance := math.NewInt(100) - completionTime := time.Now() - ubdEntries := make([]types.UnbondingDelegationEntry, 0, 10) - - for i := int64(0); i < 10; i++ { - ubdEntry := types.UnbondingDelegationEntry{ - CreationHeight: creationHeight, - Balance: unbondBalance, - InitialBalance: unbondBalance, - CompletionTime: completionTime, - } - ubdEntries = append(ubdEntries, ubdEntry) - // creating more entries for testing the creation_heights - ubdEntry.CreationHeight = i + 2 - ubdEntry.CompletionTime = completionTime.Add(time.Minute * 10) - ubdEntries = append(ubdEntries, ubdEntry) - } - - ubd := types.UnbondingDelegation{ - ValidatorAddress: valAddr.String(), - DelegatorAddress: accAddr.String(), - Entries: ubdEntries, - } - - // set the unbond delegation with validator and delegator - bz := types.MustMarshalUBD(cdc, ubd) - key := getUBDKey(accAddr, valAddr) - store.Set(key, bz) - return nil -} - -func getUBD(t *testing.T, accAddr sdk.AccAddress, valAddr sdk.ValAddress, store storetypes.KVStore, cdc codec.BinaryCodec) types.UnbondingDelegation { - // get the unbonding delegations - var ubdRes types.UnbondingDelegation - ubdbz := store.Get(getUBDKey(accAddr, valAddr)) - require.NoError(t, cdc.Unmarshal(ubdbz, &ubdRes)) - return ubdRes -} - -func getUBDKey(accAddr sdk.AccAddress, valAddr sdk.ValAddress) []byte { - return types.GetUBDKey(accAddr, valAddr) -} diff --git a/x/staking/migrations/v4/store.go b/x/staking/migrations/v4/store.go index a41069a09efa..d7cece09578b 100644 --- a/x/staking/migrations/v4/store.go +++ b/x/staking/migrations/v4/store.go @@ -1,17 +1,21 @@ package v4 import ( - "sort" - - sdkmath "cosmossdk.io/math" storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" + paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" "github.com/cosmos/cosmos-sdk/x/staking/exported" "github.com/cosmos/cosmos-sdk/x/staking/types" ) +// subspace contains the method needed for migrations of the legacy Params subspace +type subspace interface { + GetParamSet(ctx sdk.Context, ps paramtypes.ParamSet) + Set(ctx sdk.Context, key []byte, value interface{}) +} + // MigrateStore performs in-place store migrations from v3 to v4. func MigrateStore(ctx sdk.Context, store storetypes.KVStore, cdc codec.BinaryCodec, legacySubspace exported.Subspace) error { // migrate params @@ -19,18 +23,21 @@ func MigrateStore(ctx sdk.Context, store storetypes.KVStore, cdc codec.BinaryCod return err } - // migrate unbonding delegations - if err := migrateUBDEntries(ctx, store, cdc, legacySubspace); err != nil { - return err - } - return nil } // migrateParams will set the params to store from legacySubspace func migrateParams(ctx sdk.Context, store storetypes.KVStore, cdc codec.BinaryCodec, legacySubspace exported.Subspace) error { var legacyParams types.Params - legacySubspace.GetParamSet(ctx, &legacyParams) + + // cast to type that implements .Set() + // KeyMinCommissionRate was not added in v3 migration in the LSM line + // we need to be set it to avoid unmarshalling errs + extendedLegacySubspace := legacySubspace.(subspace) + extendedLegacySubspace.Set(ctx, types.KeyMinCommissionRate, types.DefaultMinCommissionRate) + + // get all params after setting MinCommissionRate + extendedLegacySubspace.GetParamSet(ctx, &legacyParams) if err := legacyParams.Validate(); err != nil { return err @@ -40,61 +47,3 @@ func migrateParams(ctx sdk.Context, store storetypes.KVStore, cdc codec.BinaryCo store.Set(types.ParamsKey, bz) return nil } - -// migrateUBDEntries will remove the ubdEntries with same creation_height -// and create a new ubdEntry with updated balance and initial_balance -func migrateUBDEntries(ctx sdk.Context, store storetypes.KVStore, cdc codec.BinaryCodec, legacySubspace exported.Subspace) error { - iterator := storetypes.KVStorePrefixIterator(store, types.UnbondingDelegationKey) - defer iterator.Close() - - for ; iterator.Valid(); iterator.Next() { - ubd := types.MustUnmarshalUBD(cdc, iterator.Value()) - - entriesAtSameCreationHeight := make(map[int64][]types.UnbondingDelegationEntry) - for _, ubdEntry := range ubd.Entries { - entriesAtSameCreationHeight[ubdEntry.CreationHeight] = append(entriesAtSameCreationHeight[ubdEntry.CreationHeight], ubdEntry) - } - - creationHeights := make([]int64, 0, len(entriesAtSameCreationHeight)) - for k := range entriesAtSameCreationHeight { - creationHeights = append(creationHeights, k) - } - - sort.Slice(creationHeights, func(i, j int) bool { return creationHeights[i] < creationHeights[j] }) - - ubd.Entries = make([]types.UnbondingDelegationEntry, 0, len(creationHeights)) - - for _, h := range creationHeights { - ubdEntry := types.UnbondingDelegationEntry{ - Balance: sdkmath.ZeroInt(), - InitialBalance: sdkmath.ZeroInt(), - } - for _, entry := range entriesAtSameCreationHeight[h] { - ubdEntry.Balance = ubdEntry.Balance.Add(entry.Balance) - ubdEntry.InitialBalance = ubdEntry.InitialBalance.Add(entry.InitialBalance) - ubdEntry.CreationHeight = entry.CreationHeight - ubdEntry.CompletionTime = entry.CompletionTime - } - ubd.Entries = append(ubd.Entries, ubdEntry) - } - - // set the new ubd to the store - setUBDToStore(ctx, store, cdc, ubd) - } - return nil -} - -func setUBDToStore(ctx sdk.Context, store storetypes.KVStore, cdc codec.BinaryCodec, ubd types.UnbondingDelegation) { - delegatorAddress := sdk.MustAccAddressFromBech32(ubd.DelegatorAddress) - - bz := types.MustMarshalUBD(cdc, ubd) - - addr, err := sdk.ValAddressFromBech32(ubd.ValidatorAddress) - if err != nil { - panic(err) - } - - key := types.GetUBDKey(delegatorAddress, addr) - - store.Set(key, bz) -} diff --git a/x/staking/simulation/genesis.go b/x/staking/simulation/genesis.go index 08cc7dd05c20..1c045f85f3ca 100644 --- a/x/staking/simulation/genesis.go +++ b/x/staking/simulation/genesis.go @@ -16,9 +16,12 @@ import ( // Simulation parameter constants const ( - unbondingTime = "unbonding_time" - maxValidators = "max_validators" - historicalEntries = "historical_entries" + UnbondingTime = "unbonding_time" + MaxValidators = "max_validators" + HistoricalEntries = "historical_entries" + ValidatorBondFactor = "validator_bond_factor" + GlobalLiquidStakingCap = "global_liquid_staking_cap" + ValidatorLiquidStakingCap = "validator_liquid_staking_cap" ) // genUnbondingTime returns randomized UnbondingTime @@ -36,26 +39,60 @@ func getHistEntries(r *rand.Rand) uint32 { return uint32(r.Intn(int(types.DefaultHistoricalEntries + 1))) } +// getGlobalLiquidStakingCap returns randomized GlobalLiquidStakingCap between 0-1. +func getGlobalLiquidStakingCap(r *rand.Rand) sdkmath.LegacyDec { + return simulation.RandomDecAmount(r, sdkmath.LegacyOneDec()) +} + +// getValidatorLiquidStakingCap returns randomized ValidatorLiquidStakingCap between 0-1. +func getValidatorLiquidStakingCap(r *rand.Rand) sdkmath.LegacyDec { + return simulation.RandomDecAmount(r, sdkmath.LegacyOneDec()) +} + +// getValidatorBondFactor returns randomized ValidatorBondCap between -1 and 300. +func getValidatorBondFactor(r *rand.Rand) sdkmath.LegacyDec { + return sdkmath.LegacyNewDec(int64(simulation.RandIntBetween(r, -1, 300))) +} + // RandomizedGenState generates a random GenesisState for staking func RandomizedGenState(simState *module.SimulationState) { // params var ( - unbondTime time.Duration - maxVals uint32 - histEntries uint32 - minCommissionRate sdkmath.LegacyDec + unbondingTime time.Duration + maxValidators uint32 + historicalEntries uint32 + minCommissionRate sdkmath.LegacyDec + validatorBondFactor sdkmath.LegacyDec + globalLiquidStakingCap sdkmath.LegacyDec + validatorLiquidStakingCap sdkmath.LegacyDec ) - simState.AppParams.GetOrGenerate(unbondingTime, &unbondTime, simState.Rand, func(r *rand.Rand) { unbondTime = genUnbondingTime(r) }) + simState.AppParams.GetOrGenerate(UnbondingTime, &unbondingTime, simState.Rand, func(r *rand.Rand) { unbondingTime = genUnbondingTime(r) }) + + simState.AppParams.GetOrGenerate(MaxValidators, &maxValidators, simState.Rand, func(r *rand.Rand) { maxValidators = genMaxValidators(r) }) + + simState.AppParams.GetOrGenerate(HistoricalEntries, &historicalEntries, simState.Rand, func(r *rand.Rand) { historicalEntries = getHistEntries(r) }) - simState.AppParams.GetOrGenerate(maxValidators, &maxVals, simState.Rand, func(r *rand.Rand) { maxVals = genMaxValidators(r) }) + simState.AppParams.GetOrGenerate(ValidatorBondFactor, &validatorBondFactor, simState.Rand, func(r *rand.Rand) { validatorBondFactor = getValidatorBondFactor(r) }) - simState.AppParams.GetOrGenerate(historicalEntries, &histEntries, simState.Rand, func(r *rand.Rand) { histEntries = getHistEntries(r) }) + simState.AppParams.GetOrGenerate(GlobalLiquidStakingCap, &globalLiquidStakingCap, simState.Rand, func(r *rand.Rand) { globalLiquidStakingCap = getGlobalLiquidStakingCap(r) }) + + simState.AppParams.GetOrGenerate(ValidatorLiquidStakingCap, &validatorLiquidStakingCap, simState.Rand, func(r *rand.Rand) { validatorLiquidStakingCap = getValidatorLiquidStakingCap(r) }) // NOTE: the slashing module need to be defined after the staking module on the // NewSimulationManager constructor for this to work - simState.UnbondTime = unbondTime - params := types.NewParams(simState.UnbondTime, maxVals, 7, histEntries, simState.BondDenom, minCommissionRate) + simState.UnbondTime = unbondingTime + params := types.NewParams( + simState.UnbondTime, + maxValidators, + 7, + historicalEntries, + sdk.DefaultBondDenom, + minCommissionRate, + validatorBondFactor, + globalLiquidStakingCap, + validatorLiquidStakingCap, + ) // validators & delegations var ( diff --git a/x/staking/simulation/genesis_test.go b/x/staking/simulation/genesis_test.go index d3b74e5758fe..58cee688905b 100644 --- a/x/staking/simulation/genesis_test.go +++ b/x/staking/simulation/genesis_test.go @@ -64,10 +64,9 @@ func TestRandomizedGenState(t *testing.T) { require.Equal(t, "BOND_STATUS_UNBONDED", stakingGenesis.Validators[2].Status.String()) require.Equal(t, "1000", stakingGenesis.Validators[2].Tokens.String()) require.Equal(t, "1000.000000000000000000", stakingGenesis.Validators[2].DelegatorShares.String()) - require.Equal(t, "0.292059246265731326", stakingGenesis.Validators[2].Commission.CommissionRates.Rate.String()) - require.Equal(t, "0.330000000000000000", stakingGenesis.Validators[2].Commission.CommissionRates.MaxRate.String()) - require.Equal(t, "0.038337453731274481", stakingGenesis.Validators[2].Commission.CommissionRates.MaxChangeRate.String()) - require.Equal(t, "1", stakingGenesis.Validators[2].MinSelfDelegation.String()) + require.Equal(t, "0.019527679037870745", stakingGenesis.Validators[2].Commission.CommissionRates.Rate.String()) + require.Equal(t, "0.240000000000000000", stakingGenesis.Validators[2].Commission.CommissionRates.MaxRate.String()) + require.Equal(t, "0.240000000000000000", stakingGenesis.Validators[2].Commission.CommissionRates.MaxChangeRate.String()) } // TestRandomizedGenState1 tests abnormal scenarios of applying RandomizedGenState. diff --git a/x/staking/simulation/operations.go b/x/staking/simulation/operations.go index 0776de5dbc45..8b23ee7bfe03 100644 --- a/x/staking/simulation/operations.go +++ b/x/staking/simulation/operations.go @@ -13,6 +13,7 @@ import ( "github.com/cosmos/cosmos-sdk/testutil" sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + vesting "github.com/cosmos/cosmos-sdk/x/auth/vesting/exported" "github.com/cosmos/cosmos-sdk/x/simulation" "github.com/cosmos/cosmos-sdk/x/staking/keeper" "github.com/cosmos/cosmos-sdk/x/staking/types" @@ -20,19 +21,31 @@ import ( // Simulation operation weights constants const ( - DefaultWeightMsgCreateValidator int = 100 - DefaultWeightMsgEditValidator int = 5 - DefaultWeightMsgDelegate int = 100 - DefaultWeightMsgUndelegate int = 100 - DefaultWeightMsgBeginRedelegate int = 100 - DefaultWeightMsgCancelUnbondingDelegation int = 100 - - OpWeightMsgCreateValidator = "op_weight_msg_create_validator" - OpWeightMsgEditValidator = "op_weight_msg_edit_validator" - OpWeightMsgDelegate = "op_weight_msg_delegate" - OpWeightMsgUndelegate = "op_weight_msg_undelegate" - OpWeightMsgBeginRedelegate = "op_weight_msg_begin_redelegate" - OpWeightMsgCancelUnbondingDelegation = "op_weight_msg_cancel_unbonding_delegation" + DefaultWeightMsgCreateValidator int = 100 + DefaultWeightMsgEditValidator int = 5 + DefaultWeightMsgDelegate int = 100 + DefaultWeightMsgUndelegate int = 100 + DefaultWeightMsgBeginRedelegate int = 100 + DefaultWeightMsgCancelUnbondingDelegation int = 100 + DefaultWeightMsgValidatorBond int = 100 + DefaultWeightMsgTokenizeShares int = 25 + DefaultWeightMsgRedeemTokensforShares int = 25 + DefaultWeightMsgTransferTokenizeShareRecord int = 5 + DefaultWeightMsgEnableTokenizeShares int = 1 + DefaultWeightMsgDisableTokenizeShares int = 1 + + OpWeightMsgCreateValidator = "op_weight_msg_create_validator" + OpWeightMsgEditValidator = "op_weight_msg_edit_validator" + OpWeightMsgDelegate = "op_weight_msg_delegate" + OpWeightMsgUndelegate = "op_weight_msg_undelegate" + OpWeightMsgBeginRedelegate = "op_weight_msg_begin_redelegate" + OpWeightMsgCancelUnbondingDelegation = "op_weight_msg_cancel_unbonding_delegation" + OpWeightMsgValidatorBond = "op_weight_msg_validator_bond" + OpWeightMsgTokenizeShares = "op_weight_msg_tokenize_shares" + OpWeightMsgRedeemTokensforShares = "op_weight_msg_redeem_tokens_for_shares" + OpWeightMsgTransferTokenizeShareRecord = "op_weight_msg_transfer_tokenize_share_record" + OpWeightMsgDisableTokenizeShares = "op_weight_msg_disable_tokenize_shares" + OpWeightMsgEnableTokenizeShares = "op_weight_msg_enable_tokenize_shares" ) // WeightedOperations returns all the operations from the module with their respective weights @@ -45,12 +58,18 @@ func WeightedOperations( k *keeper.Keeper, ) simulation.WeightedOperations { var ( - weightMsgCreateValidator int - weightMsgEditValidator int - weightMsgDelegate int - weightMsgUndelegate int - weightMsgBeginRedelegate int - weightMsgCancelUnbondingDelegation int + weightMsgCreateValidator int + weightMsgEditValidator int + weightMsgDelegate int + weightMsgUndelegate int + weightMsgBeginRedelegate int + weightMsgCancelUnbondingDelegation int + weightMsgValidatorBond int + weightMsgTokenizeShares int + weightMsgRedeemTokensforShares int + weightMsgTransferTokenizeShareRecord int + weightMsgDisableTokenizeShares int + weightMsgEnableTokenizeShares int ) appParams.GetOrGenerate(OpWeightMsgCreateValidator, &weightMsgCreateValidator, nil, func(_ *rand.Rand) { @@ -77,6 +96,42 @@ func WeightedOperations( weightMsgCancelUnbondingDelegation = DefaultWeightMsgCancelUnbondingDelegation }) + appParams.GetOrGenerate(OpWeightMsgValidatorBond, &weightMsgValidatorBond, nil, + func(_ *rand.Rand) { + weightMsgValidatorBond = DefaultWeightMsgValidatorBond + }, + ) + + appParams.GetOrGenerate(OpWeightMsgTokenizeShares, &weightMsgTokenizeShares, nil, + func(_ *rand.Rand) { + weightMsgTokenizeShares = DefaultWeightMsgTokenizeShares + }, + ) + + appParams.GetOrGenerate(OpWeightMsgRedeemTokensforShares, &weightMsgRedeemTokensforShares, nil, + func(_ *rand.Rand) { + weightMsgRedeemTokensforShares = DefaultWeightMsgRedeemTokensforShares + }, + ) + + appParams.GetOrGenerate(OpWeightMsgTransferTokenizeShareRecord, &weightMsgTransferTokenizeShareRecord, nil, + func(_ *rand.Rand) { + weightMsgTransferTokenizeShareRecord = DefaultWeightMsgTransferTokenizeShareRecord + }, + ) + + appParams.GetOrGenerate(OpWeightMsgDisableTokenizeShares, &weightMsgDisableTokenizeShares, nil, + func(_ *rand.Rand) { + weightMsgDisableTokenizeShares = DefaultWeightMsgDisableTokenizeShares + }, + ) + + appParams.GetOrGenerate(OpWeightMsgEnableTokenizeShares, &weightMsgEnableTokenizeShares, nil, + func(_ *rand.Rand) { + weightMsgEnableTokenizeShares = DefaultWeightMsgEnableTokenizeShares + }, + ) + return simulation.WeightedOperations{ simulation.NewWeightedOperation( weightMsgCreateValidator, @@ -102,6 +157,30 @@ func WeightedOperations( weightMsgCancelUnbondingDelegation, SimulateMsgCancelUnbondingDelegate(txGen, ak, bk, k), ), + simulation.NewWeightedOperation( + weightMsgValidatorBond, + SimulateMsgValidatorBond(txGen, ak, bk, k), + ), + simulation.NewWeightedOperation( + weightMsgTokenizeShares, + SimulateMsgTokenizeShares(txGen, ak, bk, k), + ), + simulation.NewWeightedOperation( + weightMsgRedeemTokensforShares, + SimulateMsgRedeemTokensforShares(txGen, ak, bk, k), + ), + simulation.NewWeightedOperation( + weightMsgTransferTokenizeShareRecord, + SimulateMsgTransferTokenizeShareRecord(txGen, ak, bk, k), + ), + simulation.NewWeightedOperation( + weightMsgDisableTokenizeShares, + SimulateMsgDisableTokenizeShares(txGen, ak, bk, k), + ), + simulation.NewWeightedOperation( + weightMsgEnableTokenizeShares, + SimulateMsgEnableTokenizeShares(txGen, ak, bk, k), + ), } } @@ -171,7 +250,7 @@ func SimulateMsgCreateValidator( simtypes.RandomDecAmount(r, maxCommission), ) - msg, err := types.NewMsgCreateValidator(address.String(), simAccount.ConsKey.PubKey(), selfDelegation, description, commission, math.OneInt()) + msg, err := types.NewMsgCreateValidator(address.String(), simAccount.ConsKey.PubKey(), selfDelegation, description, commission) if err != nil { return simtypes.NoOpMsg(types.ModuleName, sdk.MsgTypeURL(msg), "unable to create CreateValidator message"), nil, err } @@ -247,7 +326,7 @@ func SimulateMsgEditValidator( simtypes.RandStringOfLength(r, 10), ) - msg := types.NewMsgEditValidator(address, description, &newCommissionRate, nil) + msg := types.NewMsgEditValidator(address, description, &newCommissionRate) txCtx := simulation.OperationInput{ R: r, @@ -421,6 +500,24 @@ func SimulateMsgUndelegate( return simtypes.NoOpMsg(types.ModuleName, msgType, "bond denom not found"), nil, err } + // if delegation is a validator bond, make sure the decrease wont cause the validator bond cap to be exceeded + if delegation.ValidatorBond { + shares, err := val.SharesFromTokens(unbondAmt) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "unable to calculate shares from tokens"), nil, nil + } + + validatorBondFactor, err := k.ValidatorBondFactor(ctx) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "unable to get validator bond factor"), nil, err + } + + maxValTotalShare := val.ValidatorBondShares.Sub(shares).Mul(validatorBondFactor) + if val.LiquidShares.GT(maxValTotalShare) { + return simtypes.NoOpMsg(types.ModuleName, msgType, "unbonding validator bond exceeds cap"), nil, nil + } + } + msg := types.NewMsgUndelegate( delAddr, val.GetOperator(), sdk.NewCoin(bondDenom, unbondAmt), ) @@ -660,6 +757,19 @@ func SimulateMsgBeginRedelegate( return simtypes.NoOpMsg(types.ModuleName, msgType, "shares truncate to zero"), nil, nil // skip } + // if delegation is a validator bond, make sure the decrease wont cause the validator bond cap to be exceeded + if delegation.ValidatorBond { + validatorBondFactor, err := k.ValidatorBondFactor(ctx) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "unable to get validator bond factor"), nil, err + } + + maxValTotalShare := srcVal.ValidatorBondShares.Sub(shares).Mul(validatorBondFactor) + if srcVal.LiquidShares.GT(maxValTotalShare) { + return simtypes.NoOpMsg(types.ModuleName, msgType, "source validator bond exceeds cap"), nil, nil + } + } + // need to retrieve the simulation account associated with delegation to retrieve PrivKey var simAccount simtypes.Account @@ -705,3 +815,498 @@ func SimulateMsgBeginRedelegate( return simulation.GenAndDeliverTxWithRandFees(txCtx) } } + +func SimulateMsgValidatorBond(txGen client.TxConfig, ak types.AccountKeeper, bk types.BankKeeper, k *keeper.Keeper) simtypes.Operation { + return func( + r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, + ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { + msgType := sdk.MsgTypeURL(&types.MsgValidatorBond{}) + + vals, err := k.GetAllValidators(ctx) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "unable to get validators"), nil, err + } + + // get random validator + validator, ok := testutil.RandSliceElem(r, vals) + if !ok { + return simtypes.NoOpMsg(types.ModuleName, msgType, "unable to pick validator"), nil, nil + } + + valAddr, err := k.ValidatorAddressCodec().StringToBytes(validator.GetOperator()) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "error getting validator address bytes"), nil, err + } + + delegations, err := k.GetValidatorDelegations(ctx, valAddr) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "error getting validator delegations"), nil, nil + } + + if delegations == nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "keeper does have any delegation entries"), nil, nil + } + + // get random delegator from validator + delegation := delegations[r.Intn(len(delegations))] + delAddr := delegation.GetDelegatorAddr() + delAddrBz, err := ak.AddressCodec().StringToBytes(delAddr) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "error getting delegator address bytes"), nil, err + } + + totalBond := validator.TokensFromShares(delegation.GetShares()).TruncateInt() + if !totalBond.IsPositive() { + return simtypes.NoOpMsg(types.ModuleName, msgType, "total bond is negative"), nil, nil + } + + // submit validator bond + msg := &types.MsgValidatorBond{ + DelegatorAddress: delAddr, + ValidatorAddress: validator.GetOperator(), + } + + // need to retrieve the simulation account associated with delegation to retrieve PrivKey + var simAccount simtypes.Account + + for _, simAcc := range accs { + if simAcc.Address.Equals(sdk.AccAddress(delAddrBz)) { + simAccount = simAcc + break + } + } + // if simaccount.PrivKey == nil, delegation address does not exist in accs. Return error + if simAccount.PrivKey == nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "account private key is nil"), nil, nil + } + + account := ak.GetAccount(ctx, sdk.AccAddress(delAddrBz)) + spendable := bk.SpendableCoins(ctx, account.GetAddress()) + + txCtx := simulation.OperationInput{ + R: r, + App: app, + TxGen: txGen, + Cdc: nil, + Msg: msg, + Context: ctx, + SimAccount: simAccount, + AccountKeeper: ak, + Bankkeeper: bk, + ModuleName: types.ModuleName, + CoinsSpentInMsg: spendable, + } + return simulation.GenAndDeliverTxWithRandFees(txCtx) + } +} + +// SimulateMsgTokenizeShares generates a MsgTokenizeShares with random values +func SimulateMsgTokenizeShares(txGen client.TxConfig, ak types.AccountKeeper, bk types.BankKeeper, k *keeper.Keeper) simtypes.Operation { + return func( + r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, + ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { + msgType := sdk.MsgTypeURL(&types.MsgTokenizeShares{}) + + vals, err := k.GetAllValidators(ctx) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "unable to get validators"), nil, err + } + + // get random validator + validator, ok := testutil.RandSliceElem(r, vals) + if !ok { + return simtypes.NoOpMsg(types.ModuleName, msgType, "unable to pick validator"), nil, nil + } + + valAddr, err := k.ValidatorAddressCodec().StringToBytes(validator.GetOperator()) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "error getting validator address bytes"), nil, err + } + + delegations, err := k.GetValidatorDelegations(ctx, valAddr) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "error getting validator delegations"), nil, nil + } + + if delegations == nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "keeper does have any delegation entries"), nil, nil + } + + // get random delegator from src validator + delegation := delegations[r.Intn(len(delegations))] + delAddr := delegation.GetDelegatorAddr() + delAddrBz, err := ak.AddressCodec().StringToBytes(delAddr) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "error getting delegator address bytes"), nil, err + } + + // make sure delegation is not a validator bond + if delegation.ValidatorBond { + return simtypes.NoOpMsg(types.ModuleName, msgType, "can't tokenize a validator bond"), nil, nil + } + + // make sure tokenizations are not disabled + lockStatus, _ := k.GetTokenizeSharesLock(ctx, sdk.AccAddress(delAddrBz)) + if lockStatus != types.TOKENIZE_SHARE_LOCK_STATUS_UNLOCKED { + return simtypes.NoOpMsg(types.ModuleName, msgType, "tokenize shares disabled"), nil, nil + } + + // Make sure that the delegator has no ongoing redelegations to the validator + found, err := k.HasReceivingRedelegation(ctx, delAddrBz, valAddr) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "error checking receiving redelegation"), nil, err + } + if found { + return simtypes.NoOpMsg(types.ModuleName, msgType, "delegator has redelegations in progress"), nil, nil + } + + // get random destination validator + totalBond := validator.TokensFromShares(delegation.GetShares()).TruncateInt() + if !totalBond.IsPositive() { + return simtypes.NoOpMsg(types.ModuleName, msgType, "total bond is negative"), nil, nil + } + + tokenizeShareAmt, err := simtypes.RandPositiveInt(r, totalBond) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "unable to generate positive amount"), nil, err + } + + if tokenizeShareAmt.IsZero() { + return simtypes.NoOpMsg(types.ModuleName, msgType, "amount is zero"), nil, nil + } + + bondDenom, err := k.BondDenom(ctx) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "failed to find bond denom"), nil, err + } + + account := ak.GetAccount(ctx, sdk.AccAddress(delAddrBz)) + if account, ok := account.(vesting.VestingAccount); ok { + if tokenizeShareAmt.GT(account.GetDelegatedFree().AmountOf(bondDenom)) { + return simtypes.NoOpMsg(types.ModuleName, msgType, "account vests and amount exceeds free portion"), nil, nil + } + } + + // check if the shares truncate to zero + shares, err := validator.SharesFromTokens(tokenizeShareAmt) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "invalid shares"), nil, err + } + + if validator.TokensFromShares(shares).TruncateInt().IsZero() { + return simtypes.NoOpMsg(types.ModuleName, msgType, "shares truncate to zero"), nil, nil // skip + } + + // check that tokenization would not exceed global cap + params, err := k.GetParams(ctx) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "failed to get params"), nil, err + } + + totalBondedTokens, err := k.TotalBondedTokens(ctx) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "failed to get total bonded errors"), nil, err + } + + totalStaked := math.LegacyNewDecFromInt(totalBondedTokens) + if totalStaked.IsZero() { + return simtypes.NoOpMsg(types.ModuleName, msgType, "cannot happened - no validators bonded if stake is 0.0"), nil, nil // skip + } + totalLiquidStaked := math.LegacyNewDecFromInt(k.GetTotalLiquidStakedTokens(ctx).Add(tokenizeShareAmt)) + liquidStakedPercent := totalLiquidStaked.Quo(totalStaked) + if liquidStakedPercent.GT(params.GlobalLiquidStakingCap) { + return simtypes.NoOpMsg(types.ModuleName, msgType, "global liquid staking cap exceeded"), nil, nil + } + + // check that tokenization would not exceed validator liquid staking cap + validatorTotalShares := validator.DelegatorShares + validatorLiquidShares := validator.LiquidShares.Add(shares) + validatorLiquidSharesPercent := validatorLiquidShares.Quo(validatorTotalShares) + if validatorLiquidSharesPercent.GT(params.ValidatorLiquidStakingCap) { + return simtypes.NoOpMsg(types.ModuleName, msgType, "validator liquid staking cap exceeded"), nil, nil + } + + // check that tokenization would not exceed validator bond cap + maxValidatorLiquidShares := validator.ValidatorBondShares.Mul(params.ValidatorBondFactor) + if validator.LiquidShares.Add(shares).GT(maxValidatorLiquidShares) { + return simtypes.NoOpMsg(types.ModuleName, msgType, "validator bond cap exceeded"), nil, nil + } + + // need to retrieve the simulation account associated with delegation to retrieve PrivKey + var simAccount simtypes.Account + + for _, simAcc := range accs { + if simAcc.Address.Equals(sdk.AccAddress(delAddrBz)) { + simAccount = simAcc + break + } + } + + // if simaccount.PrivKey == nil, delegation address does not exist in accs. Return error + if simAccount.PrivKey == nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "account private key is nil"), nil, nil + } + + msg := &types.MsgTokenizeShares{ + DelegatorAddress: delAddr, + ValidatorAddress: validator.GetOperator(), + Amount: sdk.NewCoin(bondDenom, tokenizeShareAmt), + TokenizedShareOwner: delAddr, + } + + spendable := bk.SpendableCoins(ctx, account.GetAddress()) + + txCtx := simulation.OperationInput{ + R: r, + App: app, + TxGen: txGen, + Cdc: nil, + Msg: msg, + Context: ctx, + SimAccount: simAccount, + AccountKeeper: ak, + Bankkeeper: bk, + ModuleName: types.ModuleName, + CoinsSpentInMsg: spendable, + } + + return simulation.GenAndDeliverTxWithRandFees(txCtx) + } +} + +// SimulateMsgRedeemTokensforShares generates a MsgRedeemTokensforShares with random values +func SimulateMsgRedeemTokensforShares(txGen client.TxConfig, ak types.AccountKeeper, bk types.BankKeeper, k *keeper.Keeper) simtypes.Operation { + return func( + r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, + ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { + msgType := sdk.MsgTypeURL(&types.MsgRedeemTokensForShares{}) + + redeemUser := simtypes.Account{} + redeemCoin := sdk.Coin{} + tokenizeShareRecord := types.TokenizeShareRecord{} + + records := k.GetAllTokenizeShareRecords(ctx) + if len(records) > 0 { + record := records[r.Intn(len(records))] + for _, acc := range accs { + balance := bk.GetBalance(ctx, acc.Address, record.GetShareTokenDenom()) + if balance.Amount.IsPositive() { + redeemUser = acc + redeemAmount, err := simtypes.RandPositiveInt(r, balance.Amount) + if err == nil { + redeemCoin = sdk.NewCoin(record.GetShareTokenDenom(), redeemAmount) + tokenizeShareRecord = record + } + break + } + } + } + + // if redeemUser.PrivKey == nil, redeem user does not exist in accs + if redeemUser.PrivKey == nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "account private key is nil"), nil, nil + } + + if redeemCoin.Amount.IsZero() { + return simtypes.NoOpMsg(types.ModuleName, msgType, "empty balance in tokens"), nil, nil + } + + valAddress, err := k.ValidatorAddressCodec().StringToBytes(tokenizeShareRecord.Validator) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "invalid validator address"), nil, fmt.Errorf("invalid validator address") + } + validator, err := k.GetValidator(ctx, valAddress) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "validator not found"), nil, fmt.Errorf("validator not found") + } + delegation, err := k.GetDelegation(ctx, tokenizeShareRecord.GetModuleAddress(), valAddress) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "delegation not found"), nil, fmt.Errorf("delegation not found") + } + + // prevent redemption that returns a 0 amount + shares := math.LegacyNewDecFromInt(redeemCoin.Amount) + if redeemCoin.Amount.Equal(delegation.Shares.TruncateInt()) { + shares = delegation.Shares + } + + if validator.TokensFromShares(shares).TruncateInt().IsZero() { + return simtypes.NoOpMsg(types.ModuleName, msgType, "zero tokens returned"), nil, nil + } + + account := ak.GetAccount(ctx, redeemUser.Address) + spendable := bk.SpendableCoins(ctx, account.GetAddress()) + + msg := &types.MsgRedeemTokensForShares{ + DelegatorAddress: redeemUser.Address.String(), + Amount: redeemCoin, + } + + txCtx := simulation.OperationInput{ + R: r, + App: app, + TxGen: txGen, + Cdc: nil, + Msg: msg, + Context: ctx, + SimAccount: redeemUser, + AccountKeeper: ak, + Bankkeeper: bk, + ModuleName: types.ModuleName, + CoinsSpentInMsg: spendable, + } + + return simulation.GenAndDeliverTxWithRandFees(txCtx) + } +} + +// SimulateMsgTransferTokenizeShareRecord generates a MsgTransferTokenizeShareRecord with random values +func SimulateMsgTransferTokenizeShareRecord(txGen client.TxConfig, ak types.AccountKeeper, bk types.BankKeeper, k *keeper.Keeper) simtypes.Operation { + return func( + r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, + ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { + msgType := sdk.MsgTypeURL(&types.MsgTransferTokenizeShareRecord{}) + + simAccount, _ := simtypes.RandomAcc(r, accs) + destAccount, _ := simtypes.RandomAcc(r, accs) + transferRecord := types.TokenizeShareRecord{} + + records := k.GetAllTokenizeShareRecords(ctx) + if len(records) > 0 { + record := records[r.Intn(len(records))] + for _, acc := range accs { + if record.Owner == acc.Address.String() { + simAccount = acc + transferRecord = record + break + } + } + } + + // if simAccount.PrivKey == nil, record owner does not exist in accs + if simAccount.PrivKey == nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "account private key is nil"), nil, nil + } + + if transferRecord.Id == 0 { + return simtypes.NoOpMsg(types.ModuleName, msgType, "share record not found"), nil, nil + } + + account := ak.GetAccount(ctx, simAccount.Address) + spendable := bk.SpendableCoins(ctx, account.GetAddress()) + + msg := &types.MsgTransferTokenizeShareRecord{ + TokenizeShareRecordId: transferRecord.Id, + Sender: simAccount.Address.String(), + NewOwner: destAccount.Address.String(), + } + + txCtx := simulation.OperationInput{ + R: r, + App: app, + TxGen: txGen, + Cdc: nil, + Msg: msg, + Context: ctx, + SimAccount: simAccount, + AccountKeeper: ak, + Bankkeeper: bk, + ModuleName: types.ModuleName, + CoinsSpentInMsg: spendable, + } + + return simulation.GenAndDeliverTxWithRandFees(txCtx) + } +} + +func SimulateMsgDisableTokenizeShares(txGen client.TxConfig, ak types.AccountKeeper, bk types.BankKeeper, k *keeper.Keeper) simtypes.Operation { + return func( + r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, + ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { + msgType := sdk.MsgTypeURL(&types.MsgDisableTokenizeShares{}) + simAccount, _ := simtypes.RandomAcc(r, accs) + + if simAccount.PrivKey == nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "account private key is nil"), nil, nil + } + + denom, err := k.BondDenom(ctx) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "bond denom not found"), nil, err + } + + balance := bk.GetBalance(ctx, simAccount.Address, denom).Amount + if !balance.IsPositive() { + return simtypes.NoOpMsg(types.ModuleName, msgType, "balance is negative"), nil, nil + } + + lockStatus, _ := k.GetTokenizeSharesLock(ctx, simAccount.Address) + if lockStatus == types.TOKENIZE_SHARE_LOCK_STATUS_LOCKED { + return simtypes.NoOpMsg(types.ModuleName, msgType, "account already locked"), nil, nil + } + + msg := &types.MsgDisableTokenizeShares{ + DelegatorAddress: simAccount.Address.String(), + } + + txCtx := simulation.OperationInput{ + R: r, + App: app, + TxGen: txGen, + Cdc: nil, + Msg: msg, + Context: ctx, + SimAccount: simAccount, + AccountKeeper: ak, + Bankkeeper: bk, + ModuleName: types.ModuleName, + } + return simulation.GenAndDeliverTxWithRandFees(txCtx) + } +} + +func SimulateMsgEnableTokenizeShares(txGen client.TxConfig, ak types.AccountKeeper, bk types.BankKeeper, k *keeper.Keeper) simtypes.Operation { + return func( + r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, + ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { + msgType := sdk.MsgTypeURL(&types.MsgEnableTokenizeShares{}) + simAccount, _ := simtypes.RandomAcc(r, accs) + + if simAccount.PrivKey == nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "account private key is nil"), nil, nil + } + + denom, err := k.BondDenom(ctx) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msgType, "bond denom not found"), nil, err + } + + balance := bk.GetBalance(ctx, simAccount.Address, denom).Amount + if !balance.IsPositive() { + return simtypes.NoOpMsg(types.ModuleName, msgType, "balance is negative"), nil, nil + } + + lockStatus, _ := k.GetTokenizeSharesLock(ctx, simAccount.Address) + if lockStatus != types.TOKENIZE_SHARE_LOCK_STATUS_LOCKED { + return simtypes.NoOpMsg(types.ModuleName, msgType, "account is not locked"), nil, nil + } + + msg := &types.MsgEnableTokenizeShares{ + DelegatorAddress: simAccount.Address.String(), + } + + txCtx := simulation.OperationInput{ + R: r, + App: app, + TxGen: txGen, + Cdc: nil, + Msg: msg, + Context: ctx, + SimAccount: simAccount, + AccountKeeper: ak, + Bankkeeper: bk, + ModuleName: types.ModuleName, + } + return simulation.GenAndDeliverTxWithRandFees(txCtx) + } +} diff --git a/x/staking/simulation/operations_test.go b/x/staking/simulation/operations_test.go index f85060319792..c7f6faa4232b 100644 --- a/x/staking/simulation/operations_test.go +++ b/x/staking/simulation/operations_test.go @@ -144,6 +144,12 @@ func (s *SimTestSuite) TestWeightedOperations() { {simulation.DefaultWeightMsgUndelegate, types.ModuleName, sdk.MsgTypeURL(&types.MsgUndelegate{})}, {simulation.DefaultWeightMsgBeginRedelegate, types.ModuleName, sdk.MsgTypeURL(&types.MsgBeginRedelegate{})}, {simulation.DefaultWeightMsgCancelUnbondingDelegation, types.ModuleName, sdk.MsgTypeURL(&types.MsgCancelUnbondingDelegation{})}, + {simulation.DefaultWeightMsgValidatorBond, types.ModuleName, sdk.MsgTypeURL(&types.MsgValidatorBond{})}, + {simulation.DefaultWeightMsgTokenizeShares, types.ModuleName, sdk.MsgTypeURL(&types.MsgTokenizeShares{})}, + {simulation.DefaultWeightMsgRedeemTokensforShares, types.ModuleName, sdk.MsgTypeURL(&types.MsgRedeemTokensForShares{})}, + {simulation.DefaultWeightMsgTransferTokenizeShareRecord, types.ModuleName, sdk.MsgTypeURL(&types.MsgTransferTokenizeShareRecord{})}, + {simulation.DefaultWeightMsgDisableTokenizeShares, types.ModuleName, sdk.MsgTypeURL(&types.MsgDisableTokenizeShares{})}, + {simulation.DefaultWeightMsgEnableTokenizeShares, types.ModuleName, sdk.MsgTypeURL(&types.MsgEnableTokenizeShares{})}, } for i, w := range weightedOps { diff --git a/x/staking/testutil/expected_keepers_mocks.go b/x/staking/testutil/expected_keepers_mocks.go index dbea937f07f5..68fb6ecee94e 100644 --- a/x/staking/testutil/expected_keepers_mocks.go +++ b/x/staking/testutil/expected_keepers_mocks.go @@ -226,6 +226,62 @@ func (mr *MockBankKeeperMockRecorder) LockedCoins(ctx, addr interface{}) *gomock return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "LockedCoins", reflect.TypeOf((*MockBankKeeper)(nil).LockedCoins), ctx, addr) } +// MintCoins mocks base method. +func (m *MockBankKeeper) MintCoins(cts context.Context, name string, amt types.Coins) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "MintCoins", cts, name, amt) + ret0, _ := ret[0].(error) + return ret0 +} + +// MintCoins indicates an expected call of MintCoins. +func (mr *MockBankKeeperMockRecorder) MintCoins(cts, name, amt interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MintCoins", reflect.TypeOf((*MockBankKeeper)(nil).MintCoins), cts, name, amt) +} + +// SendCoins mocks base method. +func (m *MockBankKeeper) SendCoins(ctx context.Context, fromAddr, toAddr types.AccAddress, amt types.Coins) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SendCoins", ctx, fromAddr, toAddr, amt) + ret0, _ := ret[0].(error) + return ret0 +} + +// SendCoins indicates an expected call of SendCoins. +func (mr *MockBankKeeperMockRecorder) SendCoins(ctx, fromAddr, toAddr, amt interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendCoins", reflect.TypeOf((*MockBankKeeper)(nil).SendCoins), ctx, fromAddr, toAddr, amt) +} + +// SendCoinsFromAccountToModule mocks base method. +func (m *MockBankKeeper) SendCoinsFromAccountToModule(ctx context.Context, senderAddr types.AccAddress, recipientModule string, amt types.Coins) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SendCoinsFromAccountToModule", ctx, senderAddr, recipientModule, amt) + ret0, _ := ret[0].(error) + return ret0 +} + +// SendCoinsFromAccountToModule indicates an expected call of SendCoinsFromAccountToModule. +func (mr *MockBankKeeperMockRecorder) SendCoinsFromAccountToModule(ctx, senderAddr, recipientModule, amt interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendCoinsFromAccountToModule", reflect.TypeOf((*MockBankKeeper)(nil).SendCoinsFromAccountToModule), ctx, senderAddr, recipientModule, amt) +} + +// SendCoinsFromModuleToAccount mocks base method. +func (m *MockBankKeeper) SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr types.AccAddress, amt types.Coins) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SendCoinsFromModuleToAccount", ctx, senderModule, recipientAddr, amt) + ret0, _ := ret[0].(error) + return ret0 +} + +// SendCoinsFromModuleToAccount indicates an expected call of SendCoinsFromModuleToAccount. +func (mr *MockBankKeeperMockRecorder) SendCoinsFromModuleToAccount(ctx, senderModule, recipientAddr, amt interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendCoinsFromModuleToAccount", reflect.TypeOf((*MockBankKeeper)(nil).SendCoinsFromModuleToAccount), ctx, senderModule, recipientAddr, amt) +} + // SendCoinsFromModuleToModule mocks base method. func (m *MockBankKeeper) SendCoinsFromModuleToModule(ctx context.Context, senderPool, recipientPool string, amt types.Coins) error { m.ctrl.T.Helper() @@ -696,6 +752,20 @@ func (mr *MockStakingHooksMockRecorder) BeforeDelegationSharesModified(ctx, delA return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BeforeDelegationSharesModified", reflect.TypeOf((*MockStakingHooks)(nil).BeforeDelegationSharesModified), ctx, delAddr, valAddr) } +// BeforeTokenizeShareRecordRemoved mocks base method. +func (m *MockStakingHooks) BeforeTokenizeShareRecordRemoved(ctx context.Context, recordID uint64) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "BeforeTokenizeShareRecordRemoved", ctx, recordID) + ret0, _ := ret[0].(error) + return ret0 +} + +// BeforeTokenizeShareRecordRemoved indicates an expected call of BeforeTokenizeShareRecordRemoved. +func (mr *MockStakingHooksMockRecorder) BeforeTokenizeShareRecordRemoved(ctx, recordID interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BeforeTokenizeShareRecordRemoved", reflect.TypeOf((*MockStakingHooks)(nil).BeforeTokenizeShareRecordRemoved), ctx, recordID) +} + // BeforeValidatorModified mocks base method. func (m *MockStakingHooks) BeforeValidatorModified(ctx context.Context, valAddr types.ValAddress) error { m.ctrl.T.Helper() diff --git a/x/staking/testutil/helpers.go b/x/staking/testutil/helpers.go index 515eb36e09ee..f8ad010a359b 100644 --- a/x/staking/testutil/helpers.go +++ b/x/staking/testutil/helpers.go @@ -51,7 +51,7 @@ func (sh *Helper) CreateValidatorWithValPower(addr sdk.ValAddress, pk cryptotype // CreateValidatorMsg returns a message used to create validator in this service. func (sh *Helper) CreateValidatorMsg(addr sdk.ValAddress, pk cryptotypes.PubKey, stakeAmount math.Int) *stakingtypes.MsgCreateValidator { coin := sdk.NewCoin(sh.Denom, stakeAmount) - msg, err := stakingtypes.NewMsgCreateValidator(addr.String(), pk, coin, stakingtypes.Description{}, sh.Commission, math.OneInt()) + msg, err := stakingtypes.NewMsgCreateValidator(addr.String(), pk, coin, stakingtypes.Description{}, sh.Commission) require.NoError(sh.t, err) return msg } @@ -62,7 +62,7 @@ func (sh *Helper) CreateValidatorWithMsg(ctx context.Context, msg *stakingtypes. } func (sh *Helper) createValidator(addr sdk.ValAddress, pk cryptotypes.PubKey, coin sdk.Coin, ok bool) { - msg, err := stakingtypes.NewMsgCreateValidator(addr.String(), pk, coin, stakingtypes.Description{Moniker: "TestValidator"}, sh.Commission, math.OneInt()) + msg, err := stakingtypes.NewMsgCreateValidator(addr.String(), pk, coin, stakingtypes.Description{Moniker: "TestValidator"}, sh.Commission) require.NoError(sh.t, err) res, err := sh.msgSrvr.CreateValidator(sh.Ctx, msg) if ok { diff --git a/x/staking/types/codec.go b/x/staking/types/codec.go index 60ee724fbbf2..9fa2b99f4871 100644 --- a/x/staking/types/codec.go +++ b/x/staking/types/codec.go @@ -19,6 +19,13 @@ func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { legacy.RegisterAminoMsg(cdc, &MsgBeginRedelegate{}, "cosmos-sdk/MsgBeginRedelegate") legacy.RegisterAminoMsg(cdc, &MsgCancelUnbondingDelegation{}, "cosmos-sdk/MsgCancelUnbondingDelegation") legacy.RegisterAminoMsg(cdc, &MsgUpdateParams{}, "cosmos-sdk/x/staking/MsgUpdateParams") + legacy.RegisterAminoMsg(cdc, &MsgValidatorBond{}, "cosmos-sdk/MsgValidatorBond") + legacy.RegisterAminoMsg(cdc, &MsgUnbondValidator{}, "cosmos-sdk/MsgUnbondValidator") + legacy.RegisterAminoMsg(cdc, &MsgTokenizeShares{}, "cosmos-sdk/MsgTokenizeShares") + legacy.RegisterAminoMsg(cdc, &MsgRedeemTokensForShares{}, "cosmos-sdk/MsgRedeemTokensForShares") + legacy.RegisterAminoMsg(cdc, &MsgTransferTokenizeShareRecord{}, "cosmos-sdk/MsgTransferTokenizeRecord") + legacy.RegisterAminoMsg(cdc, &MsgDisableTokenizeShares{}, "cosmos-sdk/MsgDisableTokenizeShares") + legacy.RegisterAminoMsg(cdc, &MsgEnableTokenizeShares{}, "cosmos-sdk/MsgEnableTokenizeShares") cdc.RegisterInterface((*isStakeAuthorization_Validators)(nil), nil) cdc.RegisterConcrete(&StakeAuthorization_AllowList{}, "cosmos-sdk/StakeAuthorization/AllowList", nil) @@ -37,6 +44,13 @@ func RegisterInterfaces(registry types.InterfaceRegistry) { &MsgBeginRedelegate{}, &MsgCancelUnbondingDelegation{}, &MsgUpdateParams{}, + &MsgValidatorBond{}, + &MsgUnbondValidator{}, + &MsgTokenizeShares{}, + &MsgRedeemTokensForShares{}, + &MsgTransferTokenizeShareRecord{}, + &MsgDisableTokenizeShares{}, + &MsgEnableTokenizeShares{}, ) registry.RegisterImplementations( (*authz.Authorization)(nil), diff --git a/x/staking/types/delegation.go b/x/staking/types/delegation.go index 3284316246f8..54acc1eda64a 100644 --- a/x/staking/types/delegation.go +++ b/x/staking/types/delegation.go @@ -291,11 +291,16 @@ func (d Redelegations) String() (out string) { // NewDelegationResp creates a new DelegationResponse instance func NewDelegationResp( - delegatorAddr, validatorAddr string, shares math.LegacyDec, balance sdk.Coin, + delegatorAddr, validatorAddr string, shares math.LegacyDec, validatorBond bool, balance sdk.Coin, ) DelegationResponse { return DelegationResponse{ - Delegation: NewDelegation(delegatorAddr, validatorAddr, shares), - Balance: balance, + Delegation: Delegation{ + DelegatorAddress: delegatorAddr, + ValidatorAddress: validatorAddr, + Shares: shares, + ValidatorBond: validatorBond, + }, + Balance: balance, } } diff --git a/x/staking/types/delegation_test.go b/x/staking/types/delegation_test.go index 3ce9d8b6c535..92842826dadb 100644 --- a/x/staking/types/delegation_test.go +++ b/x/staking/types/delegation_test.go @@ -81,9 +81,9 @@ func TestRedelegationString(t *testing.T) { func TestDelegationResponses(t *testing.T) { cdc := codec.NewLegacyAmino() - dr1 := types.NewDelegationResp(sdk.AccAddress(valAddr1).String(), valAddr2.String(), math.LegacyNewDec(5), + dr1 := types.NewDelegationResp(sdk.AccAddress(valAddr1).String(), valAddr2.String(), math.LegacyNewDec(5), false, sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(5))) - dr2 := types.NewDelegationResp(sdk.AccAddress(valAddr1).String(), valAddr3.String(), math.LegacyNewDec(5), + dr2 := types.NewDelegationResp(sdk.AccAddress(valAddr1).String(), valAddr3.String(), math.LegacyNewDec(5), false, sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(5))) drs := types.DelegationResponses{dr1, dr2} diff --git a/x/staking/types/errors.go b/x/staking/types/errors.go index 00441564352a..649aec33ecfe 100644 --- a/x/staking/types/errors.go +++ b/x/staking/types/errors.go @@ -4,48 +4,68 @@ import "cosmossdk.io/errors" // x/staking module sentinel errors var ( - ErrEmptyValidatorAddr = errors.Register(ModuleName, 2, "empty validator address") - ErrNoValidatorFound = errors.Register(ModuleName, 3, "validator does not exist") - ErrValidatorOwnerExists = errors.Register(ModuleName, 4, "validator already exist for this operator address; must use new validator operator address") - ErrValidatorPubKeyExists = errors.Register(ModuleName, 5, "validator already exist for this pubkey; must use new validator pubkey") - ErrValidatorPubKeyTypeNotSupported = errors.Register(ModuleName, 6, "validator pubkey type is not supported") - ErrValidatorJailed = errors.Register(ModuleName, 7, "validator for this address is currently jailed") - ErrBadRemoveValidator = errors.Register(ModuleName, 8, "failed to remove validator") - ErrCommissionNegative = errors.Register(ModuleName, 9, "commission must be positive") - ErrCommissionHuge = errors.Register(ModuleName, 10, "commission cannot be more than 100%") - ErrCommissionGTMaxRate = errors.Register(ModuleName, 11, "commission cannot be more than the max rate") - ErrCommissionUpdateTime = errors.Register(ModuleName, 12, "commission cannot be changed more than once in 24h") - ErrCommissionChangeRateNegative = errors.Register(ModuleName, 13, "commission change rate must be positive") - ErrCommissionChangeRateGTMaxRate = errors.Register(ModuleName, 14, "commission change rate cannot be more than the max rate") - ErrCommissionGTMaxChangeRate = errors.Register(ModuleName, 15, "commission cannot be changed more than max change rate") - ErrSelfDelegationBelowMinimum = errors.Register(ModuleName, 16, "validator's self delegation must be greater than their minimum self delegation") - ErrMinSelfDelegationDecreased = errors.Register(ModuleName, 17, "minimum self delegation cannot be decrease") - ErrEmptyDelegatorAddr = errors.Register(ModuleName, 18, "empty delegator address") - ErrNoDelegation = errors.Register(ModuleName, 19, "no delegation for (address, validator) tuple") - ErrBadDelegatorAddr = errors.Register(ModuleName, 20, "delegator does not exist with address") - ErrNoDelegatorForAddress = errors.Register(ModuleName, 21, "delegator does not contain delegation") - ErrInsufficientShares = errors.Register(ModuleName, 22, "insufficient delegation shares") - ErrDelegationValidatorEmpty = errors.Register(ModuleName, 23, "cannot delegate to an empty validator") - ErrNotEnoughDelegationShares = errors.Register(ModuleName, 24, "not enough delegation shares") - ErrNotMature = errors.Register(ModuleName, 25, "entry not mature") - ErrNoUnbondingDelegation = errors.Register(ModuleName, 26, "no unbonding delegation found") - ErrMaxUnbondingDelegationEntries = errors.Register(ModuleName, 27, "too many unbonding delegation entries for (delegator, validator) tuple") - ErrNoRedelegation = errors.Register(ModuleName, 28, "no redelegation found") - ErrSelfRedelegation = errors.Register(ModuleName, 29, "cannot redelegate to the same validator") - ErrTinyRedelegationAmount = errors.Register(ModuleName, 30, "too few tokens to redelegate (truncates to zero tokens)") - ErrBadRedelegationDst = errors.Register(ModuleName, 31, "redelegation destination validator not found") - ErrTransitiveRedelegation = errors.Register(ModuleName, 32, "redelegation to this validator already in progress; first redelegation to this validator must complete before next redelegation") - ErrMaxRedelegationEntries = errors.Register(ModuleName, 33, "too many redelegation entries for (delegator, src-validator, dst-validator) tuple") - ErrDelegatorShareExRateInvalid = errors.Register(ModuleName, 34, "cannot delegate to validators with invalid (zero) ex-rate") - ErrBothShareMsgsGiven = errors.Register(ModuleName, 35, "both shares amount and shares percent provided") - ErrNeitherShareMsgsGiven = errors.Register(ModuleName, 36, "neither shares amount nor shares percent provided") - ErrInvalidHistoricalInfo = errors.Register(ModuleName, 37, "invalid historical info") - ErrNoHistoricalInfo = errors.Register(ModuleName, 38, "no historical info found") - ErrEmptyValidatorPubKey = errors.Register(ModuleName, 39, "empty validator public key") - ErrCommissionLTMinRate = errors.Register(ModuleName, 40, "commission cannot be less than min rate") - ErrUnbondingNotFound = errors.Register(ModuleName, 41, "unbonding operation not found") - ErrUnbondingOnHoldRefCountNegative = errors.Register(ModuleName, 42, "cannot un-hold unbonding operation that is not on hold") - ErrInvalidSigner = errors.Register(ModuleName, 43, "expected authority account as only signer for proposal message") - ErrBadRedelegationSrc = errors.Register(ModuleName, 44, "redelegation source validator not found") - ErrNoUnbondingType = errors.Register(ModuleName, 45, "unbonding type not found") + ErrEmptyValidatorAddr = errors.Register(ModuleName, 2, "empty validator address") + ErrNoValidatorFound = errors.Register(ModuleName, 3, "validator does not exist") + ErrValidatorOwnerExists = errors.Register(ModuleName, 4, "validator already exist for this operator address; must use new validator operator address") + ErrValidatorPubKeyExists = errors.Register(ModuleName, 5, "validator already exist for this pubkey; must use new validator pubkey") + ErrValidatorPubKeyTypeNotSupported = errors.Register(ModuleName, 6, "validator pubkey type is not supported") + ErrValidatorJailed = errors.Register(ModuleName, 7, "validator for this address is currently jailed") + ErrBadRemoveValidator = errors.Register(ModuleName, 8, "failed to remove validator") + ErrCommissionNegative = errors.Register(ModuleName, 9, "commission must be positive") + ErrCommissionHuge = errors.Register(ModuleName, 10, "commission cannot be more than 100%") + ErrCommissionGTMaxRate = errors.Register(ModuleName, 11, "commission cannot be more than the max rate") + ErrCommissionUpdateTime = errors.Register(ModuleName, 12, "commission cannot be changed more than once in 24h") + ErrCommissionChangeRateNegative = errors.Register(ModuleName, 13, "commission change rate must be positive") + ErrCommissionChangeRateGTMaxRate = errors.Register(ModuleName, 14, "commission change rate cannot be more than the max rate") + ErrCommissionGTMaxChangeRate = errors.Register(ModuleName, 15, "commission cannot be changed more than max change rate") + ErrSelfDelegationBelowMinimum = errors.Register(ModuleName, 16, "validator's self delegation must be greater than their minimum self delegation") + ErrMinSelfDelegationDecreased = errors.Register(ModuleName, 17, "minimum self delegation cannot be decrease") + ErrEmptyDelegatorAddr = errors.Register(ModuleName, 18, "empty delegator address") + ErrNoDelegation = errors.Register(ModuleName, 19, "no delegation for (address, validator) tuple") + ErrBadDelegatorAddr = errors.Register(ModuleName, 20, "delegator does not exist with address") + ErrNoDelegatorForAddress = errors.Register(ModuleName, 21, "delegator does not contain delegation") + ErrInsufficientShares = errors.Register(ModuleName, 22, "insufficient delegation shares") + ErrDelegationValidatorEmpty = errors.Register(ModuleName, 23, "cannot delegate to an empty validator") + ErrNotEnoughDelegationShares = errors.Register(ModuleName, 24, "not enough delegation shares") + ErrNotMature = errors.Register(ModuleName, 25, "entry not mature") + ErrNoUnbondingDelegation = errors.Register(ModuleName, 26, "no unbonding delegation found") + ErrMaxUnbondingDelegationEntries = errors.Register(ModuleName, 27, "too many unbonding delegation entries for (delegator, validator) tuple") + ErrNoRedelegation = errors.Register(ModuleName, 28, "no redelegation found") + ErrSelfRedelegation = errors.Register(ModuleName, 29, "cannot redelegate to the same validator") + ErrTinyRedelegationAmount = errors.Register(ModuleName, 30, "too few tokens to redelegate (truncates to zero tokens)") + ErrBadRedelegationDst = errors.Register(ModuleName, 31, "redelegation destination validator not found") + ErrTransitiveRedelegation = errors.Register(ModuleName, 32, "redelegation to this validator already in progress; first redelegation to this validator must complete before next redelegation") + ErrMaxRedelegationEntries = errors.Register(ModuleName, 33, "too many redelegation entries for (delegator, src-validator, dst-validator) tuple") + ErrDelegatorShareExRateInvalid = errors.Register(ModuleName, 34, "cannot delegate to validators with invalid (zero) ex-rate") + ErrBothShareMsgsGiven = errors.Register(ModuleName, 35, "both shares amount and shares percent provided") + ErrNeitherShareMsgsGiven = errors.Register(ModuleName, 36, "neither shares amount nor shares percent provided") + ErrInvalidHistoricalInfo = errors.Register(ModuleName, 37, "invalid historical info") + ErrNoHistoricalInfo = errors.Register(ModuleName, 38, "no historical info found") + ErrEmptyValidatorPubKey = errors.Register(ModuleName, 39, "empty validator public key") + ErrCommissionLTMinRate = errors.Register(ModuleName, 40, "commission cannot be less than min rate") + ErrUnbondingNotFound = errors.Register(ModuleName, 41, "unbonding operation not found") + ErrUnbondingOnHoldRefCountNegative = errors.Register(ModuleName, 42, "cannot un-hold unbonding operation that is not on hold") + ErrInvalidSigner = errors.Register(ModuleName, 43, "expected authority account as only signer for proposal message") + ErrBadRedelegationSrc = errors.Register(ModuleName, 44, "redelegation source validator not found") + ErrNoUnbondingType = errors.Register(ModuleName, 45, "unbonding type not found") + ErrNotEnoughBalance = errors.Register(ModuleName, 101, "not enough balance") + ErrTokenizeShareRecordNotExists = errors.Register(ModuleName, 102, "tokenize share record not exists") + ErrTokenizeShareRecordAlreadyExists = errors.Register(ModuleName, 103, "tokenize share record already exists") + ErrNotTokenizeShareRecordOwner = errors.Register(ModuleName, 104, "not tokenize share record owner") + ErrExceedingFreeVestingDelegations = errors.Register(ModuleName, 105, "trying to exceed vested free delegation for vesting account") + ErrOnlyBondDenomAllowdForTokenize = errors.Register(ModuleName, 106, "only bond denom is allowed for tokenize") + ErrInsufficientValidatorBondShares = errors.Register(ModuleName, 107, "insufficient validator bond shares") + ErrRedelegationNotAllowedForValidatorBond = errors.Register(ModuleName, 108, "redelegation is not allowed for validator bond delegation") + ErrValidatorBondNotAllowedForTokenizeShare = errors.Register(ModuleName, 109, "validator bond delegation is not allowed to tokenize share") + ErrValidatorBondNotAllowedFromModuleAccount = errors.Register(ModuleName, 110, "validator bond is not allowed from a module account") + ErrGlobalLiquidStakingCapExceeded = errors.Register(ModuleName, 111, "delegation or tokenization exceeds the global cap") + ErrValidatorLiquidStakingCapExceeded = errors.Register(ModuleName, 112, "delegation or tokenization exceeds the validator cap") + ErrTokenizeSharesDisabledForAccount = errors.Register(ModuleName, 113, "tokenize shares currently disabled for account") + ErrUnableToDisableTokenizeShares = errors.Register(ModuleName, 114, "unable to disable tokenize shares for account") + ErrTokenizeSharesAlreadyEnabledForAccount = errors.Register(ModuleName, 115, "tokenize shares is already enabled for this account") + ErrTokenizeSharesAlreadyDisabledForAccount = errors.Register(ModuleName, 116, "tokenize shares is already disabled for this account") + ErrValidatorLiquidSharesUnderflow = errors.Register(ModuleName, 117, "validator liquid shares underflow") + ErrTotalLiquidStakedUnderflow = errors.Register(ModuleName, 118, "total liquid staked underflow") + ErrTinyRedemptionAmount = errors.Register(ModuleName, 119, "too few tokens to redeem (truncates to zero tokens)") + ErrRedelegationInProgress = errors.Register(ModuleName, 120, "delegator is not allowed to tokenize shares from validator with a redelegation in progress") ) diff --git a/x/staking/types/events.go b/x/staking/types/events.go index 2004e0d4c1ff..c6548aa135b3 100644 --- a/x/staking/types/events.go +++ b/x/staking/types/events.go @@ -2,22 +2,29 @@ package types // staking module event types const ( - EventTypeCompleteUnbonding = "complete_unbonding" - EventTypeCompleteRedelegation = "complete_redelegation" - EventTypeCreateValidator = "create_validator" - EventTypeEditValidator = "edit_validator" - EventTypeDelegate = "delegate" - EventTypeUnbond = "unbond" - EventTypeCancelUnbondingDelegation = "cancel_unbonding_delegation" - EventTypeRedelegate = "redelegate" + EventTypeCompleteUnbonding = "complete_unbonding" + EventTypeCompleteRedelegation = "complete_redelegation" + EventTypeCreateValidator = "create_validator" + EventTypeEditValidator = "edit_validator" + EventTypeDelegate = "delegate" + EventTypeUnbond = "unbond" + EventTypeCancelUnbondingDelegation = "cancel_unbonding_delegation" + EventTypeRedelegate = "redelegate" + EventTypeTokenizeShares = "tokenize_shares" + EventTypeRedeemShares = "redeem_shares" + EventTypeTransferTokenizeShareRecord = "transfer_tokenize_share_record" + EventTypeValidatorBondDelegation = "validator_bond_delegation" - AttributeKeyValidator = "validator" - AttributeKeyCommissionRate = "commission_rate" - AttributeKeyMinSelfDelegation = "min_self_delegation" - AttributeKeySrcValidator = "source_validator" - AttributeKeyDstValidator = "destination_validator" - AttributeKeyDelegator = "delegator" - AttributeKeyCreationHeight = "creation_height" - AttributeKeyCompletionTime = "completion_time" - AttributeKeyNewShares = "new_shares" + AttributeKeyValidator = "validator" + AttributeKeyCommissionRate = "commission_rate" + AttributeKeySrcValidator = "source_validator" + AttributeKeyDstValidator = "destination_validator" + AttributeKeyDelegator = "delegator" + AttributeKeyCreationHeight = "creation_height" + AttributeKeyCompletionTime = "completion_time" + AttributeKeyNewShares = "new_shares" + AttributeKeyShareOwner = "share_owner" + AttributeKeyShareRecordID = "share_record_id" + AttributeKeyAmount = "amount" + AttributeKeyTokenizedShares = "tokenized_shares" ) diff --git a/x/staking/types/expected_keepers.go b/x/staking/types/expected_keepers.go index 96f816a5acb1..8273ac1431e9 100644 --- a/x/staking/types/expected_keepers.go +++ b/x/staking/types/expected_keepers.go @@ -34,10 +34,14 @@ type BankKeeper interface { GetSupply(ctx context.Context, denom string) sdk.Coin + SendCoins(ctx context.Context, fromAddr, toAddr sdk.AccAddress, amt sdk.Coins) error SendCoinsFromModuleToModule(ctx context.Context, senderPool, recipientPool string, amt sdk.Coins) error + SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error + SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error UndelegateCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error DelegateCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error + MintCoins(cts context.Context, name string, amt sdk.Coins) error BurnCoins(ctx context.Context, name string, amt sdk.Coins) error } @@ -109,6 +113,7 @@ type StakingHooks interface { AfterDelegationModified(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) error BeforeValidatorSlashed(ctx context.Context, valAddr sdk.ValAddress, fraction math.LegacyDec) error AfterUnbondingInitiated(ctx context.Context, id uint64) error + BeforeTokenizeShareRecordRemoved(ctx context.Context, recordID uint64) error // Must be called when tokenize share record is deleted } // StakingHooksWrapper is a wrapper for modules to inject StakingHooks using depinject. diff --git a/x/staking/types/exported.go b/x/staking/types/exported.go index 2cdf70629e80..190366f09ddf 100644 --- a/x/staking/types/exported.go +++ b/x/staking/types/exported.go @@ -33,6 +33,7 @@ type ValidatorI interface { GetCommission() math.LegacyDec // validator commission rate GetMinSelfDelegation() math.Int // validator minimum self delegation GetDelegatorShares() math.LegacyDec // total outstanding delegator shares + GetLiquidShares() math.LegacyDec // total shares earmarked from liquid staking TokensFromShares(math.LegacyDec) math.LegacyDec // token worth of provided delegator shares TokensFromSharesTruncated(math.LegacyDec) math.LegacyDec // token worth of provided delegator shares, truncated TokensFromSharesRoundUp(math.LegacyDec) math.LegacyDec // token worth of provided delegator shares, rounded up diff --git a/x/staking/types/genesis.pb.go b/x/staking/types/genesis.pb.go index f11448eaa9f7..e4bd89ddb69f 100644 --- a/x/staking/types/genesis.pb.go +++ b/x/staking/types/genesis.pb.go @@ -10,15 +10,19 @@ import ( _ "github.com/cosmos/cosmos-sdk/types/tx/amino" _ "github.com/cosmos/gogoproto/gogoproto" proto "github.com/cosmos/gogoproto/proto" + github_com_cosmos_gogoproto_types "github.com/cosmos/gogoproto/types" + _ "google.golang.org/protobuf/types/known/timestamppb" io "io" math "math" math_bits "math/bits" + time "time" ) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf +var _ = time.Kitchen // This is a compile-time assertion to ensure that this generated file // is compatible with the proto package it is being compiled against. @@ -46,6 +50,14 @@ type GenesisState struct { Redelegations []Redelegation `protobuf:"bytes,7,rep,name=redelegations,proto3" json:"redelegations"` // exported defines a bool to identify whether the chain dealing with exported or initialized genesis. Exported bool `protobuf:"varint,8,opt,name=exported,proto3" json:"exported,omitempty"` + // store tokenize share records to provide reward to record owners + TokenizeShareRecords []TokenizeShareRecord `protobuf:"bytes,9,rep,name=tokenize_share_records,json=tokenizeShareRecords,proto3" json:"tokenize_share_records"` + // last tokenize share record id, used for next share record id calculation + LastTokenizeShareRecordId uint64 `protobuf:"varint,10,opt,name=last_tokenize_share_record_id,json=lastTokenizeShareRecordId,proto3" json:"last_tokenize_share_record_id,omitempty"` + // total number of liquid staked tokens at genesis + TotalLiquidStakedTokens cosmossdk_io_math.Int `protobuf:"bytes,11,opt,name=total_liquid_staked_tokens,json=totalLiquidStakedTokens,proto3,customtype=cosmossdk.io/math.Int" json:"total_liquid_staked_tokens" yaml:"total_liquid_staked_tokens"` + // tokenize shares locks at genesis + TokenizeShareLocks []TokenizeShareLock `protobuf:"bytes,12,rep,name=tokenize_share_locks,json=tokenizeShareLocks,proto3" json:"tokenize_share_locks"` } func (m *GenesisState) Reset() { *m = GenesisState{} } @@ -130,6 +142,91 @@ func (m *GenesisState) GetExported() bool { return false } +func (m *GenesisState) GetTokenizeShareRecords() []TokenizeShareRecord { + if m != nil { + return m.TokenizeShareRecords + } + return nil +} + +func (m *GenesisState) GetLastTokenizeShareRecordId() uint64 { + if m != nil { + return m.LastTokenizeShareRecordId + } + return 0 +} + +func (m *GenesisState) GetTokenizeShareLocks() []TokenizeShareLock { + if m != nil { + return m.TokenizeShareLocks + } + return nil +} + +// TokenizeSharesLock required for specifying account locks at genesis +type TokenizeShareLock struct { + // Address of the account that is locked + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + // Status of the lock (LOCKED or LOCK_EXPIRING) + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + // Completion time if the lock is expiring + CompletionTime time.Time `protobuf:"bytes,3,opt,name=completion_time,json=completionTime,proto3,stdtime" json:"completion_time" yaml:"completion_time"` +} + +func (m *TokenizeShareLock) Reset() { *m = TokenizeShareLock{} } +func (m *TokenizeShareLock) String() string { return proto.CompactTextString(m) } +func (*TokenizeShareLock) ProtoMessage() {} +func (*TokenizeShareLock) Descriptor() ([]byte, []int) { + return fileDescriptor_9b3dec8894f2831b, []int{1} +} +func (m *TokenizeShareLock) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TokenizeShareLock) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TokenizeShareLock.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *TokenizeShareLock) XXX_Merge(src proto.Message) { + xxx_messageInfo_TokenizeShareLock.Merge(m, src) +} +func (m *TokenizeShareLock) XXX_Size() int { + return m.Size() +} +func (m *TokenizeShareLock) XXX_DiscardUnknown() { + xxx_messageInfo_TokenizeShareLock.DiscardUnknown(m) +} + +var xxx_messageInfo_TokenizeShareLock proto.InternalMessageInfo + +func (m *TokenizeShareLock) GetAddress() string { + if m != nil { + return m.Address + } + return "" +} + +func (m *TokenizeShareLock) GetStatus() string { + if m != nil { + return m.Status + } + return "" +} + +func (m *TokenizeShareLock) GetCompletionTime() time.Time { + if m != nil { + return m.CompletionTime + } + return time.Time{} +} + // LastValidatorPower required for validator set update logic. type LastValidatorPower struct { // address is the address of the validator. @@ -142,7 +239,7 @@ func (m *LastValidatorPower) Reset() { *m = LastValidatorPower{} } func (m *LastValidatorPower) String() string { return proto.CompactTextString(m) } func (*LastValidatorPower) ProtoMessage() {} func (*LastValidatorPower) Descriptor() ([]byte, []int) { - return fileDescriptor_9b3dec8894f2831b, []int{1} + return fileDescriptor_9b3dec8894f2831b, []int{2} } func (m *LastValidatorPower) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -173,6 +270,7 @@ var xxx_messageInfo_LastValidatorPower proto.InternalMessageInfo func init() { proto.RegisterType((*GenesisState)(nil), "cosmos.staking.v1beta1.GenesisState") + proto.RegisterType((*TokenizeShareLock)(nil), "cosmos.staking.v1beta1.TokenizeShareLock") proto.RegisterType((*LastValidatorPower)(nil), "cosmos.staking.v1beta1.LastValidatorPower") } @@ -181,40 +279,54 @@ func init() { } var fileDescriptor_9b3dec8894f2831b = []byte{ - // 513 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x93, 0x31, 0x6f, 0xd3, 0x40, - 0x18, 0x86, 0x6d, 0x4a, 0xd2, 0xf4, 0x52, 0x10, 0x1c, 0x09, 0x32, 0x19, 0x9c, 0x10, 0x75, 0x88, - 0x0a, 0xb1, 0x69, 0xd8, 0xd8, 0x1a, 0x21, 0x50, 0xa5, 0x4a, 0x54, 0x2e, 0x65, 0xe8, 0x12, 0x5d, - 0xea, 0x93, 0x73, 0x8a, 0x7d, 0x67, 0xf9, 0xbe, 0x94, 0xf2, 0x0f, 0x18, 0xd9, 0x58, 0x3b, 0x32, - 0x32, 0xf4, 0x47, 0x74, 0xac, 0x3a, 0x21, 0x86, 0x0a, 0x25, 0x03, 0xfc, 0x0c, 0xe4, 0x3b, 0xc7, - 0x18, 0xa5, 0x5e, 0x92, 0x38, 0xdf, 0xf3, 0x3e, 0xef, 0x27, 0xf9, 0x0e, 0x6d, 0x9d, 0x08, 0x19, - 0x09, 0xe9, 0x4a, 0x20, 0x53, 0xc6, 0x03, 0xf7, 0x74, 0x67, 0x4c, 0x81, 0xec, 0xb8, 0x01, 0xe5, - 0x54, 0x32, 0xe9, 0xc4, 0x89, 0x00, 0x81, 0x1f, 0x6b, 0xca, 0xc9, 0x28, 0x27, 0xa3, 0x5a, 0x8d, - 0x40, 0x04, 0x42, 0x21, 0x6e, 0xfa, 0x4b, 0xd3, 0xad, 0x32, 0xe7, 0x32, 0xad, 0xa9, 0x27, 0x9a, - 0x1a, 0xe9, 0x78, 0x56, 0xa0, 0x47, 0x0f, 0x49, 0xc4, 0xb8, 0x70, 0xd5, 0xa7, 0xfe, 0xab, 0xfb, - 0xb5, 0x82, 0x36, 0xdf, 0xea, 0x9d, 0x0e, 0x81, 0x00, 0xc5, 0xbb, 0xa8, 0x1a, 0x93, 0x84, 0x44, - 0xd2, 0x32, 0x3b, 0x66, 0xaf, 0x3e, 0xb0, 0x9d, 0xdb, 0x77, 0x74, 0x0e, 0x14, 0x35, 0xdc, 0xb8, - 0xbc, 0x69, 0x1b, 0xdf, 0x7e, 0x7f, 0xdf, 0x36, 0xbd, 0x2c, 0x88, 0x8f, 0xd1, 0x83, 0x90, 0x48, - 0x18, 0x81, 0x00, 0x12, 0x8e, 0x62, 0xf1, 0x91, 0x26, 0xd6, 0x9d, 0x8e, 0xd9, 0xdb, 0x1c, 0xbe, - 0x48, 0xe1, 0x9f, 0x37, 0xed, 0xa6, 0x76, 0x4a, 0x7f, 0xea, 0x30, 0xe1, 0x46, 0x04, 0x26, 0xce, - 0x1e, 0x87, 0xeb, 0x8b, 0x3e, 0xca, 0xca, 0xf6, 0x38, 0x68, 0xe7, 0xfd, 0xd4, 0xf4, 0x3e, 0x15, - 0x1d, 0xa4, 0x1e, 0xcc, 0x50, 0x53, 0xb9, 0x4f, 0x49, 0xc8, 0x7c, 0x02, 0x22, 0xd1, 0x7e, 0x69, - 0xad, 0x75, 0xd6, 0x7a, 0xf5, 0xc1, 0x76, 0xd9, 0xb6, 0xfb, 0x44, 0xc2, 0x87, 0x65, 0x46, 0xa9, - 0x8a, 0x9b, 0x3f, 0x0a, 0x57, 0xc6, 0x12, 0xef, 0x23, 0x94, 0xb7, 0x48, 0xeb, 0xae, 0xf2, 0x3f, - 0x2d, 0xf3, 0xe7, 0xe1, 0xa2, 0xb6, 0x90, 0xc7, 0xef, 0x50, 0xdd, 0xa7, 0x21, 0x0d, 0x08, 0x30, - 0xc1, 0xa5, 0x55, 0x51, 0xba, 0x6e, 0x99, 0xee, 0x75, 0x8e, 0x16, 0x7d, 0x45, 0x03, 0x9e, 0xa2, - 0xe6, 0x8c, 0x8f, 0x05, 0xf7, 0x19, 0x0f, 0x46, 0x45, 0x75, 0x55, 0xa9, 0x9f, 0x95, 0xa9, 0x8f, - 0x96, 0xa1, 0xdb, 0x3b, 0x1a, 0xb3, 0xd5, 0xb9, 0xc4, 0x47, 0xe8, 0x5e, 0x42, 0x8b, 0x25, 0xeb, - 0xaa, 0x64, 0xab, 0xac, 0xc4, 0x2b, 0xc0, 0x45, 0xfb, 0xff, 0x16, 0xdc, 0x42, 0x35, 0x7a, 0x16, - 0x8b, 0x04, 0xa8, 0x6f, 0xd5, 0x3a, 0x66, 0xaf, 0xe6, 0xe5, 0xcf, 0xdd, 0x09, 0xc2, 0xab, 0x2f, - 0x0d, 0x0f, 0xd0, 0x3a, 0xf1, 0xfd, 0x84, 0x4a, 0x7d, 0x3e, 0x37, 0x86, 0xd6, 0xf5, 0x45, 0xbf, - 0x91, 0x6d, 0xb1, 0xab, 0x27, 0x87, 0x90, 0x30, 0x1e, 0x78, 0x4b, 0x10, 0x37, 0x50, 0xe5, 0xdf, - 0x21, 0x5c, 0xf3, 0xf4, 0xc3, 0xab, 0xda, 0xe7, 0xf3, 0xb6, 0xf1, 0xe7, 0xbc, 0x6d, 0x0c, 0xdf, - 0x5c, 0xce, 0x6d, 0xf3, 0x6a, 0x6e, 0x9b, 0xbf, 0xe6, 0xb6, 0xf9, 0x65, 0x61, 0x1b, 0x57, 0x0b, - 0xdb, 0xf8, 0xb1, 0xb0, 0x8d, 0xe3, 0xe7, 0x01, 0x83, 0xc9, 0x6c, 0xec, 0x9c, 0x88, 0x28, 0xbb, - 0x49, 0xd9, 0x57, 0x5f, 0xfa, 0x53, 0xf7, 0x2c, 0xbf, 0x89, 0xf0, 0x29, 0xa6, 0x72, 0x5c, 0x55, - 0x57, 0xea, 0xe5, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x57, 0x29, 0x7a, 0x5e, 0xfc, 0x03, 0x00, - 0x00, + // 751 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x94, 0xb1, 0x4f, 0xdb, 0x4e, + 0x14, 0xc7, 0xe3, 0x5f, 0x20, 0x24, 0x17, 0x7e, 0xb4, 0x5c, 0x43, 0x6a, 0x22, 0x35, 0x0e, 0x16, + 0x43, 0x4a, 0x8b, 0x5d, 0xe8, 0xc6, 0x54, 0xa2, 0xaa, 0x15, 0x52, 0xa4, 0x22, 0x07, 0x3a, 0xb0, + 0x58, 0x97, 0xf8, 0xea, 0x9c, 0x62, 0xfb, 0x52, 0xdf, 0x85, 0x42, 0x97, 0xae, 0x1d, 0xf9, 0x13, + 0x98, 0xaa, 0x4e, 0x55, 0x07, 0xfe, 0x08, 0x46, 0xc4, 0x54, 0x75, 0x48, 0x2b, 0x18, 0xda, 0x99, + 0xbf, 0xa0, 0xf2, 0x9d, 0x13, 0xdc, 0x84, 0xa0, 0x2e, 0x89, 0xcf, 0xef, 0xfb, 0xfd, 0xbc, 0x77, + 0x4f, 0xcf, 0x0f, 0x2c, 0xb7, 0x28, 0xf3, 0x29, 0x33, 0x19, 0x47, 0x1d, 0x12, 0xb8, 0xe6, 0xfe, + 0x5a, 0x13, 0x73, 0xb4, 0x66, 0xba, 0x38, 0xc0, 0x8c, 0x30, 0xa3, 0x1b, 0x52, 0x4e, 0x61, 0x51, + 0xaa, 0x8c, 0x58, 0x65, 0xc4, 0xaa, 0x52, 0xc1, 0xa5, 0x2e, 0x15, 0x12, 0x33, 0x7a, 0x92, 0xea, + 0xd2, 0x24, 0xe6, 0xc0, 0x2d, 0x55, 0x8b, 0x52, 0x65, 0x4b, 0x7b, 0x9c, 0x40, 0x86, 0xe6, 0x91, + 0x4f, 0x02, 0x6a, 0x8a, 0xdf, 0xf8, 0x95, 0xe6, 0x52, 0xea, 0x7a, 0xd8, 0x14, 0xa7, 0x66, 0xef, + 0x8d, 0xc9, 0x89, 0x8f, 0x19, 0x47, 0x7e, 0x57, 0x0a, 0xf4, 0x4f, 0x59, 0x30, 0xfb, 0x52, 0x16, + 0xdd, 0xe0, 0x88, 0x63, 0xb8, 0x09, 0x32, 0x5d, 0x14, 0x22, 0x9f, 0xa9, 0x4a, 0x45, 0xa9, 0xe6, + 0xd7, 0xcb, 0xc6, 0xcd, 0x97, 0x30, 0xb6, 0x85, 0xaa, 0x96, 0x3b, 0xed, 0x6b, 0xa9, 0xcf, 0xbf, + 0xbe, 0xae, 0x28, 0x56, 0x6c, 0x84, 0x7b, 0xe0, 0xae, 0x87, 0x18, 0xb7, 0x39, 0xe5, 0xc8, 0xb3, + 0xbb, 0xf4, 0x1d, 0x0e, 0xd5, 0xff, 0x2a, 0x4a, 0x75, 0xb6, 0xf6, 0x24, 0x12, 0x7f, 0xef, 0x6b, + 0x0b, 0x92, 0xc9, 0x9c, 0x8e, 0x41, 0xa8, 0xe9, 0x23, 0xde, 0x36, 0xb6, 0x02, 0x7e, 0x7e, 0xb2, + 0x0a, 0xe2, 0x64, 0x5b, 0x01, 0x97, 0xcc, 0xb9, 0x88, 0xb4, 0x13, 0x81, 0xb6, 0x23, 0x0e, 0x24, + 0x60, 0x41, 0xb0, 0xf7, 0x91, 0x47, 0x1c, 0xc4, 0x69, 0x28, 0xf9, 0x4c, 0x4d, 0x57, 0xd2, 0xd5, + 0xfc, 0xfa, 0xca, 0xa4, 0x6a, 0xeb, 0x88, 0xf1, 0xd7, 0x03, 0x8f, 0x40, 0x25, 0x2b, 0xbf, 0xe7, + 0x8d, 0x85, 0x19, 0xac, 0x03, 0x30, 0xcc, 0xc2, 0xd4, 0x29, 0xc1, 0x5f, 0x9a, 0xc4, 0x1f, 0x9a, + 0x93, 0xd8, 0x84, 0x1f, 0xbe, 0x02, 0x79, 0x07, 0x7b, 0xd8, 0x45, 0x9c, 0xd0, 0x80, 0xa9, 0xd3, + 0x02, 0xa7, 0x4f, 0xc2, 0x3d, 0x1f, 0x4a, 0x93, 0xbc, 0x24, 0x01, 0x76, 0xc0, 0x42, 0x2f, 0x68, + 0xd2, 0xc0, 0x21, 0x81, 0x6b, 0x27, 0xd1, 0x19, 0x81, 0x7e, 0x34, 0x09, 0xbd, 0x3b, 0x30, 0xdd, + 0x9c, 0xa3, 0xd0, 0x1b, 0x8f, 0x33, 0xb8, 0x0b, 0xfe, 0x0f, 0x71, 0x32, 0xc9, 0x8c, 0x48, 0xb2, + 0x3c, 0x29, 0x89, 0x95, 0x10, 0x27, 0xe9, 0x7f, 0x53, 0x60, 0x09, 0x64, 0xf1, 0x41, 0x97, 0x86, + 0x1c, 0x3b, 0x6a, 0xb6, 0xa2, 0x54, 0xb3, 0xd6, 0xf0, 0x0c, 0x5d, 0x50, 0xe4, 0xb4, 0x83, 0x03, + 0xf2, 0x1e, 0xdb, 0xac, 0x8d, 0x42, 0x6c, 0x87, 0xb8, 0x45, 0x43, 0x87, 0xa9, 0xb9, 0xdb, 0x2f, + 0xb8, 0x13, 0xbb, 0x1a, 0x91, 0xc9, 0x12, 0x9e, 0xda, 0x54, 0x54, 0x82, 0x55, 0xe0, 0xe3, 0x21, + 0x06, 0x9f, 0x81, 0x07, 0xf1, 0xb8, 0xde, 0x90, 0xcd, 0x26, 0x8e, 0x0a, 0x2a, 0x4a, 0x75, 0xca, + 0x5a, 0x94, 0x93, 0x38, 0x06, 0xd8, 0x72, 0xe0, 0x07, 0x50, 0x92, 0xb3, 0xee, 0x91, 0xb7, 0x3d, + 0xe2, 0xd8, 0x51, 0x45, 0xd8, 0x91, 0x40, 0xa6, 0xe6, 0xc5, 0xe8, 0xd7, 0x6e, 0x1d, 0xfd, 0xab, + 0xbe, 0xb6, 0x74, 0x88, 0x7c, 0x6f, 0x43, 0x9f, 0x0c, 0xd2, 0xad, 0xfb, 0x22, 0x58, 0x17, 0xb1, + 0x86, 0x08, 0x89, 0x7a, 0x18, 0x44, 0xa0, 0x30, 0x52, 0xbd, 0x47, 0x5b, 0x1d, 0xa6, 0xce, 0x8a, + 0x4e, 0x3d, 0xfc, 0xa7, 0x4e, 0xd5, 0x69, 0xab, 0x13, 0xf7, 0x09, 0xf2, 0xd1, 0x00, 0xd3, 0xbf, + 0x28, 0x60, 0x7e, 0x4c, 0x0f, 0x55, 0x30, 0x83, 0x1c, 0x27, 0xc4, 0x4c, 0xae, 0x8b, 0x9c, 0x35, + 0x38, 0xc2, 0x22, 0xc8, 0x30, 0x8e, 0x78, 0x8f, 0x89, 0x4f, 0x3f, 0x67, 0xc5, 0x27, 0xe8, 0x82, + 0x3b, 0x2d, 0xea, 0x77, 0x3d, 0x1c, 0x4d, 0x80, 0x1d, 0xad, 0x23, 0x35, 0x2d, 0x16, 0x4d, 0xc9, + 0x90, 0xbb, 0xca, 0x18, 0xec, 0x2a, 0x63, 0x67, 0xb0, 0xab, 0x6a, 0x7a, 0x54, 0xd6, 0x55, 0x5f, + 0x2b, 0xca, 0x1e, 0x8d, 0x00, 0xf4, 0xa3, 0x1f, 0x9a, 0x62, 0xcd, 0x5d, 0xbf, 0x8d, 0x8c, 0x7a, + 0x1b, 0xc0, 0xf1, 0x8f, 0x1e, 0xae, 0x8f, 0x14, 0x5c, 0x53, 0xcf, 0x4f, 0x56, 0x0b, 0x71, 0x7f, + 0x36, 0x65, 0xa4, 0xc1, 0x43, 0x12, 0xb8, 0xd7, 0x57, 0x29, 0x80, 0xe9, 0xeb, 0x25, 0x96, 0xb6, + 0xe4, 0x61, 0x23, 0xfb, 0xf1, 0x58, 0x4b, 0xfd, 0x3e, 0xd6, 0x52, 0xb5, 0x17, 0xa7, 0x17, 0x65, + 0xe5, 0xec, 0xa2, 0xac, 0xfc, 0xbc, 0x28, 0x2b, 0x47, 0x97, 0xe5, 0xd4, 0xd9, 0x65, 0x39, 0xf5, + 0xed, 0xb2, 0x9c, 0xda, 0x7b, 0xec, 0x12, 0xde, 0xee, 0x35, 0x8d, 0x16, 0xf5, 0xe3, 0x55, 0x1d, + 0xff, 0xad, 0x32, 0xa7, 0x63, 0x1e, 0x0c, 0x57, 0x3d, 0x3f, 0xec, 0x62, 0xd6, 0xcc, 0x88, 0x9b, + 0x3f, 0xfd, 0x13, 0x00, 0x00, 0xff, 0xff, 0x54, 0x56, 0x81, 0x11, 0x5d, 0x06, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { @@ -237,6 +349,49 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.TokenizeShareLocks) > 0 { + for iNdEx := len(m.TokenizeShareLocks) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TokenizeShareLocks[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x62 + } + } + { + size := m.TotalLiquidStakedTokens.Size() + i -= size + if _, err := m.TotalLiquidStakedTokens.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x5a + if m.LastTokenizeShareRecordId != 0 { + i = encodeVarintGenesis(dAtA, i, uint64(m.LastTokenizeShareRecordId)) + i-- + dAtA[i] = 0x50 + } + if len(m.TokenizeShareRecords) > 0 { + for iNdEx := len(m.TokenizeShareRecords) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TokenizeShareRecords[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + } + } if m.Exported { i-- if m.Exported { @@ -340,6 +495,51 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *TokenizeShareLock) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *TokenizeShareLock) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TokenizeShareLock) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + n2, err2 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.CompletionTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CompletionTime):]) + if err2 != nil { + return 0, err2 + } + i -= n2 + i = encodeVarintGenesis(dAtA, i, uint64(n2)) + i-- + dAtA[i] = 0x1a + if len(m.Status) > 0 { + i -= len(m.Status) + copy(dAtA[i:], m.Status) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.Status))) + i-- + dAtA[i] = 0x12 + } + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.Address))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *LastValidatorPower) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -429,6 +629,42 @@ func (m *GenesisState) Size() (n int) { if m.Exported { n += 2 } + if len(m.TokenizeShareRecords) > 0 { + for _, e := range m.TokenizeShareRecords { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if m.LastTokenizeShareRecordId != 0 { + n += 1 + sovGenesis(uint64(m.LastTokenizeShareRecordId)) + } + l = m.TotalLiquidStakedTokens.Size() + n += 1 + l + sovGenesis(uint64(l)) + if len(m.TokenizeShareLocks) > 0 { + for _, e := range m.TokenizeShareLocks { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + return n +} + +func (m *TokenizeShareLock) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Address) + if l > 0 { + n += 1 + l + sovGenesis(uint64(l)) + } + l = len(m.Status) + if l > 0 { + n += 1 + l + sovGenesis(uint64(l)) + } + l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CompletionTime) + n += 1 + l + sovGenesis(uint64(l)) return n } @@ -739,6 +975,273 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { } } m.Exported = bool(v != 0) + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenizeShareRecords", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TokenizeShareRecords = append(m.TokenizeShareRecords, TokenizeShareRecord{}) + if err := m.TokenizeShareRecords[len(m.TokenizeShareRecords)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field LastTokenizeShareRecordId", wireType) + } + m.LastTokenizeShareRecordId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.LastTokenizeShareRecordId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TotalLiquidStakedTokens", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.TotalLiquidStakedTokens.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenizeShareLocks", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TokenizeShareLocks = append(m.TokenizeShareLocks, TokenizeShareLock{}) + if err := m.TokenizeShareLocks[len(m.TokenizeShareLocks)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenesis(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenesis + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TokenizeShareLock) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TokenizeShareLock: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TokenizeShareLock: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + 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 ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + 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 ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Status = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CompletionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.CompletionTime, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenesis(dAtA[iNdEx:]) diff --git a/x/staking/types/hooks.go b/x/staking/types/hooks.go index 8a052d9514a1..38a57a4d5112 100644 --- a/x/staking/types/hooks.go +++ b/x/staking/types/hooks.go @@ -116,3 +116,12 @@ func (h MultiStakingHooks) AfterUnbondingInitiated(ctx context.Context, id uint6 } return nil } + +func (h MultiStakingHooks) BeforeTokenizeShareRecordRemoved(ctx context.Context, recordID uint64) error { + for i := range h { + if err := h[i].BeforeTokenizeShareRecordRemoved(ctx, recordID); err != nil { + return err + } + } + return nil +} diff --git a/x/staking/types/keys.go b/x/staking/types/keys.go index 598aa332b312..077ae1f588ed 100644 --- a/x/staking/types/keys.go +++ b/x/staking/types/keys.go @@ -23,6 +23,9 @@ const ( // RouterKey is the msg router key for the staking module RouterKey = ModuleName + + // Prefix for module accounts that custodian tokenized shares + TokenizeShareModuleAccountPrefix = "tokenizeshare_" ) var ( @@ -56,6 +59,14 @@ var ( ParamsKey = []byte{0x51} // prefix for parameters for module x/staking DelegationByValIndexKey = []byte{0x71} // key for delegations by a validator + + TokenizeShareRecordPrefix = []byte{0x81} // key for tokenizeshare record prefix + TokenizeShareRecordIDByOwnerPrefix = []byte{0x82} // key for tokenizeshare record id by owner prefix + TokenizeShareRecordIDByDenomPrefix = []byte{0x83} // key for tokenizeshare record id by denom prefix + LastTokenizeShareRecordIDKey = []byte{0x84} // key for last tokenize share record id + TotalLiquidStakedTokensKey = []byte{0x85} // key for total liquid staked tokens + TokenizeSharesLockPrefix = []byte{0x86} // key for locking tokenize shares + TokenizeSharesUnlockQueuePrefix = []byte{0x87} // key for the queue that unlocks tokenize shares ) // UnbondingType defines the type of unbonding operation @@ -423,3 +434,34 @@ func GetHistoricalInfoKey(height int64) []byte { binary.BigEndian.PutUint64(heightBytes, uint64(height)) return append(HistoricalInfoKey, heightBytes...) } + +// GetTokenizeShareRecordByIndexKey returns the key of the specified id. Intended for querying the tokenizeShareRecord by the id. +func GetTokenizeShareRecordByIndexKey(id uint64) []byte { + return append(TokenizeShareRecordPrefix, sdk.Uint64ToBigEndian(id)...) +} + +// GetTokenizeShareRecordIdsByOwnerPrefix returns the key of the specified owner. Intended for querying all tokenizeShareRecords of an owner +func GetTokenizeShareRecordIdsByOwnerPrefix(owner sdk.AccAddress) []byte { + return append(TokenizeShareRecordIDByOwnerPrefix, address.MustLengthPrefix(owner)...) +} + +// GetTokenizeShareRecordIdByOwnerAndIdKey returns the key of the specified owner and id. Intended for setting tokenizeShareRecord of an owner +func GetTokenizeShareRecordIDByOwnerAndIDKey(owner sdk.AccAddress, id uint64) []byte { + return append(append(TokenizeShareRecordIDByOwnerPrefix, address.MustLengthPrefix(owner)...), sdk.Uint64ToBigEndian(id)...) +} + +func GetTokenizeShareRecordIDByDenomKey(denom string) []byte { + return append(TokenizeShareRecordIDByDenomPrefix, []byte(denom)...) +} + +// GetTokenizeSharesLockKey returns the key for storing a tokenize share lock for a specified account +func GetTokenizeSharesLockKey(owner sdk.AccAddress) []byte { + return append(TokenizeSharesLockPrefix, address.MustLengthPrefix(owner)...) +} + +// GetTokenizeShareAuthorizationTimeKey returns the prefix key used for getting a set of pending +// tokenize share unlocks that complete at the given time +func GetTokenizeShareAuthorizationTimeKey(timestamp time.Time) []byte { + bz := sdk.FormatTimeBytes(timestamp) + return append(TokenizeSharesUnlockQueuePrefix, bz...) +} diff --git a/x/staking/types/msg.go b/x/staking/types/msg.go index 0119bc82adcc..e95e37317e3e 100644 --- a/x/staking/types/msg.go +++ b/x/staking/types/msg.go @@ -17,16 +17,23 @@ var ( _ sdk.Msg = &MsgEditValidator{} _ sdk.Msg = &MsgDelegate{} _ sdk.Msg = &MsgUndelegate{} + _ sdk.Msg = &MsgUnbondValidator{} _ sdk.Msg = &MsgBeginRedelegate{} _ sdk.Msg = &MsgCancelUnbondingDelegation{} _ sdk.Msg = &MsgUpdateParams{} + _ sdk.Msg = &MsgTokenizeShares{} + _ sdk.Msg = &MsgRedeemTokensForShares{} + _ sdk.Msg = &MsgTransferTokenizeShareRecord{} + _ sdk.Msg = &MsgDisableTokenizeShares{} + _ sdk.Msg = &MsgEnableTokenizeShares{} + _ sdk.Msg = &MsgValidatorBond{} ) // NewMsgCreateValidator creates a new MsgCreateValidator instance. // Delegator address and validator address are the same. func NewMsgCreateValidator( valAddr string, pubKey cryptotypes.PubKey, - selfDelegation sdk.Coin, description Description, commission CommissionRates, minSelfDelegation math.Int, + selfDelegation sdk.Coin, description Description, commission CommissionRates, ) (*MsgCreateValidator, error) { var pkAny *codectypes.Any if pubKey != nil { @@ -36,12 +43,11 @@ func NewMsgCreateValidator( } } return &MsgCreateValidator{ - Description: description, - ValidatorAddress: valAddr, - Pubkey: pkAny, - Value: selfDelegation, - Commission: commission, - MinSelfDelegation: minSelfDelegation, + Description: description, + ValidatorAddress: valAddr, + Pubkey: pkAny, + Value: selfDelegation, + Commission: commission, }, nil } @@ -73,17 +79,6 @@ func (msg MsgCreateValidator) Validate(ac address.Codec) error { return err } - if !msg.MinSelfDelegation.IsPositive() { - return errorsmod.Wrap( - sdkerrors.ErrInvalidRequest, - "minimum self delegation must be a positive integer", - ) - } - - if msg.Value.Amount.LT(msg.MinSelfDelegation) { - return ErrSelfDelegationBelowMinimum - } - return nil } @@ -94,12 +89,11 @@ func (msg MsgCreateValidator) UnpackInterfaces(unpacker codectypes.AnyUnpacker) } // NewMsgEditValidator creates a new MsgEditValidator instance -func NewMsgEditValidator(valAddr string, description Description, newRate *math.LegacyDec, newMinSelfDelegation *math.Int) *MsgEditValidator { +func NewMsgEditValidator(valAddr string, description Description, newRate *math.LegacyDec) *MsgEditValidator { return &MsgEditValidator{ - Description: description, - CommissionRate: newRate, - ValidatorAddress: valAddr, - MinSelfDelegation: newMinSelfDelegation, + Description: description, + CommissionRate: newRate, + ValidatorAddress: valAddr, } } @@ -142,3 +136,59 @@ func NewMsgCancelUnbondingDelegation(delAddr, valAddr string, creationHeight int CreationHeight: creationHeight, } } + +// NewMsgUnbondValidator creates a new MsgUnbondValidator instance. +func NewMsgUnbondValidator(valAddr string) *MsgUnbondValidator { + return &MsgUnbondValidator{ + ValidatorAddress: valAddr, + } +} + +// NewMsgTokenizeShares creates a new MsgTokenizeShares instance. +func NewMsgTokenizeShares(delAddr, valAddr string, amount sdk.Coin, owner string) *MsgTokenizeShares { + return &MsgTokenizeShares{ + DelegatorAddress: delAddr, + ValidatorAddress: valAddr, + Amount: amount, + TokenizedShareOwner: owner, + } +} + +// NewMsgRedeemTokensForShares creates a new MsgRedeemTokensForShares instance. +func NewMsgRedeemTokensForShares(delAddr string, amount sdk.Coin) *MsgRedeemTokensForShares { + return &MsgRedeemTokensForShares{ + DelegatorAddress: delAddr, + Amount: amount, + } +} + +// NewMsgTransferTokenizeShareRecord creates a new MsgTransferTokenizeShareRecord instance. +func NewMsgTransferTokenizeShareRecord(recordID uint64, sender, newOwner string) *MsgTransferTokenizeShareRecord { + return &MsgTransferTokenizeShareRecord{ + TokenizeShareRecordId: recordID, + Sender: sender, + NewOwner: newOwner, + } +} + +// NewMsgDisableTokenizeShares creates a new MsgDisableTokenizeShares instance. +func NewMsgDisableTokenizeShares(delAddr string) *MsgDisableTokenizeShares { + return &MsgDisableTokenizeShares{ + DelegatorAddress: delAddr, + } +} + +// NewMsgEnableTokenizeShares creates a new MsgEnableTokenizeShares instance. +func NewMsgEnableTokenizeShares(delAddr string) *MsgEnableTokenizeShares { + return &MsgEnableTokenizeShares{ + DelegatorAddress: delAddr, + } +} + +// NewMsgValidatorBond creates a new MsgValidatorBond instance. +func NewMsgValidatorBond(delAddr, valAddr string) *MsgValidatorBond { + return &MsgValidatorBond{ + DelegatorAddress: delAddr, + ValidatorAddress: valAddr, + } +} diff --git a/x/staking/types/msg_test.go b/x/staking/types/msg_test.go index 23f5047de186..666dfedf91ca 100644 --- a/x/staking/types/msg_test.go +++ b/x/staking/types/msg_test.go @@ -36,7 +36,7 @@ func TestMsgDecode(t *testing.T) { // now let's try to serialize the whole message commission1 := types.NewCommissionRates(math.LegacyZeroDec(), math.LegacyZeroDec(), math.LegacyZeroDec()) - msg, err := types.NewMsgCreateValidator(valAddr1.String(), pk1, coinPos, types.Description{}, commission1, math.OneInt()) + msg, err := types.NewMsgCreateValidator(valAddr1.String(), pk1, coinPos, types.Description{}, commission1) require.NoError(t, err) msgSerialized, err := cdc.MarshalInterface(msg) require.NoError(t, err) diff --git a/x/staking/types/params.go b/x/staking/types/params.go index 9687b206485c..83fc7c896d0b 100644 --- a/x/staking/types/params.go +++ b/x/staking/types/params.go @@ -31,18 +31,43 @@ const ( DefaultHistoricalEntries uint32 = 10000 ) -// DefaultMinCommissionRate is set to 0% -var DefaultMinCommissionRate = math.LegacyZeroDec() +var ( + // DefaultMinCommissionRate is set to 0% + DefaultMinCommissionRate = math.LegacyZeroDec() + + // ValidatorBondFactor of -1 indicates that it's disabled + ValidatorBondCapDisabled = math.LegacyNewDecFromInt(math.NewInt(-1)) + + // DefaultValidatorBondFactor is set to -1 (disabled) + DefaultValidatorBondFactor = ValidatorBondCapDisabled + // DefaultGlobalLiquidStakingCap is set to 100% + DefaultGlobalLiquidStakingCap = math.LegacyOneDec() + // DefaultValidatorLiquidStakingCap is set to 100% + DefaultValidatorLiquidStakingCap = math.LegacyOneDec() +) // NewParams creates a new Params instance -func NewParams(unbondingTime time.Duration, maxValidators, maxEntries, historicalEntries uint32, bondDenom string, minCommissionRate math.LegacyDec) Params { +func NewParams(unbondingTime time.Duration, + maxValidators, + maxEntries, + historicalEntries uint32, + bondDenom string, + minCommissionRate math.LegacyDec, + validatorBondFactor math.LegacyDec, + globalLiquidStakingCap math.LegacyDec, + validatorLiquidStakingCap math.LegacyDec, +) Params { return Params{ UnbondingTime: unbondingTime, MaxValidators: maxValidators, MaxEntries: maxEntries, HistoricalEntries: historicalEntries, - BondDenom: bondDenom, - MinCommissionRate: minCommissionRate, + + BondDenom: bondDenom, + MinCommissionRate: minCommissionRate, + ValidatorBondFactor: validatorBondFactor, + GlobalLiquidStakingCap: globalLiquidStakingCap, + ValidatorLiquidStakingCap: validatorLiquidStakingCap, } } @@ -55,6 +80,9 @@ func DefaultParams() Params { DefaultHistoricalEntries, sdk.DefaultBondDenom, DefaultMinCommissionRate, + DefaultValidatorBondFactor, + DefaultGlobalLiquidStakingCap, + DefaultValidatorLiquidStakingCap, ) } @@ -104,6 +132,18 @@ func (p Params) Validate() error { return err } + if err := validateValidatorBondFactor(p.ValidatorBondFactor); err != nil { + return err + } + + if err := validateGlobalLiquidStakingCap(p.GlobalLiquidStakingCap); err != nil { + return err + } + + if err := validateValidatorLiquidStakingCap(p.ValidatorLiquidStakingCap); err != nil { + return err + } + return nil } @@ -203,3 +243,48 @@ func validateMinCommissionRate(i interface{}) error { return nil } + +func validateValidatorBondFactor(i interface{}) error { + v, ok := i.(math.LegacyDec) + if !ok { + return fmt.Errorf("invalid parameter type: %T", i) + } + + if v.IsNegative() && !v.Equal(math.LegacyNewDec(-1)) { + return fmt.Errorf("invalid validator bond factor: %s", v) + } + + return nil +} + +func validateGlobalLiquidStakingCap(i interface{}) error { + v, ok := i.(math.LegacyDec) + if !ok { + return fmt.Errorf("invalid parameter type: %T", i) + } + + if v.IsNegative() { + return fmt.Errorf("global liquid staking cap cannot be negative: %s", v) + } + if v.GT(math.LegacyOneDec()) { + return fmt.Errorf("global liquid staking cap cannot be greater than 100%%: %s", v) + } + + return nil +} + +func validateValidatorLiquidStakingCap(i interface{}) error { + v, ok := i.(math.LegacyDec) + if !ok { + return fmt.Errorf("invalid parameter type: %T", i) + } + + if v.IsNegative() { + return fmt.Errorf("validator liquid staking cap cannot be negative: %s", v) + } + if v.GT(math.LegacyOneDec()) { + return fmt.Errorf("validator liquid staking cap cannot be greater than 100%%: %s", v) + } + + return nil +} diff --git a/x/staking/types/params_legacy.go b/x/staking/types/params_legacy.go index f2ab55624976..95a6b82b8986 100644 --- a/x/staking/types/params_legacy.go +++ b/x/staking/types/params_legacy.go @@ -3,12 +3,15 @@ package types import paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" var ( - KeyUnbondingTime = []byte("UnbondingTime") - KeyMaxValidators = []byte("MaxValidators") - KeyMaxEntries = []byte("MaxEntries") - KeyBondDenom = []byte("BondDenom") - KeyHistoricalEntries = []byte("HistoricalEntries") - KeyMinCommissionRate = []byte("MinCommissionRate") + KeyUnbondingTime = []byte("UnbondingTime") + KeyMaxValidators = []byte("MaxValidators") + KeyMaxEntries = []byte("MaxEntries") + KeyBondDenom = []byte("BondDenom") + KeyHistoricalEntries = []byte("HistoricalEntries") + KeyMinCommissionRate = []byte("MinCommissionRate") + KeyValidatorBondFactor = []byte("ValidatorBondFactor") + KeyGlobalLiquidStakingCap = []byte("GlobalLiquidStakingCap") + KeyValidatorLiquidStakingCap = []byte("ValidatorLiquidStakingCap") ) var _ paramtypes.ParamSet = (*Params)(nil) @@ -28,5 +31,8 @@ func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { paramtypes.NewParamSetPair(KeyHistoricalEntries, &p.HistoricalEntries, validateHistoricalEntries), paramtypes.NewParamSetPair(KeyBondDenom, &p.BondDenom, validateBondDenom), paramtypes.NewParamSetPair(KeyMinCommissionRate, &p.MinCommissionRate, validateMinCommissionRate), + paramtypes.NewParamSetPair(KeyValidatorBondFactor, &p.ValidatorBondFactor, validateValidatorBondFactor), + paramtypes.NewParamSetPair(KeyGlobalLiquidStakingCap, &p.GlobalLiquidStakingCap, validateGlobalLiquidStakingCap), + paramtypes.NewParamSetPair(KeyValidatorLiquidStakingCap, &p.ValidatorLiquidStakingCap, validateValidatorLiquidStakingCap), } } diff --git a/x/staking/types/query.pb.go b/x/staking/types/query.pb.go index 661784ccdd81..27a2507ca147 100644 --- a/x/staking/types/query.pb.go +++ b/x/staking/types/query.pb.go @@ -7,6 +7,7 @@ import ( context "context" fmt "fmt" _ "github.com/cosmos/cosmos-proto" + types "github.com/cosmos/cosmos-sdk/types" query "github.com/cosmos/cosmos-sdk/types/query" _ "github.com/cosmos/cosmos-sdk/types/tx/amino" _ "github.com/cosmos/gogoproto/gogoproto" @@ -1391,2312 +1392,5191 @@ func (m *QueryParamsResponse) GetParams() Params { return Params{} } -func init() { - proto.RegisterType((*QueryValidatorsRequest)(nil), "cosmos.staking.v1beta1.QueryValidatorsRequest") - proto.RegisterType((*QueryValidatorsResponse)(nil), "cosmos.staking.v1beta1.QueryValidatorsResponse") - proto.RegisterType((*QueryValidatorRequest)(nil), "cosmos.staking.v1beta1.QueryValidatorRequest") - proto.RegisterType((*QueryValidatorResponse)(nil), "cosmos.staking.v1beta1.QueryValidatorResponse") - proto.RegisterType((*QueryValidatorDelegationsRequest)(nil), "cosmos.staking.v1beta1.QueryValidatorDelegationsRequest") - proto.RegisterType((*QueryValidatorDelegationsResponse)(nil), "cosmos.staking.v1beta1.QueryValidatorDelegationsResponse") - proto.RegisterType((*QueryValidatorUnbondingDelegationsRequest)(nil), "cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsRequest") - proto.RegisterType((*QueryValidatorUnbondingDelegationsResponse)(nil), "cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse") - proto.RegisterType((*QueryDelegationRequest)(nil), "cosmos.staking.v1beta1.QueryDelegationRequest") - proto.RegisterType((*QueryDelegationResponse)(nil), "cosmos.staking.v1beta1.QueryDelegationResponse") - proto.RegisterType((*QueryUnbondingDelegationRequest)(nil), "cosmos.staking.v1beta1.QueryUnbondingDelegationRequest") - proto.RegisterType((*QueryUnbondingDelegationResponse)(nil), "cosmos.staking.v1beta1.QueryUnbondingDelegationResponse") - proto.RegisterType((*QueryDelegatorDelegationsRequest)(nil), "cosmos.staking.v1beta1.QueryDelegatorDelegationsRequest") - proto.RegisterType((*QueryDelegatorDelegationsResponse)(nil), "cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse") - proto.RegisterType((*QueryDelegatorUnbondingDelegationsRequest)(nil), "cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsRequest") - proto.RegisterType((*QueryDelegatorUnbondingDelegationsResponse)(nil), "cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse") - proto.RegisterType((*QueryRedelegationsRequest)(nil), "cosmos.staking.v1beta1.QueryRedelegationsRequest") - proto.RegisterType((*QueryRedelegationsResponse)(nil), "cosmos.staking.v1beta1.QueryRedelegationsResponse") - proto.RegisterType((*QueryDelegatorValidatorsRequest)(nil), "cosmos.staking.v1beta1.QueryDelegatorValidatorsRequest") - proto.RegisterType((*QueryDelegatorValidatorsResponse)(nil), "cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse") - proto.RegisterType((*QueryDelegatorValidatorRequest)(nil), "cosmos.staking.v1beta1.QueryDelegatorValidatorRequest") - proto.RegisterType((*QueryDelegatorValidatorResponse)(nil), "cosmos.staking.v1beta1.QueryDelegatorValidatorResponse") - proto.RegisterType((*QueryHistoricalInfoRequest)(nil), "cosmos.staking.v1beta1.QueryHistoricalInfoRequest") - proto.RegisterType((*QueryHistoricalInfoResponse)(nil), "cosmos.staking.v1beta1.QueryHistoricalInfoResponse") - proto.RegisterType((*QueryPoolRequest)(nil), "cosmos.staking.v1beta1.QueryPoolRequest") - proto.RegisterType((*QueryPoolResponse)(nil), "cosmos.staking.v1beta1.QueryPoolResponse") - proto.RegisterType((*QueryParamsRequest)(nil), "cosmos.staking.v1beta1.QueryParamsRequest") - proto.RegisterType((*QueryParamsResponse)(nil), "cosmos.staking.v1beta1.QueryParamsResponse") +// QueryTokenizeShareRecordByIdRequest is request type for the +// Query/QueryTokenizeShareRecordById RPC method. +type QueryTokenizeShareRecordByIdRequest struct { + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` } -func init() { - proto.RegisterFile("cosmos/staking/v1beta1/query.proto", fileDescriptor_f270127f442bbcd8) +func (m *QueryTokenizeShareRecordByIdRequest) Reset() { *m = QueryTokenizeShareRecordByIdRequest{} } +func (m *QueryTokenizeShareRecordByIdRequest) String() string { return proto.CompactTextString(m) } +func (*QueryTokenizeShareRecordByIdRequest) ProtoMessage() {} +func (*QueryTokenizeShareRecordByIdRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_f270127f442bbcd8, []int{28} } - -var fileDescriptor_f270127f442bbcd8 = []byte{ - // 1390 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0xdb, 0x6b, 0x1c, 0x65, - 0x1b, 0xdf, 0x37, 0xcd, 0x17, 0xbe, 0x3c, 0xa5, 0xa1, 0x7d, 0x77, 0x1b, 0xd3, 0x69, 0xba, 0xd9, - 0x0c, 0xa5, 0xe6, 0xd0, 0xec, 0x98, 0xa4, 0xb6, 0xb1, 0xa2, 0xed, 0xc6, 0x52, 0x5b, 0x5b, 0x6a, - 0xba, 0x62, 0xf0, 0x48, 0x98, 0x64, 0xa6, 0xb3, 0x43, 0x37, 0x33, 0xdb, 0x79, 0x27, 0xa1, 0x25, - 0x04, 0xc1, 0x0b, 0xe9, 0x95, 0x08, 0xde, 0x4b, 0x2f, 0x45, 0x14, 0x72, 0x91, 0x8a, 0x5e, 0xd8, - 0x4b, 0xe9, 0x85, 0x48, 0xa9, 0x54, 0xf4, 0xa6, 0x4a, 0x22, 0xe8, 0x8d, 0xff, 0x81, 0x88, 0xec, - 0xcc, 0x33, 0xa7, 0xcc, 0x61, 0x67, 0x37, 0x1b, 0x48, 0x6e, 0xda, 0xdd, 0x77, 0x9e, 0xc3, 0xef, - 0xf7, 0x1c, 0xde, 0x79, 0x9e, 0x0d, 0xf0, 0x0b, 0x3a, 0x5b, 0xd4, 0x99, 0xc0, 0x4c, 0xf1, 0xa6, - 0xaa, 0x29, 0xc2, 0xf2, 0xf8, 0xbc, 0x6c, 0x8a, 0xe3, 0xc2, 0xad, 0x25, 0xd9, 0xb8, 0x53, 0xac, - 0x19, 0xba, 0xa9, 0xd3, 0x5e, 0x5b, 0xa6, 0x88, 0x32, 0x45, 0x94, 0xe1, 0x46, 0x50, 0x77, 0x5e, - 0x64, 0xb2, 0xad, 0xe0, 0xaa, 0xd7, 0x44, 0x45, 0xd5, 0x44, 0x53, 0xd5, 0x35, 0xdb, 0x06, 0x97, - 0x53, 0x74, 0x45, 0xb7, 0x3e, 0x0a, 0xf5, 0x4f, 0x78, 0xda, 0xaf, 0xe8, 0xba, 0x52, 0x95, 0x05, - 0xb1, 0xa6, 0x0a, 0xa2, 0xa6, 0xe9, 0xa6, 0xa5, 0xc2, 0xf0, 0xe9, 0xf1, 0x18, 0x6c, 0x0e, 0x0e, - 0x5b, 0xea, 0x88, 0x2d, 0x35, 0x67, 0x1b, 0x47, 0xa8, 0xf6, 0xa3, 0xa3, 0x68, 0xc0, 0xc1, 0xe6, - 0x67, 0xc5, 0x1d, 0x12, 0x17, 0x55, 0x4d, 0x17, 0xac, 0x7f, 0xed, 0x23, 0xfe, 0x36, 0xf4, 0x5e, - 0xaf, 0x4b, 0xcc, 0x8a, 0x55, 0x55, 0x12, 0x4d, 0xdd, 0x60, 0x65, 0xf9, 0xd6, 0x92, 0xcc, 0x4c, - 0xda, 0x0b, 0x5d, 0xcc, 0x14, 0xcd, 0x25, 0xd6, 0x47, 0x0a, 0x64, 0xa8, 0xbb, 0x8c, 0xdf, 0xe8, - 0x45, 0x00, 0x8f, 0x6a, 0x5f, 0x47, 0x81, 0x0c, 0xed, 0x9f, 0x38, 0x51, 0x44, 0x10, 0xf5, 0xb8, - 0x14, 0x6d, 0x97, 0x08, 0xbd, 0x38, 0x23, 0x2a, 0x32, 0xda, 0x2c, 0xfb, 0x34, 0xf9, 0x35, 0x02, - 0xcf, 0x84, 0x5c, 0xb3, 0x9a, 0xae, 0x31, 0x99, 0x5e, 0x05, 0x58, 0x76, 0x4f, 0xfb, 0x48, 0x61, - 0xdf, 0xd0, 0xfe, 0x89, 0xc1, 0x62, 0x74, 0x4e, 0x8a, 0xae, 0xfe, 0x74, 0xf7, 0xc3, 0xa7, 0x03, - 0x99, 0xcf, 0xff, 0x5c, 0x1b, 0x21, 0x65, 0x9f, 0x3e, 0x7d, 0x35, 0x02, 0xf1, 0xb3, 0x0d, 0x11, - 0xdb, 0x50, 0x02, 0x90, 0x45, 0x38, 0x1c, 0x44, 0xec, 0xc4, 0xea, 0x12, 0xf4, 0xb8, 0xfe, 0xe6, - 0x44, 0x49, 0x32, 0xec, 0x98, 0x4d, 0x0f, 0x3e, 0x5e, 0x1f, 0x3b, 0x86, 0x8e, 0x5c, 0xa5, 0x92, - 0x24, 0x19, 0x32, 0x63, 0x6f, 0x98, 0x86, 0xaa, 0x29, 0xe5, 0x03, 0xcb, 0xfe, 0x73, 0x5e, 0xda, - 0x9a, 0x0f, 0x37, 0x26, 0xaf, 0x41, 0xb7, 0x2b, 0x6a, 0x99, 0x6f, 0x36, 0x24, 0x9e, 0x3a, 0xbf, - 0x4e, 0xa0, 0x10, 0x74, 0x73, 0x41, 0xae, 0xca, 0x8a, 0x5d, 0x8a, 0x6d, 0x27, 0xd5, 0xb6, 0x92, - 0xf9, 0x9b, 0xc0, 0x60, 0x02, 0x6c, 0x0c, 0xd4, 0x07, 0x90, 0x93, 0xdc, 0xe3, 0x39, 0x03, 0x8f, - 0x9d, 0x32, 0x1a, 0x89, 0x8b, 0x99, 0x67, 0xca, 0xb1, 0x34, 0x5d, 0xa8, 0x07, 0xef, 0x8b, 0xdf, - 0x06, 0xb2, 0xe1, 0x67, 0xcc, 0x8e, 0x69, 0x56, 0x0a, 0x3f, 0x69, 0x5f, 0xbd, 0x7d, 0x47, 0x60, - 0x38, 0xc8, 0xf7, 0x4d, 0x6d, 0x5e, 0xd7, 0x24, 0x55, 0x53, 0xf6, 0x44, 0xbe, 0x9e, 0x12, 0x18, - 0x49, 0x83, 0x1f, 0x13, 0xa7, 0x40, 0x76, 0xc9, 0x79, 0x1e, 0xca, 0xdb, 0x68, 0x5c, 0xde, 0x22, - 0x4c, 0xfa, 0xab, 0x9e, 0xba, 0x26, 0x77, 0x20, 0x41, 0x5f, 0x11, 0x6c, 0x57, 0x7f, 0x81, 0xd8, - 0xd9, 0x38, 0x07, 0x3d, 0x58, 0x1b, 0xc1, 0x6c, 0xf4, 0x3d, 0x5e, 0x1f, 0xcb, 0xa1, 0xab, 0x2d, - 0x49, 0x70, 0xe5, 0xad, 0x24, 0x84, 0xd3, 0xd9, 0xd1, 0x5a, 0x3a, 0xcf, 0xfe, 0xff, 0xee, 0xbd, - 0x81, 0xcc, 0x5f, 0xf7, 0x06, 0x32, 0xfc, 0x32, 0x5e, 0xb9, 0xe1, 0x7a, 0xa6, 0xef, 0x42, 0x36, - 0xa2, 0x6b, 0xf0, 0xa2, 0x69, 0xa2, 0x69, 0xca, 0x34, 0xdc, 0x12, 0xfc, 0xd7, 0x04, 0x06, 0x2c, - 0xc7, 0x11, 0xc9, 0xda, 0xd5, 0x01, 0x33, 0xf0, 0x9e, 0x8c, 0xc4, 0x8d, 0x91, 0xbb, 0x06, 0x5d, - 0x76, 0x8d, 0x61, 0xb0, 0x5a, 0xad, 0x54, 0xb4, 0xc2, 0xdf, 0x77, 0x2e, 0xe7, 0x0b, 0x0e, 0xbd, - 0x88, 0x66, 0xdf, 0x76, 0xb4, 0xda, 0xd4, 0xe3, 0xbe, 0x58, 0xfd, 0xec, 0xdc, 0xce, 0xd1, 0xb8, - 0x31, 0x5a, 0x95, 0xb6, 0xdd, 0xce, 0xbe, 0xd0, 0xed, 0xec, 0x35, 0xfc, 0xc0, 0xb9, 0x86, 0x5d, - 0x62, 0x49, 0xd7, 0xf0, 0x2e, 0xcc, 0x8c, 0x7b, 0x0f, 0x37, 0x20, 0xb0, 0x67, 0xef, 0xe1, 0x07, - 0x1d, 0x70, 0xc4, 0x22, 0x58, 0x96, 0xa5, 0x1d, 0xc9, 0x08, 0x65, 0xc6, 0xc2, 0x5c, 0xe4, 0xed, - 0x12, 0x6f, 0xe4, 0x20, 0x33, 0x16, 0x66, 0xb7, 0xbc, 0x57, 0xa9, 0xc4, 0xcc, 0xad, 0x76, 0xf6, - 0x35, 0xb2, 0x23, 0x31, 0x73, 0x36, 0xe1, 0xfd, 0xdc, 0xd9, 0x86, 0x0a, 0x79, 0x42, 0x80, 0x8b, - 0x0a, 0x20, 0x56, 0x84, 0x06, 0xbd, 0x86, 0x9c, 0xd0, 0xb6, 0x27, 0xe3, 0x8a, 0xc2, 0x6f, 0x2e, - 0xaa, 0x71, 0x0f, 0x1b, 0xf2, 0x8e, 0xb6, 0xee, 0xba, 0xf3, 0xe2, 0x71, 0x2b, 0x3f, 0xbc, 0xe8, - 0xec, 0xc2, 0x86, 0xfd, 0x36, 0xf4, 0x0a, 0xd8, 0x3b, 0x4b, 0xd2, 0x7d, 0x02, 0xf9, 0x18, 0xec, - 0xbb, 0xfa, 0x55, 0xbf, 0x18, 0x5b, 0x29, 0x3b, 0xb2, 0x82, 0x9d, 0xc2, 0x86, 0xbb, 0xa4, 0x32, - 0x53, 0x37, 0xd4, 0x05, 0xb1, 0x7a, 0x59, 0xbb, 0xa1, 0xfb, 0x96, 0xef, 0x8a, 0xac, 0x2a, 0x15, - 0xd3, 0x72, 0xb3, 0xaf, 0x8c, 0xdf, 0xf8, 0xb7, 0xe1, 0x68, 0xa4, 0x16, 0x02, 0x3c, 0x0b, 0x9d, - 0x15, 0x95, 0x99, 0x88, 0xed, 0x44, 0x1c, 0xb6, 0x2d, 0xda, 0x96, 0x0e, 0x4f, 0xe1, 0xa0, 0x65, - 0x7a, 0x46, 0xd7, 0xab, 0x08, 0x83, 0x9f, 0x81, 0x43, 0xbe, 0x33, 0x74, 0xf2, 0x22, 0x74, 0xd6, - 0x74, 0xbd, 0x8a, 0x4e, 0xfa, 0xe3, 0x9c, 0xd4, 0x75, 0xfc, 0xdc, 0x2d, 0x25, 0x3e, 0x07, 0xd4, - 0xb6, 0x28, 0x1a, 0xe2, 0xa2, 0xd3, 0x82, 0xfc, 0x5b, 0x90, 0x0d, 0x9c, 0xa2, 0xa7, 0x12, 0x74, - 0xd5, 0xac, 0x13, 0xf4, 0x95, 0x8f, 0xf5, 0x65, 0x49, 0x05, 0x86, 0x29, 0x5b, 0x71, 0x62, 0xad, - 0x17, 0xfe, 0x67, 0x99, 0xa6, 0x9f, 0x11, 0x00, 0xaf, 0x8b, 0x68, 0x31, 0xce, 0x56, 0xf4, 0xcf, - 0x21, 0x9c, 0x90, 0x5a, 0x1e, 0x67, 0x5e, 0xe1, 0x6e, 0x1d, 0xc8, 0x87, 0x3f, 0xfd, 0xf1, 0x69, - 0xc7, 0x71, 0xca, 0x0b, 0x31, 0x3f, 0xec, 0xf8, 0x3a, 0xf0, 0x4b, 0x02, 0xdd, 0xae, 0x1d, 0x3a, - 0x96, 0xce, 0x9f, 0x03, 0xaf, 0x98, 0x56, 0x1c, 0xd1, 0x9d, 0xf7, 0xd0, 0x3d, 0x4f, 0x27, 0x1b, - 0xa3, 0x13, 0x56, 0x82, 0x0d, 0xb7, 0x4a, 0x7f, 0x25, 0x90, 0x8b, 0xda, 0xc3, 0xe9, 0x54, 0x3a, - 0x28, 0xe1, 0xd1, 0x89, 0x7b, 0xa1, 0x05, 0x4d, 0xe4, 0x73, 0xd5, 0xe3, 0x53, 0xa2, 0xe7, 0x5a, - 0xe0, 0x23, 0xf8, 0xde, 0x7b, 0xf4, 0x5f, 0x02, 0xc7, 0x12, 0x77, 0x56, 0x5a, 0x4a, 0x07, 0x35, - 0x61, 0x50, 0xe4, 0xa6, 0xb7, 0x63, 0x02, 0x69, 0xcf, 0x7a, 0xb4, 0xaf, 0xd0, 0xcb, 0xad, 0xd0, - 0xf6, 0x26, 0x3d, 0x7f, 0x00, 0x7e, 0x20, 0x00, 0x9e, 0xbf, 0x06, 0xcd, 0x12, 0xda, 0xe5, 0x1a, - 0x34, 0x4b, 0x78, 0x96, 0xe7, 0xdf, 0xf7, 0x78, 0x94, 0xe9, 0xcc, 0x36, 0xd3, 0x27, 0xac, 0x04, - 0xdf, 0x2e, 0xab, 0xf4, 0x1f, 0x02, 0xd9, 0x88, 0x38, 0xd2, 0x33, 0x89, 0x38, 0xe3, 0x97, 0x55, - 0x6e, 0xaa, 0x79, 0x45, 0x64, 0x6a, 0x78, 0x4c, 0x15, 0x2a, 0xb7, 0x9b, 0x69, 0x64, 0x3a, 0xe9, - 0x8f, 0x04, 0x72, 0x51, 0x4b, 0x59, 0x83, 0x56, 0x4d, 0xd8, 0x3f, 0x1b, 0xb4, 0x6a, 0xd2, 0x06, - 0xc8, 0x97, 0xbc, 0x08, 0x9c, 0xa6, 0xa7, 0xe2, 0x22, 0x90, 0x98, 0xcf, 0x7a, 0x7f, 0x26, 0xee, - 0x32, 0x0d, 0xfa, 0x33, 0xcd, 0x22, 0xd7, 0xa0, 0x3f, 0x53, 0xad, 0x52, 0x29, 0xfb, 0xd3, 0xa5, - 0x97, 0x32, 0xa1, 0x8c, 0x7e, 0x4f, 0xe0, 0x40, 0x60, 0x54, 0xa7, 0xe3, 0x89, 0x68, 0xa3, 0xf6, - 0x22, 0x6e, 0xa2, 0x19, 0x15, 0x24, 0x74, 0xcd, 0x23, 0xf4, 0x0a, 0x2d, 0xb5, 0x42, 0xc8, 0x08, - 0xc0, 0x7e, 0x42, 0x20, 0x1b, 0x31, 0xe4, 0x36, 0xe8, 0xcc, 0xf8, 0x69, 0x9e, 0x9b, 0x6a, 0x5e, - 0x11, 0xa9, 0x5d, 0xf1, 0xa8, 0x9d, 0xa7, 0x2f, 0xb7, 0x42, 0xcd, 0xf7, 0x32, 0xdf, 0x24, 0x40, - 0xc3, 0xce, 0xe8, 0xe9, 0x26, 0xd1, 0x39, 0xac, 0xce, 0x34, 0xad, 0x87, 0xa4, 0xde, 0xf3, 0x48, - 0x5d, 0xa7, 0xaf, 0x6f, 0x8f, 0x54, 0x78, 0x06, 0xf8, 0x86, 0x40, 0x4f, 0x70, 0x98, 0xa4, 0xc9, - 0x45, 0x15, 0x39, 0xed, 0x72, 0x93, 0x4d, 0xe9, 0x20, 0xb3, 0x97, 0x3c, 0x66, 0x13, 0xf4, 0xb9, - 0x38, 0x66, 0x15, 0x57, 0x79, 0x4e, 0xd5, 0x6e, 0xe8, 0xc2, 0x8a, 0x3d, 0x48, 0xaf, 0xd2, 0x8f, - 0x08, 0x74, 0xd6, 0x47, 0x54, 0x3a, 0x94, 0xe8, 0xdc, 0x37, 0x0d, 0x73, 0xc3, 0x29, 0x24, 0x11, - 0xdc, 0xb0, 0x07, 0x2e, 0x4f, 0xfb, 0xe3, 0xc0, 0xd5, 0x27, 0x62, 0xfa, 0x31, 0x81, 0x2e, 0x7b, - 0x7e, 0xa5, 0x23, 0xc9, 0x0e, 0xfc, 0x23, 0x33, 0x37, 0x9a, 0x4a, 0x16, 0xe1, 0x8c, 0x7a, 0x70, - 0x0a, 0x34, 0x1f, 0x0b, 0xc7, 0x9e, 0xa2, 0x2f, 0x3e, 0xdc, 0xc8, 0x93, 0x47, 0x1b, 0x79, 0xf2, - 0xfb, 0x46, 0x9e, 0x7c, 0xb2, 0x99, 0xcf, 0x3c, 0xda, 0xcc, 0x67, 0x7e, 0xd9, 0xcc, 0x67, 0xde, - 0x39, 0xa9, 0xa8, 0x66, 0x65, 0x69, 0xbe, 0xb8, 0xa0, 0x2f, 0x3a, 0x36, 0xec, 0xff, 0xc6, 0x98, - 0x74, 0x53, 0xb8, 0xed, 0x1a, 0x34, 0xef, 0xd4, 0x64, 0x36, 0xdf, 0x65, 0xfd, 0x85, 0x71, 0xf2, - 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x88, 0x69, 0x9e, 0x5b, 0x70, 0x1d, 0x00, 0x00, +func (m *QueryTokenizeShareRecordByIdRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryTokenizeShareRecordByIdRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryTokenizeShareRecordByIdRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryTokenizeShareRecordByIdRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryTokenizeShareRecordByIdRequest.Merge(m, src) +} +func (m *QueryTokenizeShareRecordByIdRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryTokenizeShareRecordByIdRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryTokenizeShareRecordByIdRequest.DiscardUnknown(m) } -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 +var xxx_messageInfo_QueryTokenizeShareRecordByIdRequest proto.InternalMessageInfo -// QueryClient is the client API for Query service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type QueryClient interface { - // Validators queries all validators that match the given status. - // - // When called from another module, this query might consume a high amount of - // gas if the pagination field is incorrectly set. - Validators(ctx context.Context, in *QueryValidatorsRequest, opts ...grpc.CallOption) (*QueryValidatorsResponse, error) - // Validator queries validator info for given validator address. - Validator(ctx context.Context, in *QueryValidatorRequest, opts ...grpc.CallOption) (*QueryValidatorResponse, error) - // ValidatorDelegations queries delegate info for given validator. - // - // When called from another module, this query might consume a high amount of - // gas if the pagination field is incorrectly set. - ValidatorDelegations(ctx context.Context, in *QueryValidatorDelegationsRequest, opts ...grpc.CallOption) (*QueryValidatorDelegationsResponse, error) - // ValidatorUnbondingDelegations queries unbonding delegations of a validator. - // - // When called from another module, this query might consume a high amount of - // gas if the pagination field is incorrectly set. - ValidatorUnbondingDelegations(ctx context.Context, in *QueryValidatorUnbondingDelegationsRequest, opts ...grpc.CallOption) (*QueryValidatorUnbondingDelegationsResponse, error) - // Delegation queries delegate info for given validator delegator pair. - Delegation(ctx context.Context, in *QueryDelegationRequest, opts ...grpc.CallOption) (*QueryDelegationResponse, error) - // UnbondingDelegation queries unbonding info for given validator delegator - // pair. - UnbondingDelegation(ctx context.Context, in *QueryUnbondingDelegationRequest, opts ...grpc.CallOption) (*QueryUnbondingDelegationResponse, error) - // DelegatorDelegations queries all delegations of a given delegator address. - // - // When called from another module, this query might consume a high amount of - // gas if the pagination field is incorrectly set. - DelegatorDelegations(ctx context.Context, in *QueryDelegatorDelegationsRequest, opts ...grpc.CallOption) (*QueryDelegatorDelegationsResponse, error) - // DelegatorUnbondingDelegations queries all unbonding delegations of a given - // delegator address. - // - // When called from another module, this query might consume a high amount of - // gas if the pagination field is incorrectly set. - DelegatorUnbondingDelegations(ctx context.Context, in *QueryDelegatorUnbondingDelegationsRequest, opts ...grpc.CallOption) (*QueryDelegatorUnbondingDelegationsResponse, error) - // Redelegations queries redelegations of given address. - // - // When called from another module, this query might consume a high amount of - // gas if the pagination field is incorrectly set. - Redelegations(ctx context.Context, in *QueryRedelegationsRequest, opts ...grpc.CallOption) (*QueryRedelegationsResponse, error) - // DelegatorValidators queries all validators info for given delegator - // address. - // - // When called from another module, this query might consume a high amount of - // gas if the pagination field is incorrectly set. - DelegatorValidators(ctx context.Context, in *QueryDelegatorValidatorsRequest, opts ...grpc.CallOption) (*QueryDelegatorValidatorsResponse, error) - // DelegatorValidator queries validator info for given delegator validator - // pair. - DelegatorValidator(ctx context.Context, in *QueryDelegatorValidatorRequest, opts ...grpc.CallOption) (*QueryDelegatorValidatorResponse, error) - // HistoricalInfo queries the historical info for given height. - HistoricalInfo(ctx context.Context, in *QueryHistoricalInfoRequest, opts ...grpc.CallOption) (*QueryHistoricalInfoResponse, error) - // Pool queries the pool info. - Pool(ctx context.Context, in *QueryPoolRequest, opts ...grpc.CallOption) (*QueryPoolResponse, error) - // Parameters queries the staking parameters. - Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) +func (m *QueryTokenizeShareRecordByIdRequest) GetId() uint64 { + if m != nil { + return m.Id + } + return 0 } -type queryClient struct { - cc grpc1.ClientConn +// QueryTokenizeShareRecordByIdRequest is response type for the +// Query/QueryTokenizeShareRecordById RPC method. +type QueryTokenizeShareRecordByIdResponse struct { + Record TokenizeShareRecord `protobuf:"bytes,1,opt,name=record,proto3" json:"record"` } -func NewQueryClient(cc grpc1.ClientConn) QueryClient { - return &queryClient{cc} +func (m *QueryTokenizeShareRecordByIdResponse) Reset() { *m = QueryTokenizeShareRecordByIdResponse{} } +func (m *QueryTokenizeShareRecordByIdResponse) String() string { return proto.CompactTextString(m) } +func (*QueryTokenizeShareRecordByIdResponse) ProtoMessage() {} +func (*QueryTokenizeShareRecordByIdResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_f270127f442bbcd8, []int{29} } - -func (c *queryClient) Validators(ctx context.Context, in *QueryValidatorsRequest, opts ...grpc.CallOption) (*QueryValidatorsResponse, error) { - out := new(QueryValidatorsResponse) - err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/Validators", in, out, opts...) - if err != nil { - return nil, err +func (m *QueryTokenizeShareRecordByIdResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryTokenizeShareRecordByIdResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryTokenizeShareRecordByIdResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return out, nil +} +func (m *QueryTokenizeShareRecordByIdResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryTokenizeShareRecordByIdResponse.Merge(m, src) +} +func (m *QueryTokenizeShareRecordByIdResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryTokenizeShareRecordByIdResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryTokenizeShareRecordByIdResponse.DiscardUnknown(m) } -func (c *queryClient) Validator(ctx context.Context, in *QueryValidatorRequest, opts ...grpc.CallOption) (*QueryValidatorResponse, error) { - out := new(QueryValidatorResponse) - err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/Validator", in, out, opts...) - if err != nil { - return nil, err +var xxx_messageInfo_QueryTokenizeShareRecordByIdResponse proto.InternalMessageInfo + +func (m *QueryTokenizeShareRecordByIdResponse) GetRecord() TokenizeShareRecord { + if m != nil { + return m.Record } - return out, nil + return TokenizeShareRecord{} } -func (c *queryClient) ValidatorDelegations(ctx context.Context, in *QueryValidatorDelegationsRequest, opts ...grpc.CallOption) (*QueryValidatorDelegationsResponse, error) { - out := new(QueryValidatorDelegationsResponse) - err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/ValidatorDelegations", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +// QueryTokenizeShareRecordByDenomRequest is request type for the +// Query/QueryTokenizeShareRecordByDenom RPC method. +type QueryTokenizeShareRecordByDenomRequest struct { + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` } -func (c *queryClient) ValidatorUnbondingDelegations(ctx context.Context, in *QueryValidatorUnbondingDelegationsRequest, opts ...grpc.CallOption) (*QueryValidatorUnbondingDelegationsResponse, error) { - out := new(QueryValidatorUnbondingDelegationsResponse) - err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/ValidatorUnbondingDelegations", in, out, opts...) - if err != nil { - return nil, err +func (m *QueryTokenizeShareRecordByDenomRequest) Reset() { + *m = QueryTokenizeShareRecordByDenomRequest{} +} +func (m *QueryTokenizeShareRecordByDenomRequest) String() string { return proto.CompactTextString(m) } +func (*QueryTokenizeShareRecordByDenomRequest) ProtoMessage() {} +func (*QueryTokenizeShareRecordByDenomRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_f270127f442bbcd8, []int{30} +} +func (m *QueryTokenizeShareRecordByDenomRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryTokenizeShareRecordByDenomRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryTokenizeShareRecordByDenomRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return out, nil +} +func (m *QueryTokenizeShareRecordByDenomRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryTokenizeShareRecordByDenomRequest.Merge(m, src) +} +func (m *QueryTokenizeShareRecordByDenomRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryTokenizeShareRecordByDenomRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryTokenizeShareRecordByDenomRequest.DiscardUnknown(m) } -func (c *queryClient) Delegation(ctx context.Context, in *QueryDelegationRequest, opts ...grpc.CallOption) (*QueryDelegationResponse, error) { - out := new(QueryDelegationResponse) - err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/Delegation", in, out, opts...) - if err != nil { - return nil, err +var xxx_messageInfo_QueryTokenizeShareRecordByDenomRequest proto.InternalMessageInfo + +func (m *QueryTokenizeShareRecordByDenomRequest) GetDenom() string { + if m != nil { + return m.Denom } - return out, nil + return "" } -func (c *queryClient) UnbondingDelegation(ctx context.Context, in *QueryUnbondingDelegationRequest, opts ...grpc.CallOption) (*QueryUnbondingDelegationResponse, error) { - out := new(QueryUnbondingDelegationResponse) - err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/UnbondingDelegation", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +// QueryTokenizeShareRecordByDenomResponse is response type for the +// Query/QueryTokenizeShareRecordByDenom RPC method. +type QueryTokenizeShareRecordByDenomResponse struct { + Record TokenizeShareRecord `protobuf:"bytes,1,opt,name=record,proto3" json:"record"` } -func (c *queryClient) DelegatorDelegations(ctx context.Context, in *QueryDelegatorDelegationsRequest, opts ...grpc.CallOption) (*QueryDelegatorDelegationsResponse, error) { - out := new(QueryDelegatorDelegationsResponse) - err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/DelegatorDelegations", in, out, opts...) - if err != nil { - return nil, err +func (m *QueryTokenizeShareRecordByDenomResponse) Reset() { + *m = QueryTokenizeShareRecordByDenomResponse{} +} +func (m *QueryTokenizeShareRecordByDenomResponse) String() string { return proto.CompactTextString(m) } +func (*QueryTokenizeShareRecordByDenomResponse) ProtoMessage() {} +func (*QueryTokenizeShareRecordByDenomResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_f270127f442bbcd8, []int{31} +} +func (m *QueryTokenizeShareRecordByDenomResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryTokenizeShareRecordByDenomResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryTokenizeShareRecordByDenomResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return out, nil +} +func (m *QueryTokenizeShareRecordByDenomResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryTokenizeShareRecordByDenomResponse.Merge(m, src) +} +func (m *QueryTokenizeShareRecordByDenomResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryTokenizeShareRecordByDenomResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryTokenizeShareRecordByDenomResponse.DiscardUnknown(m) } -func (c *queryClient) DelegatorUnbondingDelegations(ctx context.Context, in *QueryDelegatorUnbondingDelegationsRequest, opts ...grpc.CallOption) (*QueryDelegatorUnbondingDelegationsResponse, error) { - out := new(QueryDelegatorUnbondingDelegationsResponse) - err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/DelegatorUnbondingDelegations", in, out, opts...) - if err != nil { - return nil, err +var xxx_messageInfo_QueryTokenizeShareRecordByDenomResponse proto.InternalMessageInfo + +func (m *QueryTokenizeShareRecordByDenomResponse) GetRecord() TokenizeShareRecord { + if m != nil { + return m.Record } - return out, nil + return TokenizeShareRecord{} } -func (c *queryClient) Redelegations(ctx context.Context, in *QueryRedelegationsRequest, opts ...grpc.CallOption) (*QueryRedelegationsResponse, error) { - out := new(QueryRedelegationsResponse) - err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/Redelegations", in, out, opts...) - if err != nil { - return nil, err +// QueryTokenizeShareRecordsOwnedRequest is request type for the +// Query/QueryTokenizeShareRecordsOwned RPC method. +type QueryTokenizeShareRecordsOwnedRequest struct { + Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` +} + +func (m *QueryTokenizeShareRecordsOwnedRequest) Reset() { *m = QueryTokenizeShareRecordsOwnedRequest{} } +func (m *QueryTokenizeShareRecordsOwnedRequest) String() string { return proto.CompactTextString(m) } +func (*QueryTokenizeShareRecordsOwnedRequest) ProtoMessage() {} +func (*QueryTokenizeShareRecordsOwnedRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_f270127f442bbcd8, []int{32} +} +func (m *QueryTokenizeShareRecordsOwnedRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryTokenizeShareRecordsOwnedRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryTokenizeShareRecordsOwnedRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return out, nil +} +func (m *QueryTokenizeShareRecordsOwnedRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryTokenizeShareRecordsOwnedRequest.Merge(m, src) +} +func (m *QueryTokenizeShareRecordsOwnedRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryTokenizeShareRecordsOwnedRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryTokenizeShareRecordsOwnedRequest.DiscardUnknown(m) } -func (c *queryClient) DelegatorValidators(ctx context.Context, in *QueryDelegatorValidatorsRequest, opts ...grpc.CallOption) (*QueryDelegatorValidatorsResponse, error) { - out := new(QueryDelegatorValidatorsResponse) - err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/DelegatorValidators", in, out, opts...) - if err != nil { - return nil, err +var xxx_messageInfo_QueryTokenizeShareRecordsOwnedRequest proto.InternalMessageInfo + +func (m *QueryTokenizeShareRecordsOwnedRequest) GetOwner() string { + if m != nil { + return m.Owner } - return out, nil + return "" } -func (c *queryClient) DelegatorValidator(ctx context.Context, in *QueryDelegatorValidatorRequest, opts ...grpc.CallOption) (*QueryDelegatorValidatorResponse, error) { - out := new(QueryDelegatorValidatorResponse) - err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/DelegatorValidator", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +// QueryTokenizeShareRecordsOwnedResponse is response type for the +// Query/QueryTokenizeShareRecordsOwned RPC method. +type QueryTokenizeShareRecordsOwnedResponse struct { + Records []TokenizeShareRecord `protobuf:"bytes,1,rep,name=records,proto3" json:"records"` } -func (c *queryClient) HistoricalInfo(ctx context.Context, in *QueryHistoricalInfoRequest, opts ...grpc.CallOption) (*QueryHistoricalInfoResponse, error) { - out := new(QueryHistoricalInfoResponse) - err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/HistoricalInfo", in, out, opts...) - if err != nil { - return nil, err +func (m *QueryTokenizeShareRecordsOwnedResponse) Reset() { + *m = QueryTokenizeShareRecordsOwnedResponse{} +} +func (m *QueryTokenizeShareRecordsOwnedResponse) String() string { return proto.CompactTextString(m) } +func (*QueryTokenizeShareRecordsOwnedResponse) ProtoMessage() {} +func (*QueryTokenizeShareRecordsOwnedResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_f270127f442bbcd8, []int{33} +} +func (m *QueryTokenizeShareRecordsOwnedResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryTokenizeShareRecordsOwnedResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryTokenizeShareRecordsOwnedResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return out, nil +} +func (m *QueryTokenizeShareRecordsOwnedResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryTokenizeShareRecordsOwnedResponse.Merge(m, src) +} +func (m *QueryTokenizeShareRecordsOwnedResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryTokenizeShareRecordsOwnedResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryTokenizeShareRecordsOwnedResponse.DiscardUnknown(m) } -func (c *queryClient) Pool(ctx context.Context, in *QueryPoolRequest, opts ...grpc.CallOption) (*QueryPoolResponse, error) { - out := new(QueryPoolResponse) - err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/Pool", in, out, opts...) - if err != nil { - return nil, err +var xxx_messageInfo_QueryTokenizeShareRecordsOwnedResponse proto.InternalMessageInfo + +func (m *QueryTokenizeShareRecordsOwnedResponse) GetRecords() []TokenizeShareRecord { + if m != nil { + return m.Records } - return out, nil + return nil } -func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { - out := new(QueryParamsResponse) - err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/Params", in, out, opts...) - if err != nil { - return nil, err +// QueryAllTokenizeShareRecordsRequest is request type for the +// Query/QueryAllTokenizeShareRecords RPC method. +type QueryAllTokenizeShareRecordsRequest struct { + // pagination defines an optional pagination for the request. + Pagination *query.PageRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *QueryAllTokenizeShareRecordsRequest) Reset() { *m = QueryAllTokenizeShareRecordsRequest{} } +func (m *QueryAllTokenizeShareRecordsRequest) String() string { return proto.CompactTextString(m) } +func (*QueryAllTokenizeShareRecordsRequest) ProtoMessage() {} +func (*QueryAllTokenizeShareRecordsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_f270127f442bbcd8, []int{34} +} +func (m *QueryAllTokenizeShareRecordsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryAllTokenizeShareRecordsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryAllTokenizeShareRecordsRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return out, nil +} +func (m *QueryAllTokenizeShareRecordsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllTokenizeShareRecordsRequest.Merge(m, src) +} +func (m *QueryAllTokenizeShareRecordsRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryAllTokenizeShareRecordsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllTokenizeShareRecordsRequest.DiscardUnknown(m) } -// QueryServer is the server API for Query service. -type QueryServer interface { - // Validators queries all validators that match the given status. - // - // When called from another module, this query might consume a high amount of - // gas if the pagination field is incorrectly set. - Validators(context.Context, *QueryValidatorsRequest) (*QueryValidatorsResponse, error) - // Validator queries validator info for given validator address. - Validator(context.Context, *QueryValidatorRequest) (*QueryValidatorResponse, error) - // ValidatorDelegations queries delegate info for given validator. - // - // When called from another module, this query might consume a high amount of - // gas if the pagination field is incorrectly set. - ValidatorDelegations(context.Context, *QueryValidatorDelegationsRequest) (*QueryValidatorDelegationsResponse, error) - // ValidatorUnbondingDelegations queries unbonding delegations of a validator. - // - // When called from another module, this query might consume a high amount of - // gas if the pagination field is incorrectly set. - ValidatorUnbondingDelegations(context.Context, *QueryValidatorUnbondingDelegationsRequest) (*QueryValidatorUnbondingDelegationsResponse, error) - // Delegation queries delegate info for given validator delegator pair. - Delegation(context.Context, *QueryDelegationRequest) (*QueryDelegationResponse, error) - // UnbondingDelegation queries unbonding info for given validator delegator - // pair. - UnbondingDelegation(context.Context, *QueryUnbondingDelegationRequest) (*QueryUnbondingDelegationResponse, error) - // DelegatorDelegations queries all delegations of a given delegator address. - // - // When called from another module, this query might consume a high amount of - // gas if the pagination field is incorrectly set. - DelegatorDelegations(context.Context, *QueryDelegatorDelegationsRequest) (*QueryDelegatorDelegationsResponse, error) - // DelegatorUnbondingDelegations queries all unbonding delegations of a given - // delegator address. - // - // When called from another module, this query might consume a high amount of - // gas if the pagination field is incorrectly set. - DelegatorUnbondingDelegations(context.Context, *QueryDelegatorUnbondingDelegationsRequest) (*QueryDelegatorUnbondingDelegationsResponse, error) - // Redelegations queries redelegations of given address. - // - // When called from another module, this query might consume a high amount of - // gas if the pagination field is incorrectly set. - Redelegations(context.Context, *QueryRedelegationsRequest) (*QueryRedelegationsResponse, error) - // DelegatorValidators queries all validators info for given delegator - // address. - // - // When called from another module, this query might consume a high amount of - // gas if the pagination field is incorrectly set. - DelegatorValidators(context.Context, *QueryDelegatorValidatorsRequest) (*QueryDelegatorValidatorsResponse, error) - // DelegatorValidator queries validator info for given delegator validator - // pair. - DelegatorValidator(context.Context, *QueryDelegatorValidatorRequest) (*QueryDelegatorValidatorResponse, error) - // HistoricalInfo queries the historical info for given height. - HistoricalInfo(context.Context, *QueryHistoricalInfoRequest) (*QueryHistoricalInfoResponse, error) - // Pool queries the pool info. - Pool(context.Context, *QueryPoolRequest) (*QueryPoolResponse, error) - // Parameters queries the staking parameters. - Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) +var xxx_messageInfo_QueryAllTokenizeShareRecordsRequest proto.InternalMessageInfo + +func (m *QueryAllTokenizeShareRecordsRequest) GetPagination() *query.PageRequest { + if m != nil { + return m.Pagination + } + return nil } -// UnimplementedQueryServer can be embedded to have forward compatible implementations. -type UnimplementedQueryServer struct { +// QueryAllTokenizeShareRecordsResponse is response type for the +// Query/QueryAllTokenizeShareRecords RPC method. +type QueryAllTokenizeShareRecordsResponse struct { + Records []TokenizeShareRecord `protobuf:"bytes,1,rep,name=records,proto3" json:"records"` + // pagination defines the pagination in the response. + Pagination *query.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` } -func (*UnimplementedQueryServer) Validators(ctx context.Context, req *QueryValidatorsRequest) (*QueryValidatorsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Validators not implemented") +func (m *QueryAllTokenizeShareRecordsResponse) Reset() { *m = QueryAllTokenizeShareRecordsResponse{} } +func (m *QueryAllTokenizeShareRecordsResponse) String() string { return proto.CompactTextString(m) } +func (*QueryAllTokenizeShareRecordsResponse) ProtoMessage() {} +func (*QueryAllTokenizeShareRecordsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_f270127f442bbcd8, []int{35} } -func (*UnimplementedQueryServer) Validator(ctx context.Context, req *QueryValidatorRequest) (*QueryValidatorResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Validator not implemented") +func (m *QueryAllTokenizeShareRecordsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) } -func (*UnimplementedQueryServer) ValidatorDelegations(ctx context.Context, req *QueryValidatorDelegationsRequest) (*QueryValidatorDelegationsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ValidatorDelegations not implemented") +func (m *QueryAllTokenizeShareRecordsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryAllTokenizeShareRecordsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } } -func (*UnimplementedQueryServer) ValidatorUnbondingDelegations(ctx context.Context, req *QueryValidatorUnbondingDelegationsRequest) (*QueryValidatorUnbondingDelegationsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ValidatorUnbondingDelegations not implemented") +func (m *QueryAllTokenizeShareRecordsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllTokenizeShareRecordsResponse.Merge(m, src) } -func (*UnimplementedQueryServer) Delegation(ctx context.Context, req *QueryDelegationRequest) (*QueryDelegationResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delegation not implemented") +func (m *QueryAllTokenizeShareRecordsResponse) XXX_Size() int { + return m.Size() } -func (*UnimplementedQueryServer) UnbondingDelegation(ctx context.Context, req *QueryUnbondingDelegationRequest) (*QueryUnbondingDelegationResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UnbondingDelegation not implemented") +func (m *QueryAllTokenizeShareRecordsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllTokenizeShareRecordsResponse.DiscardUnknown(m) } -func (*UnimplementedQueryServer) DelegatorDelegations(ctx context.Context, req *QueryDelegatorDelegationsRequest) (*QueryDelegatorDelegationsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DelegatorDelegations not implemented") + +var xxx_messageInfo_QueryAllTokenizeShareRecordsResponse proto.InternalMessageInfo + +func (m *QueryAllTokenizeShareRecordsResponse) GetRecords() []TokenizeShareRecord { + if m != nil { + return m.Records + } + return nil } -func (*UnimplementedQueryServer) DelegatorUnbondingDelegations(ctx context.Context, req *QueryDelegatorUnbondingDelegationsRequest) (*QueryDelegatorUnbondingDelegationsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DelegatorUnbondingDelegations not implemented") + +func (m *QueryAllTokenizeShareRecordsResponse) GetPagination() *query.PageResponse { + if m != nil { + return m.Pagination + } + return nil } -func (*UnimplementedQueryServer) Redelegations(ctx context.Context, req *QueryRedelegationsRequest) (*QueryRedelegationsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Redelegations not implemented") + +// QueryLastTokenizeShareRecordIdRequest is request type for the +// Query/QueryLastTokenizeShareRecordId RPC method. +type QueryLastTokenizeShareRecordIdRequest struct { } -func (*UnimplementedQueryServer) DelegatorValidators(ctx context.Context, req *QueryDelegatorValidatorsRequest) (*QueryDelegatorValidatorsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DelegatorValidators not implemented") + +func (m *QueryLastTokenizeShareRecordIdRequest) Reset() { *m = QueryLastTokenizeShareRecordIdRequest{} } +func (m *QueryLastTokenizeShareRecordIdRequest) String() string { return proto.CompactTextString(m) } +func (*QueryLastTokenizeShareRecordIdRequest) ProtoMessage() {} +func (*QueryLastTokenizeShareRecordIdRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_f270127f442bbcd8, []int{36} } -func (*UnimplementedQueryServer) DelegatorValidator(ctx context.Context, req *QueryDelegatorValidatorRequest) (*QueryDelegatorValidatorResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DelegatorValidator not implemented") +func (m *QueryLastTokenizeShareRecordIdRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) } -func (*UnimplementedQueryServer) HistoricalInfo(ctx context.Context, req *QueryHistoricalInfoRequest) (*QueryHistoricalInfoResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method HistoricalInfo not implemented") +func (m *QueryLastTokenizeShareRecordIdRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryLastTokenizeShareRecordIdRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } } -func (*UnimplementedQueryServer) Pool(ctx context.Context, req *QueryPoolRequest) (*QueryPoolResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Pool not implemented") +func (m *QueryLastTokenizeShareRecordIdRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryLastTokenizeShareRecordIdRequest.Merge(m, src) } -func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") +func (m *QueryLastTokenizeShareRecordIdRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryLastTokenizeShareRecordIdRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryLastTokenizeShareRecordIdRequest.DiscardUnknown(m) } -func RegisterQueryServer(s grpc1.Server, srv QueryServer) { - s.RegisterService(&_Query_serviceDesc, srv) +var xxx_messageInfo_QueryLastTokenizeShareRecordIdRequest proto.InternalMessageInfo + +// QueryLastTokenizeShareRecordIdResponse is response type for the +// Query/QueryLastTokenizeShareRecordId RPC method. +type QueryLastTokenizeShareRecordIdResponse struct { + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` } -func _Query_Validators_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryValidatorsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).Validators(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.staking.v1beta1.Query/Validators", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Validators(ctx, req.(*QueryValidatorsRequest)) +func (m *QueryLastTokenizeShareRecordIdResponse) Reset() { + *m = QueryLastTokenizeShareRecordIdResponse{} +} +func (m *QueryLastTokenizeShareRecordIdResponse) String() string { return proto.CompactTextString(m) } +func (*QueryLastTokenizeShareRecordIdResponse) ProtoMessage() {} +func (*QueryLastTokenizeShareRecordIdResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_f270127f442bbcd8, []int{37} +} +func (m *QueryLastTokenizeShareRecordIdResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryLastTokenizeShareRecordIdResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryLastTokenizeShareRecordIdResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return interceptor(ctx, in, info, handler) +} +func (m *QueryLastTokenizeShareRecordIdResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryLastTokenizeShareRecordIdResponse.Merge(m, src) +} +func (m *QueryLastTokenizeShareRecordIdResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryLastTokenizeShareRecordIdResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryLastTokenizeShareRecordIdResponse.DiscardUnknown(m) } -func _Query_Validator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryValidatorRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).Validator(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.staking.v1beta1.Query/Validator", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Validator(ctx, req.(*QueryValidatorRequest)) +var xxx_messageInfo_QueryLastTokenizeShareRecordIdResponse proto.InternalMessageInfo + +func (m *QueryLastTokenizeShareRecordIdResponse) GetId() uint64 { + if m != nil { + return m.Id } - return interceptor(ctx, in, info, handler) + return 0 } -func _Query_ValidatorDelegations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryValidatorDelegationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).ValidatorDelegations(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.staking.v1beta1.Query/ValidatorDelegations", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).ValidatorDelegations(ctx, req.(*QueryValidatorDelegationsRequest)) - } - return interceptor(ctx, in, info, handler) +// QueryTotalTokenizeSharedAssetsRequest is request type for the +// Query/QueryTotalTokenizeSharedAssets RPC method. +type QueryTotalTokenizeSharedAssetsRequest struct { } -func _Query_ValidatorUnbondingDelegations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryValidatorUnbondingDelegationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).ValidatorUnbondingDelegations(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.staking.v1beta1.Query/ValidatorUnbondingDelegations", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).ValidatorUnbondingDelegations(ctx, req.(*QueryValidatorUnbondingDelegationsRequest)) +func (m *QueryTotalTokenizeSharedAssetsRequest) Reset() { *m = QueryTotalTokenizeSharedAssetsRequest{} } +func (m *QueryTotalTokenizeSharedAssetsRequest) String() string { return proto.CompactTextString(m) } +func (*QueryTotalTokenizeSharedAssetsRequest) ProtoMessage() {} +func (*QueryTotalTokenizeSharedAssetsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_f270127f442bbcd8, []int{38} +} +func (m *QueryTotalTokenizeSharedAssetsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryTotalTokenizeSharedAssetsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryTotalTokenizeSharedAssetsRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return interceptor(ctx, in, info, handler) +} +func (m *QueryTotalTokenizeSharedAssetsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryTotalTokenizeSharedAssetsRequest.Merge(m, src) +} +func (m *QueryTotalTokenizeSharedAssetsRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryTotalTokenizeSharedAssetsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryTotalTokenizeSharedAssetsRequest.DiscardUnknown(m) } -func _Query_Delegation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryDelegationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).Delegation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.staking.v1beta1.Query/Delegation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Delegation(ctx, req.(*QueryDelegationRequest)) - } - return interceptor(ctx, in, info, handler) +var xxx_messageInfo_QueryTotalTokenizeSharedAssetsRequest proto.InternalMessageInfo + +// QueryTotalTokenizeSharedAssetsResponse is response type for the +// Query/QueryTotalTokenizeSharedAssets RPC method. +type QueryTotalTokenizeSharedAssetsResponse struct { + Value types.Coin `protobuf:"bytes,1,opt,name=value,proto3" json:"value"` } -func _Query_UnbondingDelegation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryUnbondingDelegationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).UnbondingDelegation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.staking.v1beta1.Query/UnbondingDelegation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).UnbondingDelegation(ctx, req.(*QueryUnbondingDelegationRequest)) +func (m *QueryTotalTokenizeSharedAssetsResponse) Reset() { + *m = QueryTotalTokenizeSharedAssetsResponse{} +} +func (m *QueryTotalTokenizeSharedAssetsResponse) String() string { return proto.CompactTextString(m) } +func (*QueryTotalTokenizeSharedAssetsResponse) ProtoMessage() {} +func (*QueryTotalTokenizeSharedAssetsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_f270127f442bbcd8, []int{39} +} +func (m *QueryTotalTokenizeSharedAssetsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryTotalTokenizeSharedAssetsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryTotalTokenizeSharedAssetsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return interceptor(ctx, in, info, handler) +} +func (m *QueryTotalTokenizeSharedAssetsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryTotalTokenizeSharedAssetsResponse.Merge(m, src) +} +func (m *QueryTotalTokenizeSharedAssetsResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryTotalTokenizeSharedAssetsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryTotalTokenizeSharedAssetsResponse.DiscardUnknown(m) } -func _Query_DelegatorDelegations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryDelegatorDelegationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).DelegatorDelegations(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.staking.v1beta1.Query/DelegatorDelegations", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).DelegatorDelegations(ctx, req.(*QueryDelegatorDelegationsRequest)) +var xxx_messageInfo_QueryTotalTokenizeSharedAssetsResponse proto.InternalMessageInfo + +func (m *QueryTotalTokenizeSharedAssetsResponse) GetValue() types.Coin { + if m != nil { + return m.Value } - return interceptor(ctx, in, info, handler) + return types.Coin{} } -func _Query_DelegatorUnbondingDelegations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryDelegatorUnbondingDelegationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).DelegatorUnbondingDelegations(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.staking.v1beta1.Query/DelegatorUnbondingDelegations", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).DelegatorUnbondingDelegations(ctx, req.(*QueryDelegatorUnbondingDelegationsRequest)) - } - return interceptor(ctx, in, info, handler) +// QueryTotalLiquidStakedRequest is request type for the +// Query/QueryQueryTotalLiquidStaked RPC method. +type QueryTotalLiquidStaked struct { } -func _Query_Redelegations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryRedelegationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).Redelegations(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.staking.v1beta1.Query/Redelegations", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Redelegations(ctx, req.(*QueryRedelegationsRequest)) +func (m *QueryTotalLiquidStaked) Reset() { *m = QueryTotalLiquidStaked{} } +func (m *QueryTotalLiquidStaked) String() string { return proto.CompactTextString(m) } +func (*QueryTotalLiquidStaked) ProtoMessage() {} +func (*QueryTotalLiquidStaked) Descriptor() ([]byte, []int) { + return fileDescriptor_f270127f442bbcd8, []int{40} +} +func (m *QueryTotalLiquidStaked) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryTotalLiquidStaked) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryTotalLiquidStaked.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return interceptor(ctx, in, info, handler) +} +func (m *QueryTotalLiquidStaked) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryTotalLiquidStaked.Merge(m, src) +} +func (m *QueryTotalLiquidStaked) XXX_Size() int { + return m.Size() +} +func (m *QueryTotalLiquidStaked) XXX_DiscardUnknown() { + xxx_messageInfo_QueryTotalLiquidStaked.DiscardUnknown(m) } -func _Query_DelegatorValidators_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryDelegatorValidatorsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).DelegatorValidators(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.staking.v1beta1.Query/DelegatorValidators", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).DelegatorValidators(ctx, req.(*QueryDelegatorValidatorsRequest)) - } - return interceptor(ctx, in, info, handler) +var xxx_messageInfo_QueryTotalLiquidStaked proto.InternalMessageInfo + +// QueryTotalLiquidStakedResponse is response type for the +// Query/QueryQueryTotalLiquidStaked RPC method. +type QueryTotalLiquidStakedResponse struct { + Tokens string `protobuf:"bytes,1,opt,name=tokens,proto3" json:"tokens,omitempty"` } -func _Query_DelegatorValidator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryDelegatorValidatorRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).DelegatorValidator(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.staking.v1beta1.Query/DelegatorValidator", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).DelegatorValidator(ctx, req.(*QueryDelegatorValidatorRequest)) +func (m *QueryTotalLiquidStakedResponse) Reset() { *m = QueryTotalLiquidStakedResponse{} } +func (m *QueryTotalLiquidStakedResponse) String() string { return proto.CompactTextString(m) } +func (*QueryTotalLiquidStakedResponse) ProtoMessage() {} +func (*QueryTotalLiquidStakedResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_f270127f442bbcd8, []int{41} +} +func (m *QueryTotalLiquidStakedResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryTotalLiquidStakedResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryTotalLiquidStakedResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return interceptor(ctx, in, info, handler) +} +func (m *QueryTotalLiquidStakedResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryTotalLiquidStakedResponse.Merge(m, src) +} +func (m *QueryTotalLiquidStakedResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryTotalLiquidStakedResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryTotalLiquidStakedResponse.DiscardUnknown(m) } -func _Query_HistoricalInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryHistoricalInfoRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).HistoricalInfo(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.staking.v1beta1.Query/HistoricalInfo", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).HistoricalInfo(ctx, req.(*QueryHistoricalInfoRequest)) +var xxx_messageInfo_QueryTotalLiquidStakedResponse proto.InternalMessageInfo + +func (m *QueryTotalLiquidStakedResponse) GetTokens() string { + if m != nil { + return m.Tokens } - return interceptor(ctx, in, info, handler) + return "" } -func _Query_Pool_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryPoolRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).Pool(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.staking.v1beta1.Query/Pool", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Pool(ctx, req.(*QueryPoolRequest)) - } - return interceptor(ctx, in, info, handler) +// QueryTokenizeShareLockInfo queries the tokenize share lock information +// associated with given account +type QueryTokenizeShareLockInfo struct { + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` } -func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryParamsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).Params(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.staking.v1beta1.Query/Params", +func (m *QueryTokenizeShareLockInfo) Reset() { *m = QueryTokenizeShareLockInfo{} } +func (m *QueryTokenizeShareLockInfo) String() string { return proto.CompactTextString(m) } +func (*QueryTokenizeShareLockInfo) ProtoMessage() {} +func (*QueryTokenizeShareLockInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_f270127f442bbcd8, []int{42} +} +func (m *QueryTokenizeShareLockInfo) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryTokenizeShareLockInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryTokenizeShareLockInfo.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) +} +func (m *QueryTokenizeShareLockInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryTokenizeShareLockInfo.Merge(m, src) +} +func (m *QueryTokenizeShareLockInfo) XXX_Size() int { + return m.Size() +} +func (m *QueryTokenizeShareLockInfo) XXX_DiscardUnknown() { + xxx_messageInfo_QueryTokenizeShareLockInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryTokenizeShareLockInfo proto.InternalMessageInfo + +func (m *QueryTokenizeShareLockInfo) GetAddress() string { + if m != nil { + return m.Address } - return interceptor(ctx, in, info, handler) + return "" } -var _Query_serviceDesc = grpc.ServiceDesc{ - ServiceName: "cosmos.staking.v1beta1.Query", - HandlerType: (*QueryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Validators", - Handler: _Query_Validators_Handler, - }, - { - MethodName: "Validator", - Handler: _Query_Validator_Handler, - }, - { - MethodName: "ValidatorDelegations", - Handler: _Query_ValidatorDelegations_Handler, - }, - { - MethodName: "ValidatorUnbondingDelegations", - Handler: _Query_ValidatorUnbondingDelegations_Handler, - }, - { - MethodName: "Delegation", - Handler: _Query_Delegation_Handler, - }, - { - MethodName: "UnbondingDelegation", - Handler: _Query_UnbondingDelegation_Handler, - }, - { - MethodName: "DelegatorDelegations", - Handler: _Query_DelegatorDelegations_Handler, - }, - { - MethodName: "DelegatorUnbondingDelegations", - Handler: _Query_DelegatorUnbondingDelegations_Handler, - }, - { - MethodName: "Redelegations", - Handler: _Query_Redelegations_Handler, - }, - { - MethodName: "DelegatorValidators", - Handler: _Query_DelegatorValidators_Handler, - }, - { - MethodName: "DelegatorValidator", - Handler: _Query_DelegatorValidator_Handler, - }, - { - MethodName: "HistoricalInfo", - Handler: _Query_HistoricalInfo_Handler, - }, - { - MethodName: "Pool", - Handler: _Query_Pool_Handler, - }, - { - MethodName: "Params", - Handler: _Query_Params_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "cosmos/staking/v1beta1/query.proto", +// QueryTokenizeShareLockInfoResponse is the response from the +// QueryTokenizeShareLockInfo query +type QueryTokenizeShareLockInfoResponse struct { + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + ExpirationTime string `protobuf:"bytes,2,opt,name=expiration_time,json=expirationTime,proto3" json:"expiration_time,omitempty"` } -func (m *QueryValidatorsRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +func (m *QueryTokenizeShareLockInfoResponse) Reset() { *m = QueryTokenizeShareLockInfoResponse{} } +func (m *QueryTokenizeShareLockInfoResponse) String() string { return proto.CompactTextString(m) } +func (*QueryTokenizeShareLockInfoResponse) ProtoMessage() {} +func (*QueryTokenizeShareLockInfoResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_f270127f442bbcd8, []int{43} } - -func (m *QueryValidatorsRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (m *QueryTokenizeShareLockInfoResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) } - -func (m *QueryValidatorsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Pagination != nil { - { - size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) +func (m *QueryTokenizeShareLockInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryTokenizeShareLockInfoResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err } - i-- - dAtA[i] = 0x12 - } - if len(m.Status) > 0 { - i -= len(m.Status) - copy(dAtA[i:], m.Status) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Status))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *QueryValidatorsResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err + return b[:n], nil } - return dAtA[:n], nil } - -func (m *QueryValidatorsResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (m *QueryTokenizeShareLockInfoResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryTokenizeShareLockInfoResponse.Merge(m, src) } - -func (m *QueryValidatorsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Pagination != nil { - { - size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - if len(m.Validators) > 0 { - for iNdEx := len(m.Validators) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Validators[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - } - return len(dAtA) - i, nil +func (m *QueryTokenizeShareLockInfoResponse) XXX_Size() int { + return m.Size() } - -func (m *QueryValidatorRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +func (m *QueryTokenizeShareLockInfoResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryTokenizeShareLockInfoResponse.DiscardUnknown(m) } -func (m *QueryValidatorRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} +var xxx_messageInfo_QueryTokenizeShareLockInfoResponse proto.InternalMessageInfo -func (m *QueryValidatorRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.ValidatorAddr) > 0 { - i -= len(m.ValidatorAddr) - copy(dAtA[i:], m.ValidatorAddr) - i = encodeVarintQuery(dAtA, i, uint64(len(m.ValidatorAddr))) - i-- - dAtA[i] = 0xa +func (m *QueryTokenizeShareLockInfoResponse) GetStatus() string { + if m != nil { + return m.Status } - return len(dAtA) - i, nil + return "" } -func (m *QueryValidatorResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +func (m *QueryTokenizeShareLockInfoResponse) GetExpirationTime() string { + if m != nil { + return m.ExpirationTime } - return dAtA[:n], nil -} - -func (m *QueryValidatorResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) + return "" } -func (m *QueryValidatorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Validator.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil +func init() { + proto.RegisterType((*QueryValidatorsRequest)(nil), "cosmos.staking.v1beta1.QueryValidatorsRequest") + proto.RegisterType((*QueryValidatorsResponse)(nil), "cosmos.staking.v1beta1.QueryValidatorsResponse") + proto.RegisterType((*QueryValidatorRequest)(nil), "cosmos.staking.v1beta1.QueryValidatorRequest") + proto.RegisterType((*QueryValidatorResponse)(nil), "cosmos.staking.v1beta1.QueryValidatorResponse") + proto.RegisterType((*QueryValidatorDelegationsRequest)(nil), "cosmos.staking.v1beta1.QueryValidatorDelegationsRequest") + proto.RegisterType((*QueryValidatorDelegationsResponse)(nil), "cosmos.staking.v1beta1.QueryValidatorDelegationsResponse") + proto.RegisterType((*QueryValidatorUnbondingDelegationsRequest)(nil), "cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsRequest") + proto.RegisterType((*QueryValidatorUnbondingDelegationsResponse)(nil), "cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse") + proto.RegisterType((*QueryDelegationRequest)(nil), "cosmos.staking.v1beta1.QueryDelegationRequest") + proto.RegisterType((*QueryDelegationResponse)(nil), "cosmos.staking.v1beta1.QueryDelegationResponse") + proto.RegisterType((*QueryUnbondingDelegationRequest)(nil), "cosmos.staking.v1beta1.QueryUnbondingDelegationRequest") + proto.RegisterType((*QueryUnbondingDelegationResponse)(nil), "cosmos.staking.v1beta1.QueryUnbondingDelegationResponse") + proto.RegisterType((*QueryDelegatorDelegationsRequest)(nil), "cosmos.staking.v1beta1.QueryDelegatorDelegationsRequest") + proto.RegisterType((*QueryDelegatorDelegationsResponse)(nil), "cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse") + proto.RegisterType((*QueryDelegatorUnbondingDelegationsRequest)(nil), "cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsRequest") + proto.RegisterType((*QueryDelegatorUnbondingDelegationsResponse)(nil), "cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse") + proto.RegisterType((*QueryRedelegationsRequest)(nil), "cosmos.staking.v1beta1.QueryRedelegationsRequest") + proto.RegisterType((*QueryRedelegationsResponse)(nil), "cosmos.staking.v1beta1.QueryRedelegationsResponse") + proto.RegisterType((*QueryDelegatorValidatorsRequest)(nil), "cosmos.staking.v1beta1.QueryDelegatorValidatorsRequest") + proto.RegisterType((*QueryDelegatorValidatorsResponse)(nil), "cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse") + proto.RegisterType((*QueryDelegatorValidatorRequest)(nil), "cosmos.staking.v1beta1.QueryDelegatorValidatorRequest") + proto.RegisterType((*QueryDelegatorValidatorResponse)(nil), "cosmos.staking.v1beta1.QueryDelegatorValidatorResponse") + proto.RegisterType((*QueryHistoricalInfoRequest)(nil), "cosmos.staking.v1beta1.QueryHistoricalInfoRequest") + proto.RegisterType((*QueryHistoricalInfoResponse)(nil), "cosmos.staking.v1beta1.QueryHistoricalInfoResponse") + proto.RegisterType((*QueryPoolRequest)(nil), "cosmos.staking.v1beta1.QueryPoolRequest") + proto.RegisterType((*QueryPoolResponse)(nil), "cosmos.staking.v1beta1.QueryPoolResponse") + proto.RegisterType((*QueryParamsRequest)(nil), "cosmos.staking.v1beta1.QueryParamsRequest") + proto.RegisterType((*QueryParamsResponse)(nil), "cosmos.staking.v1beta1.QueryParamsResponse") + proto.RegisterType((*QueryTokenizeShareRecordByIdRequest)(nil), "cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdRequest") + proto.RegisterType((*QueryTokenizeShareRecordByIdResponse)(nil), "cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdResponse") + proto.RegisterType((*QueryTokenizeShareRecordByDenomRequest)(nil), "cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomRequest") + proto.RegisterType((*QueryTokenizeShareRecordByDenomResponse)(nil), "cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomResponse") + proto.RegisterType((*QueryTokenizeShareRecordsOwnedRequest)(nil), "cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedRequest") + proto.RegisterType((*QueryTokenizeShareRecordsOwnedResponse)(nil), "cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedResponse") + proto.RegisterType((*QueryAllTokenizeShareRecordsRequest)(nil), "cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsRequest") + proto.RegisterType((*QueryAllTokenizeShareRecordsResponse)(nil), "cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse") + proto.RegisterType((*QueryLastTokenizeShareRecordIdRequest)(nil), "cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdRequest") + proto.RegisterType((*QueryLastTokenizeShareRecordIdResponse)(nil), "cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdResponse") + proto.RegisterType((*QueryTotalTokenizeSharedAssetsRequest)(nil), "cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsRequest") + proto.RegisterType((*QueryTotalTokenizeSharedAssetsResponse)(nil), "cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsResponse") + proto.RegisterType((*QueryTotalLiquidStaked)(nil), "cosmos.staking.v1beta1.QueryTotalLiquidStaked") + proto.RegisterType((*QueryTotalLiquidStakedResponse)(nil), "cosmos.staking.v1beta1.QueryTotalLiquidStakedResponse") + proto.RegisterType((*QueryTokenizeShareLockInfo)(nil), "cosmos.staking.v1beta1.QueryTokenizeShareLockInfo") + proto.RegisterType((*QueryTokenizeShareLockInfoResponse)(nil), "cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse") } -func (m *QueryValidatorDelegationsRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +func init() { + proto.RegisterFile("cosmos/staking/v1beta1/query.proto", fileDescriptor_f270127f442bbcd8) } -func (m *QueryValidatorDelegationsRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +var fileDescriptor_f270127f442bbcd8 = []byte{ + // 1994 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5a, 0xdd, 0x6f, 0x1c, 0x57, + 0x15, 0xf7, 0x75, 0x1c, 0x97, 0x9c, 0xaa, 0xa6, 0xb9, 0x76, 0x1c, 0x7b, 0x9a, 0xae, 0x9d, 0x69, + 0x88, 0x13, 0xa7, 0xde, 0x69, 0x9c, 0xc6, 0x31, 0xce, 0x57, 0xd7, 0x89, 0x42, 0x43, 0xac, 0xd6, + 0xdd, 0x94, 0x88, 0x4f, 0xad, 0xc6, 0x3b, 0xd3, 0xf5, 0xc8, 0xbb, 0x73, 0xd7, 0x33, 0xb3, 0x6e, + 0x8c, 0x65, 0x21, 0xf1, 0x80, 0xfa, 0x84, 0x90, 0x78, 0x47, 0x7d, 0x44, 0x08, 0xa4, 0x3c, 0xb8, + 0x08, 0x24, 0xe8, 0x23, 0xaa, 0x04, 0x42, 0x55, 0x51, 0xab, 0xc2, 0x43, 0x83, 0x62, 0x10, 0xbc, + 0xf0, 0x1f, 0x20, 0x84, 0x66, 0xee, 0x99, 0x2f, 0xcf, 0xdc, 0x99, 0xdd, 0xf5, 0x5a, 0x72, 0x5e, + 0x92, 0x9d, 0x3b, 0xf7, 0x9c, 0xf3, 0xfb, 0x9d, 0x8f, 0x3b, 0xf7, 0x1c, 0x19, 0xe4, 0x2a, 0xb3, + 0x1b, 0xcc, 0x56, 0x6c, 0x47, 0x5d, 0x33, 0xcc, 0x9a, 0xb2, 0x71, 0x71, 0x45, 0x77, 0xd4, 0x8b, + 0xca, 0x7a, 0x4b, 0xb7, 0x36, 0x8b, 0x4d, 0x8b, 0x39, 0x8c, 0x8e, 0xf2, 0x3d, 0x45, 0xdc, 0x53, + 0xc4, 0x3d, 0xd2, 0x34, 0xca, 0xae, 0xa8, 0xb6, 0xce, 0x05, 0x02, 0xf1, 0xa6, 0x5a, 0x33, 0x4c, + 0xd5, 0x31, 0x98, 0xc9, 0x75, 0x48, 0x23, 0x35, 0x56, 0x63, 0xde, 0x4f, 0xc5, 0xfd, 0x85, 0xab, + 0xa7, 0x6a, 0x8c, 0xd5, 0xea, 0xba, 0xa2, 0x36, 0x0d, 0x45, 0x35, 0x4d, 0xe6, 0x78, 0x22, 0x36, + 0xbe, 0x3d, 0x23, 0xc0, 0xe6, 0xe3, 0xe0, 0xbb, 0x0a, 0x51, 0x14, 0xfe, 0x96, 0x2a, 0x33, 0x7c, + 0xcb, 0xe3, 0xfc, 0x7d, 0x85, 0x1b, 0x47, 0x2a, 0xfc, 0xd5, 0x0b, 0x28, 0xea, 0x63, 0x8f, 0xb2, + 0x96, 0x8e, 0xab, 0x0d, 0xc3, 0x64, 0x8a, 0xf7, 0x2f, 0x5f, 0x92, 0x1f, 0xc2, 0xe8, 0x5b, 0xee, + 0x8e, 0x07, 0x6a, 0xdd, 0xd0, 0x54, 0x87, 0x59, 0x76, 0x59, 0x5f, 0x6f, 0xe9, 0xb6, 0x43, 0x47, + 0x61, 0xd0, 0x76, 0x54, 0xa7, 0x65, 0x8f, 0x91, 0x49, 0x72, 0xee, 0x58, 0x19, 0x9f, 0xe8, 0x1d, + 0x80, 0xd0, 0x15, 0x63, 0xfd, 0x93, 0xe4, 0xdc, 0xb3, 0xb3, 0x67, 0x8b, 0x08, 0xc2, 0x45, 0x5c, + 0xe4, 0x26, 0x11, 0x77, 0x71, 0x59, 0xad, 0xe9, 0xa8, 0xb3, 0x1c, 0x91, 0x94, 0x1f, 0x11, 0x38, + 0x99, 0x30, 0x6d, 0x37, 0x99, 0x69, 0xeb, 0x74, 0x09, 0x60, 0x23, 0x58, 0x1d, 0x23, 0x93, 0x47, + 0xce, 0x3d, 0x3b, 0x7b, 0xba, 0x98, 0x1e, 0xb3, 0x62, 0x20, 0xbf, 0x78, 0xec, 0xa3, 0x2f, 0x26, + 0xfa, 0x7e, 0xfe, 0xaf, 0x47, 0xd3, 0xa4, 0x1c, 0x91, 0xa7, 0x5f, 0x4b, 0x41, 0x3c, 0x95, 0x8b, + 0x98, 0x43, 0x89, 0x41, 0x56, 0xe1, 0x44, 0x1c, 0xb1, 0xef, 0xab, 0xd7, 0x61, 0x28, 0xb0, 0x57, + 0x51, 0x35, 0xcd, 0xe2, 0x3e, 0x5b, 0x3c, 0xfd, 0xc9, 0xce, 0xcc, 0x8b, 0x68, 0x28, 0x10, 0x2a, + 0x69, 0x9a, 0xa5, 0xdb, 0xf6, 0x7d, 0xc7, 0x32, 0xcc, 0x5a, 0xf9, 0xb9, 0x8d, 0xe8, 0xba, 0xac, + 0xed, 0x8d, 0x47, 0xe0, 0x93, 0xaf, 0xc3, 0xb1, 0x60, 0xab, 0xa7, 0xbe, 0x53, 0x97, 0x84, 0xe2, + 0xf2, 0x0e, 0x81, 0xc9, 0xb8, 0x99, 0xdb, 0x7a, 0x5d, 0xaf, 0xf1, 0x54, 0xed, 0x39, 0xa9, 0x9e, + 0xa5, 0xcc, 0x7f, 0x08, 0x9c, 0xce, 0x80, 0x8d, 0x8e, 0xfa, 0x01, 0x8c, 0x68, 0xc1, 0x72, 0xc5, + 0xc2, 0x65, 0x3f, 0x8d, 0xa6, 0x45, 0x3e, 0x0b, 0x55, 0xf9, 0x9a, 0x16, 0x27, 0x5d, 0xe7, 0xfd, + 0xe2, 0xf1, 0xc4, 0x70, 0xf2, 0x9d, 0xcd, 0x7d, 0x3a, 0xac, 0x25, 0xdf, 0xf4, 0x2e, 0xdf, 0x7e, + 0x4f, 0xe0, 0x7c, 0x9c, 0xef, 0x37, 0xcc, 0x15, 0x66, 0x6a, 0x86, 0x59, 0x7b, 0x2a, 0xe2, 0xf5, + 0x05, 0x81, 0xe9, 0x76, 0xf0, 0x63, 0xe0, 0x6a, 0x30, 0xdc, 0xf2, 0xdf, 0x27, 0xe2, 0x76, 0x41, + 0x14, 0xb7, 0x14, 0x95, 0xd1, 0xac, 0xa7, 0x81, 0xca, 0x03, 0x08, 0xd0, 0xaf, 0x08, 0x96, 0x6b, + 0x34, 0x41, 0x78, 0x34, 0x6e, 0xc2, 0x10, 0xe6, 0x46, 0x3c, 0x1a, 0x63, 0x9f, 0xec, 0xcc, 0x8c, + 0xa0, 0xa9, 0x3d, 0x41, 0x08, 0xf6, 0x7b, 0x41, 0x48, 0x86, 0xb3, 0xbf, 0xbb, 0x70, 0x2e, 0x7c, + 0xe9, 0xbd, 0xf7, 0x27, 0xfa, 0xfe, 0xfd, 0xfe, 0x44, 0x9f, 0xbc, 0x81, 0x47, 0x6e, 0x32, 0x9f, + 0xe9, 0x77, 0x60, 0x38, 0xa5, 0x6a, 0xf0, 0xa0, 0xe9, 0xa0, 0x68, 0xca, 0x34, 0x59, 0x12, 0xf2, + 0xaf, 0x09, 0x4c, 0x78, 0x86, 0x53, 0x82, 0x75, 0xa8, 0x1d, 0x66, 0xe1, 0x39, 0x99, 0x8a, 0x1b, + 0x3d, 0xf7, 0x06, 0x0c, 0xf2, 0x1c, 0x43, 0x67, 0x75, 0x9b, 0xa9, 0xa8, 0x45, 0xfe, 0xc0, 0x3f, + 0x9c, 0x6f, 0xfb, 0xf4, 0x52, 0x8a, 0x7d, 0xdf, 0xde, 0xea, 0x51, 0x8d, 0x47, 0x7c, 0xf5, 0x99, + 0x7f, 0x3a, 0xa7, 0xe3, 0x46, 0x6f, 0xad, 0xf6, 0xec, 0x74, 0x8e, 0xb8, 0xee, 0x60, 0x8f, 0xe1, + 0x0f, 0xfd, 0x63, 0x38, 0x20, 0x96, 0x75, 0x0c, 0x1f, 0xc2, 0xc8, 0x04, 0xe7, 0x70, 0x0e, 0x81, + 0xa7, 0xf6, 0x1c, 0xfe, 0xb0, 0x1f, 0xc6, 0x3d, 0x82, 0x65, 0x5d, 0x3b, 0x90, 0x88, 0x50, 0xdb, + 0xaa, 0x56, 0x52, 0x4f, 0x17, 0xb1, 0x92, 0xe7, 0x6d, 0xab, 0xfa, 0x60, 0xcf, 0x77, 0x95, 0x6a, + 0xb6, 0xb3, 0x57, 0xcf, 0x91, 0x3c, 0x3d, 0x9a, 0xed, 0x3c, 0xc8, 0xf8, 0x3e, 0x0f, 0xf4, 0x20, + 0x43, 0x3e, 0x25, 0x20, 0xa5, 0x39, 0x10, 0x33, 0xc2, 0x84, 0x51, 0x4b, 0xcf, 0x28, 0xdb, 0x97, + 0x45, 0x49, 0x11, 0x55, 0x97, 0x56, 0xb8, 0x27, 0x2c, 0xfd, 0x40, 0x4b, 0x77, 0xc7, 0xff, 0xf0, + 0x04, 0x99, 0x9f, 0x6c, 0x74, 0x0e, 0x61, 0xc1, 0xfe, 0x36, 0xf1, 0x09, 0x78, 0x7a, 0x9a, 0xa4, + 0x0f, 0x08, 0x14, 0x04, 0xd8, 0x0f, 0xf5, 0xa7, 0xbe, 0x21, 0xcc, 0x94, 0x03, 0x69, 0xc1, 0x5e, + 0xc5, 0x82, 0x7b, 0xdd, 0xb0, 0x1d, 0x66, 0x19, 0x55, 0xb5, 0x7e, 0xd7, 0x7c, 0x87, 0x45, 0x9a, + 0xef, 0x55, 0xdd, 0xa8, 0xad, 0x3a, 0x9e, 0x99, 0x23, 0x65, 0x7c, 0x92, 0xbf, 0x05, 0x2f, 0xa4, + 0x4a, 0x21, 0xc0, 0x05, 0x18, 0x58, 0x35, 0x6c, 0x07, 0xb1, 0x9d, 0x15, 0x61, 0xdb, 0x23, 0xed, + 0xc9, 0xc8, 0x14, 0x9e, 0xf7, 0x54, 0x2f, 0x33, 0x56, 0x47, 0x18, 0xf2, 0x32, 0x1c, 0x8f, 0xac, + 0xa1, 0x91, 0xab, 0x30, 0xd0, 0x64, 0xac, 0x8e, 0x46, 0x4e, 0x89, 0x8c, 0xb8, 0x32, 0x51, 0xee, + 0x9e, 0x90, 0x3c, 0x02, 0x94, 0x6b, 0x54, 0x2d, 0xb5, 0xe1, 0x97, 0xa0, 0xfc, 0x4d, 0x18, 0x8e, + 0xad, 0xa2, 0xa5, 0x12, 0x0c, 0x36, 0xbd, 0x15, 0xb4, 0x55, 0x10, 0xda, 0xf2, 0x76, 0xc5, 0x2e, + 0x53, 0x5c, 0x50, 0xbe, 0x0c, 0x2f, 0x79, 0x9a, 0xdf, 0x66, 0x6b, 0xba, 0x69, 0x7c, 0x5f, 0xbf, + 0xbf, 0xaa, 0x5a, 0x7a, 0x59, 0xaf, 0x32, 0x4b, 0x5b, 0xdc, 0xbc, 0xab, 0xf9, 0xfe, 0x1e, 0x82, + 0x7e, 0x83, 0xdf, 0xdf, 0x06, 0xca, 0xfd, 0x86, 0x26, 0xaf, 0xc3, 0x99, 0x6c, 0x31, 0x44, 0x78, + 0x17, 0x06, 0x2d, 0x6f, 0x35, 0xef, 0xee, 0x97, 0xa6, 0x68, 0xc0, 0x85, 0x5b, 0x46, 0x05, 0xf2, + 0x0d, 0x38, 0x2b, 0x36, 0x79, 0x5b, 0x37, 0x59, 0xc3, 0x07, 0x3b, 0x02, 0x47, 0x35, 0xf7, 0x19, + 0x07, 0x33, 0xfc, 0x41, 0x76, 0x60, 0x2a, 0x57, 0xbe, 0xf7, 0xa8, 0xaf, 0xc3, 0x57, 0x44, 0x56, + 0xed, 0x37, 0xdf, 0x35, 0x75, 0x2d, 0x02, 0x9a, 0xbd, 0x6b, 0xea, 0x96, 0x0f, 0xda, 0x7b, 0x90, + 0x5b, 0x62, 0xd2, 0xbe, 0x38, 0x62, 0xbe, 0x07, 0xcf, 0x70, 0x93, 0xb9, 0x17, 0x11, 0x31, 0x68, + 0x5f, 0x83, 0xdc, 0xc0, 0xac, 0x28, 0xd5, 0xeb, 0x69, 0x96, 0x7d, 0xcc, 0xf1, 0x83, 0x9d, 0x74, + 0xdd, 0x07, 0xff, 0x8e, 0x60, 0x3a, 0x09, 0xed, 0x1d, 0x00, 0xc9, 0xde, 0x9d, 0xe8, 0x53, 0x18, + 0xe3, 0x25, 0xd5, 0x76, 0x52, 0xec, 0x06, 0x55, 0x24, 0xcf, 0x63, 0x34, 0x33, 0x36, 0x22, 0xd1, + 0xbd, 0xf5, 0x36, 0x15, 0xa4, 0x91, 0xa3, 0xc6, 0x5d, 0xa4, 0x95, 0x6c, 0x5b, 0x77, 0x82, 0x93, + 0xa2, 0x12, 0x24, 0x8c, 0x70, 0x23, 0x9a, 0xb8, 0x0c, 0x47, 0x37, 0xd4, 0x7a, 0xcb, 0x6f, 0x61, + 0xc7, 0x63, 0xcc, 0x7d, 0xce, 0xb7, 0x98, 0x61, 0xa2, 0xdf, 0xf8, 0x6e, 0x79, 0x0c, 0x3b, 0x7a, + 0xcf, 0xc0, 0x92, 0xb1, 0xde, 0x32, 0xb4, 0xfb, 0x8e, 0xba, 0xa6, 0x6b, 0xf2, 0x3c, 0x7e, 0xd7, + 0x12, 0x6f, 0x02, 0x93, 0xa3, 0x30, 0xe8, 0xb8, 0x90, 0x82, 0x91, 0x29, 0x7f, 0x92, 0xe7, 0xf0, + 0xac, 0x8f, 0xe1, 0x5d, 0x62, 0xd5, 0x35, 0xf7, 0xf8, 0xa5, 0x63, 0xf0, 0x8c, 0xca, 0x3f, 0x51, + 0x28, 0xe6, 0x3f, 0xca, 0x3a, 0xc8, 0x62, 0xb9, 0xa8, 0xd5, 0xd4, 0x41, 0xed, 0x14, 0x7c, 0x59, + 0x7f, 0xd8, 0x34, 0x2c, 0x7e, 0x65, 0x73, 0x8c, 0x86, 0xce, 0xbf, 0x92, 0xe5, 0xa1, 0x70, 0xf9, + 0x6d, 0xa3, 0xa1, 0xcf, 0xfe, 0xed, 0x25, 0x38, 0xea, 0xd9, 0xa1, 0x3f, 0x23, 0x00, 0xe1, 0x4d, + 0x83, 0x16, 0x45, 0xd9, 0x97, 0x3e, 0x32, 0x96, 0x94, 0xb6, 0xf7, 0xe3, 0x5c, 0x40, 0x79, 0xcf, + 0x3d, 0xac, 0x7f, 0xf8, 0x97, 0x7f, 0xfc, 0xb4, 0xff, 0x0c, 0x95, 0x15, 0xc1, 0x70, 0x3c, 0x72, + 0x4b, 0xf9, 0x25, 0x81, 0x63, 0x81, 0x1e, 0x3a, 0xd3, 0x9e, 0x3d, 0x1f, 0x5e, 0xb1, 0xdd, 0xed, + 0x88, 0xee, 0xb5, 0x10, 0xdd, 0x65, 0x7a, 0x29, 0x1f, 0x9d, 0xb2, 0x15, 0xbf, 0x94, 0x6c, 0xd3, + 0xbf, 0x12, 0x18, 0x49, 0x9b, 0x55, 0xd2, 0xf9, 0xf6, 0xa0, 0x24, 0xdb, 0x4b, 0xe9, 0xab, 0x5d, + 0x48, 0x22, 0x9f, 0xa5, 0x90, 0x4f, 0x89, 0xde, 0xec, 0x82, 0x8f, 0x12, 0xe9, 0x0d, 0xe8, 0xff, + 0x08, 0xbc, 0x98, 0x39, 0xd7, 0xa3, 0xa5, 0xf6, 0xa0, 0x66, 0x34, 0xd3, 0xd2, 0xe2, 0x7e, 0x54, + 0x20, 0xed, 0x07, 0x21, 0xed, 0x7b, 0xf4, 0x6e, 0x37, 0xb4, 0xc3, 0x6e, 0x38, 0xea, 0x80, 0x3f, + 0x11, 0x80, 0xd0, 0x5e, 0x4e, 0xb1, 0x24, 0xe6, 0x5d, 0x39, 0xc5, 0x92, 0x9c, 0x77, 0xc8, 0xdf, + 0x0b, 0x79, 0x94, 0xe9, 0xf2, 0x3e, 0xc3, 0xa7, 0x6c, 0xc5, 0x6f, 0xe0, 0xdb, 0xf4, 0xbf, 0x04, + 0x86, 0x53, 0xfc, 0x48, 0xaf, 0x64, 0xe2, 0x14, 0x0f, 0xf4, 0xa4, 0xf9, 0xce, 0x05, 0x91, 0xa9, + 0x15, 0x32, 0xad, 0x51, 0xbd, 0xd7, 0x4c, 0x53, 0xc3, 0x49, 0xff, 0x4c, 0x60, 0x24, 0x6d, 0x70, + 0x95, 0x53, 0xaa, 0x19, 0x33, 0xba, 0x9c, 0x52, 0xcd, 0x9a, 0x92, 0xc9, 0xa5, 0xd0, 0x03, 0x73, + 0xf4, 0x55, 0x91, 0x07, 0x32, 0xe3, 0xe9, 0xd6, 0x67, 0xe6, 0xbc, 0x27, 0xa7, 0x3e, 0xdb, 0x19, + 0x76, 0xe5, 0xd4, 0x67, 0x5b, 0xe3, 0xa6, 0x36, 0xeb, 0x33, 0xa0, 0xd7, 0x66, 0x40, 0x6d, 0xfa, + 0x07, 0x02, 0xcf, 0xc5, 0xc6, 0x19, 0xf4, 0x62, 0x26, 0xda, 0xb4, 0xd9, 0x91, 0x34, 0xdb, 0x89, + 0x08, 0x12, 0x7a, 0x23, 0x24, 0x74, 0x8b, 0x96, 0xba, 0x21, 0x64, 0xc5, 0x60, 0x7f, 0x4a, 0x60, + 0x38, 0x65, 0x10, 0x90, 0x53, 0x99, 0xe2, 0x89, 0x87, 0x34, 0xdf, 0xb9, 0x20, 0x52, 0xbb, 0x17, + 0x52, 0x7b, 0x8d, 0xde, 0xe8, 0x86, 0x5a, 0xe4, 0x63, 0xbe, 0x4b, 0x80, 0x26, 0x8d, 0xd1, 0xb9, + 0x0e, 0xd1, 0xf9, 0xac, 0xae, 0x74, 0x2c, 0x87, 0xa4, 0xbe, 0x1b, 0x92, 0x7a, 0x8b, 0xbe, 0xb9, + 0x3f, 0x52, 0xc9, 0x3b, 0xc0, 0x67, 0x04, 0x4e, 0x0a, 0xda, 0x48, 0x7a, 0x35, 0x13, 0x72, 0x76, + 0xcf, 0x2a, 0x5d, 0xeb, 0x4e, 0xd8, 0xbf, 0xdc, 0x78, 0x7c, 0x17, 0xe8, 0xbc, 0x88, 0xaf, 0x83, + 0x0a, 0x2a, 0xb6, 0xab, 0xa1, 0xc2, 0xbb, 0x8a, 0xca, 0xca, 0x66, 0xc5, 0xd0, 0x94, 0x2d, 0x43, + 0xdb, 0xa6, 0xff, 0x24, 0x20, 0x89, 0x9b, 0x4d, 0x7a, 0xa3, 0x73, 0x78, 0xd1, 0x2e, 0x57, 0xba, + 0xd9, 0xb5, 0x3c, 0x32, 0xbc, 0x93, 0x97, 0xa6, 0x42, 0x86, 0x5e, 0x43, 0xed, 0x46, 0xd9, 0x64, + 0x8d, 0x6d, 0xfa, 0x98, 0xc0, 0xb8, 0xb0, 0x3f, 0xa5, 0xd7, 0x3b, 0x85, 0x19, 0x6b, 0x8b, 0xa5, + 0x1b, 0xdd, 0x8a, 0x23, 0xc9, 0x5b, 0x1e, 0xc9, 0xeb, 0xf4, 0x6a, 0x67, 0x24, 0xdd, 0xee, 0x5b, + 0x53, 0xb6, 0xbc, 0x26, 0x7c, 0xdb, 0xbd, 0xc9, 0x9c, 0x14, 0xb4, 0xa6, 0x39, 0x29, 0x9a, 0xdd, + 0x40, 0xe7, 0xa4, 0x68, 0x4e, 0x37, 0x2c, 0xcf, 0x79, 0xdc, 0x5e, 0xa1, 0xc5, 0x8e, 0xb8, 0xd9, + 0xee, 0xad, 0x7b, 0x5c, 0xd8, 0x82, 0xe6, 0x04, 0x2c, 0xaf, 0xc7, 0xcd, 0x09, 0x58, 0x6e, 0xe7, + 0x2b, 0x5f, 0xf7, 0x48, 0x5d, 0xa1, 0x97, 0x45, 0xa4, 0xea, 0xaa, 0xed, 0x54, 0xd2, 0xa3, 0x66, + 0x68, 0xf4, 0x73, 0x2f, 0x19, 0x05, 0xbd, 0x6f, 0x6e, 0x32, 0x66, 0x37, 0xd7, 0xb9, 0xc9, 0x98, + 0xd3, 0x72, 0xcb, 0xd7, 0xf2, 0x2e, 0x2c, 0x8e, 0xab, 0x62, 0x0f, 0x39, 0xad, 0xa2, 0x72, 0xf0, + 0x8f, 0x08, 0x1c, 0x4f, 0xf4, 0xd6, 0x39, 0xd7, 0xea, 0xc4, 0x7e, 0x69, 0xae, 0xb3, 0xfd, 0x01, + 0xf6, 0x4b, 0x1e, 0xf6, 0x19, 0x7a, 0x21, 0x1b, 0x7b, 0xdd, 0x93, 0xad, 0xd8, 0x1c, 0xdc, 0x1f, + 0x09, 0x9c, 0x48, 0x6f, 0xea, 0x67, 0xdb, 0xaf, 0x6b, 0x5f, 0x46, 0x5a, 0xe8, 0x5c, 0x26, 0x80, + 0xbf, 0xe8, 0xc1, 0xbf, 0x46, 0x17, 0xda, 0xac, 0x95, 0x3a, 0xab, 0xae, 0x55, 0x0c, 0xf3, 0x1d, + 0xa6, 0x6c, 0xe1, 0xb4, 0x61, 0x9b, 0xfe, 0x86, 0xc0, 0x50, 0x7c, 0x34, 0x9c, 0x43, 0x23, 0x75, + 0x76, 0x2d, 0x5d, 0xea, 0x48, 0xc6, 0x2f, 0x8b, 0xf0, 0x1b, 0x3c, 0x4b, 0x5f, 0x11, 0x91, 0x58, + 0x0d, 0x84, 0x11, 0x3b, 0x1f, 0x8b, 0x6f, 0xd3, 0x1f, 0x11, 0x18, 0x58, 0x66, 0xac, 0x4e, 0xcf, + 0x65, 0x1a, 0x8f, 0xcc, 0xb6, 0xa5, 0xf3, 0x6d, 0xec, 0x44, 0x70, 0xe7, 0x43, 0x70, 0x05, 0x7a, + 0x4a, 0x04, 0xae, 0xe9, 0xda, 0xff, 0x31, 0x81, 0x41, 0x3e, 0x8d, 0xa6, 0xd3, 0xd9, 0x06, 0xa2, + 0x03, 0x70, 0xe9, 0x42, 0x5b, 0x7b, 0x11, 0xce, 0x85, 0x10, 0xce, 0x24, 0x2d, 0x08, 0xe1, 0xf0, + 0x99, 0xf8, 0x9d, 0x8f, 0x9e, 0x14, 0xc8, 0xc7, 0x4f, 0x0a, 0xe4, 0xef, 0x4f, 0x0a, 0xe4, 0x27, + 0xbb, 0x85, 0xbe, 0x8f, 0x77, 0x0b, 0x7d, 0x9f, 0xef, 0x16, 0xfa, 0xbe, 0xfd, 0x72, 0xcd, 0x70, + 0x56, 0x5b, 0x2b, 0xc5, 0x2a, 0x6b, 0xf8, 0x3a, 0xf8, 0x7f, 0x33, 0xb6, 0xb6, 0xa6, 0x3c, 0x0c, + 0x14, 0x3a, 0x9b, 0x4d, 0xdd, 0x5e, 0x19, 0xf4, 0xfe, 0x5e, 0xf0, 0xd2, 0xff, 0x03, 0x00, 0x00, + 0xff, 0xff, 0x6a, 0x6f, 0x20, 0x16, 0x5e, 0x29, 0x00, 0x00, } -func (m *QueryValidatorDelegationsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Pagination != nil { - { - size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - if len(m.ValidatorAddr) > 0 { - i -= len(m.ValidatorAddr) - copy(dAtA[i:], m.ValidatorAddr) - i = encodeVarintQuery(dAtA, i, uint64(len(m.ValidatorAddr))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// QueryClient is the client API for Query service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type QueryClient interface { + // Validators queries all validators that match the given status. + // + // When called from another module, this query might consume a high amount of + // gas if the pagination field is incorrectly set. + Validators(ctx context.Context, in *QueryValidatorsRequest, opts ...grpc.CallOption) (*QueryValidatorsResponse, error) + // Validator queries validator info for given validator address. + Validator(ctx context.Context, in *QueryValidatorRequest, opts ...grpc.CallOption) (*QueryValidatorResponse, error) + // ValidatorDelegations queries delegate info for given validator. + // + // When called from another module, this query might consume a high amount of + // gas if the pagination field is incorrectly set. + ValidatorDelegations(ctx context.Context, in *QueryValidatorDelegationsRequest, opts ...grpc.CallOption) (*QueryValidatorDelegationsResponse, error) + // ValidatorUnbondingDelegations queries unbonding delegations of a validator. + // + // When called from another module, this query might consume a high amount of + // gas if the pagination field is incorrectly set. + ValidatorUnbondingDelegations(ctx context.Context, in *QueryValidatorUnbondingDelegationsRequest, opts ...grpc.CallOption) (*QueryValidatorUnbondingDelegationsResponse, error) + // Delegation queries delegate info for given validator delegator pair. + Delegation(ctx context.Context, in *QueryDelegationRequest, opts ...grpc.CallOption) (*QueryDelegationResponse, error) + // UnbondingDelegation queries unbonding info for given validator delegator + // pair. + UnbondingDelegation(ctx context.Context, in *QueryUnbondingDelegationRequest, opts ...grpc.CallOption) (*QueryUnbondingDelegationResponse, error) + // DelegatorDelegations queries all delegations of a given delegator address. + // + // When called from another module, this query might consume a high amount of + // gas if the pagination field is incorrectly set. + DelegatorDelegations(ctx context.Context, in *QueryDelegatorDelegationsRequest, opts ...grpc.CallOption) (*QueryDelegatorDelegationsResponse, error) + // DelegatorUnbondingDelegations queries all unbonding delegations of a given + // delegator address. + // + // When called from another module, this query might consume a high amount of + // gas if the pagination field is incorrectly set. + DelegatorUnbondingDelegations(ctx context.Context, in *QueryDelegatorUnbondingDelegationsRequest, opts ...grpc.CallOption) (*QueryDelegatorUnbondingDelegationsResponse, error) + // Redelegations queries redelegations of given address. + // + // When called from another module, this query might consume a high amount of + // gas if the pagination field is incorrectly set. + Redelegations(ctx context.Context, in *QueryRedelegationsRequest, opts ...grpc.CallOption) (*QueryRedelegationsResponse, error) + // DelegatorValidators queries all validators info for given delegator + // address. + // + // When called from another module, this query might consume a high amount of + // gas if the pagination field is incorrectly set. + DelegatorValidators(ctx context.Context, in *QueryDelegatorValidatorsRequest, opts ...grpc.CallOption) (*QueryDelegatorValidatorsResponse, error) + // DelegatorValidator queries validator info for given delegator validator + // pair. + DelegatorValidator(ctx context.Context, in *QueryDelegatorValidatorRequest, opts ...grpc.CallOption) (*QueryDelegatorValidatorResponse, error) + // Query for individual tokenize share record information by share by id + TokenizeShareRecordById(ctx context.Context, in *QueryTokenizeShareRecordByIdRequest, opts ...grpc.CallOption) (*QueryTokenizeShareRecordByIdResponse, error) + // Query for individual tokenize share record information by share denom + TokenizeShareRecordByDenom(ctx context.Context, in *QueryTokenizeShareRecordByDenomRequest, opts ...grpc.CallOption) (*QueryTokenizeShareRecordByDenomResponse, error) + // Query tokenize share records by address + TokenizeShareRecordsOwned(ctx context.Context, in *QueryTokenizeShareRecordsOwnedRequest, opts ...grpc.CallOption) (*QueryTokenizeShareRecordsOwnedResponse, error) + // Query for all tokenize share records + AllTokenizeShareRecords(ctx context.Context, in *QueryAllTokenizeShareRecordsRequest, opts ...grpc.CallOption) (*QueryAllTokenizeShareRecordsResponse, error) + // Query for last tokenize share record id + LastTokenizeShareRecordId(ctx context.Context, in *QueryLastTokenizeShareRecordIdRequest, opts ...grpc.CallOption) (*QueryLastTokenizeShareRecordIdResponse, error) + // Query for total tokenized staked assets + TotalTokenizeSharedAssets(ctx context.Context, in *QueryTotalTokenizeSharedAssetsRequest, opts ...grpc.CallOption) (*QueryTotalTokenizeSharedAssetsResponse, error) + // Query for total liquid staked (including tokenized shares or owned by an liquid staking provider) + TotalLiquidStaked(ctx context.Context, in *QueryTotalLiquidStaked, opts ...grpc.CallOption) (*QueryTotalLiquidStakedResponse, error) + // Query tokenize share locks + TokenizeShareLockInfo(ctx context.Context, in *QueryTokenizeShareLockInfo, opts ...grpc.CallOption) (*QueryTokenizeShareLockInfoResponse, error) + // HistoricalInfo queries the historical info for given height. + HistoricalInfo(ctx context.Context, in *QueryHistoricalInfoRequest, opts ...grpc.CallOption) (*QueryHistoricalInfoResponse, error) + // Pool queries the pool info. + Pool(ctx context.Context, in *QueryPoolRequest, opts ...grpc.CallOption) (*QueryPoolResponse, error) + // Parameters queries the staking parameters. + Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) } -func (m *QueryValidatorDelegationsResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +type queryClient struct { + cc grpc1.ClientConn } -func (m *QueryValidatorDelegationsResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func NewQueryClient(cc grpc1.ClientConn) QueryClient { + return &queryClient{cc} } -func (m *QueryValidatorDelegationsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Pagination != nil { - { - size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - if len(m.DelegationResponses) > 0 { - for iNdEx := len(m.DelegationResponses) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.DelegationResponses[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } +func (c *queryClient) Validators(ctx context.Context, in *QueryValidatorsRequest, opts ...grpc.CallOption) (*QueryValidatorsResponse, error) { + out := new(QueryValidatorsResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/Validators", in, out, opts...) + if err != nil { + return nil, err } - return len(dAtA) - i, nil + return out, nil } -func (m *QueryValidatorUnbondingDelegationsRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) Validator(ctx context.Context, in *QueryValidatorRequest, opts ...grpc.CallOption) (*QueryValidatorResponse, error) { + out := new(QueryValidatorResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/Validator", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil + return out, nil } -func (m *QueryValidatorUnbondingDelegationsRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) ValidatorDelegations(ctx context.Context, in *QueryValidatorDelegationsRequest, opts ...grpc.CallOption) (*QueryValidatorDelegationsResponse, error) { + out := new(QueryValidatorDelegationsResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/ValidatorDelegations", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil } -func (m *QueryValidatorUnbondingDelegationsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Pagination != nil { - { - size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - if len(m.ValidatorAddr) > 0 { - i -= len(m.ValidatorAddr) - copy(dAtA[i:], m.ValidatorAddr) - i = encodeVarintQuery(dAtA, i, uint64(len(m.ValidatorAddr))) - i-- - dAtA[i] = 0xa +func (c *queryClient) ValidatorUnbondingDelegations(ctx context.Context, in *QueryValidatorUnbondingDelegationsRequest, opts ...grpc.CallOption) (*QueryValidatorUnbondingDelegationsResponse, error) { + out := new(QueryValidatorUnbondingDelegationsResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/ValidatorUnbondingDelegations", in, out, opts...) + if err != nil { + return nil, err } - return len(dAtA) - i, nil + return out, nil } -func (m *QueryValidatorUnbondingDelegationsResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) Delegation(ctx context.Context, in *QueryDelegationRequest, opts ...grpc.CallOption) (*QueryDelegationResponse, error) { + out := new(QueryDelegationResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/Delegation", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil + return out, nil } -func (m *QueryValidatorUnbondingDelegationsResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) UnbondingDelegation(ctx context.Context, in *QueryUnbondingDelegationRequest, opts ...grpc.CallOption) (*QueryUnbondingDelegationResponse, error) { + out := new(QueryUnbondingDelegationResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/UnbondingDelegation", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil } -func (m *QueryValidatorUnbondingDelegationsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Pagination != nil { - { - size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - if len(m.UnbondingResponses) > 0 { - for iNdEx := len(m.UnbondingResponses) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.UnbondingResponses[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } +func (c *queryClient) DelegatorDelegations(ctx context.Context, in *QueryDelegatorDelegationsRequest, opts ...grpc.CallOption) (*QueryDelegatorDelegationsResponse, error) { + out := new(QueryDelegatorDelegationsResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/DelegatorDelegations", in, out, opts...) + if err != nil { + return nil, err } - return len(dAtA) - i, nil + return out, nil } -func (m *QueryDelegationRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) DelegatorUnbondingDelegations(ctx context.Context, in *QueryDelegatorUnbondingDelegationsRequest, opts ...grpc.CallOption) (*QueryDelegatorUnbondingDelegationsResponse, error) { + out := new(QueryDelegatorUnbondingDelegationsResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/DelegatorUnbondingDelegations", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil + return out, nil } -func (m *QueryDelegationRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryDelegationRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.ValidatorAddr) > 0 { - i -= len(m.ValidatorAddr) - copy(dAtA[i:], m.ValidatorAddr) - i = encodeVarintQuery(dAtA, i, uint64(len(m.ValidatorAddr))) - i-- - dAtA[i] = 0x12 - } - if len(m.DelegatorAddr) > 0 { - i -= len(m.DelegatorAddr) - copy(dAtA[i:], m.DelegatorAddr) - i = encodeVarintQuery(dAtA, i, uint64(len(m.DelegatorAddr))) - i-- - dAtA[i] = 0xa +func (c *queryClient) Redelegations(ctx context.Context, in *QueryRedelegationsRequest, opts ...grpc.CallOption) (*QueryRedelegationsResponse, error) { + out := new(QueryRedelegationsResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/Redelegations", in, out, opts...) + if err != nil { + return nil, err } - return len(dAtA) - i, nil + return out, nil } -func (m *QueryDelegationResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) DelegatorValidators(ctx context.Context, in *QueryDelegatorValidatorsRequest, opts ...grpc.CallOption) (*QueryDelegatorValidatorsResponse, error) { + out := new(QueryDelegatorValidatorsResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/DelegatorValidators", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil -} - -func (m *QueryDelegationResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) + return out, nil } -func (m *QueryDelegationResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.DelegationResponse != nil { - { - size, err := m.DelegationResponse.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa +func (c *queryClient) DelegatorValidator(ctx context.Context, in *QueryDelegatorValidatorRequest, opts ...grpc.CallOption) (*QueryDelegatorValidatorResponse, error) { + out := new(QueryDelegatorValidatorResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/DelegatorValidator", in, out, opts...) + if err != nil { + return nil, err } - return len(dAtA) - i, nil + return out, nil } -func (m *QueryUnbondingDelegationRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) TokenizeShareRecordById(ctx context.Context, in *QueryTokenizeShareRecordByIdRequest, opts ...grpc.CallOption) (*QueryTokenizeShareRecordByIdResponse, error) { + out := new(QueryTokenizeShareRecordByIdResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/TokenizeShareRecordById", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil -} - -func (m *QueryUnbondingDelegationRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) + return out, nil } -func (m *QueryUnbondingDelegationRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.ValidatorAddr) > 0 { - i -= len(m.ValidatorAddr) - copy(dAtA[i:], m.ValidatorAddr) - i = encodeVarintQuery(dAtA, i, uint64(len(m.ValidatorAddr))) - i-- - dAtA[i] = 0x12 - } - if len(m.DelegatorAddr) > 0 { - i -= len(m.DelegatorAddr) - copy(dAtA[i:], m.DelegatorAddr) - i = encodeVarintQuery(dAtA, i, uint64(len(m.DelegatorAddr))) - i-- - dAtA[i] = 0xa +func (c *queryClient) TokenizeShareRecordByDenom(ctx context.Context, in *QueryTokenizeShareRecordByDenomRequest, opts ...grpc.CallOption) (*QueryTokenizeShareRecordByDenomResponse, error) { + out := new(QueryTokenizeShareRecordByDenomResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/TokenizeShareRecordByDenom", in, out, opts...) + if err != nil { + return nil, err } - return len(dAtA) - i, nil + return out, nil } -func (m *QueryUnbondingDelegationResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) TokenizeShareRecordsOwned(ctx context.Context, in *QueryTokenizeShareRecordsOwnedRequest, opts ...grpc.CallOption) (*QueryTokenizeShareRecordsOwnedResponse, error) { + out := new(QueryTokenizeShareRecordsOwnedResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/TokenizeShareRecordsOwned", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil -} - -func (m *QueryUnbondingDelegationResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) + return out, nil } -func (m *QueryUnbondingDelegationResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Unbond.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) +func (c *queryClient) AllTokenizeShareRecords(ctx context.Context, in *QueryAllTokenizeShareRecordsRequest, opts ...grpc.CallOption) (*QueryAllTokenizeShareRecordsResponse, error) { + out := new(QueryAllTokenizeShareRecordsResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/AllTokenizeShareRecords", in, out, opts...) + if err != nil { + return nil, err } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil + return out, nil } -func (m *QueryDelegatorDelegationsRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) LastTokenizeShareRecordId(ctx context.Context, in *QueryLastTokenizeShareRecordIdRequest, opts ...grpc.CallOption) (*QueryLastTokenizeShareRecordIdResponse, error) { + out := new(QueryLastTokenizeShareRecordIdResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/LastTokenizeShareRecordId", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil -} - -func (m *QueryDelegatorDelegationsRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) + return out, nil } -func (m *QueryDelegatorDelegationsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Pagination != nil { - { - size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - if len(m.DelegatorAddr) > 0 { - i -= len(m.DelegatorAddr) - copy(dAtA[i:], m.DelegatorAddr) - i = encodeVarintQuery(dAtA, i, uint64(len(m.DelegatorAddr))) - i-- - dAtA[i] = 0xa +func (c *queryClient) TotalTokenizeSharedAssets(ctx context.Context, in *QueryTotalTokenizeSharedAssetsRequest, opts ...grpc.CallOption) (*QueryTotalTokenizeSharedAssetsResponse, error) { + out := new(QueryTotalTokenizeSharedAssetsResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/TotalTokenizeSharedAssets", in, out, opts...) + if err != nil { + return nil, err } - return len(dAtA) - i, nil + return out, nil } -func (m *QueryDelegatorDelegationsResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) TotalLiquidStaked(ctx context.Context, in *QueryTotalLiquidStaked, opts ...grpc.CallOption) (*QueryTotalLiquidStakedResponse, error) { + out := new(QueryTotalLiquidStakedResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/TotalLiquidStaked", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil + return out, nil } -func (m *QueryDelegatorDelegationsResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) TokenizeShareLockInfo(ctx context.Context, in *QueryTokenizeShareLockInfo, opts ...grpc.CallOption) (*QueryTokenizeShareLockInfoResponse, error) { + out := new(QueryTokenizeShareLockInfoResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/TokenizeShareLockInfo", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil } -func (m *QueryDelegatorDelegationsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Pagination != nil { - { - size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - if len(m.DelegationResponses) > 0 { - for iNdEx := len(m.DelegationResponses) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.DelegationResponses[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } +func (c *queryClient) HistoricalInfo(ctx context.Context, in *QueryHistoricalInfoRequest, opts ...grpc.CallOption) (*QueryHistoricalInfoResponse, error) { + out := new(QueryHistoricalInfoResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/HistoricalInfo", in, out, opts...) + if err != nil { + return nil, err } - return len(dAtA) - i, nil + return out, nil } -func (m *QueryDelegatorUnbondingDelegationsRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) Pool(ctx context.Context, in *QueryPoolRequest, opts ...grpc.CallOption) (*QueryPoolResponse, error) { + out := new(QueryPoolResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/Pool", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil + return out, nil } -func (m *QueryDelegatorUnbondingDelegationsRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { + out := new(QueryParamsResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Query/Params", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil } -func (m *QueryDelegatorUnbondingDelegationsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Pagination != nil { - { - size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - if len(m.DelegatorAddr) > 0 { - i -= len(m.DelegatorAddr) - copy(dAtA[i:], m.DelegatorAddr) - i = encodeVarintQuery(dAtA, i, uint64(len(m.DelegatorAddr))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil +// QueryServer is the server API for Query service. +type QueryServer interface { + // Validators queries all validators that match the given status. + // + // When called from another module, this query might consume a high amount of + // gas if the pagination field is incorrectly set. + Validators(context.Context, *QueryValidatorsRequest) (*QueryValidatorsResponse, error) + // Validator queries validator info for given validator address. + Validator(context.Context, *QueryValidatorRequest) (*QueryValidatorResponse, error) + // ValidatorDelegations queries delegate info for given validator. + // + // When called from another module, this query might consume a high amount of + // gas if the pagination field is incorrectly set. + ValidatorDelegations(context.Context, *QueryValidatorDelegationsRequest) (*QueryValidatorDelegationsResponse, error) + // ValidatorUnbondingDelegations queries unbonding delegations of a validator. + // + // When called from another module, this query might consume a high amount of + // gas if the pagination field is incorrectly set. + ValidatorUnbondingDelegations(context.Context, *QueryValidatorUnbondingDelegationsRequest) (*QueryValidatorUnbondingDelegationsResponse, error) + // Delegation queries delegate info for given validator delegator pair. + Delegation(context.Context, *QueryDelegationRequest) (*QueryDelegationResponse, error) + // UnbondingDelegation queries unbonding info for given validator delegator + // pair. + UnbondingDelegation(context.Context, *QueryUnbondingDelegationRequest) (*QueryUnbondingDelegationResponse, error) + // DelegatorDelegations queries all delegations of a given delegator address. + // + // When called from another module, this query might consume a high amount of + // gas if the pagination field is incorrectly set. + DelegatorDelegations(context.Context, *QueryDelegatorDelegationsRequest) (*QueryDelegatorDelegationsResponse, error) + // DelegatorUnbondingDelegations queries all unbonding delegations of a given + // delegator address. + // + // When called from another module, this query might consume a high amount of + // gas if the pagination field is incorrectly set. + DelegatorUnbondingDelegations(context.Context, *QueryDelegatorUnbondingDelegationsRequest) (*QueryDelegatorUnbondingDelegationsResponse, error) + // Redelegations queries redelegations of given address. + // + // When called from another module, this query might consume a high amount of + // gas if the pagination field is incorrectly set. + Redelegations(context.Context, *QueryRedelegationsRequest) (*QueryRedelegationsResponse, error) + // DelegatorValidators queries all validators info for given delegator + // address. + // + // When called from another module, this query might consume a high amount of + // gas if the pagination field is incorrectly set. + DelegatorValidators(context.Context, *QueryDelegatorValidatorsRequest) (*QueryDelegatorValidatorsResponse, error) + // DelegatorValidator queries validator info for given delegator validator + // pair. + DelegatorValidator(context.Context, *QueryDelegatorValidatorRequest) (*QueryDelegatorValidatorResponse, error) + // Query for individual tokenize share record information by share by id + TokenizeShareRecordById(context.Context, *QueryTokenizeShareRecordByIdRequest) (*QueryTokenizeShareRecordByIdResponse, error) + // Query for individual tokenize share record information by share denom + TokenizeShareRecordByDenom(context.Context, *QueryTokenizeShareRecordByDenomRequest) (*QueryTokenizeShareRecordByDenomResponse, error) + // Query tokenize share records by address + TokenizeShareRecordsOwned(context.Context, *QueryTokenizeShareRecordsOwnedRequest) (*QueryTokenizeShareRecordsOwnedResponse, error) + // Query for all tokenize share records + AllTokenizeShareRecords(context.Context, *QueryAllTokenizeShareRecordsRequest) (*QueryAllTokenizeShareRecordsResponse, error) + // Query for last tokenize share record id + LastTokenizeShareRecordId(context.Context, *QueryLastTokenizeShareRecordIdRequest) (*QueryLastTokenizeShareRecordIdResponse, error) + // Query for total tokenized staked assets + TotalTokenizeSharedAssets(context.Context, *QueryTotalTokenizeSharedAssetsRequest) (*QueryTotalTokenizeSharedAssetsResponse, error) + // Query for total liquid staked (including tokenized shares or owned by an liquid staking provider) + TotalLiquidStaked(context.Context, *QueryTotalLiquidStaked) (*QueryTotalLiquidStakedResponse, error) + // Query tokenize share locks + TokenizeShareLockInfo(context.Context, *QueryTokenizeShareLockInfo) (*QueryTokenizeShareLockInfoResponse, error) + // HistoricalInfo queries the historical info for given height. + HistoricalInfo(context.Context, *QueryHistoricalInfoRequest) (*QueryHistoricalInfoResponse, error) + // Pool queries the pool info. + Pool(context.Context, *QueryPoolRequest) (*QueryPoolResponse, error) + // Parameters queries the staking parameters. + Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) } -func (m *QueryDelegatorUnbondingDelegationsResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +// UnimplementedQueryServer can be embedded to have forward compatible implementations. +type UnimplementedQueryServer struct { } -func (m *QueryDelegatorUnbondingDelegationsResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (*UnimplementedQueryServer) Validators(ctx context.Context, req *QueryValidatorsRequest) (*QueryValidatorsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Validators not implemented") } - -func (m *QueryDelegatorUnbondingDelegationsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Pagination != nil { - { - size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - if len(m.UnbondingResponses) > 0 { - for iNdEx := len(m.UnbondingResponses) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.UnbondingResponses[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - } - return len(dAtA) - i, nil +func (*UnimplementedQueryServer) Validator(ctx context.Context, req *QueryValidatorRequest) (*QueryValidatorResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Validator not implemented") } - -func (m *QueryRedelegationsRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +func (*UnimplementedQueryServer) ValidatorDelegations(ctx context.Context, req *QueryValidatorDelegationsRequest) (*QueryValidatorDelegationsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ValidatorDelegations not implemented") +} +func (*UnimplementedQueryServer) ValidatorUnbondingDelegations(ctx context.Context, req *QueryValidatorUnbondingDelegationsRequest) (*QueryValidatorUnbondingDelegationsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ValidatorUnbondingDelegations not implemented") +} +func (*UnimplementedQueryServer) Delegation(ctx context.Context, req *QueryDelegationRequest) (*QueryDelegationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delegation not implemented") +} +func (*UnimplementedQueryServer) UnbondingDelegation(ctx context.Context, req *QueryUnbondingDelegationRequest) (*QueryUnbondingDelegationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UnbondingDelegation not implemented") +} +func (*UnimplementedQueryServer) DelegatorDelegations(ctx context.Context, req *QueryDelegatorDelegationsRequest) (*QueryDelegatorDelegationsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DelegatorDelegations not implemented") +} +func (*UnimplementedQueryServer) DelegatorUnbondingDelegations(ctx context.Context, req *QueryDelegatorUnbondingDelegationsRequest) (*QueryDelegatorUnbondingDelegationsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DelegatorUnbondingDelegations not implemented") +} +func (*UnimplementedQueryServer) Redelegations(ctx context.Context, req *QueryRedelegationsRequest) (*QueryRedelegationsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Redelegations not implemented") +} +func (*UnimplementedQueryServer) DelegatorValidators(ctx context.Context, req *QueryDelegatorValidatorsRequest) (*QueryDelegatorValidatorsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DelegatorValidators not implemented") +} +func (*UnimplementedQueryServer) DelegatorValidator(ctx context.Context, req *QueryDelegatorValidatorRequest) (*QueryDelegatorValidatorResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DelegatorValidator not implemented") +} +func (*UnimplementedQueryServer) TokenizeShareRecordById(ctx context.Context, req *QueryTokenizeShareRecordByIdRequest) (*QueryTokenizeShareRecordByIdResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TokenizeShareRecordById not implemented") +} +func (*UnimplementedQueryServer) TokenizeShareRecordByDenom(ctx context.Context, req *QueryTokenizeShareRecordByDenomRequest) (*QueryTokenizeShareRecordByDenomResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TokenizeShareRecordByDenom not implemented") +} +func (*UnimplementedQueryServer) TokenizeShareRecordsOwned(ctx context.Context, req *QueryTokenizeShareRecordsOwnedRequest) (*QueryTokenizeShareRecordsOwnedResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TokenizeShareRecordsOwned not implemented") +} +func (*UnimplementedQueryServer) AllTokenizeShareRecords(ctx context.Context, req *QueryAllTokenizeShareRecordsRequest) (*QueryAllTokenizeShareRecordsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AllTokenizeShareRecords not implemented") +} +func (*UnimplementedQueryServer) LastTokenizeShareRecordId(ctx context.Context, req *QueryLastTokenizeShareRecordIdRequest) (*QueryLastTokenizeShareRecordIdResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method LastTokenizeShareRecordId not implemented") +} +func (*UnimplementedQueryServer) TotalTokenizeSharedAssets(ctx context.Context, req *QueryTotalTokenizeSharedAssetsRequest) (*QueryTotalTokenizeSharedAssetsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TotalTokenizeSharedAssets not implemented") +} +func (*UnimplementedQueryServer) TotalLiquidStaked(ctx context.Context, req *QueryTotalLiquidStaked) (*QueryTotalLiquidStakedResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TotalLiquidStaked not implemented") +} +func (*UnimplementedQueryServer) TokenizeShareLockInfo(ctx context.Context, req *QueryTokenizeShareLockInfo) (*QueryTokenizeShareLockInfoResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TokenizeShareLockInfo not implemented") +} +func (*UnimplementedQueryServer) HistoricalInfo(ctx context.Context, req *QueryHistoricalInfoRequest) (*QueryHistoricalInfoResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method HistoricalInfo not implemented") +} +func (*UnimplementedQueryServer) Pool(ctx context.Context, req *QueryPoolRequest) (*QueryPoolResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Pool not implemented") +} +func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") } -func (m *QueryRedelegationsRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func RegisterQueryServer(s grpc1.Server, srv QueryServer) { + s.RegisterService(&_Query_serviceDesc, srv) } -func (m *QueryRedelegationsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Pagination != nil { - { - size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 +func _Query_Validators_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryValidatorsRequest) + if err := dec(in); err != nil { + return nil, err } - if len(m.DstValidatorAddr) > 0 { - i -= len(m.DstValidatorAddr) - copy(dAtA[i:], m.DstValidatorAddr) - i = encodeVarintQuery(dAtA, i, uint64(len(m.DstValidatorAddr))) - i-- - dAtA[i] = 0x1a + if interceptor == nil { + return srv.(QueryServer).Validators(ctx, in) } - if len(m.SrcValidatorAddr) > 0 { - i -= len(m.SrcValidatorAddr) - copy(dAtA[i:], m.SrcValidatorAddr) - i = encodeVarintQuery(dAtA, i, uint64(len(m.SrcValidatorAddr))) - i-- - dAtA[i] = 0x12 + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Query/Validators", } - if len(m.DelegatorAddr) > 0 { - i -= len(m.DelegatorAddr) - copy(dAtA[i:], m.DelegatorAddr) - i = encodeVarintQuery(dAtA, i, uint64(len(m.DelegatorAddr))) - i-- - dAtA[i] = 0xa + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Validators(ctx, req.(*QueryValidatorsRequest)) } - return len(dAtA) - i, nil + return interceptor(ctx, in, info, handler) } -func (m *QueryRedelegationsResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { +func _Query_Validator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryValidatorRequest) + if err := dec(in); err != nil { return nil, err } - return dAtA[:n], nil + if interceptor == nil { + return srv.(QueryServer).Validator(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Query/Validator", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Validator(ctx, req.(*QueryValidatorRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryRedelegationsResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func _Query_ValidatorDelegations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryValidatorDelegationsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).ValidatorDelegations(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Query/ValidatorDelegations", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).ValidatorDelegations(ctx, req.(*QueryValidatorDelegationsRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryRedelegationsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Pagination != nil { - { - size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 +func _Query_ValidatorUnbondingDelegations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryValidatorUnbondingDelegationsRequest) + if err := dec(in); err != nil { + return nil, err } - if len(m.RedelegationResponses) > 0 { - for iNdEx := len(m.RedelegationResponses) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.RedelegationResponses[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } + if interceptor == nil { + return srv.(QueryServer).ValidatorUnbondingDelegations(ctx, in) } - return len(dAtA) - i, nil + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Query/ValidatorUnbondingDelegations", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).ValidatorUnbondingDelegations(ctx, req.(*QueryValidatorUnbondingDelegationsRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryDelegatorValidatorsRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { +func _Query_Delegation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryDelegationRequest) + if err := dec(in); err != nil { return nil, err } - return dAtA[:n], nil -} - -func (m *QueryDelegatorValidatorsRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryDelegatorValidatorsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Pagination != nil { - { - size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 + if interceptor == nil { + return srv.(QueryServer).Delegation(ctx, in) } - if len(m.DelegatorAddr) > 0 { - i -= len(m.DelegatorAddr) - copy(dAtA[i:], m.DelegatorAddr) - i = encodeVarintQuery(dAtA, i, uint64(len(m.DelegatorAddr))) - i-- - dAtA[i] = 0xa + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Query/Delegation", } - return len(dAtA) - i, nil + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Delegation(ctx, req.(*QueryDelegationRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryDelegatorValidatorsResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { +func _Query_UnbondingDelegation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryUnbondingDelegationRequest) + if err := dec(in); err != nil { return nil, err } - return dAtA[:n], nil -} - -func (m *QueryDelegatorValidatorsResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryDelegatorValidatorsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Pagination != nil { - { - size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 + if interceptor == nil { + return srv.(QueryServer).UnbondingDelegation(ctx, in) } - if len(m.Validators) > 0 { - for iNdEx := len(m.Validators) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Validators[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Query/UnbondingDelegation", } - return len(dAtA) - i, nil + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).UnbondingDelegation(ctx, req.(*QueryUnbondingDelegationRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryDelegatorValidatorRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { +func _Query_DelegatorDelegations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryDelegatorDelegationsRequest) + if err := dec(in); err != nil { return nil, err } - return dAtA[:n], nil + if interceptor == nil { + return srv.(QueryServer).DelegatorDelegations(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Query/DelegatorDelegations", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).DelegatorDelegations(ctx, req.(*QueryDelegatorDelegationsRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryDelegatorValidatorRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func _Query_DelegatorUnbondingDelegations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryDelegatorUnbondingDelegationsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).DelegatorUnbondingDelegations(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Query/DelegatorUnbondingDelegations", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).DelegatorUnbondingDelegations(ctx, req.(*QueryDelegatorUnbondingDelegationsRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryDelegatorValidatorRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.ValidatorAddr) > 0 { - i -= len(m.ValidatorAddr) - copy(dAtA[i:], m.ValidatorAddr) - i = encodeVarintQuery(dAtA, i, uint64(len(m.ValidatorAddr))) - i-- - dAtA[i] = 0x12 +func _Query_Redelegations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryRedelegationsRequest) + if err := dec(in); err != nil { + return nil, err } - if len(m.DelegatorAddr) > 0 { - i -= len(m.DelegatorAddr) - copy(dAtA[i:], m.DelegatorAddr) - i = encodeVarintQuery(dAtA, i, uint64(len(m.DelegatorAddr))) - i-- - dAtA[i] = 0xa + if interceptor == nil { + return srv.(QueryServer).Redelegations(ctx, in) } - return len(dAtA) - i, nil + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Query/Redelegations", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Redelegations(ctx, req.(*QueryRedelegationsRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryDelegatorValidatorResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { +func _Query_DelegatorValidators_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryDelegatorValidatorsRequest) + if err := dec(in); err != nil { return nil, err } - return dAtA[:n], nil + if interceptor == nil { + return srv.(QueryServer).DelegatorValidators(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Query/DelegatorValidators", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).DelegatorValidators(ctx, req.(*QueryDelegatorValidatorsRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryDelegatorValidatorResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func _Query_DelegatorValidator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryDelegatorValidatorRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).DelegatorValidator(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Query/DelegatorValidator", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).DelegatorValidator(ctx, req.(*QueryDelegatorValidatorRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryDelegatorValidatorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Validator.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) +func _Query_TokenizeShareRecordById_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryTokenizeShareRecordByIdRequest) + if err := dec(in); err != nil { + return nil, err } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil + if interceptor == nil { + return srv.(QueryServer).TokenizeShareRecordById(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Query/TokenizeShareRecordById", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).TokenizeShareRecordById(ctx, req.(*QueryTokenizeShareRecordByIdRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryHistoricalInfoRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { +func _Query_TokenizeShareRecordByDenom_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryTokenizeShareRecordByDenomRequest) + if err := dec(in); err != nil { return nil, err } - return dAtA[:n], nil -} - -func (m *QueryHistoricalInfoRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryHistoricalInfoRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Height != 0 { - i = encodeVarintQuery(dAtA, i, uint64(m.Height)) - i-- - dAtA[i] = 0x8 + if interceptor == nil { + return srv.(QueryServer).TokenizeShareRecordByDenom(ctx, in) } - return len(dAtA) - i, nil + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Query/TokenizeShareRecordByDenom", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).TokenizeShareRecordByDenom(ctx, req.(*QueryTokenizeShareRecordByDenomRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryHistoricalInfoResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { +func _Query_TokenizeShareRecordsOwned_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryTokenizeShareRecordsOwnedRequest) + if err := dec(in); err != nil { return nil, err } - return dAtA[:n], nil -} - -func (m *QueryHistoricalInfoResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryHistoricalInfoResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Hist != nil { - { - size, err := m.Hist.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa + if interceptor == nil { + return srv.(QueryServer).TokenizeShareRecordsOwned(ctx, in) } - return len(dAtA) - i, nil + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Query/TokenizeShareRecordsOwned", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).TokenizeShareRecordsOwned(ctx, req.(*QueryTokenizeShareRecordsOwnedRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryPoolRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { +func _Query_AllTokenizeShareRecords_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryAllTokenizeShareRecordsRequest) + if err := dec(in); err != nil { return nil, err } - return dAtA[:n], nil -} - -func (m *QueryPoolRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryPoolRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil + if interceptor == nil { + return srv.(QueryServer).AllTokenizeShareRecords(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Query/AllTokenizeShareRecords", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).AllTokenizeShareRecords(ctx, req.(*QueryAllTokenizeShareRecordsRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryPoolResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { +func _Query_LastTokenizeShareRecordId_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryLastTokenizeShareRecordIdRequest) + if err := dec(in); err != nil { return nil, err } - return dAtA[:n], nil -} - -func (m *QueryPoolResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryPoolResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Pool.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) + if interceptor == nil { + return srv.(QueryServer).LastTokenizeShareRecordId(ctx, in) } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Query/LastTokenizeShareRecordId", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).LastTokenizeShareRecordId(ctx, req.(*QueryLastTokenizeShareRecordIdRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { +func _Query_TotalTokenizeSharedAssets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryTotalTokenizeSharedAssetsRequest) + if err := dec(in); err != nil { return nil, err } - return dAtA[:n], nil -} - -func (m *QueryParamsRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryParamsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil + if interceptor == nil { + return srv.(QueryServer).TotalTokenizeSharedAssets(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Query/TotalTokenizeSharedAssets", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).TotalTokenizeSharedAssets(ctx, req.(*QueryTotalTokenizeSharedAssetsRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryParamsResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { +func _Query_TotalLiquidStaked_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryTotalLiquidStaked) + if err := dec(in); err != nil { return nil, err } - return dAtA[:n], nil -} - -func (m *QueryParamsResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) + if interceptor == nil { + return srv.(QueryServer).TotalLiquidStaked(ctx, in) } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Query/TotalLiquidStaked", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).TotalLiquidStaked(ctx, req.(*QueryTotalLiquidStaked)) + } + return interceptor(ctx, in, info, handler) } -func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { - offset -= sovQuery(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ +func _Query_TokenizeShareLockInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryTokenizeShareLockInfo) + if err := dec(in); err != nil { + return nil, err } - dAtA[offset] = uint8(v) - return base -} -func (m *QueryValidatorsRequest) Size() (n int) { - if m == nil { - return 0 + if interceptor == nil { + return srv.(QueryServer).TokenizeShareLockInfo(ctx, in) } - var l int - _ = l - l = len(m.Status) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Query/TokenizeShareLockInfo", } - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).TokenizeShareLockInfo(ctx, req.(*QueryTokenizeShareLockInfo)) } - return n + return interceptor(ctx, in, info, handler) } -func (m *QueryValidatorsResponse) Size() (n int) { - if m == nil { - return 0 +func _Query_HistoricalInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryHistoricalInfoRequest) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - if len(m.Validators) > 0 { - for _, e := range m.Validators { - l = e.Size() - n += 1 + l + sovQuery(uint64(l)) - } - } - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) + if interceptor == nil { + return srv.(QueryServer).HistoricalInfo(ctx, in) } - return n -} - -func (m *QueryValidatorRequest) Size() (n int) { - if m == nil { - return 0 + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Query/HistoricalInfo", } - var l int - _ = l - l = len(m.ValidatorAddr) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).HistoricalInfo(ctx, req.(*QueryHistoricalInfoRequest)) } - return n + return interceptor(ctx, in, info, handler) } -func (m *QueryValidatorResponse) Size() (n int) { - if m == nil { - return 0 +func _Query_Pool_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryPoolRequest) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - l = m.Validator.Size() - n += 1 + l + sovQuery(uint64(l)) - return n -} - -func (m *QueryValidatorDelegationsRequest) Size() (n int) { - if m == nil { - return 0 + if interceptor == nil { + return srv.(QueryServer).Pool(ctx, in) } - var l int - _ = l - l = len(m.ValidatorAddr) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Query/Pool", } - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Pool(ctx, req.(*QueryPoolRequest)) } - return n + return interceptor(ctx, in, info, handler) } -func (m *QueryValidatorDelegationsResponse) Size() (n int) { - if m == nil { - return 0 +func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryParamsRequest) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - if len(m.DelegationResponses) > 0 { - for _, e := range m.DelegationResponses { - l = e.Size() - n += 1 + l + sovQuery(uint64(l)) - } + if interceptor == nil { + return srv.(QueryServer).Params(ctx, in) } - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Query/Params", } - return n + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryValidatorUnbondingDelegationsRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.ValidatorAddr) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) - } - return n +var _Query_serviceDesc = grpc.ServiceDesc{ + ServiceName: "cosmos.staking.v1beta1.Query", + HandlerType: (*QueryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Validators", + Handler: _Query_Validators_Handler, + }, + { + MethodName: "Validator", + Handler: _Query_Validator_Handler, + }, + { + MethodName: "ValidatorDelegations", + Handler: _Query_ValidatorDelegations_Handler, + }, + { + MethodName: "ValidatorUnbondingDelegations", + Handler: _Query_ValidatorUnbondingDelegations_Handler, + }, + { + MethodName: "Delegation", + Handler: _Query_Delegation_Handler, + }, + { + MethodName: "UnbondingDelegation", + Handler: _Query_UnbondingDelegation_Handler, + }, + { + MethodName: "DelegatorDelegations", + Handler: _Query_DelegatorDelegations_Handler, + }, + { + MethodName: "DelegatorUnbondingDelegations", + Handler: _Query_DelegatorUnbondingDelegations_Handler, + }, + { + MethodName: "Redelegations", + Handler: _Query_Redelegations_Handler, + }, + { + MethodName: "DelegatorValidators", + Handler: _Query_DelegatorValidators_Handler, + }, + { + MethodName: "DelegatorValidator", + Handler: _Query_DelegatorValidator_Handler, + }, + { + MethodName: "TokenizeShareRecordById", + Handler: _Query_TokenizeShareRecordById_Handler, + }, + { + MethodName: "TokenizeShareRecordByDenom", + Handler: _Query_TokenizeShareRecordByDenom_Handler, + }, + { + MethodName: "TokenizeShareRecordsOwned", + Handler: _Query_TokenizeShareRecordsOwned_Handler, + }, + { + MethodName: "AllTokenizeShareRecords", + Handler: _Query_AllTokenizeShareRecords_Handler, + }, + { + MethodName: "LastTokenizeShareRecordId", + Handler: _Query_LastTokenizeShareRecordId_Handler, + }, + { + MethodName: "TotalTokenizeSharedAssets", + Handler: _Query_TotalTokenizeSharedAssets_Handler, + }, + { + MethodName: "TotalLiquidStaked", + Handler: _Query_TotalLiquidStaked_Handler, + }, + { + MethodName: "TokenizeShareLockInfo", + Handler: _Query_TokenizeShareLockInfo_Handler, + }, + { + MethodName: "HistoricalInfo", + Handler: _Query_HistoricalInfo_Handler, + }, + { + MethodName: "Pool", + Handler: _Query_Pool_Handler, + }, + { + MethodName: "Params", + Handler: _Query_Params_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "cosmos/staking/v1beta1/query.proto", } -func (m *QueryValidatorUnbondingDelegationsResponse) Size() (n int) { - if m == nil { - return 0 +func (m *QueryValidatorsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } + return dAtA[:n], nil +} + +func (m *QueryValidatorsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryValidatorsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - if len(m.UnbondingResponses) > 0 { - for _, e := range m.UnbondingResponses { - l = e.Size() - n += 1 + l + sovQuery(uint64(l)) + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0x12 } - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) + if len(m.Status) > 0 { + i -= len(m.Status) + copy(dAtA[i:], m.Status) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Status))) + i-- + dAtA[i] = 0xa } - return n + return len(dAtA) - i, nil } -func (m *QueryDelegationRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.DelegatorAddr) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - l = len(m.ValidatorAddr) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) +func (m *QueryValidatorsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } - return n + return dAtA[:n], nil } -func (m *QueryDelegationResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.DelegationResponse != nil { - l = m.DelegationResponse.Size() - n += 1 + l + sovQuery(uint64(l)) - } - return n +func (m *QueryValidatorsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryUnbondingDelegationRequest) Size() (n int) { - if m == nil { - return 0 - } +func (m *QueryValidatorsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - l = len(m.DelegatorAddr) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 } - l = len(m.ValidatorAddr) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) + if len(m.Validators) > 0 { + for iNdEx := len(m.Validators) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Validators[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } } - return n + return len(dAtA) - i, nil } -func (m *QueryUnbondingDelegationResponse) Size() (n int) { - if m == nil { - return 0 +func (m *QueryValidatorRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } - var l int - _ = l - l = m.Unbond.Size() - n += 1 + l + sovQuery(uint64(l)) - return n + return dAtA[:n], nil } -func (m *QueryDelegatorDelegationsRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.DelegatorAddr) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) - } - return n +func (m *QueryValidatorRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryDelegatorDelegationsResponse) Size() (n int) { - if m == nil { - return 0 - } +func (m *QueryValidatorRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - if len(m.DelegationResponses) > 0 { - for _, e := range m.DelegationResponses { - l = e.Size() - n += 1 + l + sovQuery(uint64(l)) - } - } - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) + if len(m.ValidatorAddr) > 0 { + i -= len(m.ValidatorAddr) + copy(dAtA[i:], m.ValidatorAddr) + i = encodeVarintQuery(dAtA, i, uint64(len(m.ValidatorAddr))) + i-- + dAtA[i] = 0xa } - return n + return len(dAtA) - i, nil } -func (m *QueryDelegatorUnbondingDelegationsRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.DelegatorAddr) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) +func (m *QueryValidatorResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } - return n + return dAtA[:n], nil } -func (m *QueryDelegatorUnbondingDelegationsResponse) Size() (n int) { - if m == nil { - return 0 - } +func (m *QueryValidatorResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryValidatorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - if len(m.UnbondingResponses) > 0 { - for _, e := range m.UnbondingResponses { - l = e.Size() - n += 1 + l + sovQuery(uint64(l)) + { + size, err := m.Validator.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) } - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) - } - return n + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil } -func (m *QueryRedelegationsRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.DelegatorAddr) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - l = len(m.SrcValidatorAddr) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - l = len(m.DstValidatorAddr) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) +func (m *QueryValidatorDelegationsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } - return n + return dAtA[:n], nil } -func (m *QueryRedelegationsResponse) Size() (n int) { - if m == nil { - return 0 - } +func (m *QueryValidatorDelegationsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryValidatorDelegationsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - if len(m.RedelegationResponses) > 0 { - for _, e := range m.RedelegationResponses { - l = e.Size() - n += 1 + l + sovQuery(uint64(l)) + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0x12 } - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) + if len(m.ValidatorAddr) > 0 { + i -= len(m.ValidatorAddr) + copy(dAtA[i:], m.ValidatorAddr) + i = encodeVarintQuery(dAtA, i, uint64(len(m.ValidatorAddr))) + i-- + dAtA[i] = 0xa } - return n + return len(dAtA) - i, nil } -func (m *QueryDelegatorValidatorsRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.DelegatorAddr) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) +func (m *QueryValidatorDelegationsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } - return n + return dAtA[:n], nil } -func (m *QueryDelegatorValidatorsResponse) Size() (n int) { - if m == nil { - return 0 - } +func (m *QueryValidatorDelegationsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryValidatorDelegationsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - if len(m.Validators) > 0 { - for _, e := range m.Validators { - l = e.Size() - n += 1 + l + sovQuery(uint64(l)) + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.DelegationResponses) > 0 { + for iNdEx := len(m.DelegationResponses) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.DelegationResponses[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa } } + return len(dAtA) - i, nil +} + +func (m *QueryValidatorUnbondingDelegationsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryValidatorUnbondingDelegationsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryValidatorUnbondingDelegationsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 } - return n + if len(m.ValidatorAddr) > 0 { + i -= len(m.ValidatorAddr) + copy(dAtA[i:], m.ValidatorAddr) + i = encodeVarintQuery(dAtA, i, uint64(len(m.ValidatorAddr))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil } -func (m *QueryDelegatorValidatorRequest) Size() (n int) { - if m == nil { - return 0 +func (m *QueryValidatorUnbondingDelegationsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } + return dAtA[:n], nil +} + +func (m *QueryValidatorUnbondingDelegationsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryValidatorUnbondingDelegationsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - l = len(m.DelegatorAddr) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 } - l = len(m.ValidatorAddr) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) + if len(m.UnbondingResponses) > 0 { + for iNdEx := len(m.UnbondingResponses) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.UnbondingResponses[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } } - return n + return len(dAtA) - i, nil } -func (m *QueryDelegatorValidatorResponse) Size() (n int) { - if m == nil { - return 0 +func (m *QueryDelegationRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } + return dAtA[:n], nil +} + +func (m *QueryDelegationRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryDelegationRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - l = m.Validator.Size() - n += 1 + l + sovQuery(uint64(l)) - return n + if len(m.ValidatorAddr) > 0 { + i -= len(m.ValidatorAddr) + copy(dAtA[i:], m.ValidatorAddr) + i = encodeVarintQuery(dAtA, i, uint64(len(m.ValidatorAddr))) + i-- + dAtA[i] = 0x12 + } + if len(m.DelegatorAddr) > 0 { + i -= len(m.DelegatorAddr) + copy(dAtA[i:], m.DelegatorAddr) + i = encodeVarintQuery(dAtA, i, uint64(len(m.DelegatorAddr))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil } -func (m *QueryHistoricalInfoRequest) Size() (n int) { - if m == nil { - return 0 +func (m *QueryDelegationResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } + return dAtA[:n], nil +} + +func (m *QueryDelegationResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryDelegationResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - if m.Height != 0 { - n += 1 + sovQuery(uint64(m.Height)) + if m.DelegationResponse != nil { + { + size, err := m.DelegationResponse.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa } - return n + return len(dAtA) - i, nil } -func (m *QueryHistoricalInfoResponse) Size() (n int) { - if m == nil { - return 0 +func (m *QueryUnbondingDelegationRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } + return dAtA[:n], nil +} + +func (m *QueryUnbondingDelegationRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryUnbondingDelegationRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - if m.Hist != nil { - l = m.Hist.Size() - n += 1 + l + sovQuery(uint64(l)) + if len(m.ValidatorAddr) > 0 { + i -= len(m.ValidatorAddr) + copy(dAtA[i:], m.ValidatorAddr) + i = encodeVarintQuery(dAtA, i, uint64(len(m.ValidatorAddr))) + i-- + dAtA[i] = 0x12 } - return n + if len(m.DelegatorAddr) > 0 { + i -= len(m.DelegatorAddr) + copy(dAtA[i:], m.DelegatorAddr) + i = encodeVarintQuery(dAtA, i, uint64(len(m.DelegatorAddr))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil } -func (m *QueryPoolRequest) Size() (n int) { - if m == nil { - return 0 +func (m *QueryUnbondingDelegationResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryUnbondingDelegationResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryUnbondingDelegationResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Unbond.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *QueryDelegatorDelegationsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryDelegatorDelegationsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryDelegatorDelegationsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.DelegatorAddr) > 0 { + i -= len(m.DelegatorAddr) + copy(dAtA[i:], m.DelegatorAddr) + i = encodeVarintQuery(dAtA, i, uint64(len(m.DelegatorAddr))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryDelegatorDelegationsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryDelegatorDelegationsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryDelegatorDelegationsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.DelegationResponses) > 0 { + for iNdEx := len(m.DelegationResponses) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.DelegationResponses[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryDelegatorUnbondingDelegationsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryDelegatorUnbondingDelegationsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryDelegatorUnbondingDelegationsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.DelegatorAddr) > 0 { + i -= len(m.DelegatorAddr) + copy(dAtA[i:], m.DelegatorAddr) + i = encodeVarintQuery(dAtA, i, uint64(len(m.DelegatorAddr))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryDelegatorUnbondingDelegationsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryDelegatorUnbondingDelegationsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryDelegatorUnbondingDelegationsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.UnbondingResponses) > 0 { + for iNdEx := len(m.UnbondingResponses) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.UnbondingResponses[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryRedelegationsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryRedelegationsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryRedelegationsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if len(m.DstValidatorAddr) > 0 { + i -= len(m.DstValidatorAddr) + copy(dAtA[i:], m.DstValidatorAddr) + i = encodeVarintQuery(dAtA, i, uint64(len(m.DstValidatorAddr))) + i-- + dAtA[i] = 0x1a + } + if len(m.SrcValidatorAddr) > 0 { + i -= len(m.SrcValidatorAddr) + copy(dAtA[i:], m.SrcValidatorAddr) + i = encodeVarintQuery(dAtA, i, uint64(len(m.SrcValidatorAddr))) + i-- + dAtA[i] = 0x12 + } + if len(m.DelegatorAddr) > 0 { + i -= len(m.DelegatorAddr) + copy(dAtA[i:], m.DelegatorAddr) + i = encodeVarintQuery(dAtA, i, uint64(len(m.DelegatorAddr))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryRedelegationsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryRedelegationsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryRedelegationsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.RedelegationResponses) > 0 { + for iNdEx := len(m.RedelegationResponses) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.RedelegationResponses[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryDelegatorValidatorsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryDelegatorValidatorsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryDelegatorValidatorsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.DelegatorAddr) > 0 { + i -= len(m.DelegatorAddr) + copy(dAtA[i:], m.DelegatorAddr) + i = encodeVarintQuery(dAtA, i, uint64(len(m.DelegatorAddr))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryDelegatorValidatorsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryDelegatorValidatorsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryDelegatorValidatorsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Validators) > 0 { + for iNdEx := len(m.Validators) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Validators[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryDelegatorValidatorRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryDelegatorValidatorRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryDelegatorValidatorRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ValidatorAddr) > 0 { + i -= len(m.ValidatorAddr) + copy(dAtA[i:], m.ValidatorAddr) + i = encodeVarintQuery(dAtA, i, uint64(len(m.ValidatorAddr))) + i-- + dAtA[i] = 0x12 + } + if len(m.DelegatorAddr) > 0 { + i -= len(m.DelegatorAddr) + copy(dAtA[i:], m.DelegatorAddr) + i = encodeVarintQuery(dAtA, i, uint64(len(m.DelegatorAddr))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryDelegatorValidatorResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryDelegatorValidatorResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryDelegatorValidatorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Validator.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *QueryHistoricalInfoRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryHistoricalInfoRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryHistoricalInfoRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Height != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.Height)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *QueryHistoricalInfoResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryHistoricalInfoResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryHistoricalInfoResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Hist != nil { + { + size, err := m.Hist.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryPoolRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryPoolRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryPoolRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryPoolResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryPoolResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryPoolResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Pool.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryParamsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryParamsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryParamsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryParamsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *QueryTokenizeShareRecordByIdRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryTokenizeShareRecordByIdRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryTokenizeShareRecordByIdRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Id != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.Id)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *QueryTokenizeShareRecordByIdResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryTokenizeShareRecordByIdResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryTokenizeShareRecordByIdResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Record.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *QueryTokenizeShareRecordByDenomRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryTokenizeShareRecordByDenomRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryTokenizeShareRecordByDenomRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryTokenizeShareRecordByDenomResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryTokenizeShareRecordByDenomResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryTokenizeShareRecordByDenomResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Record.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *QueryTokenizeShareRecordsOwnedRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryTokenizeShareRecordsOwnedRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryTokenizeShareRecordsOwnedRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Owner) > 0 { + i -= len(m.Owner) + copy(dAtA[i:], m.Owner) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Owner))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryTokenizeShareRecordsOwnedResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryTokenizeShareRecordsOwnedResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryTokenizeShareRecordsOwnedResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Records) > 0 { + for iNdEx := len(m.Records) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Records[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryAllTokenizeShareRecordsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryAllTokenizeShareRecordsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryAllTokenizeShareRecordsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryAllTokenizeShareRecordsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryAllTokenizeShareRecordsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryAllTokenizeShareRecordsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Records) > 0 { + for iNdEx := len(m.Records) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Records[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryLastTokenizeShareRecordIdRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryLastTokenizeShareRecordIdRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryLastTokenizeShareRecordIdRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryLastTokenizeShareRecordIdResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryLastTokenizeShareRecordIdResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryLastTokenizeShareRecordIdResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Id != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.Id)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *QueryTotalTokenizeSharedAssetsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryTotalTokenizeSharedAssetsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryTotalTokenizeSharedAssetsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryTotalTokenizeSharedAssetsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryTotalTokenizeSharedAssetsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryTotalTokenizeSharedAssetsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Value.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *QueryTotalLiquidStaked) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryTotalLiquidStaked) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryTotalLiquidStaked) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryTotalLiquidStakedResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryTotalLiquidStakedResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryTotalLiquidStakedResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Tokens) > 0 { + i -= len(m.Tokens) + copy(dAtA[i:], m.Tokens) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Tokens))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryTokenizeShareLockInfo) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryTokenizeShareLockInfo) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryTokenizeShareLockInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Address))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryTokenizeShareLockInfoResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryTokenizeShareLockInfoResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryTokenizeShareLockInfoResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ExpirationTime) > 0 { + i -= len(m.ExpirationTime) + copy(dAtA[i:], m.ExpirationTime) + i = encodeVarintQuery(dAtA, i, uint64(len(m.ExpirationTime))) + i-- + dAtA[i] = 0x12 + } + if len(m.Status) > 0 { + i -= len(m.Status) + copy(dAtA[i:], m.Status) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Status))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { + offset -= sovQuery(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *QueryValidatorsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Status) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryValidatorsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Validators) > 0 { + for _, e := range m.Validators { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryValidatorRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ValidatorAddr) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryValidatorResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Validator.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryValidatorDelegationsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ValidatorAddr) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryValidatorDelegationsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.DelegationResponses) > 0 { + for _, e := range m.DelegationResponses { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryValidatorUnbondingDelegationsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ValidatorAddr) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryValidatorUnbondingDelegationsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.UnbondingResponses) > 0 { + for _, e := range m.UnbondingResponses { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryDelegationRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.DelegatorAddr) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.ValidatorAddr) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryDelegationResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.DelegationResponse != nil { + l = m.DelegationResponse.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryUnbondingDelegationRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.DelegatorAddr) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.ValidatorAddr) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryUnbondingDelegationResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Unbond.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryDelegatorDelegationsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.DelegatorAddr) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryDelegatorDelegationsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.DelegationResponses) > 0 { + for _, e := range m.DelegationResponses { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryDelegatorUnbondingDelegationsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.DelegatorAddr) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryDelegatorUnbondingDelegationsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.UnbondingResponses) > 0 { + for _, e := range m.UnbondingResponses { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryRedelegationsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.DelegatorAddr) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.SrcValidatorAddr) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.DstValidatorAddr) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryRedelegationsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.RedelegationResponses) > 0 { + for _, e := range m.RedelegationResponses { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryDelegatorValidatorsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.DelegatorAddr) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryDelegatorValidatorsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Validators) > 0 { + for _, e := range m.Validators { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryDelegatorValidatorRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.DelegatorAddr) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.ValidatorAddr) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryDelegatorValidatorResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Validator.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryHistoricalInfoRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Height != 0 { + n += 1 + sovQuery(uint64(m.Height)) + } + return n +} + +func (m *QueryHistoricalInfoResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Hist != nil { + l = m.Hist.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryPoolRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryPoolResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Pool.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryParamsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryParamsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Params.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryTokenizeShareRecordByIdRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Id != 0 { + n += 1 + sovQuery(uint64(m.Id)) + } + return n +} + +func (m *QueryTokenizeShareRecordByIdResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Record.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryTokenizeShareRecordByDenomRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryTokenizeShareRecordByDenomResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Record.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryTokenizeShareRecordsOwnedRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Owner) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryTokenizeShareRecordsOwnedResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Records) > 0 { + for _, e := range m.Records { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func (m *QueryAllTokenizeShareRecordsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryAllTokenizeShareRecordsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Records) > 0 { + for _, e := range m.Records { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryLastTokenizeShareRecordIdRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryLastTokenizeShareRecordIdResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Id != 0 { + n += 1 + sovQuery(uint64(m.Id)) + } + return n +} + +func (m *QueryTotalTokenizeSharedAssetsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryTotalTokenizeSharedAssetsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Value.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryTotalLiquidStaked) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryTotalLiquidStakedResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Tokens) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryTokenizeShareLockInfo) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Address) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryTokenizeShareLockInfoResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Status) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.ExpirationTime) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func sovQuery(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozQuery(x uint64) (n int) { + return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *QueryValidatorsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryValidatorsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryValidatorsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + 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 ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Status = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageRequest{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryValidatorsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryValidatorsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryValidatorsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Validators", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Validators = append(m.Validators, Validator{}) + if err := m.Validators[len(m.Validators)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageResponse{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryValidatorRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryValidatorRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryValidatorRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddr", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + 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 ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ValidatorAddr = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryValidatorResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryValidatorResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryValidatorResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Validator", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Validator.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryValidatorDelegationsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryValidatorDelegationsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryValidatorDelegationsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddr", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + 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 ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ValidatorAddr = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageRequest{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryValidatorDelegationsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryValidatorDelegationsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryValidatorDelegationsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DelegationResponses", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DelegationResponses = append(m.DelegationResponses, DelegationResponse{}) + if err := m.DelegationResponses[len(m.DelegationResponses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageResponse{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryValidatorUnbondingDelegationsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryValidatorUnbondingDelegationsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryValidatorUnbondingDelegationsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddr", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + 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 ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ValidatorAddr = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageRequest{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryValidatorUnbondingDelegationsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryValidatorUnbondingDelegationsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryValidatorUnbondingDelegationsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UnbondingResponses", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UnbondingResponses = append(m.UnbondingResponses, UnbondingDelegation{}) + if err := m.UnbondingResponses[len(m.UnbondingResponses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageResponse{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryDelegationRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryDelegationRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryDelegationRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DelegatorAddr", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + 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 ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DelegatorAddr = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddr", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + 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 ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ValidatorAddr = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } } - var l int - _ = l - return n -} -func (m *QueryPoolResponse) Size() (n int) { - if m == nil { - return 0 + if iNdEx > l { + return io.ErrUnexpectedEOF } - var l int - _ = l - l = m.Pool.Size() - n += 1 + l + sovQuery(uint64(l)) - return n + return nil } - -func (m *QueryParamsRequest) Size() (n int) { - if m == nil { - return 0 +func (m *QueryDelegationResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryDelegationResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryDelegationResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DelegationResponse", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.DelegationResponse == nil { + m.DelegationResponse = &DelegationResponse{} + } + if err := m.DelegationResponse.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } } - var l int - _ = l - return n -} -func (m *QueryParamsResponse) Size() (n int) { - if m == nil { - return 0 + if iNdEx > l { + return io.ErrUnexpectedEOF } - var l int - _ = l - l = m.Params.Size() - n += 1 + l + sovQuery(uint64(l)) - return n -} - -func sovQuery(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozQuery(x uint64) (n int) { - return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) + return nil } -func (m *QueryValidatorsRequest) Unmarshal(dAtA []byte) error { +func (m *QueryUnbondingDelegationRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3719,15 +6599,15 @@ func (m *QueryValidatorsRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryValidatorsRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryUnbondingDelegationRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryValidatorsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryUnbondingDelegationRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DelegatorAddr", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3755,13 +6635,13 @@ func (m *QueryValidatorsRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Status = string(dAtA[iNdEx:postIndex]) + m.DelegatorAddr = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddr", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -3771,27 +6651,23 @@ func (m *QueryValidatorsRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthQuery } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthQuery } if postIndex > l { return io.ErrUnexpectedEOF } - if m.Pagination == nil { - m.Pagination = &query.PageRequest{} - } - if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.ValidatorAddr = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -3814,7 +6690,7 @@ func (m *QueryValidatorsRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryValidatorsResponse) Unmarshal(dAtA []byte) error { +func (m *QueryUnbondingDelegationResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3837,15 +6713,15 @@ func (m *QueryValidatorsResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryValidatorsResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryUnbondingDelegationResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryValidatorsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryUnbondingDelegationResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Validators", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Unbond", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -3872,10 +6748,91 @@ func (m *QueryValidatorsResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Validators = append(m.Validators, Validator{}) - if err := m.Validators[len(m.Validators)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Unbond.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { return err } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryDelegatorDelegationsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryDelegatorDelegationsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryDelegatorDelegationsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DelegatorAddr", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + 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 ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DelegatorAddr = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { @@ -3907,7 +6864,7 @@ func (m *QueryValidatorsResponse) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.Pagination == nil { - m.Pagination = &query.PageResponse{} + m.Pagination = &query.PageRequest{} } if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -3934,7 +6891,7 @@ func (m *QueryValidatorsResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryValidatorRequest) Unmarshal(dAtA []byte) error { +func (m *QueryDelegatorDelegationsResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3957,17 +6914,17 @@ func (m *QueryValidatorRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryValidatorRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryDelegatorDelegationsResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryValidatorRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryDelegatorDelegationsResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddr", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DelegationResponses", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -3977,77 +6934,29 @@ func (m *QueryValidatorRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthQuery } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthQuery } if postIndex > l { return io.ErrUnexpectedEOF } - m.ValidatorAddr = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { + m.DelegationResponses = append(m.DelegationResponses, DelegationResponse{}) + if err := m.DelegationResponses[len(m.DelegationResponses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryValidatorResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryValidatorResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryValidatorResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + iNdEx = postIndex + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Validator", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -4074,7 +6983,10 @@ func (m *QueryValidatorResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Validator.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.Pagination == nil { + m.Pagination = &query.PageResponse{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -4099,7 +7011,7 @@ func (m *QueryValidatorResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryValidatorDelegationsRequest) Unmarshal(dAtA []byte) error { +func (m *QueryDelegatorUnbondingDelegationsRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -4122,15 +7034,15 @@ func (m *QueryValidatorDelegationsRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryValidatorDelegationsRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryDelegatorUnbondingDelegationsRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryValidatorDelegationsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryDelegatorUnbondingDelegationsRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddr", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DelegatorAddr", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -4158,7 +7070,7 @@ func (m *QueryValidatorDelegationsRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ValidatorAddr = string(dAtA[iNdEx:postIndex]) + m.DelegatorAddr = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { @@ -4217,7 +7129,7 @@ func (m *QueryValidatorDelegationsRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryValidatorDelegationsResponse) Unmarshal(dAtA []byte) error { +func (m *QueryDelegatorUnbondingDelegationsResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -4240,15 +7152,15 @@ func (m *QueryValidatorDelegationsResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryValidatorDelegationsResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryDelegatorUnbondingDelegationsResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryValidatorDelegationsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryDelegatorUnbondingDelegationsResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DelegationResponses", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UnbondingResponses", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -4275,8 +7187,8 @@ func (m *QueryValidatorDelegationsResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.DelegationResponses = append(m.DelegationResponses, DelegationResponse{}) - if err := m.DelegationResponses[len(m.DelegationResponses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.UnbondingResponses = append(m.UnbondingResponses, UnbondingDelegation{}) + if err := m.UnbondingResponses[len(m.UnbondingResponses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -4337,7 +7249,7 @@ func (m *QueryValidatorDelegationsResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryValidatorUnbondingDelegationsRequest) Unmarshal(dAtA []byte) error { +func (m *QueryRedelegationsRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -4360,15 +7272,15 @@ func (m *QueryValidatorUnbondingDelegationsRequest) Unmarshal(dAtA []byte) error fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryValidatorUnbondingDelegationsRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryRedelegationsRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryValidatorUnbondingDelegationsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryRedelegationsRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddr", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DelegatorAddr", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -4396,9 +7308,73 @@ func (m *QueryValidatorUnbondingDelegationsRequest) Unmarshal(dAtA []byte) error if postIndex > l { return io.ErrUnexpectedEOF } - m.ValidatorAddr = string(dAtA[iNdEx:postIndex]) + m.DelegatorAddr = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SrcValidatorAddr", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + 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 ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SrcValidatorAddr = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DstValidatorAddr", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + 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 ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DstValidatorAddr = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) } @@ -4455,7 +7431,7 @@ func (m *QueryValidatorUnbondingDelegationsRequest) Unmarshal(dAtA []byte) error } return nil } -func (m *QueryValidatorUnbondingDelegationsResponse) Unmarshal(dAtA []byte) error { +func (m *QueryRedelegationsResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -4478,15 +7454,15 @@ func (m *QueryValidatorUnbondingDelegationsResponse) Unmarshal(dAtA []byte) erro fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryValidatorUnbondingDelegationsResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryRedelegationsResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryValidatorUnbondingDelegationsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryRedelegationsResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UnbondingResponses", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RedelegationResponses", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -4513,8 +7489,8 @@ func (m *QueryValidatorUnbondingDelegationsResponse) Unmarshal(dAtA []byte) erro if postIndex > l { return io.ErrUnexpectedEOF } - m.UnbondingResponses = append(m.UnbondingResponses, UnbondingDelegation{}) - if err := m.UnbondingResponses[len(m.UnbondingResponses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.RedelegationResponses = append(m.RedelegationResponses, RedelegationResponse{}) + if err := m.RedelegationResponses[len(m.RedelegationResponses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -4575,7 +7551,7 @@ func (m *QueryValidatorUnbondingDelegationsResponse) Unmarshal(dAtA []byte) erro } return nil } -func (m *QueryDelegationRequest) Unmarshal(dAtA []byte) error { +func (m *QueryDelegatorValidatorsRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -4598,10 +7574,10 @@ func (m *QueryDelegationRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryDelegationRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryDelegatorValidatorsRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryDelegationRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryDelegatorValidatorsRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -4638,9 +7614,9 @@ func (m *QueryDelegationRequest) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddr", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -4650,23 +7626,27 @@ func (m *QueryDelegationRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthQuery } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthQuery } if postIndex > l { return io.ErrUnexpectedEOF } - m.ValidatorAddr = string(dAtA[iNdEx:postIndex]) + if m.Pagination == nil { + m.Pagination = &query.PageRequest{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -4689,7 +7669,7 @@ func (m *QueryDelegationRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryDelegationResponse) Unmarshal(dAtA []byte) error { +func (m *QueryDelegatorValidatorsResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -4712,15 +7692,49 @@ func (m *QueryDelegationResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryDelegationResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryDelegatorValidatorsResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryDelegationResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryDelegatorValidatorsResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DelegationResponse", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Validators", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Validators = append(m.Validators, Validator{}) + if err := m.Validators[len(m.Validators)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -4747,10 +7761,10 @@ func (m *QueryDelegationResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.DelegationResponse == nil { - m.DelegationResponse = &DelegationResponse{} + if m.Pagination == nil { + m.Pagination = &query.PageResponse{} } - if err := m.DelegationResponse.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -4775,7 +7789,7 @@ func (m *QueryDelegationResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryUnbondingDelegationRequest) Unmarshal(dAtA []byte) error { +func (m *QueryDelegatorValidatorRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -4798,10 +7812,10 @@ func (m *QueryUnbondingDelegationRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryUnbondingDelegationRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryDelegatorValidatorRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryUnbondingDelegationRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryDelegatorValidatorRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -4889,7 +7903,7 @@ func (m *QueryUnbondingDelegationRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryUnbondingDelegationResponse) Unmarshal(dAtA []byte) error { +func (m *QueryDelegatorValidatorResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -4912,15 +7926,15 @@ func (m *QueryUnbondingDelegationResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryUnbondingDelegationResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryDelegatorValidatorResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryUnbondingDelegationResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryDelegatorValidatorResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Unbond", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Validator", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -4947,7 +7961,7 @@ func (m *QueryUnbondingDelegationResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Unbond.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Validator.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -4972,7 +7986,7 @@ func (m *QueryUnbondingDelegationResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryDelegatorDelegationsRequest) Unmarshal(dAtA []byte) error { +func (m *QueryHistoricalInfoRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -4995,17 +8009,17 @@ func (m *QueryDelegatorDelegationsRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryDelegatorDelegationsRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryHistoricalInfoRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryDelegatorDelegationsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryHistoricalInfoRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DelegatorAddr", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Height", wireType) } - var stringLen uint64 + m.Height = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -5015,27 +8029,64 @@ func (m *QueryDelegatorDelegationsRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.Height |= int64(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthQuery + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err } - postIndex := iNdEx + intStringLen - if postIndex < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthQuery } - if postIndex > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.DelegatorAddr = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryHistoricalInfoResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryHistoricalInfoResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryHistoricalInfoResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Hist", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -5062,10 +8113,10 @@ func (m *QueryDelegatorDelegationsRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Pagination == nil { - m.Pagination = &query.PageRequest{} + if m.Hist == nil { + m.Hist = &HistoricalInfo{} } - if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Hist.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -5090,7 +8141,7 @@ func (m *QueryDelegatorDelegationsRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryDelegatorDelegationsResponse) Unmarshal(dAtA []byte) error { +func (m *QueryPoolRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -5113,49 +8164,65 @@ func (m *QueryDelegatorDelegationsResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryDelegatorDelegationsResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryPoolRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryDelegatorDelegationsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryPoolRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DelegationResponses", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err } - if msglen < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthQuery } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF } - if postIndex > l { + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryPoolResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { return io.ErrUnexpectedEOF } - m.DelegationResponses = append(m.DelegationResponses, DelegationResponse{}) - if err := m.DelegationResponses[len(m.DelegationResponses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break } - iNdEx = postIndex - case 2: + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryPoolResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryPoolResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Pool", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -5182,10 +8249,7 @@ func (m *QueryDelegatorDelegationsResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Pagination == nil { - m.Pagination = &query.PageResponse{} - } - if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Pool.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -5210,7 +8274,7 @@ func (m *QueryDelegatorDelegationsResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryDelegatorUnbondingDelegationsRequest) Unmarshal(dAtA []byte) error { +func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -5233,47 +8297,65 @@ func (m *QueryDelegatorUnbondingDelegationsRequest) Unmarshal(dAtA []byte) error fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryDelegatorUnbondingDelegationsRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryDelegatorUnbondingDelegationsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DelegatorAddr", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err } - intStringLen := int(stringLen) - if intStringLen < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthQuery } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF } - if postIndex > l { + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { return io.ErrUnexpectedEOF } - m.DelegatorAddr = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -5300,10 +8382,7 @@ func (m *QueryDelegatorUnbondingDelegationsRequest) Unmarshal(dAtA []byte) error if postIndex > l { return io.ErrUnexpectedEOF } - if m.Pagination == nil { - m.Pagination = &query.PageRequest{} - } - if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -5328,7 +8407,7 @@ func (m *QueryDelegatorUnbondingDelegationsRequest) Unmarshal(dAtA []byte) error } return nil } -func (m *QueryDelegatorUnbondingDelegationsResponse) Unmarshal(dAtA []byte) error { +func (m *QueryTokenizeShareRecordByIdRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -5351,17 +8430,17 @@ func (m *QueryDelegatorUnbondingDelegationsResponse) Unmarshal(dAtA []byte) erro fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryDelegatorUnbondingDelegationsResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryTokenizeShareRecordByIdRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryDelegatorUnbondingDelegationsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryTokenizeShareRecordByIdRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UnbondingResponses", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) } - var msglen int + m.Id = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -5371,29 +8450,64 @@ func (m *QueryDelegatorUnbondingDelegationsResponse) Unmarshal(dAtA []byte) erro } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + m.Id |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthQuery + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err } - postIndex := iNdEx + msglen - if postIndex < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthQuery } - if postIndex > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.UnbondingResponses = append(m.UnbondingResponses, UnbondingDelegation{}) - if err := m.UnbondingResponses[len(m.UnbondingResponses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryTokenizeShareRecordByIdResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery } - iNdEx = postIndex - case 2: + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryTokenizeShareRecordByIdResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryTokenizeShareRecordByIdResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Record", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -5420,10 +8534,7 @@ func (m *QueryDelegatorUnbondingDelegationsResponse) Unmarshal(dAtA []byte) erro if postIndex > l { return io.ErrUnexpectedEOF } - if m.Pagination == nil { - m.Pagination = &query.PageResponse{} - } - if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Record.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -5448,7 +8559,7 @@ func (m *QueryDelegatorUnbondingDelegationsResponse) Unmarshal(dAtA []byte) erro } return nil } -func (m *QueryRedelegationsRequest) Unmarshal(dAtA []byte) error { +func (m *QueryTokenizeShareRecordByDenomRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -5471,15 +8582,15 @@ func (m *QueryRedelegationsRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryRedelegationsRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryTokenizeShareRecordByDenomRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryRedelegationsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryTokenizeShareRecordByDenomRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DelegatorAddr", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -5507,75 +8618,61 @@ func (m *QueryRedelegationsRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.DelegatorAddr = string(dAtA[iNdEx:postIndex]) + m.Denom = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SrcValidatorAddr", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - 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 ErrInvalidLengthQuery + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err } - postIndex := iNdEx + intStringLen - if postIndex < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthQuery } - if postIndex > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.SrcValidatorAddr = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DstValidatorAddr", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - 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 ErrInvalidLengthQuery - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryTokenizeShareRecordByDenomResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery } - if postIndex > l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - m.DstValidatorAddr = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryTokenizeShareRecordByDenomResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryTokenizeShareRecordByDenomResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Record", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -5602,10 +8699,7 @@ func (m *QueryRedelegationsRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Pagination == nil { - m.Pagination = &query.PageRequest{} - } - if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Record.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -5630,7 +8724,7 @@ func (m *QueryRedelegationsRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryRedelegationsResponse) Unmarshal(dAtA []byte) error { +func (m *QueryTokenizeShareRecordsOwnedRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -5653,17 +8747,17 @@ func (m *QueryRedelegationsResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryRedelegationsResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryTokenizeShareRecordsOwnedRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryRedelegationsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryTokenizeShareRecordsOwnedRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RedelegationResponses", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Owner", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -5673,29 +8767,77 @@ func (m *QueryRedelegationsResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthQuery } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthQuery } if postIndex > l { return io.ErrUnexpectedEOF } - m.RedelegationResponses = append(m.RedelegationResponses, RedelegationResponse{}) - if err := m.RedelegationResponses[len(m.RedelegationResponses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.Owner = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { return err } - iNdEx = postIndex - case 2: + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryTokenizeShareRecordsOwnedResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryTokenizeShareRecordsOwnedResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryTokenizeShareRecordsOwnedResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Records", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -5722,10 +8864,8 @@ func (m *QueryRedelegationsResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Pagination == nil { - m.Pagination = &query.PageResponse{} - } - if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.Records = append(m.Records, TokenizeShareRecord{}) + if err := m.Records[len(m.Records)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -5750,7 +8890,7 @@ func (m *QueryRedelegationsResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryDelegatorValidatorsRequest) Unmarshal(dAtA []byte) error { +func (m *QueryAllTokenizeShareRecordsRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -5773,45 +8913,13 @@ func (m *QueryDelegatorValidatorsRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryDelegatorValidatorsRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryAllTokenizeShareRecordsRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryDelegatorValidatorsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryAllTokenizeShareRecordsRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DelegatorAddr", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - 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 ErrInvalidLengthQuery - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.DelegatorAddr = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) } @@ -5868,7 +8976,7 @@ func (m *QueryDelegatorValidatorsRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryDelegatorValidatorsResponse) Unmarshal(dAtA []byte) error { +func (m *QueryAllTokenizeShareRecordsResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -5891,15 +8999,15 @@ func (m *QueryDelegatorValidatorsResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryDelegatorValidatorsResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryAllTokenizeShareRecordsResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryDelegatorValidatorsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryAllTokenizeShareRecordsResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Validators", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Records", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -5926,8 +9034,8 @@ func (m *QueryDelegatorValidatorsResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Validators = append(m.Validators, Validator{}) - if err := m.Validators[len(m.Validators)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.Records = append(m.Records, TokenizeShareRecord{}) + if err := m.Records[len(m.Records)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -5988,7 +9096,7 @@ func (m *QueryDelegatorValidatorsResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryDelegatorValidatorRequest) Unmarshal(dAtA []byte) error { +func (m *QueryLastTokenizeShareRecordIdRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -6011,76 +9119,12 @@ func (m *QueryDelegatorValidatorRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryDelegatorValidatorRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryLastTokenizeShareRecordIdRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryDelegatorValidatorRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryLastTokenizeShareRecordIdRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DelegatorAddr", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - 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 ErrInvalidLengthQuery - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.DelegatorAddr = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddr", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - 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 ErrInvalidLengthQuery - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.ValidatorAddr = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) @@ -6102,7 +9146,7 @@ func (m *QueryDelegatorValidatorRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryDelegatorValidatorResponse) Unmarshal(dAtA []byte) error { +func (m *QueryLastTokenizeShareRecordIdResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -6125,17 +9169,17 @@ func (m *QueryDelegatorValidatorResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryDelegatorValidatorResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryLastTokenizeShareRecordIdResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryDelegatorValidatorResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryLastTokenizeShareRecordIdResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Validator", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) } - var msglen int + m.Id = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -6145,25 +9189,11 @@ func (m *QueryDelegatorValidatorResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + m.Id |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Validator.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) @@ -6185,7 +9215,7 @@ func (m *QueryDelegatorValidatorResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryHistoricalInfoRequest) Unmarshal(dAtA []byte) error { +func (m *QueryTotalTokenizeSharedAssetsRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -6208,31 +9238,12 @@ func (m *QueryHistoricalInfoRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryHistoricalInfoRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryTotalTokenizeSharedAssetsRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryHistoricalInfoRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryTotalTokenizeSharedAssetsRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Height", wireType) - } - m.Height = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Height |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) @@ -6254,7 +9265,7 @@ func (m *QueryHistoricalInfoRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryHistoricalInfoResponse) Unmarshal(dAtA []byte) error { +func (m *QueryTotalTokenizeSharedAssetsResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -6277,15 +9288,15 @@ func (m *QueryHistoricalInfoResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryHistoricalInfoResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryTotalTokenizeSharedAssetsResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryHistoricalInfoResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryTotalTokenizeSharedAssetsResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Hist", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -6312,10 +9323,7 @@ func (m *QueryHistoricalInfoResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Hist == nil { - m.Hist = &HistoricalInfo{} - } - if err := m.Hist.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Value.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -6340,7 +9348,7 @@ func (m *QueryHistoricalInfoResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryPoolRequest) Unmarshal(dAtA []byte) error { +func (m *QueryTotalLiquidStaked) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -6363,10 +9371,10 @@ func (m *QueryPoolRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryPoolRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryTotalLiquidStaked: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryPoolRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryTotalLiquidStaked: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -6390,7 +9398,7 @@ func (m *QueryPoolRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryPoolResponse) Unmarshal(dAtA []byte) error { +func (m *QueryTotalLiquidStakedResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -6413,17 +9421,17 @@ func (m *QueryPoolResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryPoolResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryTotalLiquidStakedResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryPoolResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryTotalLiquidStakedResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pool", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Tokens", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -6433,24 +9441,23 @@ func (m *QueryPoolResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthQuery } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthQuery } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Pool.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Tokens = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -6473,7 +9480,7 @@ func (m *QueryPoolResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { +func (m *QueryTokenizeShareLockInfo) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -6496,12 +9503,44 @@ func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryTokenizeShareLockInfo: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryTokenizeShareLockInfo: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + 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 ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) @@ -6523,7 +9562,7 @@ func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { +func (m *QueryTokenizeShareLockInfoResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -6546,17 +9585,17 @@ func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryTokenizeShareLockInfoResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryTokenizeShareLockInfoResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -6566,24 +9605,55 @@ func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthQuery } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthQuery } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + m.Status = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExpirationTime", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + 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 ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF } + m.ExpirationTime = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex diff --git a/x/staking/types/query.pb.gw.go b/x/staking/types/query.pb.gw.go index 7ed30880ddff..c51a7eeb9a6d 100644 --- a/x/staking/types/query.pb.gw.go +++ b/x/staking/types/query.pb.gw.go @@ -783,6 +783,312 @@ func local_request_Query_DelegatorValidator_0(ctx context.Context, marshaler run } +func request_Query_TokenizeShareRecordById_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryTokenizeShareRecordByIdRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + } + + protoReq.Id, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + } + + msg, err := client.TokenizeShareRecordById(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_TokenizeShareRecordById_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryTokenizeShareRecordByIdRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + } + + protoReq.Id, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + } + + msg, err := server.TokenizeShareRecordById(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Query_TokenizeShareRecordByDenom_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryTokenizeShareRecordByDenomRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["denom"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "denom") + } + + protoReq.Denom, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "denom", err) + } + + msg, err := client.TokenizeShareRecordByDenom(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_TokenizeShareRecordByDenom_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryTokenizeShareRecordByDenomRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["denom"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "denom") + } + + protoReq.Denom, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "denom", err) + } + + msg, err := server.TokenizeShareRecordByDenom(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Query_TokenizeShareRecordsOwned_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryTokenizeShareRecordsOwnedRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["owner"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "owner") + } + + protoReq.Owner, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "owner", err) + } + + msg, err := client.TokenizeShareRecordsOwned(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_TokenizeShareRecordsOwned_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryTokenizeShareRecordsOwnedRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["owner"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "owner") + } + + protoReq.Owner, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "owner", err) + } + + msg, err := server.TokenizeShareRecordsOwned(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_Query_AllTokenizeShareRecords_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Query_AllTokenizeShareRecords_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAllTokenizeShareRecordsRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_AllTokenizeShareRecords_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.AllTokenizeShareRecords(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_AllTokenizeShareRecords_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAllTokenizeShareRecordsRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_AllTokenizeShareRecords_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.AllTokenizeShareRecords(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Query_LastTokenizeShareRecordId_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryLastTokenizeShareRecordIdRequest + var metadata runtime.ServerMetadata + + msg, err := client.LastTokenizeShareRecordId(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_LastTokenizeShareRecordId_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryLastTokenizeShareRecordIdRequest + var metadata runtime.ServerMetadata + + msg, err := server.LastTokenizeShareRecordId(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Query_TotalTokenizeSharedAssets_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryTotalTokenizeSharedAssetsRequest + var metadata runtime.ServerMetadata + + msg, err := client.TotalTokenizeSharedAssets(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_TotalTokenizeSharedAssets_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryTotalTokenizeSharedAssetsRequest + var metadata runtime.ServerMetadata + + msg, err := server.TotalTokenizeSharedAssets(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Query_TotalLiquidStaked_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryTotalLiquidStaked + var metadata runtime.ServerMetadata + + msg, err := client.TotalLiquidStaked(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_TotalLiquidStaked_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryTotalLiquidStaked + var metadata runtime.ServerMetadata + + msg, err := server.TotalLiquidStaked(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Query_TokenizeShareLockInfo_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryTokenizeShareLockInfo + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["address"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "address") + } + + protoReq.Address, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) + } + + msg, err := client.TokenizeShareLockInfo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_TokenizeShareLockInfo_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryTokenizeShareLockInfo + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["address"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "address") + } + + protoReq.Address, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) + } + + msg, err := server.TokenizeShareLockInfo(ctx, &protoReq) + return msg, metadata, err + +} + func request_Query_HistoricalInfo_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq QueryHistoricalInfoRequest var metadata runtime.ServerMetadata @@ -853,33 +1159,217 @@ func local_request_Query_Pool_0(ctx context.Context, marshaler runtime.Marshaler msg, err := server.Pool(ctx, &protoReq) return msg, metadata, err -} +} + +func request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryParamsRequest + var metadata runtime.ServerMetadata + + msg, err := client.Params(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryParamsRequest + var metadata runtime.ServerMetadata + + msg, err := server.Params(ctx, &protoReq) + return msg, metadata, err + +} + +// RegisterQueryHandlerServer registers the http handlers for service Query to "mux". +// UnaryRPC :call QueryServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. +func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error { + + mux.Handle("GET", pattern_Query_Validators_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_Validators_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Validators_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_Validator_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_Validator_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Validator_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_ValidatorDelegations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_ValidatorDelegations_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_ValidatorDelegations_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_ValidatorUnbondingDelegations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_ValidatorUnbondingDelegations_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_ValidatorUnbondingDelegations_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_Delegation_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_Delegation_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Delegation_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_UnbondingDelegation_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_UnbondingDelegation_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_UnbondingDelegation_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) -func request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryParamsRequest - var metadata runtime.ServerMetadata + }) - msg, err := client.Params(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err + mux.Handle("GET", pattern_Query_DelegatorDelegations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_DelegatorDelegations_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } -} + forward_Query_DelegatorDelegations_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) -func local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryParamsRequest - var metadata runtime.ServerMetadata + }) - msg, err := server.Params(ctx, &protoReq) - return msg, metadata, err + mux.Handle("GET", pattern_Query_DelegatorUnbondingDelegations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_DelegatorUnbondingDelegations_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } -} + forward_Query_DelegatorUnbondingDelegations_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) -// RegisterQueryHandlerServer registers the http handlers for service Query to "mux". -// UnaryRPC :call QueryServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. -func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error { + }) - mux.Handle("GET", pattern_Query_Validators_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_Redelegations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -890,7 +1380,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Query_Validators_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_Redelegations_0(rctx, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { @@ -898,11 +1388,11 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } - forward_Query_Validators_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_Redelegations_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_Query_Validator_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_DelegatorValidators_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -913,7 +1403,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Query_Validator_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_DelegatorValidators_0(rctx, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { @@ -921,11 +1411,11 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } - forward_Query_Validator_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_DelegatorValidators_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_Query_ValidatorDelegations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_DelegatorValidator_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -936,7 +1426,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Query_ValidatorDelegations_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_DelegatorValidator_0(rctx, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { @@ -944,11 +1434,11 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } - forward_Query_ValidatorDelegations_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_DelegatorValidator_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_Query_ValidatorUnbondingDelegations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_TokenizeShareRecordById_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -959,7 +1449,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Query_ValidatorUnbondingDelegations_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_TokenizeShareRecordById_0(rctx, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { @@ -967,11 +1457,11 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } - forward_Query_ValidatorUnbondingDelegations_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_TokenizeShareRecordById_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_Query_Delegation_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_TokenizeShareRecordByDenom_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -982,7 +1472,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Query_Delegation_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_TokenizeShareRecordByDenom_0(rctx, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { @@ -990,11 +1480,11 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } - forward_Query_Delegation_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_TokenizeShareRecordByDenom_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_Query_UnbondingDelegation_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_TokenizeShareRecordsOwned_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -1005,7 +1495,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Query_UnbondingDelegation_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_TokenizeShareRecordsOwned_0(rctx, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { @@ -1013,11 +1503,11 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } - forward_Query_UnbondingDelegation_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_TokenizeShareRecordsOwned_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_Query_DelegatorDelegations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_AllTokenizeShareRecords_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -1028,7 +1518,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Query_DelegatorDelegations_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_AllTokenizeShareRecords_0(rctx, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { @@ -1036,11 +1526,11 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } - forward_Query_DelegatorDelegations_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_AllTokenizeShareRecords_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_Query_DelegatorUnbondingDelegations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_LastTokenizeShareRecordId_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -1051,7 +1541,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Query_DelegatorUnbondingDelegations_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_LastTokenizeShareRecordId_0(rctx, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { @@ -1059,11 +1549,11 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } - forward_Query_DelegatorUnbondingDelegations_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_LastTokenizeShareRecordId_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_Query_Redelegations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_TotalTokenizeSharedAssets_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -1074,7 +1564,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Query_Redelegations_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_TotalTokenizeSharedAssets_0(rctx, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { @@ -1082,11 +1572,11 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } - forward_Query_Redelegations_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_TotalTokenizeSharedAssets_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_Query_DelegatorValidators_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_TotalLiquidStaked_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -1097,7 +1587,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Query_DelegatorValidators_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_TotalLiquidStaked_0(rctx, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { @@ -1105,11 +1595,11 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } - forward_Query_DelegatorValidators_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_TotalLiquidStaked_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_Query_DelegatorValidator_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_TokenizeShareLockInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -1120,7 +1610,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Query_DelegatorValidator_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_TokenizeShareLockInfo_0(rctx, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { @@ -1128,7 +1618,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } - forward_Query_DelegatorValidator_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_TokenizeShareLockInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1462,6 +1952,166 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) + mux.Handle("GET", pattern_Query_TokenizeShareRecordById_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_TokenizeShareRecordById_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_TokenizeShareRecordById_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_TokenizeShareRecordByDenom_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_TokenizeShareRecordByDenom_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_TokenizeShareRecordByDenom_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_TokenizeShareRecordsOwned_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_TokenizeShareRecordsOwned_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_TokenizeShareRecordsOwned_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_AllTokenizeShareRecords_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_AllTokenizeShareRecords_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_AllTokenizeShareRecords_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_LastTokenizeShareRecordId_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_LastTokenizeShareRecordId_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_LastTokenizeShareRecordId_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_TotalTokenizeSharedAssets_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_TotalTokenizeSharedAssets_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_TotalTokenizeSharedAssets_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_TotalLiquidStaked_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_TotalLiquidStaked_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_TotalLiquidStaked_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_TokenizeShareLockInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_TokenizeShareLockInfo_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_TokenizeShareLockInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_Query_HistoricalInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -1548,6 +2198,22 @@ var ( pattern_Query_DelegatorValidator_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6}, []string{"cosmos", "staking", "v1beta1", "delegators", "delegator_addr", "validators", "validator_addr"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_TokenizeShareRecordById_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "staking", "v1beta1", "tokenize_share_record_by_id", "id"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_TokenizeShareRecordByDenom_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "staking", "v1beta1", "tokenize_share_record_by_denom", "denom"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_TokenizeShareRecordsOwned_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "staking", "v1beta1", "tokenize_share_record_owned", "owner"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_AllTokenizeShareRecords_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "staking", "v1beta1", "tokenize_share_records"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_LastTokenizeShareRecordId_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "staking", "v1beta1", "last_tokenize_share_record_id"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_TotalTokenizeSharedAssets_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "staking", "v1beta1", "total_tokenize_shared_assets"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_TotalLiquidStaked_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "staking", "v1beta1", "total_liquid_staked"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_TokenizeShareLockInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "staking", "v1beta1", "tokenize_share_lock_info", "address"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_HistoricalInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "staking", "v1beta1", "historical_info", "height"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_Pool_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "staking", "v1beta1", "pool"}, "", runtime.AssumeColonVerbOpt(false))) @@ -1578,6 +2244,22 @@ var ( forward_Query_DelegatorValidator_0 = runtime.ForwardResponseMessage + forward_Query_TokenizeShareRecordById_0 = runtime.ForwardResponseMessage + + forward_Query_TokenizeShareRecordByDenom_0 = runtime.ForwardResponseMessage + + forward_Query_TokenizeShareRecordsOwned_0 = runtime.ForwardResponseMessage + + forward_Query_AllTokenizeShareRecords_0 = runtime.ForwardResponseMessage + + forward_Query_LastTokenizeShareRecordId_0 = runtime.ForwardResponseMessage + + forward_Query_TotalTokenizeSharedAssets_0 = runtime.ForwardResponseMessage + + forward_Query_TotalLiquidStaked_0 = runtime.ForwardResponseMessage + + forward_Query_TokenizeShareLockInfo_0 = runtime.ForwardResponseMessage + forward_Query_HistoricalInfo_0 = runtime.ForwardResponseMessage forward_Query_Pool_0 = runtime.ForwardResponseMessage diff --git a/x/staking/types/staking.pb.go b/x/staking/types/staking.pb.go index 0f8b583e7a9b..9029abdd1c1e 100644 --- a/x/staking/types/staking.pb.go +++ b/x/staking/types/staking.pb.go @@ -108,6 +108,43 @@ func (Infraction) EnumDescriptor() ([]byte, []int) { return fileDescriptor_64c30c6cf92913c9, []int{1} } +// TokenizeShareLockStatus indicates whether the address is able to tokenize shares +type TokenizeShareLockStatus int32 + +const ( + // UNSPECIFIED defines an empty tokenize share lock status + TOKENIZE_SHARE_LOCK_STATUS_UNSPECIFIED TokenizeShareLockStatus = 0 + // LOCKED indicates the account is locked and cannot tokenize shares + TOKENIZE_SHARE_LOCK_STATUS_LOCKED TokenizeShareLockStatus = 1 + // UNLOCKED indicates the account is unlocked and can tokenize shares + TOKENIZE_SHARE_LOCK_STATUS_UNLOCKED TokenizeShareLockStatus = 2 + // LOCK_EXPIRING indicates the account is unable to tokenize shares, but + // will be able to tokenize shortly (after 1 unbonding period) + TOKENIZE_SHARE_LOCK_STATUS_LOCK_EXPIRING TokenizeShareLockStatus = 3 +) + +var TokenizeShareLockStatus_name = map[int32]string{ + 0: "TOKENIZE_SHARE_LOCK_STATUS_UNSPECIFIED", + 1: "TOKENIZE_SHARE_LOCK_STATUS_LOCKED", + 2: "TOKENIZE_SHARE_LOCK_STATUS_UNLOCKED", + 3: "TOKENIZE_SHARE_LOCK_STATUS_LOCK_EXPIRING", +} + +var TokenizeShareLockStatus_value = map[string]int32{ + "TOKENIZE_SHARE_LOCK_STATUS_UNSPECIFIED": 0, + "TOKENIZE_SHARE_LOCK_STATUS_LOCKED": 1, + "TOKENIZE_SHARE_LOCK_STATUS_UNLOCKED": 2, + "TOKENIZE_SHARE_LOCK_STATUS_LOCK_EXPIRING": 3, +} + +func (x TokenizeShareLockStatus) String() string { + return proto.EnumName(TokenizeShareLockStatus_name, int32(x)) +} + +func (TokenizeShareLockStatus) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_64c30c6cf92913c9, []int{2} +} + // HistoricalInfo contains header and validator information for a given block. // It is stored as part of staking module's state, which persists the `n` most // recent HistoricalInfo @@ -367,14 +404,16 @@ type Validator struct { UnbondingTime time.Time `protobuf:"bytes,9,opt,name=unbonding_time,json=unbondingTime,proto3,stdtime" json:"unbonding_time"` // commission defines the commission parameters. Commission Commission `protobuf:"bytes,10,opt,name=commission,proto3" json:"commission"` - // min_self_delegation is the validator's self declared minimum self delegation. - // - // Since: cosmos-sdk 0.46 - MinSelfDelegation cosmossdk_io_math.Int `protobuf:"bytes,11,opt,name=min_self_delegation,json=minSelfDelegation,proto3,customtype=cosmossdk.io/math.Int" json:"min_self_delegation"` + // Deprecated: This field has been deprecated with LSM in favor of the validator bond + MinSelfDelegation cosmossdk_io_math.Int `protobuf:"bytes,11,opt,name=min_self_delegation,json=minSelfDelegation,proto3,customtype=cosmossdk.io/math.Int" json:"min_self_delegation"` // Deprecated: Do not use. // strictly positive if this validator's unbonding has been stopped by external modules UnbondingOnHoldRefCount int64 `protobuf:"varint,12,opt,name=unbonding_on_hold_ref_count,json=unbondingOnHoldRefCount,proto3" json:"unbonding_on_hold_ref_count,omitempty"` // list of unbonding ids, each uniquely identifing an unbonding of this validator UnbondingIds []uint64 `protobuf:"varint,13,rep,packed,name=unbonding_ids,json=unbondingIds,proto3" json:"unbonding_ids,omitempty"` + // Number of shares self bonded from the validator + ValidatorBondShares cosmossdk_io_math.LegacyDec `protobuf:"bytes,14,opt,name=validator_bond_shares,json=validatorBondShares,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"validator_bond_shares" yaml:"validator_bond_shares"` + // Number of shares either tokenized or owned by a liquid staking provider + LiquidShares cosmossdk_io_math.LegacyDec `protobuf:"bytes,15,opt,name=liquid_shares,json=liquidShares,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"liquid_shares" yaml:"liquid_shares"` } func (m *Validator) Reset() { *m = Validator{} } @@ -639,6 +678,8 @@ type Delegation struct { ValidatorAddress string `protobuf:"bytes,2,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"` // shares define the delegation shares received. Shares cosmossdk_io_math.LegacyDec `protobuf:"bytes,3,opt,name=shares,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"shares"` + // has this delegation been marked as a validator self bond. + ValidatorBond bool `protobuf:"varint,4,opt,name=validator_bond,json=validatorBond,proto3" json:"validator_bond,omitempty"` } func (m *Delegation) Reset() { *m = Delegation{} } @@ -932,6 +973,15 @@ type Params struct { BondDenom string `protobuf:"bytes,5,opt,name=bond_denom,json=bondDenom,proto3" json:"bond_denom,omitempty"` // min_commission_rate is the chain-wide minimum commission rate that a validator can charge their delegators MinCommissionRate cosmossdk_io_math.LegacyDec `protobuf:"bytes,6,opt,name=min_commission_rate,json=minCommissionRate,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"min_commission_rate" yaml:"min_commission_rate"` + // validator_bond_factor is required as a safety check for tokenizing shares and + // delegations from liquid staking providers + ValidatorBondFactor cosmossdk_io_math.LegacyDec `protobuf:"bytes,7,opt,name=validator_bond_factor,json=validatorBondFactor,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"validator_bond_factor" yaml:"validator_bond_factor"` + // global_liquid_staking_cap represents a cap on the portion of stake that + // comes from liquid staking providers + GlobalLiquidStakingCap cosmossdk_io_math.LegacyDec `protobuf:"bytes,8,opt,name=global_liquid_staking_cap,json=globalLiquidStakingCap,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"global_liquid_staking_cap" yaml:"global_liquid_staking_cap"` + // validator_liquid_staking_cap represents a cap on the portion of stake that + // comes from liquid staking providers for a specific validator + ValidatorLiquidStakingCap cosmossdk_io_math.LegacyDec `protobuf:"bytes,9,opt,name=validator_liquid_staking_cap,json=validatorLiquidStakingCap,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"validator_liquid_staking_cap" yaml:"validator_liquid_staking_cap"` } func (m *Params) Reset() { *m = Params{} } @@ -1245,9 +1295,125 @@ func (m *ValidatorUpdates) GetUpdates() []types3.ValidatorUpdate { return nil } +// TokenizeShareRecord represents a tokenized delegation +type TokenizeShareRecord struct { + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Owner string `protobuf:"bytes,2,opt,name=owner,proto3" json:"owner,omitempty"` + ModuleAccount string `protobuf:"bytes,3,opt,name=module_account,json=moduleAccount,proto3" json:"module_account,omitempty"` + Validator string `protobuf:"bytes,4,opt,name=validator,proto3" json:"validator,omitempty"` +} + +func (m *TokenizeShareRecord) Reset() { *m = TokenizeShareRecord{} } +func (m *TokenizeShareRecord) String() string { return proto.CompactTextString(m) } +func (*TokenizeShareRecord) ProtoMessage() {} +func (*TokenizeShareRecord) Descriptor() ([]byte, []int) { + return fileDescriptor_64c30c6cf92913c9, []int{21} +} +func (m *TokenizeShareRecord) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TokenizeShareRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TokenizeShareRecord.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *TokenizeShareRecord) XXX_Merge(src proto.Message) { + xxx_messageInfo_TokenizeShareRecord.Merge(m, src) +} +func (m *TokenizeShareRecord) XXX_Size() int { + return m.Size() +} +func (m *TokenizeShareRecord) XXX_DiscardUnknown() { + xxx_messageInfo_TokenizeShareRecord.DiscardUnknown(m) +} + +var xxx_messageInfo_TokenizeShareRecord proto.InternalMessageInfo + +func (m *TokenizeShareRecord) GetId() uint64 { + if m != nil { + return m.Id + } + return 0 +} + +func (m *TokenizeShareRecord) GetOwner() string { + if m != nil { + return m.Owner + } + return "" +} + +func (m *TokenizeShareRecord) GetModuleAccount() string { + if m != nil { + return m.ModuleAccount + } + return "" +} + +func (m *TokenizeShareRecord) GetValidator() string { + if m != nil { + return m.Validator + } + return "" +} + +// PendingTokenizeShareAuthorizations stores a list of addresses that have their +// tokenize share enablement in progress +type PendingTokenizeShareAuthorizations struct { + Addresses []string `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` +} + +func (m *PendingTokenizeShareAuthorizations) Reset() { *m = PendingTokenizeShareAuthorizations{} } +func (m *PendingTokenizeShareAuthorizations) String() string { return proto.CompactTextString(m) } +func (*PendingTokenizeShareAuthorizations) ProtoMessage() {} +func (*PendingTokenizeShareAuthorizations) Descriptor() ([]byte, []int) { + return fileDescriptor_64c30c6cf92913c9, []int{22} +} +func (m *PendingTokenizeShareAuthorizations) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PendingTokenizeShareAuthorizations) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PendingTokenizeShareAuthorizations.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *PendingTokenizeShareAuthorizations) XXX_Merge(src proto.Message) { + xxx_messageInfo_PendingTokenizeShareAuthorizations.Merge(m, src) +} +func (m *PendingTokenizeShareAuthorizations) XXX_Size() int { + return m.Size() +} +func (m *PendingTokenizeShareAuthorizations) XXX_DiscardUnknown() { + xxx_messageInfo_PendingTokenizeShareAuthorizations.DiscardUnknown(m) +} + +var xxx_messageInfo_PendingTokenizeShareAuthorizations proto.InternalMessageInfo + +func (m *PendingTokenizeShareAuthorizations) GetAddresses() []string { + if m != nil { + return m.Addresses + } + return nil +} + func init() { proto.RegisterEnum("cosmos.staking.v1beta1.BondStatus", BondStatus_name, BondStatus_value) proto.RegisterEnum("cosmos.staking.v1beta1.Infraction", Infraction_name, Infraction_value) + proto.RegisterEnum("cosmos.staking.v1beta1.TokenizeShareLockStatus", TokenizeShareLockStatus_name, TokenizeShareLockStatus_value) proto.RegisterType((*HistoricalInfo)(nil), "cosmos.staking.v1beta1.HistoricalInfo") proto.RegisterType((*CommissionRates)(nil), "cosmos.staking.v1beta1.CommissionRates") proto.RegisterType((*Commission)(nil), "cosmos.staking.v1beta1.Commission") @@ -1269,6 +1435,8 @@ func init() { proto.RegisterType((*RedelegationResponse)(nil), "cosmos.staking.v1beta1.RedelegationResponse") proto.RegisterType((*Pool)(nil), "cosmos.staking.v1beta1.Pool") proto.RegisterType((*ValidatorUpdates)(nil), "cosmos.staking.v1beta1.ValidatorUpdates") + proto.RegisterType((*TokenizeShareRecord)(nil), "cosmos.staking.v1beta1.TokenizeShareRecord") + proto.RegisterType((*PendingTokenizeShareAuthorizations)(nil), "cosmos.staking.v1beta1.PendingTokenizeShareAuthorizations") } func init() { @@ -1276,126 +1444,148 @@ func init() { } var fileDescriptor_64c30c6cf92913c9 = []byte{ - // 1901 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x58, 0x4d, 0x6c, 0x63, 0x47, - 0x1d, 0xcf, 0x8b, 0x53, 0x27, 0xf9, 0x3b, 0x89, 0x9d, 0xd9, 0x2f, 0xaf, 0x97, 0xc6, 0x5e, 0x77, - 0xa1, 0xe9, 0xd2, 0xd8, 0x6c, 0x90, 0x7a, 0x08, 0x08, 0x14, 0xc7, 0xde, 0xae, 0x4b, 0x9b, 0x04, - 0x3b, 0x09, 0x94, 0xaf, 0xa7, 0xf1, 0x7b, 0x13, 0x67, 0x88, 0x3d, 0xcf, 0xbc, 0x19, 0x2f, 0xf1, - 0x9d, 0x43, 0x15, 0x84, 0x54, 0x09, 0x09, 0x21, 0xc1, 0x8a, 0x95, 0xb8, 0x94, 0x5b, 0x0f, 0x2b, - 0xee, 0xdc, 0x0a, 0x12, 0xd2, 0x6a, 0x4f, 0x08, 0x89, 0x80, 0x76, 0x0f, 0xad, 0xe0, 0x82, 0x38, - 0x71, 0x44, 0xf3, 0xf1, 0x3e, 0x1c, 0x27, 0x9b, 0xcd, 0xb6, 0x42, 0x15, 0x5c, 0x9e, 0xde, 0xcc, - 0xfc, 0xff, 0xbf, 0x99, 0xff, 0xef, 0xff, 0x31, 0x1f, 0x70, 0xc3, 0xf1, 0x78, 0xd7, 0xe3, 0x65, - 0x2e, 0xf0, 0x3e, 0x65, 0xed, 0xf2, 0xdd, 0x5b, 0x2d, 0x22, 0xf0, 0xad, 0xa0, 0x5d, 0xea, 0xf9, - 0x9e, 0xf0, 0xd0, 0x65, 0x2d, 0x55, 0x0a, 0x7a, 0x8d, 0x54, 0xee, 0x62, 0xdb, 0x6b, 0x7b, 0x4a, - 0xa4, 0x2c, 0xff, 0xb4, 0x74, 0xee, 0x6a, 0xdb, 0xf3, 0xda, 0x1d, 0x52, 0x56, 0xad, 0x56, 0x7f, - 0xb7, 0x8c, 0xd9, 0xc0, 0x0c, 0x2d, 0x1c, 0x1f, 0x72, 0xfb, 0x3e, 0x16, 0xd4, 0x63, 0x66, 0x3c, - 0x7f, 0x7c, 0x5c, 0xd0, 0x2e, 0xe1, 0x02, 0x77, 0x7b, 0x01, 0xb6, 0x5e, 0x89, 0xad, 0x27, 0x35, - 0xcb, 0x32, 0xd8, 0xc6, 0x94, 0x16, 0xe6, 0x24, 0xb4, 0xc3, 0xf1, 0x68, 0x80, 0x3d, 0x8f, 0xbb, - 0x94, 0x79, 0x65, 0xf5, 0x35, 0x5d, 0x9f, 0x11, 0x84, 0xb9, 0xc4, 0xef, 0x52, 0x26, 0xca, 0x62, - 0xd0, 0x23, 0x5c, 0x7f, 0xcd, 0xe8, 0xb5, 0xd8, 0x28, 0x6e, 0x39, 0x34, 0x3e, 0x58, 0xfc, 0xa9, - 0x05, 0x73, 0x77, 0x28, 0x17, 0x9e, 0x4f, 0x1d, 0xdc, 0xa9, 0xb3, 0x5d, 0x0f, 0x7d, 0x09, 0x92, - 0x7b, 0x04, 0xbb, 0xc4, 0xcf, 0x5a, 0x05, 0x6b, 0x31, 0xb5, 0x9c, 0x2d, 0x45, 0x00, 0x25, 0xad, - 0x7b, 0x47, 0x8d, 0x57, 0xa6, 0x3f, 0x38, 0xca, 0x8f, 0xbd, 0xf7, 0xe1, 0xfb, 0x37, 0xad, 0x86, - 0x51, 0x41, 0x55, 0x48, 0xde, 0xc5, 0x1d, 0x4e, 0x44, 0x76, 0xbc, 0x90, 0x58, 0x4c, 0x2d, 0x5f, - 0x2f, 0x9d, 0xcc, 0x79, 0x69, 0x07, 0x77, 0xa8, 0x8b, 0x85, 0x37, 0x8c, 0xa2, 0x75, 0x8b, 0x3f, - 0x1b, 0x87, 0xf4, 0x9a, 0xd7, 0xed, 0x52, 0xce, 0xa9, 0xc7, 0x1a, 0x58, 0x10, 0x8e, 0xde, 0x80, - 0x09, 0x1f, 0x0b, 0xa2, 0x16, 0x35, 0x5d, 0x79, 0x4d, 0x2a, 0xfd, 0xf9, 0x28, 0x7f, 0x4d, 0xc3, - 0x73, 0x77, 0xbf, 0x44, 0xbd, 0x72, 0x17, 0x8b, 0xbd, 0xd2, 0x9b, 0xa4, 0x8d, 0x9d, 0x41, 0x95, - 0x38, 0x8f, 0x1e, 0x2c, 0x81, 0x99, 0xbd, 0x4a, 0x1c, 0x3d, 0x83, 0xc2, 0x40, 0x5f, 0x87, 0xa9, - 0x2e, 0x3e, 0xb0, 0x15, 0xde, 0xf8, 0xc7, 0xc2, 0x9b, 0xec, 0xe2, 0x03, 0xb9, 0x3e, 0xf4, 0x3d, - 0x48, 0x4b, 0x48, 0x67, 0x0f, 0xb3, 0x36, 0xd1, 0xc8, 0x89, 0x8f, 0x85, 0x3c, 0xdb, 0xc5, 0x07, - 0x6b, 0x0a, 0x4d, 0xe2, 0xaf, 0x4c, 0x7c, 0x74, 0x3f, 0x6f, 0x15, 0x7f, 0x67, 0x01, 0x44, 0xc4, - 0x20, 0x0c, 0x19, 0x27, 0x6c, 0xa9, 0x49, 0xb9, 0x71, 0xda, 0xcb, 0xa7, 0xf1, 0x7e, 0x8c, 0xd6, - 0xca, 0xac, 0x5c, 0xde, 0xc3, 0xa3, 0xbc, 0xa5, 0x67, 0x4d, 0x3b, 0x23, 0xb4, 0xa7, 0xfa, 0x3d, - 0x17, 0x0b, 0x62, 0xcb, 0x18, 0x56, 0x6c, 0xa5, 0x96, 0x73, 0x25, 0x1d, 0xe0, 0xa5, 0x20, 0xc0, - 0x4b, 0x5b, 0x41, 0x80, 0x6b, 0xc0, 0x77, 0xff, 0x1a, 0x00, 0x82, 0xd6, 0x96, 0xe3, 0xc6, 0x86, - 0xf7, 0x2c, 0x48, 0x55, 0x09, 0x77, 0x7c, 0xda, 0x93, 0x29, 0x83, 0xb2, 0x30, 0xd9, 0xf5, 0x18, - 0xdd, 0x37, 0x01, 0x37, 0xdd, 0x08, 0x9a, 0x28, 0x07, 0x53, 0xd4, 0x25, 0x4c, 0x50, 0x31, 0xd0, - 0x6e, 0x6a, 0x84, 0x6d, 0xa9, 0xf5, 0x43, 0xd2, 0xe2, 0x34, 0xe0, 0xb9, 0x11, 0x34, 0xd1, 0x2b, - 0x90, 0xe1, 0xc4, 0xe9, 0xfb, 0x54, 0x0c, 0x6c, 0xc7, 0x63, 0x02, 0x3b, 0x22, 0x3b, 0xa1, 0x44, - 0xd2, 0x41, 0xff, 0x9a, 0xee, 0x96, 0x20, 0x2e, 0x11, 0x98, 0x76, 0x78, 0xf6, 0x05, 0x0d, 0x62, - 0x9a, 0x66, 0xa9, 0x87, 0x93, 0x30, 0x1d, 0x06, 0x2a, 0x5a, 0x83, 0x8c, 0xd7, 0x23, 0xbe, 0xfc, - 0xb7, 0xb1, 0xeb, 0xfa, 0x84, 0x73, 0x13, 0x8d, 0xd9, 0x47, 0x0f, 0x96, 0x2e, 0x1a, 0xc2, 0x57, - 0xf5, 0x48, 0x53, 0xf8, 0x94, 0xb5, 0x1b, 0xe9, 0x40, 0xc3, 0x74, 0xa3, 0xb7, 0xa5, 0xcb, 0x18, - 0x27, 0x8c, 0xf7, 0xb9, 0xdd, 0xeb, 0xb7, 0xf6, 0xc9, 0xc0, 0x90, 0x7a, 0x71, 0x84, 0xd4, 0x55, - 0x36, 0xa8, 0x64, 0xff, 0x10, 0x41, 0x3b, 0xfe, 0xa0, 0x27, 0xbc, 0xd2, 0x66, 0xbf, 0xf5, 0x35, - 0x32, 0x90, 0xae, 0x32, 0x38, 0x9b, 0x0a, 0x06, 0x5d, 0x86, 0xe4, 0xf7, 0x31, 0xed, 0x10, 0x57, - 0x31, 0x32, 0xd5, 0x30, 0x2d, 0xb4, 0x02, 0x49, 0x2e, 0xb0, 0xe8, 0x73, 0x45, 0xc3, 0xdc, 0x72, - 0xf1, 0xb4, 0xd8, 0xa8, 0x78, 0xcc, 0x6d, 0x2a, 0xc9, 0x86, 0xd1, 0x40, 0x6b, 0x90, 0x14, 0xde, - 0x3e, 0x61, 0x86, 0xa0, 0xca, 0xe7, 0x4d, 0x34, 0x5f, 0x1a, 0x8d, 0xe6, 0x3a, 0x13, 0xb1, 0x38, - 0xae, 0x33, 0xd1, 0x30, 0xaa, 0xe8, 0x3b, 0x90, 0x71, 0x49, 0x87, 0xb4, 0x15, 0x73, 0x7c, 0x0f, - 0xfb, 0x84, 0x67, 0x93, 0x0a, 0xee, 0xd6, 0xb9, 0x93, 0xa3, 0x91, 0x0e, 0xa1, 0x9a, 0x0a, 0x09, - 0x6d, 0x42, 0xca, 0x8d, 0xc2, 0x29, 0x3b, 0xa9, 0xc8, 0x7c, 0xe9, 0x34, 0x1b, 0x63, 0x91, 0x17, - 0xaf, 0x3c, 0x71, 0x08, 0x19, 0x41, 0x7d, 0xd6, 0xf2, 0x98, 0x4b, 0x59, 0xdb, 0xde, 0x23, 0xb4, - 0xbd, 0x27, 0xb2, 0x53, 0x05, 0x6b, 0x31, 0xd1, 0x48, 0x87, 0xfd, 0x77, 0x54, 0x37, 0xda, 0x84, - 0xb9, 0x48, 0x54, 0x65, 0xc8, 0xf4, 0x79, 0x33, 0x64, 0x36, 0x04, 0x90, 0x22, 0xe8, 0x2d, 0x80, - 0x28, 0x07, 0xb3, 0xa0, 0xd0, 0x8a, 0x67, 0x67, 0x73, 0xdc, 0x98, 0x18, 0x00, 0xfa, 0x36, 0x5c, - 0xe8, 0x52, 0x66, 0x73, 0xd2, 0xd9, 0xb5, 0x0d, 0x73, 0x12, 0x37, 0x75, 0x7e, 0x6f, 0xce, 0x77, - 0x29, 0x6b, 0x92, 0xce, 0x6e, 0x35, 0x44, 0x41, 0x5f, 0x86, 0x6b, 0x91, 0xf5, 0x1e, 0xb3, 0xf7, - 0xbc, 0x8e, 0x6b, 0xfb, 0x64, 0xd7, 0x76, 0xbc, 0x3e, 0x13, 0xd9, 0x19, 0xc5, 0xd9, 0x95, 0x50, - 0x64, 0x83, 0xdd, 0xf1, 0x3a, 0x6e, 0x83, 0xec, 0xae, 0xc9, 0x61, 0xf4, 0x12, 0x44, 0xa6, 0xdb, - 0xd4, 0xe5, 0xd9, 0xd9, 0x42, 0x62, 0x71, 0xa2, 0x31, 0x13, 0x76, 0xd6, 0x5d, 0xbe, 0x32, 0xf5, - 0xce, 0xfd, 0xfc, 0xd8, 0x47, 0xf7, 0xf3, 0x63, 0xc5, 0xdb, 0x30, 0xb3, 0x83, 0x3b, 0x26, 0x8f, - 0x08, 0x47, 0xaf, 0xc1, 0x34, 0x0e, 0x1a, 0x59, 0xab, 0x90, 0x78, 0x6a, 0x1e, 0x46, 0xa2, 0xc5, - 0xdf, 0x58, 0x90, 0xac, 0xee, 0x6c, 0x62, 0xea, 0xa3, 0x1a, 0xcc, 0x47, 0x81, 0xf9, 0xac, 0x29, - 0x1d, 0xc5, 0x72, 0x90, 0xd3, 0xeb, 0x30, 0x7f, 0x37, 0xa8, 0x12, 0x21, 0x8c, 0xde, 0x57, 0xae, - 0x3f, 0x7a, 0xb0, 0xf4, 0xa2, 0x81, 0x09, 0x2b, 0xc9, 0x31, 0xbc, 0xbb, 0xc7, 0xfa, 0x63, 0x36, - 0xbf, 0x01, 0x93, 0x7a, 0xa9, 0x1c, 0x7d, 0x15, 0x5e, 0xe8, 0xc9, 0x1f, 0x65, 0x6a, 0x6a, 0x79, - 0xe1, 0xd4, 0x00, 0x57, 0xf2, 0xf1, 0x70, 0xd0, 0x7a, 0xc5, 0x1f, 0x8f, 0x03, 0x54, 0x77, 0x76, - 0xb6, 0x7c, 0xda, 0xeb, 0x10, 0xf1, 0x49, 0xd9, 0xbe, 0x0d, 0x97, 0x22, 0xdb, 0xb9, 0xef, 0x9c, - 0xdf, 0xfe, 0x0b, 0xa1, 0x7e, 0xd3, 0x77, 0x4e, 0x84, 0x75, 0xb9, 0x08, 0x61, 0x13, 0xe7, 0x87, - 0xad, 0x72, 0x31, 0xca, 0xec, 0x37, 0x21, 0x15, 0x91, 0xc1, 0x51, 0x1d, 0xa6, 0x84, 0xf9, 0x37, - 0x04, 0x17, 0x4f, 0x27, 0x38, 0x50, 0x8b, 0x93, 0x1c, 0xaa, 0x17, 0xff, 0x6d, 0x01, 0xc4, 0x72, - 0xe4, 0xd3, 0x19, 0x63, 0xa8, 0x0e, 0x49, 0x53, 0x89, 0x13, 0xcf, 0x5b, 0x89, 0x0d, 0x40, 0x8c, - 0xd4, 0x9f, 0x8c, 0xc3, 0x85, 0xed, 0x20, 0x7b, 0x3f, 0xfd, 0x1c, 0x6c, 0xc3, 0x24, 0x61, 0xc2, - 0xa7, 0x8a, 0x04, 0xe9, 0xf3, 0x2f, 0x9c, 0xe6, 0xf3, 0x13, 0x8c, 0xaa, 0x31, 0xe1, 0x0f, 0xe2, - 0x11, 0x10, 0x60, 0xc5, 0xf8, 0xf8, 0x45, 0x02, 0xb2, 0xa7, 0xa9, 0xa2, 0x97, 0x21, 0xed, 0xf8, - 0x44, 0x75, 0x04, 0x9b, 0x8c, 0xa5, 0x0a, 0xe6, 0x5c, 0xd0, 0x6d, 0xf6, 0x98, 0x06, 0xc8, 0x53, - 0x99, 0x0c, 0x2e, 0x29, 0xfa, 0x7c, 0xc7, 0xb0, 0xb9, 0x08, 0x41, 0xed, 0x32, 0x5b, 0x90, 0xa6, - 0x8c, 0x0a, 0x8a, 0x3b, 0x76, 0x0b, 0x77, 0x30, 0x73, 0x82, 0xe3, 0xea, 0xb9, 0xb6, 0x84, 0x39, - 0x83, 0x51, 0xd1, 0x10, 0xa8, 0x06, 0x93, 0x01, 0xda, 0xc4, 0xf9, 0xd1, 0x02, 0x5d, 0x74, 0x1d, - 0x66, 0xe2, 0x1b, 0x83, 0x3a, 0x7a, 0x4c, 0x34, 0x52, 0xb1, 0x7d, 0xe1, 0xac, 0x9d, 0x27, 0xf9, - 0xd4, 0x9d, 0xc7, 0x9c, 0xee, 0x7e, 0x95, 0x80, 0xf9, 0x06, 0x71, 0xff, 0xf7, 0xdd, 0xb2, 0x09, - 0xa0, 0x53, 0x55, 0x56, 0x52, 0xe3, 0x99, 0xe7, 0xc8, 0xf7, 0x69, 0x0d, 0x52, 0xe5, 0xe2, 0xbf, - 0xe5, 0xa1, 0xbf, 0x8c, 0xc3, 0x4c, 0xdc, 0x43, 0xff, 0x97, 0x9b, 0x16, 0x5a, 0x8f, 0xca, 0xd4, - 0x84, 0x2a, 0x53, 0xaf, 0x9c, 0x56, 0xa6, 0x46, 0xa2, 0xf9, 0x8c, 0xfa, 0xf4, 0xcb, 0x04, 0x24, - 0x37, 0xb1, 0x8f, 0xbb, 0x1c, 0x6d, 0x8c, 0x1c, 0x64, 0xf5, 0x45, 0xf2, 0xea, 0x48, 0x30, 0x57, - 0xcd, 0x5b, 0x87, 0x8e, 0xe5, 0x9f, 0x9f, 0x76, 0x8e, 0xfd, 0x2c, 0xcc, 0xc9, 0x0b, 0x71, 0x68, - 0x90, 0x26, 0x77, 0x56, 0xdd, 0x6b, 0x43, 0xeb, 0x39, 0xca, 0x43, 0x4a, 0x8a, 0x45, 0x75, 0x58, - 0xca, 0x40, 0x17, 0x1f, 0xd4, 0x74, 0x0f, 0x5a, 0x02, 0xb4, 0x17, 0x3e, 0x50, 0xd8, 0x11, 0x11, - 0x52, 0x6e, 0x3e, 0x1a, 0x09, 0xc4, 0x5f, 0x04, 0x90, 0xab, 0xb0, 0x5d, 0xc2, 0xbc, 0xae, 0xb9, - 0xd5, 0x4d, 0xcb, 0x9e, 0xaa, 0xec, 0x40, 0x3f, 0xb2, 0xf4, 0x79, 0xf8, 0xd8, 0xb5, 0xd9, 0x5c, - 0x47, 0xb6, 0x9e, 0x21, 0x29, 0xfe, 0x75, 0x94, 0xcf, 0x0d, 0x70, 0xb7, 0xb3, 0x52, 0x3c, 0x01, - 0xa7, 0x78, 0xd2, 0x4d, 0x5e, 0x1e, 0x9c, 0x87, 0xaf, 0xdd, 0x2b, 0x37, 0x64, 0x78, 0x1f, 0x7e, - 0xf8, 0xfe, 0x4d, 0x33, 0xd3, 0x12, 0x77, 0xf7, 0xcb, 0x07, 0xe1, 0xf3, 0x95, 0xf6, 0x89, 0x3c, - 0xa9, 0xa2, 0x68, 0xd7, 0x68, 0x10, 0xde, 0x93, 0x37, 0x3e, 0x79, 0x43, 0x88, 0x9d, 0xe4, 0xad, - 0xa7, 0xdf, 0x10, 0x22, 0xfd, 0xa1, 0x1b, 0x42, 0x2c, 0xa7, 0xbe, 0x12, 0x15, 0xed, 0x71, 0xe3, - 0x72, 0x83, 0xd5, 0xc2, 0x9c, 0xc4, 0xae, 0x1a, 0x74, 0x08, 0x22, 0x50, 0x52, 0xa9, 0x3a, 0x56, - 0xfc, 0xa3, 0x05, 0x57, 0x47, 0xc2, 0x2f, 0x5c, 0xb2, 0x03, 0xc8, 0x8f, 0x0d, 0x2a, 0x37, 0x0e, - 0xcc, 0xd2, 0x9f, 0x2f, 0x9a, 0xe7, 0xfd, 0x91, 0xca, 0xfd, 0xc9, 0xec, 0x3e, 0xa6, 0xf4, 0xfc, - 0xde, 0x82, 0x8b, 0xf1, 0x05, 0x84, 0xa6, 0x34, 0x61, 0x26, 0x3e, 0xb5, 0x31, 0xe2, 0xc6, 0xb3, - 0x18, 0x11, 0x5f, 0xff, 0x10, 0x08, 0xda, 0x89, 0x52, 0x5c, 0xbf, 0x9b, 0xdd, 0x7a, 0x66, 0x52, - 0x82, 0x85, 0x9d, 0x98, 0xea, 0xda, 0x37, 0xff, 0xb0, 0x60, 0x62, 0xd3, 0xf3, 0x3a, 0xe8, 0x07, - 0x30, 0xcf, 0x3c, 0x61, 0xcb, 0x74, 0x20, 0xae, 0x6d, 0x2e, 0xf6, 0xba, 0x7c, 0xd6, 0x9e, 0xca, - 0xd5, 0xdf, 0x8f, 0xf2, 0xa3, 0x9a, 0xc3, 0x04, 0x9a, 0xf7, 0x23, 0xe6, 0x89, 0x8a, 0x12, 0xda, - 0xd2, 0x77, 0xff, 0x5d, 0x98, 0x1d, 0x9e, 0x4e, 0x97, 0xd8, 0xd5, 0xb3, 0xa6, 0x9b, 0x3d, 0x73, - 0xaa, 0x99, 0x56, 0x6c, 0x9e, 0x95, 0x29, 0xe9, 0xb5, 0x7f, 0x4a, 0xcf, 0xbd, 0x0d, 0x99, 0xb0, - 0xbe, 0x6c, 0xab, 0xc7, 0x27, 0x2e, 0x43, 0x43, 0xbf, 0x43, 0x05, 0xa7, 0xfb, 0x42, 0xfc, 0x51, - 0x13, 0xb7, 0x1c, 0x5a, 0x3a, 0xa6, 0x33, 0x44, 0xa7, 0xd1, 0xbd, 0xf9, 0x5b, 0x0b, 0x20, 0x7a, - 0x24, 0x41, 0xaf, 0xc2, 0x95, 0xca, 0xc6, 0x7a, 0xd5, 0x6e, 0x6e, 0xad, 0x6e, 0x6d, 0x37, 0xed, - 0xed, 0xf5, 0xe6, 0x66, 0x6d, 0xad, 0x7e, 0xbb, 0x5e, 0xab, 0x66, 0xc6, 0x72, 0xe9, 0xc3, 0x7b, - 0x85, 0xd4, 0x36, 0xe3, 0x3d, 0xe2, 0xd0, 0x5d, 0x4a, 0x5c, 0xf4, 0x39, 0xb8, 0x38, 0x2c, 0x2d, - 0x5b, 0xb5, 0x6a, 0xc6, 0xca, 0xcd, 0x1c, 0xde, 0x2b, 0x4c, 0xe9, 0x73, 0x22, 0x71, 0xd1, 0x22, - 0x5c, 0x1a, 0x95, 0xab, 0xaf, 0xbf, 0x9e, 0x19, 0xcf, 0xcd, 0x1e, 0xde, 0x2b, 0x4c, 0x87, 0x07, - 0x4a, 0x54, 0x04, 0x14, 0x97, 0x34, 0x78, 0x89, 0x1c, 0x1c, 0xde, 0x2b, 0x24, 0xb5, 0x17, 0x72, - 0x13, 0xef, 0xfc, 0x7a, 0x61, 0xec, 0xe6, 0x77, 0x01, 0xea, 0x6c, 0xd7, 0xc7, 0x8e, 0x8a, 0xb6, - 0x1c, 0x5c, 0xae, 0xaf, 0xdf, 0x6e, 0xac, 0xae, 0x6d, 0xd5, 0x37, 0xd6, 0x87, 0x97, 0x7d, 0x6c, - 0xac, 0xba, 0xb1, 0x5d, 0x79, 0xb3, 0x66, 0x37, 0xeb, 0xaf, 0xaf, 0x67, 0x2c, 0x74, 0x05, 0x2e, - 0x0c, 0x8d, 0x7d, 0x63, 0x7d, 0xab, 0xfe, 0x56, 0x2d, 0x33, 0x5e, 0xb9, 0xfd, 0xc1, 0xe3, 0x05, - 0xeb, 0xe1, 0xe3, 0x05, 0xeb, 0x6f, 0x8f, 0x17, 0xac, 0x77, 0x9f, 0x2c, 0x8c, 0x3d, 0x7c, 0xb2, - 0x30, 0xf6, 0xa7, 0x27, 0x0b, 0x63, 0xdf, 0x7a, 0xb5, 0x4d, 0xc5, 0x5e, 0xbf, 0x55, 0x72, 0xbc, - 0xae, 0x79, 0xe6, 0x2e, 0x9f, 0x58, 0xf1, 0xd4, 0xbb, 0x72, 0x2b, 0xa9, 0x36, 0x99, 0x2f, 0xfe, - 0x27, 0x00, 0x00, 0xff, 0xff, 0x7a, 0x6b, 0x77, 0xd8, 0xcf, 0x17, 0x00, 0x00, + // 2249 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x59, 0xcb, 0x6f, 0x5b, 0xc7, + 0xd5, 0xd7, 0xa5, 0x64, 0x4a, 0x3c, 0xd4, 0x73, 0x2c, 0xdb, 0xb4, 0xec, 0x48, 0x34, 0x6d, 0xc7, + 0x8a, 0x3e, 0x8b, 0xfa, 0xec, 0x02, 0x59, 0x28, 0x45, 0x0b, 0xf1, 0xe1, 0x98, 0xb1, 0x23, 0xb1, + 0x97, 0x92, 0x9a, 0x18, 0x75, 0x6f, 0x87, 0xf7, 0x8e, 0xa8, 0xa9, 0xc8, 0x7b, 0x99, 0x3b, 0x43, + 0x5b, 0xcc, 0xba, 0x28, 0x02, 0x15, 0x05, 0x02, 0x14, 0x2d, 0x0a, 0x14, 0x6e, 0x0c, 0x74, 0x93, + 0xee, 0xb2, 0x30, 0xba, 0xef, 0x2e, 0x29, 0x50, 0xc0, 0xf0, 0xaa, 0x28, 0x50, 0xb7, 0xb0, 0x17, + 0x0e, 0xda, 0x4d, 0xd1, 0xbf, 0xa0, 0xb8, 0x33, 0x73, 0x1f, 0x7c, 0xe8, 0x65, 0x07, 0x45, 0xd0, + 0x6e, 0x88, 0x3b, 0x33, 0xe7, 0xfc, 0xe6, 0xcc, 0x6f, 0xce, 0x9c, 0x33, 0x73, 0x08, 0x97, 0x4c, + 0x87, 0x35, 0x1c, 0xb6, 0xc4, 0x38, 0xde, 0xa1, 0x76, 0x6d, 0xe9, 0xde, 0xb5, 0x2a, 0xe1, 0xf8, + 0x9a, 0xdf, 0xce, 0x36, 0x5d, 0x87, 0x3b, 0xe8, 0xb4, 0x94, 0xca, 0xfa, 0xbd, 0x4a, 0x6a, 0x66, + 0xba, 0xe6, 0xd4, 0x1c, 0x21, 0xb2, 0xe4, 0x7d, 0x49, 0xe9, 0x99, 0xb3, 0x35, 0xc7, 0xa9, 0xd5, + 0xc9, 0x92, 0x68, 0x55, 0x5b, 0x5b, 0x4b, 0xd8, 0x6e, 0xab, 0xa1, 0xd9, 0xee, 0x21, 0xab, 0xe5, + 0x62, 0x4e, 0x1d, 0x5b, 0x8d, 0xcf, 0x75, 0x8f, 0x73, 0xda, 0x20, 0x8c, 0xe3, 0x46, 0xd3, 0xc7, + 0x96, 0x96, 0x18, 0x72, 0x52, 0x65, 0x96, 0xc2, 0x56, 0x4b, 0xa9, 0x62, 0x46, 0x82, 0x75, 0x98, + 0x0e, 0xf5, 0xb1, 0xa7, 0x70, 0x83, 0xda, 0xce, 0x92, 0xf8, 0x55, 0x5d, 0xe7, 0x39, 0xb1, 0x2d, + 0xe2, 0x36, 0xa8, 0xcd, 0x97, 0x78, 0xbb, 0x49, 0x98, 0xfc, 0x55, 0xa3, 0xe7, 0x22, 0xa3, 0xb8, + 0x6a, 0xd2, 0xe8, 0x60, 0xe6, 0x67, 0x1a, 0x8c, 0xdf, 0xa4, 0x8c, 0x3b, 0x2e, 0x35, 0x71, 0xbd, + 0x64, 0x6f, 0x39, 0xe8, 0x2d, 0x88, 0x6f, 0x13, 0x6c, 0x11, 0x37, 0xa5, 0xa5, 0xb5, 0xf9, 0xe4, + 0xf5, 0x54, 0x36, 0x04, 0xc8, 0x4a, 0xdd, 0x9b, 0x62, 0x3c, 0x97, 0xf8, 0xfc, 0xe9, 0xdc, 0xc0, + 0xa7, 0x2f, 0x3e, 0x5b, 0xd0, 0x74, 0xa5, 0x82, 0x0a, 0x10, 0xbf, 0x87, 0xeb, 0x8c, 0xf0, 0x54, + 0x2c, 0x3d, 0x38, 0x9f, 0xbc, 0x7e, 0x21, 0xdb, 0x9f, 0xf3, 0xec, 0x26, 0xae, 0x53, 0x0b, 0x73, + 0xa7, 0x13, 0x45, 0xea, 0x66, 0x7e, 0x11, 0x83, 0x89, 0xbc, 0xd3, 0x68, 0x50, 0xc6, 0xa8, 0x63, + 0xeb, 0x98, 0x13, 0x86, 0xde, 0x81, 0x21, 0x17, 0x73, 0x22, 0x8c, 0x4a, 0xe4, 0xde, 0xf4, 0x94, + 0xfe, 0xfc, 0x74, 0xee, 0x9c, 0x84, 0x67, 0xd6, 0x4e, 0x96, 0x3a, 0x4b, 0x0d, 0xcc, 0xb7, 0xb3, + 0xb7, 0x49, 0x0d, 0x9b, 0xed, 0x02, 0x31, 0x9f, 0x3c, 0x5a, 0x04, 0x35, 0x7b, 0x81, 0x98, 0x72, + 0x06, 0x81, 0x81, 0xbe, 0x03, 0x23, 0x0d, 0xbc, 0x6b, 0x08, 0xbc, 0xd8, 0x2b, 0xe1, 0x0d, 0x37, + 0xf0, 0xae, 0x67, 0x1f, 0xfa, 0x3e, 0x4c, 0x78, 0x90, 0xe6, 0x36, 0xb6, 0x6b, 0x44, 0x22, 0x0f, + 0xbe, 0x12, 0xf2, 0x58, 0x03, 0xef, 0xe6, 0x05, 0x9a, 0x87, 0xbf, 0x3c, 0xf4, 0xe5, 0xc3, 0x39, + 0x2d, 0xf3, 0x7b, 0x0d, 0x20, 0x24, 0x06, 0x61, 0x98, 0x34, 0x83, 0x96, 0x98, 0x94, 0xa9, 0x4d, + 0xbb, 0xb2, 0x1f, 0xef, 0x5d, 0xb4, 0xe6, 0xc6, 0x3c, 0xf3, 0x1e, 0x3f, 0x9d, 0xd3, 0xe4, 0xac, + 0x13, 0x66, 0x0f, 0xed, 0xc9, 0x56, 0xd3, 0xc2, 0x9c, 0x18, 0x9e, 0x0f, 0x0b, 0xb6, 0x92, 0xd7, + 0x67, 0xb2, 0xd2, 0xc1, 0xb3, 0xbe, 0x83, 0x67, 0xd7, 0x7d, 0x07, 0x97, 0x80, 0x1f, 0xff, 0xd5, + 0x07, 0x04, 0xa9, 0xed, 0x8d, 0xab, 0x35, 0x7c, 0xaa, 0x41, 0xb2, 0x40, 0x98, 0xe9, 0xd2, 0xa6, + 0x77, 0x64, 0x50, 0x0a, 0x86, 0x1b, 0x8e, 0x4d, 0x77, 0x94, 0xc3, 0x25, 0x74, 0xbf, 0x89, 0x66, + 0x60, 0x84, 0x5a, 0xc4, 0xe6, 0x94, 0xb7, 0xe5, 0x36, 0xe9, 0x41, 0xdb, 0xd3, 0xba, 0x4f, 0xaa, + 0x8c, 0xfa, 0x3c, 0xeb, 0x7e, 0x13, 0xbd, 0x01, 0x93, 0x8c, 0x98, 0x2d, 0x97, 0xf2, 0xb6, 0x61, + 0x3a, 0x36, 0xc7, 0x26, 0x4f, 0x0d, 0x09, 0x91, 0x09, 0xbf, 0x3f, 0x2f, 0xbb, 0x3d, 0x10, 0x8b, + 0x70, 0x4c, 0xeb, 0x2c, 0x75, 0x42, 0x82, 0xa8, 0xa6, 0x32, 0xf5, 0xc5, 0x08, 0x24, 0x02, 0x47, + 0x45, 0x79, 0x98, 0x74, 0x9a, 0xc4, 0xf5, 0xbe, 0x0d, 0x6c, 0x59, 0x2e, 0x61, 0x4c, 0x79, 0x63, + 0xea, 0xc9, 0xa3, 0xc5, 0x69, 0x45, 0xf8, 0x8a, 0x1c, 0xa9, 0x70, 0x97, 0xda, 0x35, 0x7d, 0xc2, + 0xd7, 0x50, 0xdd, 0xe8, 0x7d, 0x6f, 0xcb, 0x6c, 0x46, 0x6c, 0xd6, 0x62, 0x46, 0xb3, 0x55, 0xdd, + 0x21, 0x6d, 0x45, 0xea, 0x74, 0x0f, 0xa9, 0x2b, 0x76, 0x3b, 0x97, 0xfa, 0x43, 0x08, 0x6d, 0xba, + 0xed, 0x26, 0x77, 0xb2, 0xe5, 0x56, 0xf5, 0x16, 0x69, 0x7b, 0x5b, 0xa5, 0x70, 0xca, 0x02, 0x06, + 0x9d, 0x86, 0xf8, 0x0f, 0x31, 0xad, 0x13, 0x4b, 0x30, 0x32, 0xa2, 0xab, 0x16, 0x5a, 0x86, 0x38, + 0xe3, 0x98, 0xb7, 0x98, 0xa0, 0x61, 0xfc, 0x7a, 0x66, 0x3f, 0xdf, 0xc8, 0x39, 0xb6, 0x55, 0x11, + 0x92, 0xba, 0xd2, 0x40, 0x79, 0x88, 0x73, 0x67, 0x87, 0xd8, 0x8a, 0xa0, 0xdc, 0xff, 0x29, 0x6f, + 0x3e, 0xd5, 0xeb, 0xcd, 0x25, 0x9b, 0x47, 0xfc, 0xb8, 0x64, 0x73, 0x5d, 0xa9, 0xa2, 0xef, 0xc1, + 0xa4, 0x45, 0xea, 0xa4, 0x26, 0x98, 0x63, 0xdb, 0xd8, 0x25, 0x2c, 0x15, 0x17, 0x70, 0xd7, 0x8e, + 0x7d, 0x38, 0xf4, 0x89, 0x00, 0xaa, 0x22, 0x90, 0x50, 0x19, 0x92, 0x56, 0xe8, 0x4e, 0xa9, 0x61, + 0x41, 0xe6, 0xc5, 0xfd, 0xd6, 0x18, 0xf1, 0xbc, 0x68, 0xe4, 0x89, 0x42, 0x78, 0x1e, 0xd4, 0xb2, + 0xab, 0x8e, 0x6d, 0x51, 0xbb, 0x66, 0x6c, 0x13, 0x5a, 0xdb, 0xe6, 0xa9, 0x91, 0xb4, 0x36, 0x3f, + 0xa8, 0x4f, 0x04, 0xfd, 0x37, 0x45, 0x37, 0x2a, 0xc3, 0x78, 0x28, 0x2a, 0x4e, 0x48, 0xe2, 0xb8, + 0x27, 0x64, 0x2c, 0x00, 0xf0, 0x44, 0xd0, 0xbb, 0x00, 0xe1, 0x19, 0x4c, 0x81, 0x40, 0xcb, 0x1c, + 0x7e, 0x9a, 0xa3, 0x8b, 0x89, 0x00, 0xa0, 0xbb, 0x70, 0xb2, 0x41, 0x6d, 0x83, 0x91, 0xfa, 0x96, + 0xa1, 0x98, 0xf3, 0x70, 0x93, 0x82, 0xfe, 0xc5, 0x63, 0xec, 0x66, 0x4a, 0xd3, 0xa7, 0x1a, 0xd4, + 0xae, 0x90, 0xfa, 0x56, 0x21, 0xc0, 0x41, 0xdf, 0x84, 0x73, 0xe1, 0xfa, 0x1d, 0xdb, 0xd8, 0x76, + 0xea, 0x96, 0xe1, 0x92, 0x2d, 0xc3, 0x74, 0x5a, 0x36, 0x4f, 0x8d, 0x0a, 0xd6, 0xce, 0x04, 0x22, + 0x6b, 0xf6, 0x4d, 0xa7, 0x6e, 0xe9, 0x64, 0x2b, 0xef, 0x0d, 0xa3, 0x8b, 0x10, 0x2e, 0xde, 0xa0, + 0x16, 0x4b, 0x8d, 0xa5, 0x07, 0xe7, 0x87, 0xf4, 0xd1, 0xa0, 0xb3, 0x64, 0x31, 0x74, 0x1f, 0x4e, + 0xdd, 0xf3, 0xcf, 0xa0, 0xe1, 0xf5, 0xfb, 0x2e, 0x34, 0x2e, 0xd6, 0x90, 0x3f, 0x82, 0x0b, 0xfd, + 0xeb, 0xe9, 0xdc, 0xf9, 0x36, 0x6e, 0xd4, 0x97, 0x33, 0x7d, 0x91, 0x32, 0xfa, 0xc9, 0xa0, 0x5f, + 0x9c, 0x01, 0xe9, 0x58, 0x3f, 0x80, 0xb1, 0x3a, 0xfd, 0xa0, 0x45, 0x83, 0x09, 0x27, 0xc4, 0x84, + 0x6f, 0x1d, 0x6d, 0xc2, 0x69, 0x39, 0x61, 0x07, 0x42, 0x46, 0x1f, 0x95, 0x6d, 0x39, 0xc3, 0xf2, + 0xc8, 0x47, 0x0f, 0xe7, 0x06, 0xbe, 0x7c, 0x38, 0x37, 0x90, 0xb9, 0x01, 0xa3, 0x9b, 0xb8, 0xae, + 0x82, 0x04, 0x61, 0xe8, 0x4d, 0x48, 0x60, 0xbf, 0x91, 0xd2, 0xd2, 0x83, 0x07, 0x06, 0x99, 0x50, + 0x34, 0xf3, 0x5b, 0x0d, 0xe2, 0x85, 0xcd, 0x32, 0xa6, 0x2e, 0x2a, 0xc2, 0x54, 0x78, 0xea, 0x8e, + 0x1a, 0xaf, 0xc2, 0x83, 0xea, 0x07, 0xac, 0x55, 0x98, 0x0a, 0x49, 0xf3, 0x61, 0x64, 0xd2, 0xbc, + 0xf0, 0xe4, 0xd1, 0xe2, 0x6b, 0x0a, 0x26, 0x08, 0x93, 0x5d, 0x78, 0xf7, 0xba, 0xfa, 0x23, 0x6b, + 0x7e, 0x07, 0x86, 0xa5, 0xa9, 0x0c, 0x7d, 0x1b, 0x4e, 0x34, 0xbd, 0x0f, 0xb1, 0xd4, 0xe4, 0xf5, + 0xd9, 0x7d, 0x4f, 0xaf, 0x90, 0x8f, 0xfa, 0xba, 0xd4, 0xcb, 0xfc, 0x24, 0x06, 0x50, 0xd8, 0xdc, + 0x5c, 0x77, 0x69, 0xb3, 0x4e, 0xf8, 0x57, 0xb5, 0xf6, 0x8d, 0xa8, 0xeb, 0x31, 0xd7, 0x3c, 0xfe, + 0xfa, 0x43, 0xc7, 0xaa, 0xb8, 0x66, 0x5f, 0x58, 0x8b, 0xf1, 0x00, 0x76, 0xf0, 0xf8, 0xb0, 0x05, + 0xc6, 0x7b, 0x99, 0x7d, 0x0f, 0x92, 0x21, 0x19, 0x0c, 0x95, 0x60, 0x84, 0xab, 0x6f, 0x45, 0x70, + 0x66, 0x7f, 0x82, 0x7d, 0xb5, 0x28, 0xc9, 0x81, 0x7a, 0xe6, 0x13, 0x8f, 0xe7, 0xf0, 0xf8, 0x7f, + 0x3d, 0x7d, 0x0c, 0x95, 0x20, 0xae, 0x8e, 0xec, 0xe0, 0xcb, 0xa6, 0x19, 0x05, 0x80, 0x2e, 0xc3, + 0x78, 0x67, 0xcc, 0x10, 0x49, 0x74, 0x44, 0x1f, 0xeb, 0x88, 0x18, 0x11, 0xee, 0x7f, 0x1a, 0x83, + 0x93, 0x1b, 0x7e, 0xfc, 0xfa, 0xfa, 0x53, 0xb5, 0x01, 0xc3, 0xc4, 0xe6, 0x2e, 0x15, 0x5c, 0x79, + 0xae, 0xf1, 0xff, 0xfb, 0xb9, 0x46, 0x9f, 0x45, 0x15, 0x6d, 0xee, 0xb6, 0xa3, 0x8e, 0xe2, 0x63, + 0x45, 0xf8, 0xf8, 0xd5, 0x20, 0xa4, 0xf6, 0x53, 0x45, 0x57, 0x60, 0xc2, 0x74, 0x89, 0xe8, 0xf0, + 0x13, 0xad, 0x26, 0x52, 0xc6, 0xb8, 0xdf, 0xad, 0xf2, 0xac, 0x0e, 0xde, 0xcd, 0xd4, 0xf3, 0x41, + 0x4f, 0xf4, 0xe5, 0xae, 0xa2, 0xe3, 0x21, 0x82, 0xc8, 0xb4, 0xeb, 0x30, 0x41, 0x6d, 0xca, 0x29, + 0xae, 0x1b, 0x55, 0x5c, 0xc7, 0xb6, 0xe9, 0x5f, 0xd9, 0x8f, 0x75, 0xc9, 0x19, 0x57, 0x18, 0x39, + 0x09, 0x81, 0x8a, 0x30, 0xec, 0xa3, 0x0d, 0x1d, 0x1f, 0xcd, 0xd7, 0x45, 0x17, 0x60, 0x34, 0x9a, + 0x1a, 0xc5, 0xf5, 0x6b, 0x48, 0x4f, 0x46, 0x32, 0xe3, 0x61, 0xb9, 0x37, 0x7e, 0x60, 0xee, 0x55, + 0x37, 0xdc, 0x4f, 0x06, 0x61, 0x4a, 0x27, 0xd6, 0x7f, 0xff, 0xb6, 0x94, 0x01, 0xe4, 0x89, 0xf6, + 0x02, 0xae, 0xda, 0x99, 0x97, 0x08, 0x0b, 0x09, 0x09, 0x52, 0x60, 0xfc, 0x3f, 0xb5, 0x43, 0x7f, + 0x89, 0xc1, 0x68, 0x74, 0x87, 0xfe, 0x27, 0x73, 0x1b, 0x5a, 0x0d, 0xc3, 0xd4, 0x90, 0x08, 0x53, + 0x6f, 0xec, 0x17, 0xa6, 0x7a, 0xbc, 0xf9, 0x90, 0xf8, 0xf4, 0x2c, 0x0e, 0xf1, 0x32, 0x76, 0x71, + 0x83, 0xa1, 0xb5, 0x9e, 0xcb, 0xbc, 0x7c, 0x4c, 0x9f, 0xed, 0x71, 0xe6, 0x82, 0xaa, 0xf7, 0x48, + 0x5f, 0xfe, 0xe5, 0x7e, 0x77, 0xf9, 0xcb, 0x30, 0xde, 0xc0, 0xbb, 0x46, 0xb0, 0x20, 0x49, 0xee, + 0x98, 0x78, 0xdb, 0x07, 0xab, 0x67, 0x68, 0x0e, 0x92, 0x9e, 0x58, 0x18, 0x87, 0x3d, 0x19, 0x68, + 0xe0, 0xdd, 0xa2, 0xec, 0x41, 0x8b, 0x80, 0xb6, 0x83, 0x22, 0x8d, 0x11, 0x12, 0xe1, 0xc9, 0x4d, + 0x85, 0x23, 0xbe, 0xf8, 0x6b, 0x00, 0xe2, 0x76, 0x6b, 0x11, 0xdb, 0x69, 0xa8, 0x97, 0x6d, 0xc2, + 0xeb, 0x29, 0x78, 0x1d, 0xe8, 0x47, 0x9a, 0x7c, 0x13, 0x74, 0x95, 0x0e, 0xd4, 0x93, 0x6c, 0xfd, + 0x68, 0xd7, 0xdb, 0x19, 0x79, 0xbd, 0xed, 0x83, 0x93, 0xe9, 0x57, 0xcd, 0xf0, 0x9e, 0x0e, 0x9d, + 0xa5, 0x07, 0xb4, 0xa7, 0xf5, 0x5c, 0xec, 0xb7, 0xb0, 0xc9, 0x1d, 0x57, 0x3c, 0xe1, 0x12, 0xb9, + 0xcd, 0x57, 0xb9, 0xd8, 0x4b, 0xa4, 0xbe, 0xa6, 0x74, 0xde, 0xf5, 0x6f, 0x08, 0x41, 0xf4, 0x73, + 0x0d, 0xce, 0xd6, 0xea, 0x4e, 0x15, 0xd7, 0x0d, 0xff, 0xc6, 0x2e, 0xfd, 0xca, 0x30, 0x71, 0x53, + 0x3c, 0xfe, 0x12, 0xb9, 0x3b, 0x47, 0x33, 0x28, 0x2d, 0x0d, 0xda, 0x17, 0xad, 0xaf, 0x51, 0xa7, + 0xa5, 0xf8, 0x6d, 0xf9, 0x3a, 0x90, 0xc2, 0x79, 0xdc, 0x44, 0xbf, 0xd6, 0xe0, 0x7c, 0xb8, 0xb4, + 0x3e, 0xa6, 0x25, 0x84, 0x69, 0x77, 0x8f, 0x66, 0xda, 0xc5, 0x6e, 0xae, 0x8e, 0x68, 0xdd, 0xd9, + 0x40, 0xa3, 0xdb, 0xc0, 0xe5, 0x4b, 0x5e, 0x90, 0xda, 0x7b, 0xf1, 0xd9, 0x82, 0x9a, 0x7a, 0x91, + 0x59, 0x3b, 0x4b, 0xbb, 0x41, 0x21, 0x56, 0x9e, 0x2c, 0xef, 0x59, 0x82, 0xc2, 0xdc, 0xaf, 0x13, + 0xd6, 0x74, 0x6c, 0x26, 0xde, 0xba, 0x91, 0x37, 0xa9, 0x76, 0xf0, 0x5b, 0x37, 0xd4, 0xef, 0x78, + 0xeb, 0x46, 0x22, 0xe3, 0xb7, 0xc2, 0xd4, 0x1b, 0x53, 0x07, 0x57, 0x61, 0x55, 0x31, 0x23, 0x91, + 0x47, 0x33, 0xed, 0x80, 0xf0, 0x95, 0x44, 0xc0, 0x1d, 0xc8, 0xfc, 0x51, 0x83, 0xb3, 0x3d, 0x41, + 0x24, 0x30, 0xd9, 0x04, 0xe4, 0x46, 0x06, 0xc5, 0x61, 0x6c, 0x2b, 0xd3, 0x5f, 0x2e, 0x26, 0x4d, + 0xb9, 0x3d, 0xf9, 0xf7, 0xab, 0xb9, 0x43, 0xa8, 0x04, 0xf2, 0x85, 0x06, 0xd3, 0x51, 0x03, 0x82, + 0xa5, 0x54, 0x60, 0x34, 0x3a, 0xb5, 0x5a, 0xc4, 0xa5, 0xa3, 0x2c, 0x22, 0x6a, 0x7f, 0x07, 0x08, + 0xda, 0x0c, 0x03, 0xb5, 0xac, 0x00, 0x5f, 0x3b, 0x32, 0x29, 0xbe, 0x61, 0x7d, 0x03, 0xb6, 0xdc, + 0x9b, 0x7f, 0x68, 0x30, 0x54, 0x76, 0x9c, 0x3a, 0xfa, 0x00, 0xa6, 0x6c, 0x87, 0x8b, 0xb3, 0x4e, + 0x2c, 0x43, 0x95, 0xa8, 0x64, 0x12, 0x2c, 0x1e, 0xc8, 0xd5, 0xdf, 0x9f, 0xce, 0xf5, 0x6a, 0x76, + 0x12, 0xa8, 0x2a, 0xa1, 0xb6, 0xc3, 0x73, 0x42, 0x68, 0x5d, 0x56, 0xb1, 0xb6, 0x60, 0xac, 0x73, + 0x3a, 0x99, 0x28, 0x57, 0x0e, 0x9b, 0x6e, 0xec, 0xd0, 0xa9, 0x46, 0xab, 0x91, 0x79, 0x96, 0x47, + 0xbc, 0x5d, 0xfb, 0xa7, 0xb7, 0x73, 0xef, 0xc3, 0x64, 0x90, 0x25, 0x36, 0x44, 0x19, 0x95, 0x79, + 0xae, 0x21, 0x2b, 0xaa, 0xfe, 0x53, 0x2e, 0x1d, 0x2d, 0xcf, 0xe3, 0xaa, 0x49, 0xb3, 0x5d, 0x3a, + 0x1d, 0x74, 0x2a, 0xdd, 0xcc, 0x8f, 0x35, 0x38, 0x29, 0xe6, 0xa3, 0x1f, 0x12, 0x51, 0x8c, 0xd0, + 0x89, 0xe9, 0xb8, 0x16, 0x1a, 0x87, 0x18, 0xb5, 0x04, 0x91, 0x43, 0x7a, 0x8c, 0x5a, 0x68, 0x1a, + 0x4e, 0x38, 0xf7, 0x6d, 0xe2, 0xaa, 0xfa, 0xab, 0x6c, 0x88, 0xbc, 0xe6, 0x58, 0xad, 0x3a, 0x31, + 0xb0, 0x29, 0xaf, 0x32, 0xb2, 0x06, 0x3b, 0x26, 0x7b, 0x57, 0x64, 0x27, 0x3a, 0x0f, 0x89, 0x20, + 0x70, 0xa8, 0x12, 0x6c, 0xd8, 0xa1, 0xbc, 0x33, 0x07, 0x99, 0x32, 0x91, 0x19, 0x33, 0x6a, 0xce, + 0x4a, 0x8b, 0x6f, 0x3b, 0x2e, 0xfd, 0x50, 0x78, 0x07, 0xf3, 0x90, 0xba, 0xca, 0x21, 0x91, 0xa2, + 0xc7, 0xc2, 0xef, 0x34, 0x80, 0xb0, 0x76, 0x89, 0xae, 0xc2, 0x99, 0xdc, 0xda, 0x6a, 0xc1, 0xa8, + 0xac, 0xaf, 0xac, 0x6f, 0x54, 0x8c, 0x8d, 0xd5, 0x4a, 0xb9, 0x98, 0x2f, 0xdd, 0x28, 0x15, 0x0b, + 0x93, 0x03, 0x33, 0x13, 0x7b, 0x0f, 0xd2, 0xc9, 0x0d, 0x9b, 0x35, 0x89, 0x49, 0xb7, 0x28, 0xb1, + 0xd0, 0xeb, 0x30, 0xdd, 0x29, 0xed, 0xb5, 0x8a, 0x85, 0x49, 0x6d, 0x66, 0x74, 0xef, 0x41, 0x7a, + 0x44, 0x3e, 0x5d, 0x88, 0x85, 0xe6, 0xe1, 0x54, 0xaf, 0x5c, 0x69, 0xf5, 0xed, 0xc9, 0xd8, 0xcc, + 0xd8, 0xde, 0x83, 0x74, 0x22, 0x78, 0xe3, 0xa0, 0x0c, 0xa0, 0xa8, 0xa4, 0xc2, 0x1b, 0x9c, 0x81, + 0xbd, 0x07, 0xe9, 0xb8, 0x74, 0xa9, 0x99, 0xa1, 0x8f, 0x7e, 0x33, 0x3b, 0xb0, 0x70, 0x17, 0xa0, + 0x64, 0x6f, 0xb9, 0xd8, 0x14, 0x47, 0x67, 0x06, 0x4e, 0x97, 0x56, 0x6f, 0xe8, 0x2b, 0xf9, 0xf5, + 0xd2, 0xda, 0x6a, 0xa7, 0xd9, 0x5d, 0x63, 0x85, 0xb5, 0x8d, 0xdc, 0xed, 0xa2, 0x51, 0x29, 0xbd, + 0xbd, 0x3a, 0xa9, 0xa1, 0x33, 0x70, 0xb2, 0x63, 0xec, 0xbb, 0xab, 0xeb, 0xa5, 0x77, 0x8b, 0x93, + 0xb1, 0x85, 0x2f, 0x34, 0x38, 0xd3, 0xc1, 0xea, 0x6d, 0xc7, 0xdc, 0x51, 0x24, 0x2d, 0xc0, 0xeb, + 0xeb, 0x6b, 0xb7, 0x8a, 0xab, 0xa5, 0x3b, 0x45, 0xa3, 0x72, 0x73, 0x45, 0x2f, 0x1a, 0xb7, 0xd7, + 0xf2, 0xb7, 0xfa, 0x72, 0x86, 0x2e, 0xc3, 0x85, 0x03, 0x64, 0xbd, 0x6f, 0x8f, 0x2f, 0x74, 0x05, + 0x2e, 0x1e, 0x08, 0xa9, 0x04, 0x63, 0xe8, 0x2a, 0xcc, 0x1f, 0x82, 0x67, 0x14, 0xdf, 0x2b, 0x97, + 0x74, 0x8f, 0xdd, 0x41, 0x49, 0x55, 0xee, 0xc6, 0xe7, 0xcf, 0x66, 0xb5, 0xc7, 0xcf, 0x66, 0xb5, + 0xbf, 0x3d, 0x9b, 0xd5, 0x3e, 0x7e, 0x3e, 0x3b, 0xf0, 0xf8, 0xf9, 0xec, 0xc0, 0x9f, 0x9e, 0xcf, + 0x0e, 0xdc, 0xb9, 0x5a, 0xa3, 0x7c, 0xbb, 0x55, 0xcd, 0x9a, 0x4e, 0x43, 0xfd, 0x93, 0xb6, 0xd4, + 0x37, 0x15, 0x89, 0xbf, 0xae, 0xaa, 0x71, 0x71, 0x87, 0xfb, 0xc6, 0xbf, 0x03, 0x00, 0x00, 0xff, + 0xff, 0xa5, 0x22, 0x4f, 0xde, 0x32, 0x1c, 0x00, 0x00, } func (this *Pool) Description() (desc *github_com_cosmos_gogoproto_protoc_gen_gogo_descriptor.FileDescriptorSet) { @@ -1404,707 +1594,729 @@ func (this *Pool) Description() (desc *github_com_cosmos_gogoproto_protoc_gen_go func StakingDescription() (desc *github_com_cosmos_gogoproto_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_cosmos_gogoproto_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 11200 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x69, 0x90, 0x1c, 0xd7, - 0x79, 0xd8, 0xce, 0x3d, 0xf3, 0xcd, 0xd5, 0xfb, 0x76, 0x01, 0x2c, 0x06, 0xe4, 0xee, 0xa2, 0x29, - 0x12, 0x20, 0x48, 0x2e, 0x48, 0x90, 0x00, 0xc9, 0x85, 0x28, 0x66, 0x66, 0x76, 0xb0, 0x18, 0x70, - 0x2f, 0xf6, 0xcc, 0x42, 0x24, 0x6d, 0xab, 0xdd, 0xdb, 0xf3, 0x76, 0xb7, 0x89, 0x99, 0xee, 0x51, - 0x77, 0x0f, 0xb0, 0xcb, 0x4a, 0xa5, 0xe4, 0xc8, 0x4e, 0x64, 0xf8, 0x88, 0x1c, 0xbb, 0x6c, 0xd9, - 0x12, 0x6c, 0xc9, 0x8e, 0x6d, 0xd9, 0xb9, 0x7c, 0x28, 0x3e, 0xe2, 0x8a, 0x63, 0xe7, 0xb4, 0x5d, - 0x39, 0x14, 0xff, 0x48, 0x9c, 0x54, 0x99, 0xb1, 0x29, 0x57, 0xac, 0xc8, 0x72, 0xe2, 0x83, 0x4e, - 0x9c, 0x52, 0x25, 0x95, 0x7a, 0x57, 0x1f, 0x73, 0xec, 0xcc, 0x42, 0xa4, 0xac, 0xd8, 0xf9, 0x03, - 0x4c, 0x7f, 0xef, 0xfb, 0xbe, 0xf7, 0xde, 0xf7, 0xbe, 0xf7, 0xbd, 0xef, 0xfb, 0xde, 0xb1, 0xf0, - 0xdb, 0x15, 0x58, 0xdc, 0xb3, 0xac, 0xbd, 0x36, 0xbe, 0xd8, 0xb5, 0x2d, 0xd7, 0xda, 0xe9, 0xed, - 0x5e, 0x6c, 0x61, 0x47, 0xb7, 0x8d, 0xae, 0x6b, 0xd9, 0x4b, 0x14, 0x86, 0x8a, 0x0c, 0x63, 0x49, - 0x60, 0xc8, 0xeb, 0x30, 0x7d, 0xcd, 0x68, 0xe3, 0x15, 0x0f, 0xb1, 0x81, 0x5d, 0xf4, 0x1c, 0xc4, - 0x77, 0x8d, 0x36, 0x9e, 0x8b, 0x2c, 0xc6, 0xce, 0x67, 0x2f, 0xbd, 0x67, 0xa9, 0x8f, 0x68, 0x29, - 0x4c, 0xb1, 0x45, 0xc0, 0x0a, 0xa5, 0x90, 0xff, 0x4f, 0x1c, 0x66, 0x86, 0x94, 0x22, 0x04, 0x71, - 0x53, 0xeb, 0x10, 0x8e, 0x91, 0xf3, 0x19, 0x85, 0xfe, 0x46, 0x73, 0x90, 0xea, 0x6a, 0xfa, 0x2d, - 0x6d, 0x0f, 0xcf, 0x45, 0x29, 0x58, 0x7c, 0xa2, 0x79, 0x80, 0x16, 0xee, 0x62, 0xb3, 0x85, 0x4d, - 0xfd, 0x70, 0x2e, 0xb6, 0x18, 0x3b, 0x9f, 0x51, 0x02, 0x10, 0xf4, 0x18, 0x4c, 0x77, 0x7b, 0x3b, - 0x6d, 0x43, 0x57, 0x03, 0x68, 0xb0, 0x18, 0x3b, 0x9f, 0x50, 0x24, 0x56, 0xb0, 0xe2, 0x23, 0x9f, - 0x83, 0xe2, 0x1d, 0xac, 0xdd, 0x0a, 0xa2, 0x66, 0x29, 0x6a, 0x81, 0x80, 0x03, 0x88, 0x55, 0xc8, - 0x75, 0xb0, 0xe3, 0x68, 0x7b, 0x58, 0x75, 0x0f, 0xbb, 0x78, 0x2e, 0x4e, 0x7b, 0xbf, 0x38, 0xd0, - 0xfb, 0xfe, 0x9e, 0x67, 0x39, 0x55, 0xf3, 0xb0, 0x8b, 0x51, 0x19, 0x32, 0xd8, 0xec, 0x75, 0x18, - 0x87, 0xc4, 0x08, 0xf9, 0xd5, 0xcc, 0x5e, 0xa7, 0x9f, 0x4b, 0x9a, 0x90, 0x71, 0x16, 0x29, 0x07, - 0xdb, 0xb7, 0x0d, 0x1d, 0xcf, 0x25, 0x29, 0x83, 0x73, 0x03, 0x0c, 0x1a, 0xac, 0xbc, 0x9f, 0x87, - 0xa0, 0x43, 0x55, 0xc8, 0xe0, 0x03, 0x17, 0x9b, 0x8e, 0x61, 0x99, 0x73, 0x29, 0xca, 0xe4, 0xe1, - 0x21, 0xa3, 0x88, 0xdb, 0xad, 0x7e, 0x16, 0x3e, 0x1d, 0xba, 0x02, 0x29, 0xab, 0xeb, 0x1a, 0x96, - 0xe9, 0xcc, 0xa5, 0x17, 0x23, 0xe7, 0xb3, 0x97, 0x1e, 0x18, 0xaa, 0x08, 0x9b, 0x0c, 0x47, 0x11, - 0xc8, 0xa8, 0x0e, 0x92, 0x63, 0xf5, 0x6c, 0x1d, 0xab, 0xba, 0xd5, 0xc2, 0xaa, 0x61, 0xee, 0x5a, - 0x73, 0x19, 0xca, 0x60, 0x61, 0xb0, 0x23, 0x14, 0xb1, 0x6a, 0xb5, 0x70, 0xdd, 0xdc, 0xb5, 0x94, - 0x82, 0x13, 0xfa, 0x46, 0x27, 0x21, 0xe9, 0x1c, 0x9a, 0xae, 0x76, 0x30, 0x97, 0xa3, 0x1a, 0xc2, - 0xbf, 0x88, 0xea, 0xe0, 0x96, 0x41, 0xaa, 0x9b, 0xcb, 0x33, 0xd5, 0xe1, 0x9f, 0xf2, 0xcf, 0x27, - 0xa1, 0x38, 0x89, 0xf2, 0x5d, 0x85, 0xc4, 0x2e, 0xe9, 0xff, 0x5c, 0xf4, 0x38, 0xd2, 0x61, 0x34, - 0x61, 0xf1, 0x26, 0xef, 0x53, 0xbc, 0x65, 0xc8, 0x9a, 0xd8, 0x71, 0x71, 0x8b, 0xe9, 0x4a, 0x6c, - 0x42, 0x6d, 0x03, 0x46, 0x34, 0xa8, 0x6c, 0xf1, 0xfb, 0x52, 0xb6, 0x57, 0xa0, 0xe8, 0x35, 0x49, - 0xb5, 0x35, 0x73, 0x4f, 0x68, 0xed, 0xc5, 0x71, 0x2d, 0x59, 0xaa, 0x09, 0x3a, 0x85, 0x90, 0x29, - 0x05, 0x1c, 0xfa, 0x46, 0x2b, 0x00, 0x96, 0x89, 0xad, 0x5d, 0xb5, 0x85, 0xf5, 0xf6, 0x5c, 0x7a, - 0x84, 0x94, 0x36, 0x09, 0xca, 0x80, 0x94, 0x2c, 0x06, 0xd5, 0xdb, 0xe8, 0x79, 0x5f, 0x09, 0x53, - 0x23, 0x74, 0x68, 0x9d, 0x4d, 0xbf, 0x01, 0x3d, 0xdc, 0x86, 0x82, 0x8d, 0xc9, 0x8c, 0xc0, 0x2d, - 0xde, 0xb3, 0x0c, 0x6d, 0xc4, 0xd2, 0xd8, 0x9e, 0x29, 0x9c, 0x8c, 0x75, 0x2c, 0x6f, 0x07, 0x3f, - 0xd1, 0x43, 0xe0, 0x01, 0x54, 0xaa, 0x56, 0x40, 0xed, 0x53, 0x4e, 0x00, 0x37, 0xb4, 0x0e, 0x2e, - 0xbd, 0x01, 0x85, 0xb0, 0x78, 0xd0, 0x2c, 0x24, 0x1c, 0x57, 0xb3, 0x5d, 0xaa, 0x85, 0x09, 0x85, - 0x7d, 0x20, 0x09, 0x62, 0xd8, 0x6c, 0x51, 0xfb, 0x97, 0x50, 0xc8, 0x4f, 0xf4, 0x97, 0xfc, 0x0e, - 0xc7, 0x68, 0x87, 0x1f, 0x19, 0x1c, 0xd1, 0x10, 0xe7, 0xfe, 0x7e, 0x97, 0x9e, 0x85, 0x7c, 0xa8, - 0x03, 0x93, 0x56, 0x2d, 0xff, 0x65, 0x38, 0x31, 0x94, 0x35, 0x7a, 0x05, 0x66, 0x7b, 0xa6, 0x61, - 0xba, 0xd8, 0xee, 0xda, 0x98, 0x68, 0x2c, 0xab, 0x6a, 0xee, 0x77, 0x53, 0x23, 0x74, 0x6e, 0x3b, - 0x88, 0xcd, 0xb8, 0x28, 0x33, 0xbd, 0x41, 0xe0, 0x85, 0x4c, 0xfa, 0xf3, 0x29, 0xe9, 0x43, 0x1f, - 0xfa, 0xd0, 0x87, 0xa2, 0xf2, 0x2f, 0x27, 0x61, 0x76, 0xd8, 0x9c, 0x19, 0x3a, 0x7d, 0x4f, 0x42, - 0xd2, 0xec, 0x75, 0x76, 0xb0, 0x4d, 0x85, 0x94, 0x50, 0xf8, 0x17, 0x2a, 0x43, 0xa2, 0xad, 0xed, - 0xe0, 0xf6, 0x5c, 0x7c, 0x31, 0x72, 0xbe, 0x70, 0xe9, 0xb1, 0x89, 0x66, 0xe5, 0xd2, 0x1a, 0x21, - 0x51, 0x18, 0x25, 0x7a, 0x1f, 0xc4, 0xb9, 0xf1, 0x26, 0x1c, 0x2e, 0x4c, 0xc6, 0x81, 0xcc, 0x25, - 0x85, 0xd2, 0xa1, 0x33, 0x90, 0x21, 0xff, 0x33, 0xdd, 0x48, 0xd2, 0x36, 0xa7, 0x09, 0x80, 0xe8, - 0x05, 0x2a, 0x41, 0x9a, 0x4e, 0x93, 0x16, 0x16, 0x8b, 0x9e, 0xf7, 0x4d, 0x14, 0xab, 0x85, 0x77, - 0xb5, 0x5e, 0xdb, 0x55, 0x6f, 0x6b, 0xed, 0x1e, 0xa6, 0x0a, 0x9f, 0x51, 0x72, 0x1c, 0x78, 0x93, - 0xc0, 0xd0, 0x02, 0x64, 0xd9, 0xac, 0x32, 0xcc, 0x16, 0x3e, 0xa0, 0x76, 0x35, 0xa1, 0xb0, 0x89, - 0x56, 0x27, 0x10, 0x52, 0xfd, 0xeb, 0x8e, 0x65, 0x0a, 0xd5, 0xa4, 0x55, 0x10, 0x00, 0xad, 0xfe, - 0xd9, 0x7e, 0x93, 0xfe, 0xe0, 0xf0, 0xee, 0x0d, 0xcc, 0xa5, 0x73, 0x50, 0xa4, 0x18, 0x4f, 0xf3, - 0xa1, 0xd7, 0xda, 0x73, 0xd3, 0x8b, 0x91, 0xf3, 0x69, 0xa5, 0xc0, 0xc0, 0x9b, 0x1c, 0x2a, 0xff, - 0x4c, 0x14, 0xe2, 0xd4, 0xb0, 0x14, 0x21, 0xdb, 0x7c, 0x75, 0xab, 0xa6, 0xae, 0x6c, 0x6e, 0x57, - 0xd6, 0x6a, 0x52, 0x04, 0x15, 0x00, 0x28, 0xe0, 0xda, 0xda, 0x66, 0xb9, 0x29, 0x45, 0xbd, 0xef, - 0xfa, 0x46, 0xf3, 0xca, 0x33, 0x52, 0xcc, 0x23, 0xd8, 0x66, 0x80, 0x78, 0x10, 0xe1, 0xe9, 0x4b, - 0x52, 0x02, 0x49, 0x90, 0x63, 0x0c, 0xea, 0xaf, 0xd4, 0x56, 0xae, 0x3c, 0x23, 0x25, 0xc3, 0x90, - 0xa7, 0x2f, 0x49, 0x29, 0x94, 0x87, 0x0c, 0x85, 0x54, 0x36, 0x37, 0xd7, 0xa4, 0xb4, 0xc7, 0xb3, - 0xd1, 0x54, 0xea, 0x1b, 0xab, 0x52, 0xc6, 0xe3, 0xb9, 0xaa, 0x6c, 0x6e, 0x6f, 0x49, 0xe0, 0x71, - 0x58, 0xaf, 0x35, 0x1a, 0xe5, 0xd5, 0x9a, 0x94, 0xf5, 0x30, 0x2a, 0xaf, 0x36, 0x6b, 0x0d, 0x29, - 0x17, 0x6a, 0xd6, 0xd3, 0x97, 0xa4, 0xbc, 0x57, 0x45, 0x6d, 0x63, 0x7b, 0x5d, 0x2a, 0xa0, 0x69, - 0xc8, 0xb3, 0x2a, 0x44, 0x23, 0x8a, 0x7d, 0xa0, 0x2b, 0xcf, 0x48, 0x92, 0xdf, 0x10, 0xc6, 0x65, - 0x3a, 0x04, 0xb8, 0xf2, 0x8c, 0x84, 0xe4, 0x2a, 0x24, 0xa8, 0x1a, 0x22, 0x04, 0x85, 0xb5, 0x72, - 0xa5, 0xb6, 0xa6, 0x6e, 0x6e, 0x35, 0xeb, 0x9b, 0x1b, 0xe5, 0x35, 0x29, 0xe2, 0xc3, 0x94, 0xda, - 0xcb, 0xdb, 0x75, 0xa5, 0xb6, 0x22, 0x45, 0x83, 0xb0, 0xad, 0x5a, 0xb9, 0x59, 0x5b, 0x91, 0x62, - 0xb2, 0x0e, 0xb3, 0xc3, 0x0c, 0xea, 0xd0, 0x29, 0x14, 0xd0, 0x85, 0xe8, 0x08, 0x5d, 0xa0, 0xbc, - 0xfa, 0x75, 0x41, 0xfe, 0x5c, 0x14, 0x66, 0x86, 0x2c, 0x2a, 0x43, 0x2b, 0x79, 0x11, 0x12, 0x4c, - 0x97, 0xd9, 0x32, 0xfb, 0xe8, 0xd0, 0xd5, 0x89, 0x6a, 0xf6, 0xc0, 0x52, 0x4b, 0xe9, 0x82, 0x4e, - 0x48, 0x6c, 0x84, 0x13, 0x42, 0x58, 0x0c, 0x28, 0xec, 0xd7, 0x0d, 0x18, 0x7f, 0xb6, 0x3e, 0x5e, - 0x99, 0x64, 0x7d, 0xa4, 0xb0, 0xe3, 0x2d, 0x02, 0x89, 0x21, 0x8b, 0xc0, 0x55, 0x98, 0x1e, 0x60, - 0x34, 0xb1, 0x31, 0xfe, 0x70, 0x04, 0xe6, 0x46, 0x09, 0x67, 0x8c, 0x49, 0x8c, 0x86, 0x4c, 0xe2, - 0xd5, 0x7e, 0x09, 0x9e, 0x1d, 0x3d, 0x08, 0x03, 0x63, 0xfd, 0xa3, 0x11, 0x38, 0x39, 0xdc, 0xd9, - 0x1c, 0xda, 0x86, 0xf7, 0x41, 0xb2, 0x83, 0xdd, 0x7d, 0x4b, 0xb8, 0x55, 0x8f, 0x0c, 0x59, 0xac, - 0x49, 0x71, 0xff, 0x60, 0x73, 0xaa, 0xe0, 0x6a, 0x1f, 0x1b, 0xe5, 0x31, 0xb2, 0xd6, 0x0c, 0xb4, - 0xf4, 0x9b, 0xa3, 0x70, 0x62, 0x28, 0xf3, 0xa1, 0x0d, 0x7d, 0x10, 0xc0, 0x30, 0xbb, 0x3d, 0x97, - 0xb9, 0x4e, 0xcc, 0x12, 0x67, 0x28, 0x84, 0x1a, 0x2f, 0x62, 0x65, 0x7b, 0xae, 0x57, 0x1e, 0xa3, - 0xe5, 0xc0, 0x40, 0x14, 0xe1, 0x39, 0xbf, 0xa1, 0x71, 0xda, 0xd0, 0xf9, 0x11, 0x3d, 0x1d, 0x50, - 0xcc, 0x27, 0x41, 0xd2, 0xdb, 0x06, 0x36, 0x5d, 0xd5, 0x71, 0x6d, 0xac, 0x75, 0x0c, 0x73, 0x8f, - 0x2e, 0x35, 0xe9, 0xe5, 0xc4, 0xae, 0xd6, 0x76, 0xb0, 0x52, 0x64, 0xc5, 0x0d, 0x51, 0x4a, 0x28, - 0xa8, 0x02, 0xd9, 0x01, 0x8a, 0x64, 0x88, 0x82, 0x15, 0x7b, 0x14, 0xf2, 0x77, 0x64, 0x20, 0x1b, - 0x70, 0xcd, 0xd1, 0x59, 0xc8, 0xbd, 0xae, 0xdd, 0xd6, 0x54, 0x11, 0x6e, 0x31, 0x49, 0x64, 0x09, - 0x6c, 0x8b, 0x87, 0x5c, 0x4f, 0xc2, 0x2c, 0x45, 0xb1, 0x7a, 0x2e, 0xb6, 0x55, 0xbd, 0xad, 0x39, - 0x0e, 0x15, 0x5a, 0x9a, 0xa2, 0x22, 0x52, 0xb6, 0x49, 0x8a, 0xaa, 0xa2, 0x04, 0x5d, 0x86, 0x19, - 0x4a, 0xd1, 0xe9, 0xb5, 0x5d, 0xa3, 0xdb, 0xc6, 0x2a, 0x09, 0x00, 0x1d, 0xba, 0xe4, 0x78, 0x2d, - 0x9b, 0x26, 0x18, 0xeb, 0x1c, 0x81, 0xb4, 0xc8, 0x41, 0x2b, 0xf0, 0x20, 0x25, 0xdb, 0xc3, 0x26, - 0xb6, 0x35, 0x17, 0xab, 0xf8, 0x83, 0x3d, 0xad, 0xed, 0xa8, 0x9a, 0xd9, 0x52, 0xf7, 0x35, 0x67, - 0x7f, 0x6e, 0x96, 0x30, 0xa8, 0x44, 0xe7, 0x22, 0xca, 0x69, 0x82, 0xb8, 0xca, 0xf1, 0x6a, 0x14, - 0xad, 0x6c, 0xb6, 0xae, 0x6b, 0xce, 0x3e, 0x5a, 0x86, 0x93, 0x94, 0x8b, 0xe3, 0xda, 0x86, 0xb9, - 0xa7, 0xea, 0xfb, 0x58, 0xbf, 0xa5, 0xf6, 0xdc, 0xdd, 0xe7, 0xe6, 0xce, 0x04, 0xeb, 0xa7, 0x2d, - 0x6c, 0x50, 0x9c, 0x2a, 0x41, 0xd9, 0x76, 0x77, 0x9f, 0x43, 0x0d, 0xc8, 0x91, 0xc1, 0xe8, 0x18, - 0x6f, 0x60, 0x75, 0xd7, 0xb2, 0xe9, 0x1a, 0x5a, 0x18, 0x62, 0x9a, 0x02, 0x12, 0x5c, 0xda, 0xe4, - 0x04, 0xeb, 0x56, 0x0b, 0x2f, 0x27, 0x1a, 0x5b, 0xb5, 0xda, 0x8a, 0x92, 0x15, 0x5c, 0xae, 0x59, - 0x36, 0x51, 0xa8, 0x3d, 0xcb, 0x13, 0x70, 0x96, 0x29, 0xd4, 0x9e, 0x25, 0xc4, 0x7b, 0x19, 0x66, - 0x74, 0x9d, 0xf5, 0xd9, 0xd0, 0x55, 0x1e, 0xa6, 0x39, 0x73, 0x52, 0x48, 0x58, 0xba, 0xbe, 0xca, - 0x10, 0xb8, 0x8e, 0x3b, 0xe8, 0x79, 0x38, 0xe1, 0x0b, 0x2b, 0x48, 0x38, 0x3d, 0xd0, 0xcb, 0x7e, - 0xd2, 0xcb, 0x30, 0xd3, 0x3d, 0x1c, 0x24, 0x44, 0xa1, 0x1a, 0xbb, 0x87, 0xfd, 0x64, 0xcf, 0xc2, - 0x6c, 0x77, 0xbf, 0x3b, 0x48, 0x77, 0x21, 0x48, 0x87, 0xba, 0xfb, 0xdd, 0x7e, 0xc2, 0x87, 0x69, - 0xcc, 0x6e, 0x63, 0x5d, 0x73, 0x71, 0x6b, 0xee, 0x54, 0x10, 0x3d, 0x50, 0x80, 0x96, 0x40, 0xd2, - 0x75, 0x15, 0x9b, 0xda, 0x4e, 0x1b, 0xab, 0x9a, 0x8d, 0x4d, 0xcd, 0x99, 0x5b, 0xa0, 0xc8, 0x71, - 0xd7, 0xee, 0x61, 0xa5, 0xa0, 0xeb, 0x35, 0x5a, 0x58, 0xa6, 0x65, 0xe8, 0x02, 0x4c, 0x5b, 0x3b, - 0xaf, 0xeb, 0x4c, 0x23, 0xd5, 0xae, 0x8d, 0x77, 0x8d, 0x83, 0xb9, 0xf7, 0x50, 0xf1, 0x16, 0x49, - 0x01, 0xd5, 0xc7, 0x2d, 0x0a, 0x46, 0x8f, 0x82, 0xa4, 0x3b, 0xfb, 0x9a, 0xdd, 0xa5, 0x26, 0xd9, - 0xe9, 0x6a, 0x3a, 0x9e, 0x7b, 0x98, 0xa1, 0x32, 0xf8, 0x86, 0x00, 0x93, 0x19, 0xe1, 0xdc, 0x31, - 0x76, 0x5d, 0xc1, 0xf1, 0x1c, 0x9b, 0x11, 0x14, 0xc6, 0xb9, 0x9d, 0x07, 0x89, 0x48, 0x22, 0x54, - 0xf1, 0x79, 0x8a, 0x56, 0xe8, 0xee, 0x77, 0x83, 0xf5, 0x3e, 0x04, 0x79, 0x82, 0xe9, 0x57, 0xfa, - 0x28, 0x73, 0xdc, 0xba, 0xfb, 0x81, 0x1a, 0x9f, 0x81, 0x93, 0x04, 0xa9, 0x83, 0x5d, 0xad, 0xa5, - 0xb9, 0x5a, 0x00, 0xfb, 0x71, 0x8a, 0x4d, 0xc4, 0xbe, 0xce, 0x0b, 0x43, 0xed, 0xb4, 0x7b, 0x3b, - 0x87, 0x9e, 0x62, 0x3d, 0xc1, 0xda, 0x49, 0x60, 0x42, 0xb5, 0xde, 0x35, 0xe7, 0x5c, 0x5e, 0x86, - 0x5c, 0x50, 0xef, 0x51, 0x06, 0x98, 0xe6, 0x4b, 0x11, 0xe2, 0x04, 0x55, 0x37, 0x57, 0x88, 0xfb, - 0xf2, 0x5a, 0x4d, 0x8a, 0x12, 0x37, 0x6a, 0xad, 0xde, 0xac, 0xa9, 0xca, 0xf6, 0x46, 0xb3, 0xbe, - 0x5e, 0x93, 0x62, 0x01, 0xc7, 0xfe, 0x46, 0x3c, 0xfd, 0x88, 0x74, 0x4e, 0xfe, 0x85, 0x18, 0x14, - 0xc2, 0x91, 0x1a, 0x7a, 0x2f, 0x9c, 0x12, 0x09, 0x17, 0x07, 0xbb, 0xea, 0x1d, 0xc3, 0xa6, 0x13, - 0xb2, 0xa3, 0xb1, 0xc5, 0xd1, 0xd3, 0x9f, 0x59, 0x8e, 0xd5, 0xc0, 0xee, 0xfb, 0x0d, 0x9b, 0x4c, - 0xb7, 0x8e, 0xe6, 0xa2, 0x35, 0x58, 0x30, 0x2d, 0xd5, 0x71, 0x35, 0xb3, 0xa5, 0xd9, 0x2d, 0xd5, - 0x4f, 0x75, 0xa9, 0x9a, 0xae, 0x63, 0xc7, 0xb1, 0xd8, 0x42, 0xe8, 0x71, 0x79, 0xc0, 0xb4, 0x1a, - 0x1c, 0xd9, 0x5f, 0x21, 0xca, 0x1c, 0xb5, 0x4f, 0x7d, 0x63, 0xa3, 0xd4, 0xf7, 0x0c, 0x64, 0x3a, - 0x5a, 0x57, 0xc5, 0xa6, 0x6b, 0x1f, 0x52, 0xff, 0x3c, 0xad, 0xa4, 0x3b, 0x5a, 0xb7, 0x46, 0xbe, - 0xd1, 0x4d, 0x78, 0xc4, 0x47, 0x55, 0xdb, 0x78, 0x4f, 0xd3, 0x0f, 0x55, 0xea, 0x8c, 0xd3, 0xb4, - 0x81, 0xaa, 0x5b, 0xe6, 0x6e, 0xdb, 0xd0, 0x5d, 0x87, 0xda, 0x07, 0x66, 0xe3, 0x64, 0x9f, 0x62, - 0x8d, 0x12, 0xdc, 0x70, 0x2c, 0x93, 0xfa, 0xe0, 0x55, 0x81, 0xfd, 0x15, 0x09, 0xbf, 0x6e, 0xc4, - 0xd3, 0x71, 0x29, 0x71, 0x23, 0x9e, 0x4e, 0x48, 0xc9, 0x1b, 0xf1, 0x74, 0x52, 0x4a, 0xdd, 0x88, - 0xa7, 0xd3, 0x52, 0xe6, 0x46, 0x3c, 0x9d, 0x91, 0x40, 0xfe, 0xd9, 0x34, 0xe4, 0x82, 0x91, 0x01, - 0x09, 0xb4, 0x74, 0xba, 0x36, 0x46, 0xa8, 0xf5, 0x7c, 0xe8, 0xc8, 0x38, 0x62, 0xa9, 0x4a, 0x16, - 0xcd, 0xe5, 0x24, 0x73, 0xc3, 0x15, 0x46, 0x49, 0x1c, 0x16, 0xa2, 0xd6, 0x98, 0xb9, 0x3d, 0x69, - 0x85, 0x7f, 0xa1, 0x55, 0x48, 0xbe, 0xee, 0x50, 0xde, 0x49, 0xca, 0xfb, 0x3d, 0x47, 0xf3, 0xbe, - 0xd1, 0xa0, 0xcc, 0x33, 0x37, 0x1a, 0xea, 0xc6, 0xa6, 0xb2, 0x5e, 0x5e, 0x53, 0x38, 0x39, 0x3a, - 0x0d, 0xf1, 0xb6, 0xf6, 0xc6, 0x61, 0x78, 0x79, 0xa5, 0x20, 0xb4, 0x04, 0xc5, 0x9e, 0x79, 0x1b, - 0xdb, 0xc6, 0xae, 0x41, 0x86, 0x8a, 0x60, 0x15, 0x83, 0x58, 0x05, 0xbf, 0x74, 0x8d, 0xe0, 0x4f, - 0xa8, 0x1e, 0xa7, 0x21, 0x7e, 0x07, 0x6b, 0xb7, 0xc2, 0x8b, 0x20, 0x05, 0xa1, 0xf3, 0x90, 0x6b, - 0xe1, 0x9d, 0xde, 0x9e, 0x6a, 0xe3, 0x96, 0xa6, 0xbb, 0x61, 0xd3, 0x9f, 0xa5, 0x45, 0x0a, 0x2d, - 0x41, 0x2f, 0x41, 0x86, 0x8c, 0x91, 0x49, 0xc7, 0x78, 0x9a, 0x8a, 0xe0, 0x89, 0xa3, 0x45, 0xc0, - 0x87, 0x58, 0x10, 0x29, 0x3e, 0x3d, 0xba, 0x06, 0x49, 0x57, 0xb3, 0xf7, 0xb0, 0x4b, 0x2d, 0x7f, - 0x61, 0x48, 0xf2, 0x63, 0x08, 0xa7, 0x26, 0xa5, 0xa0, 0x31, 0x2d, 0xa7, 0x7e, 0x17, 0xad, 0xcc, - 0x45, 0x48, 0x50, 0xf5, 0x40, 0x00, 0x5c, 0x41, 0xa4, 0x29, 0x94, 0x86, 0x78, 0x75, 0x53, 0x21, - 0x96, 0x46, 0x82, 0x1c, 0x83, 0xaa, 0x5b, 0xf5, 0x5a, 0xb5, 0x26, 0x45, 0xe5, 0xcb, 0x90, 0x64, - 0x63, 0x4e, 0xac, 0x90, 0x37, 0xea, 0xd2, 0x14, 0xff, 0xe4, 0x3c, 0x22, 0xa2, 0x74, 0x7b, 0xbd, - 0x52, 0x53, 0xa4, 0xa8, 0xbc, 0x0d, 0xc5, 0x3e, 0x39, 0xa1, 0x13, 0x30, 0xad, 0xd4, 0x9a, 0xb5, - 0x0d, 0x12, 0x67, 0xa9, 0xdb, 0x1b, 0x2f, 0x6d, 0x6c, 0xbe, 0x7f, 0x43, 0x9a, 0x0a, 0x83, 0x85, - 0x49, 0x8b, 0xa0, 0x59, 0x90, 0x7c, 0x70, 0x63, 0x73, 0x5b, 0xa1, 0xad, 0xf9, 0xd6, 0x28, 0x48, - 0xfd, 0x52, 0x43, 0xa7, 0x60, 0xa6, 0x59, 0x56, 0x56, 0x6b, 0x4d, 0x95, 0xc5, 0x8e, 0x1e, 0xeb, - 0x59, 0x90, 0x82, 0x05, 0xd7, 0xea, 0x34, 0x34, 0x5e, 0x80, 0x33, 0x41, 0x68, 0xed, 0x95, 0x66, - 0x6d, 0xa3, 0x41, 0x2b, 0x2f, 0x6f, 0xac, 0x12, 0xfb, 0xda, 0xc7, 0x4f, 0x44, 0xab, 0x31, 0xd2, - 0xd4, 0x30, 0xbf, 0xda, 0xda, 0x8a, 0x14, 0xef, 0x07, 0x6f, 0x6e, 0xd4, 0x36, 0xaf, 0x49, 0x89, - 0xfe, 0xda, 0x69, 0x04, 0x9b, 0x44, 0x25, 0x38, 0xd9, 0x0f, 0x55, 0x6b, 0x1b, 0x4d, 0xe5, 0x55, - 0x29, 0xd5, 0x5f, 0x71, 0xa3, 0xa6, 0xdc, 0xac, 0x57, 0x6b, 0x52, 0x1a, 0x9d, 0x04, 0x14, 0x6e, - 0x51, 0xf3, 0xfa, 0xe6, 0x8a, 0x94, 0x19, 0xb0, 0x28, 0xb2, 0x03, 0xb9, 0x60, 0x18, 0xf9, 0x95, - 0xc9, 0x25, 0x7d, 0x2c, 0x0a, 0xd9, 0x40, 0x58, 0x48, 0xfc, 0x79, 0xad, 0xdd, 0xb6, 0xee, 0xa8, - 0x5a, 0xdb, 0xd0, 0x1c, 0x6e, 0x6f, 0x80, 0x82, 0xca, 0x04, 0x32, 0xe9, 0xfc, 0x9e, 0xdc, 0xc2, - 0x27, 0xbf, 0x1a, 0x2d, 0x7c, 0x42, 0x4a, 0xca, 0xdf, 0x1f, 0x01, 0xa9, 0x3f, 0xde, 0xeb, 0xeb, - 0x7e, 0x64, 0x54, 0xf7, 0xbf, 0x22, 0x63, 0xf7, 0x89, 0x08, 0x14, 0xc2, 0x41, 0x5e, 0x5f, 0xf3, - 0xce, 0xfe, 0x99, 0x36, 0xef, 0xb7, 0xa2, 0x90, 0x0f, 0x85, 0x76, 0x93, 0xb6, 0xee, 0x83, 0x30, - 0x6d, 0xb4, 0x70, 0xa7, 0x6b, 0xb9, 0xd8, 0xd4, 0x0f, 0xd5, 0x36, 0xbe, 0x8d, 0xdb, 0x73, 0x32, - 0x35, 0xca, 0x17, 0x8f, 0x0e, 0x1e, 0x97, 0xea, 0x3e, 0xdd, 0x1a, 0x21, 0x5b, 0x9e, 0xa9, 0xaf, - 0xd4, 0xd6, 0xb7, 0x36, 0x9b, 0xb5, 0x8d, 0xea, 0xab, 0xc2, 0xba, 0x28, 0x92, 0xd1, 0x87, 0xf6, - 0x2e, 0x1a, 0xed, 0x2d, 0x90, 0xfa, 0x1b, 0x45, 0x6c, 0xc5, 0x90, 0x66, 0x49, 0x53, 0x68, 0x06, - 0x8a, 0x1b, 0x9b, 0x6a, 0xa3, 0xbe, 0x52, 0x53, 0x6b, 0xd7, 0xae, 0xd5, 0xaa, 0xcd, 0x06, 0x4b, - 0x07, 0x7a, 0xd8, 0x4d, 0x29, 0x1a, 0x14, 0xf1, 0xf7, 0xc5, 0x60, 0x66, 0x48, 0x4b, 0x50, 0x99, - 0x07, 0xf2, 0x2c, 0xb7, 0xf0, 0xc4, 0x24, 0xad, 0x5f, 0x22, 0xae, 0xf4, 0x96, 0x66, 0xbb, 0x3c, - 0xee, 0x7f, 0x14, 0x88, 0x94, 0x4c, 0x97, 0xac, 0xec, 0x36, 0x4f, 0xb3, 0xb2, 0xe8, 0xbe, 0xe8, - 0xc3, 0x59, 0xa6, 0xf5, 0x71, 0x40, 0x5d, 0xcb, 0x31, 0x5c, 0xe3, 0x36, 0x56, 0x0d, 0x53, 0xe4, - 0x64, 0x49, 0xb4, 0x1f, 0x57, 0x24, 0x51, 0x52, 0x37, 0x5d, 0x0f, 0xdb, 0xc4, 0x7b, 0x5a, 0x1f, - 0x36, 0xf1, 0x3c, 0x62, 0x8a, 0x24, 0x4a, 0x3c, 0xec, 0xb3, 0x90, 0x6b, 0x59, 0x3d, 0x12, 0x02, - 0x31, 0x3c, 0x62, 0x2d, 0x22, 0x4a, 0x96, 0xc1, 0x3c, 0x14, 0x1e, 0xdc, 0xfa, 0xc9, 0xe0, 0x9c, - 0x92, 0x65, 0x30, 0x86, 0x72, 0x0e, 0x8a, 0xda, 0xde, 0x9e, 0x4d, 0x98, 0x0b, 0x46, 0x2c, 0x5c, - 0x2f, 0x78, 0x60, 0x8a, 0x58, 0xba, 0x01, 0x69, 0x21, 0x07, 0xe2, 0xc1, 0x12, 0x49, 0xa8, 0x5d, - 0x96, 0x83, 0x8a, 0x9e, 0xcf, 0x28, 0x69, 0x53, 0x14, 0x9e, 0x85, 0x9c, 0xe1, 0xa8, 0xfe, 0xde, - 0x56, 0x74, 0x31, 0x7a, 0x3e, 0xad, 0x64, 0x0d, 0xc7, 0xdb, 0x17, 0x90, 0x7f, 0x34, 0x0a, 0x85, - 0xf0, 0xae, 0x1d, 0x5a, 0x81, 0x74, 0xdb, 0xd2, 0x35, 0xaa, 0x5a, 0x6c, 0xcb, 0xf8, 0xfc, 0x98, - 0x8d, 0xbe, 0xa5, 0x35, 0x8e, 0xaf, 0x78, 0x94, 0xa5, 0x7f, 0x13, 0x81, 0xb4, 0x00, 0xa3, 0x93, - 0x10, 0xef, 0x6a, 0xee, 0x3e, 0x65, 0x97, 0xa8, 0x44, 0xa5, 0x88, 0x42, 0xbf, 0x09, 0xdc, 0xe9, - 0x6a, 0x26, 0x55, 0x01, 0x0e, 0x27, 0xdf, 0x64, 0x5c, 0xdb, 0x58, 0x6b, 0xd1, 0x5c, 0x80, 0xd5, - 0xe9, 0x60, 0xd3, 0x75, 0xc4, 0xb8, 0x72, 0x78, 0x95, 0x83, 0xd1, 0x63, 0x30, 0xed, 0xda, 0x9a, - 0xd1, 0x0e, 0xe1, 0xc6, 0x29, 0xae, 0x24, 0x0a, 0x3c, 0xe4, 0x65, 0x38, 0x2d, 0xf8, 0xb6, 0xb0, - 0xab, 0xe9, 0xfb, 0xb8, 0xe5, 0x13, 0x25, 0x69, 0xce, 0xef, 0x14, 0x47, 0x58, 0xe1, 0xe5, 0x82, - 0x56, 0xfe, 0x6c, 0x14, 0xa6, 0x45, 0xf6, 0xa2, 0xe5, 0x09, 0x6b, 0x1d, 0x40, 0x33, 0x4d, 0xcb, - 0x0d, 0x8a, 0x6b, 0x50, 0x95, 0x07, 0xe8, 0x96, 0xca, 0x1e, 0x91, 0x12, 0x60, 0x50, 0xfa, 0xbd, - 0x08, 0x80, 0x5f, 0x34, 0x52, 0x6e, 0x0b, 0x90, 0xe5, 0x7b, 0xb2, 0x74, 0x63, 0x9f, 0x25, 0xbc, - 0x80, 0x81, 0xae, 0x19, 0x6d, 0x9a, 0x96, 0xdc, 0xc1, 0x7b, 0x86, 0xc9, 0xf7, 0x53, 0xd8, 0x87, - 0x48, 0x4b, 0xc6, 0xfd, 0xed, 0x29, 0x05, 0xd2, 0x0e, 0xee, 0x68, 0xa6, 0x6b, 0xe8, 0x7c, 0x87, - 0xe4, 0xca, 0xb1, 0x1a, 0xbf, 0xd4, 0xe0, 0xd4, 0x8a, 0xc7, 0x47, 0x3e, 0x0f, 0x69, 0x01, 0x25, - 0x8e, 0xdf, 0xc6, 0xe6, 0x46, 0x4d, 0x9a, 0x42, 0x29, 0x88, 0x35, 0x6a, 0x4d, 0x29, 0x42, 0xc2, - 0xce, 0xf2, 0x5a, 0xbd, 0xdc, 0x90, 0xa2, 0x95, 0xbf, 0x02, 0x33, 0xba, 0xd5, 0xe9, 0xaf, 0xb0, - 0x22, 0xf5, 0xa5, 0xfc, 0x9c, 0xeb, 0x91, 0xd7, 0x9e, 0xe0, 0x48, 0x7b, 0x56, 0x5b, 0x33, 0xf7, - 0x96, 0x2c, 0x7b, 0xcf, 0x3f, 0x16, 0x41, 0xa2, 0x03, 0x27, 0x70, 0x38, 0xa2, 0xbb, 0xf3, 0xa7, - 0x91, 0xc8, 0x0f, 0x46, 0x63, 0xab, 0x5b, 0x95, 0x1f, 0x8f, 0x96, 0x56, 0x19, 0xe1, 0x96, 0xe8, - 0x8e, 0x82, 0x77, 0xdb, 0x58, 0x27, 0x8d, 0x87, 0xdf, 0x7f, 0x0c, 0x66, 0xf7, 0xac, 0x3d, 0x8b, - 0x72, 0xba, 0x48, 0x7e, 0xf1, 0x73, 0x15, 0x19, 0x0f, 0x5a, 0x1a, 0x7b, 0x08, 0x63, 0x79, 0x03, - 0x66, 0x38, 0xb2, 0x4a, 0xb7, 0x6f, 0x59, 0x72, 0x01, 0x1d, 0x99, 0xd9, 0x9e, 0xfb, 0xc9, 0xdf, - 0xa1, 0x5e, 0x89, 0x32, 0xcd, 0x49, 0x49, 0x19, 0xcb, 0x3f, 0x2c, 0x2b, 0x70, 0x22, 0xc4, 0x8f, - 0xd9, 0x08, 0x6c, 0x8f, 0xe1, 0xf8, 0xcf, 0x39, 0xc7, 0x99, 0x00, 0xc7, 0x06, 0x27, 0x5d, 0xae, - 0x42, 0xfe, 0x38, 0xbc, 0xfe, 0x05, 0xe7, 0x95, 0xc3, 0x41, 0x26, 0xab, 0x50, 0xa4, 0x4c, 0xf4, - 0x9e, 0xe3, 0x5a, 0x1d, 0x6a, 0x80, 0x8f, 0x66, 0xf3, 0x2f, 0x7f, 0x87, 0x4d, 0xda, 0x02, 0x21, - 0xab, 0x7a, 0x54, 0xcb, 0xcb, 0x40, 0x77, 0xac, 0x5b, 0x58, 0x6f, 0x8f, 0xe1, 0xf0, 0x2b, 0xbc, - 0x21, 0x1e, 0xfe, 0xf2, 0x4d, 0x98, 0x25, 0xbf, 0xa9, 0x7d, 0x0c, 0xb6, 0x64, 0x7c, 0x1a, 0x7c, - 0xee, 0xdf, 0x7d, 0x98, 0xd9, 0x85, 0x19, 0x8f, 0x41, 0xa0, 0x4d, 0x81, 0x51, 0xdc, 0xc3, 0xae, - 0x8b, 0x6d, 0x47, 0xd5, 0xda, 0xc3, 0x9a, 0x17, 0xc8, 0x23, 0xce, 0x7d, 0xef, 0x17, 0xc3, 0xa3, - 0xb8, 0xca, 0x28, 0xcb, 0xed, 0xf6, 0xf2, 0x36, 0x9c, 0x1a, 0xa2, 0x15, 0x13, 0xf0, 0xfc, 0x3e, - 0xce, 0x73, 0x76, 0x40, 0x33, 0x08, 0xdb, 0x2d, 0x10, 0x70, 0x6f, 0x2c, 0x27, 0xe0, 0xf9, 0x71, - 0xce, 0x13, 0x71, 0x5a, 0x31, 0xa4, 0x84, 0xe3, 0x0d, 0x98, 0xbe, 0x8d, 0xed, 0x1d, 0xcb, 0xe1, - 0xb9, 0xdb, 0x09, 0xd8, 0x7d, 0x82, 0xb3, 0x2b, 0x72, 0x42, 0x9a, 0xcc, 0x25, 0xbc, 0x9e, 0x87, - 0xf4, 0xae, 0xa6, 0xe3, 0x09, 0x58, 0xdc, 0xe3, 0x2c, 0x52, 0x04, 0x9f, 0x90, 0x96, 0x21, 0xb7, - 0x67, 0xf1, 0x25, 0x72, 0x3c, 0xf9, 0xf7, 0x73, 0xf2, 0xac, 0xa0, 0xe1, 0x2c, 0xba, 0x56, 0xb7, - 0xd7, 0x26, 0xeb, 0xe7, 0x78, 0x16, 0x3f, 0x20, 0x58, 0x08, 0x1a, 0xce, 0xe2, 0x18, 0x62, 0xfd, - 0xa4, 0x60, 0xe1, 0x04, 0xe4, 0xf9, 0x22, 0x64, 0x2d, 0xb3, 0x7d, 0x68, 0x99, 0x93, 0x34, 0xe2, - 0x53, 0x9c, 0x03, 0x70, 0x12, 0xc2, 0xe0, 0x2a, 0x64, 0x26, 0x1d, 0x88, 0x1f, 0xfe, 0xa2, 0x98, - 0x1e, 0x62, 0x04, 0x56, 0xa1, 0x28, 0x0c, 0x94, 0x61, 0x99, 0x13, 0xb0, 0xf8, 0x11, 0xce, 0xa2, - 0x10, 0x20, 0xe3, 0xdd, 0x70, 0xb1, 0xe3, 0xee, 0xe1, 0x49, 0x98, 0xfc, 0xa8, 0xe8, 0x06, 0x27, - 0xe1, 0xa2, 0xdc, 0xc1, 0xa6, 0xbe, 0x3f, 0x19, 0x87, 0x4f, 0x0b, 0x51, 0x0a, 0x1a, 0xc2, 0xa2, - 0x0a, 0xf9, 0x8e, 0x66, 0x3b, 0xfb, 0x5a, 0x7b, 0xa2, 0xe1, 0xf8, 0x31, 0xce, 0x23, 0xe7, 0x11, - 0x71, 0x89, 0xf4, 0xcc, 0xe3, 0xb0, 0xf9, 0x71, 0x21, 0x91, 0x00, 0x19, 0x9f, 0x7a, 0x8e, 0x4b, - 0x13, 0xdd, 0xc7, 0xe1, 0xf6, 0xb7, 0xc5, 0xd4, 0x63, 0xb4, 0xeb, 0x41, 0x8e, 0x57, 0x21, 0xe3, - 0x18, 0x6f, 0x4c, 0xc4, 0xe6, 0xef, 0x88, 0x91, 0xa6, 0x04, 0x84, 0xf8, 0x55, 0x38, 0x3d, 0x74, - 0x99, 0x98, 0x80, 0xd9, 0xdf, 0xe5, 0xcc, 0x4e, 0x0e, 0x59, 0x2a, 0xb8, 0x49, 0x38, 0x2e, 0xcb, - 0xbf, 0x27, 0x4c, 0x02, 0xee, 0xe3, 0xb5, 0x45, 0x82, 0x16, 0x47, 0xdb, 0x3d, 0x9e, 0xd4, 0xfe, - 0xbe, 0x90, 0x1a, 0xa3, 0x0d, 0x49, 0xad, 0x09, 0x27, 0x39, 0xc7, 0xe3, 0x8d, 0xeb, 0x4f, 0x08, - 0xc3, 0xca, 0xa8, 0xb7, 0xc3, 0xa3, 0xfb, 0x35, 0x50, 0xf2, 0xc4, 0x29, 0xbc, 0x63, 0x47, 0xed, - 0x68, 0xdd, 0x09, 0x38, 0xff, 0x24, 0xe7, 0x2c, 0x2c, 0xbe, 0xe7, 0x5e, 0x3b, 0xeb, 0x5a, 0x97, - 0x30, 0x7f, 0x05, 0xe6, 0x04, 0xf3, 0x9e, 0x69, 0x63, 0xdd, 0xda, 0x33, 0x8d, 0x37, 0x70, 0x6b, - 0x02, 0xd6, 0x3f, 0xd5, 0x37, 0x54, 0xdb, 0x01, 0x72, 0xc2, 0xb9, 0x0e, 0x92, 0xe7, 0xab, 0xa8, - 0x46, 0xa7, 0x6b, 0xd9, 0xee, 0x18, 0x8e, 0x3f, 0x2d, 0x46, 0xca, 0xa3, 0xab, 0x53, 0xb2, 0xe5, - 0x1a, 0xb0, 0xd3, 0x1f, 0x93, 0xaa, 0xe4, 0x67, 0x38, 0xa3, 0xbc, 0x4f, 0xc5, 0x0d, 0x87, 0x6e, - 0x75, 0xba, 0x9a, 0x3d, 0x89, 0xfd, 0xfb, 0x07, 0xc2, 0x70, 0x70, 0x12, 0x6e, 0x38, 0x88, 0x47, - 0x47, 0x56, 0xfb, 0x09, 0x38, 0xfc, 0x8c, 0x30, 0x1c, 0x82, 0x86, 0xb3, 0x10, 0x0e, 0xc3, 0x04, - 0x2c, 0x7e, 0x56, 0xb0, 0x10, 0x34, 0x84, 0xc5, 0xcb, 0xfe, 0x42, 0x6b, 0xe3, 0x3d, 0xc3, 0x71, - 0x6d, 0xe6, 0x92, 0x1f, 0xcd, 0xea, 0xe7, 0xbe, 0x18, 0x76, 0xc2, 0x94, 0x00, 0x29, 0xb1, 0x44, - 0x7c, 0xeb, 0x83, 0x86, 0x6c, 0xe3, 0x1b, 0xf6, 0xf3, 0xc2, 0x12, 0x05, 0xc8, 0x48, 0xdb, 0x02, - 0x1e, 0x22, 0x11, 0xbb, 0x4e, 0x02, 0x95, 0x09, 0xd8, 0xfd, 0xc3, 0xbe, 0xc6, 0x35, 0x04, 0x2d, - 0xe1, 0x19, 0xf0, 0x7f, 0x7a, 0xe6, 0x2d, 0x7c, 0x38, 0x91, 0x76, 0xfe, 0x42, 0x9f, 0xff, 0xb3, - 0xcd, 0x28, 0x99, 0x0d, 0x29, 0xf6, 0xf9, 0x53, 0x68, 0xdc, 0x59, 0xbf, 0xb9, 0x6f, 0x78, 0x9b, - 0xf7, 0x37, 0xec, 0x4e, 0x2d, 0xaf, 0x11, 0x25, 0x0f, 0x3b, 0x3d, 0xe3, 0x99, 0x7d, 0xf8, 0x6d, - 0x4f, 0xcf, 0x43, 0x3e, 0xcf, 0xf2, 0x35, 0xc8, 0x87, 0x1c, 0x9e, 0xf1, 0xac, 0xbe, 0x91, 0xb3, - 0xca, 0x05, 0xfd, 0x9d, 0xe5, 0xcb, 0x10, 0x27, 0xce, 0xcb, 0x78, 0xf2, 0x6f, 0xe2, 0xe4, 0x14, - 0x7d, 0xf9, 0x05, 0x48, 0x0b, 0xa7, 0x65, 0x3c, 0xe9, 0x5f, 0xe3, 0xa4, 0x1e, 0x09, 0x21, 0x17, - 0x0e, 0xcb, 0x78, 0xf2, 0xbf, 0x2e, 0xc8, 0x05, 0x09, 0x21, 0x9f, 0x5c, 0x84, 0xbf, 0xf4, 0x2d, - 0x71, 0xbe, 0xe8, 0x08, 0xd9, 0x5d, 0x85, 0x14, 0xf7, 0x54, 0xc6, 0x53, 0x7f, 0x33, 0xaf, 0x5c, - 0x50, 0x2c, 0x3f, 0x0b, 0x89, 0x09, 0x05, 0xfe, 0x6d, 0x9c, 0x94, 0xe1, 0x2f, 0x57, 0x21, 0x1b, - 0xf0, 0x4e, 0xc6, 0x93, 0x7f, 0x3b, 0x27, 0x0f, 0x52, 0x91, 0xa6, 0x73, 0xef, 0x64, 0x3c, 0x83, - 0xbf, 0x21, 0x9a, 0xce, 0x29, 0x88, 0xd8, 0x84, 0x63, 0x32, 0x9e, 0xfa, 0xa3, 0x42, 0xea, 0x82, - 0x64, 0xf9, 0x45, 0xc8, 0x78, 0x8b, 0xcd, 0x78, 0xfa, 0xef, 0xe0, 0xf4, 0x3e, 0x0d, 0x91, 0x40, - 0x60, 0xb1, 0x1b, 0xcf, 0xe2, 0x6f, 0x0a, 0x09, 0x04, 0xa8, 0xc8, 0x34, 0xea, 0x77, 0x60, 0xc6, - 0x73, 0xfa, 0x4e, 0x31, 0x8d, 0xfa, 0xfc, 0x17, 0x32, 0x9a, 0xd4, 0xe6, 0x8f, 0x67, 0xf1, 0x5d, - 0x62, 0x34, 0x29, 0x3e, 0x69, 0x46, 0xbf, 0x47, 0x30, 0x9e, 0xc7, 0xf7, 0x88, 0x66, 0xf4, 0x39, - 0x04, 0xcb, 0x5b, 0x80, 0x06, 0xbd, 0x81, 0xf1, 0xfc, 0x3e, 0xc6, 0xf9, 0x4d, 0x0f, 0x38, 0x03, - 0xcb, 0xef, 0x87, 0x93, 0xc3, 0x3d, 0x81, 0xf1, 0x5c, 0xbf, 0xf7, 0xed, 0xbe, 0xd8, 0x2d, 0xe8, - 0x08, 0x2c, 0x37, 0xfd, 0x25, 0x25, 0xe8, 0x05, 0x8c, 0x67, 0xfb, 0x7d, 0x6f, 0x87, 0x0d, 0x77, - 0xd0, 0x09, 0x58, 0x2e, 0x03, 0xf8, 0x0b, 0xf0, 0x78, 0x5e, 0x9f, 0xe0, 0xbc, 0x02, 0x44, 0x64, - 0x6a, 0xf0, 0xf5, 0x77, 0x3c, 0xfd, 0x3d, 0x31, 0x35, 0x38, 0x05, 0x99, 0x1a, 0x62, 0xe9, 0x1d, - 0x4f, 0xfd, 0xfd, 0x62, 0x6a, 0x08, 0x12, 0xa2, 0xd9, 0x81, 0xd5, 0x6d, 0x3c, 0x87, 0x4f, 0x09, - 0xcd, 0x0e, 0x50, 0x2d, 0x6f, 0xc0, 0xf4, 0xc0, 0x82, 0x38, 0x9e, 0xd5, 0x0f, 0x72, 0x56, 0x52, - 0xff, 0x7a, 0x18, 0x5c, 0xbc, 0xf8, 0x62, 0x38, 0x9e, 0xdb, 0x0f, 0xf5, 0x2d, 0x5e, 0x7c, 0x2d, - 0x5c, 0xbe, 0x0a, 0x69, 0xb3, 0xd7, 0x6e, 0x93, 0xc9, 0x83, 0x8e, 0x3e, 0x9f, 0x3b, 0xf7, 0x5f, - 0xbf, 0xc4, 0xa5, 0x23, 0x08, 0x96, 0x2f, 0x43, 0x02, 0x77, 0x76, 0x70, 0x6b, 0x1c, 0xe5, 0x17, - 0xbe, 0x24, 0x0c, 0x26, 0xc1, 0x5e, 0x7e, 0x11, 0x80, 0xa5, 0x46, 0xe8, 0xc6, 0xf9, 0x18, 0xda, - 0xdf, 0xfb, 0x12, 0x3f, 0x10, 0xe7, 0x93, 0xf8, 0x0c, 0xd8, 0xf1, 0xba, 0xa3, 0x19, 0x7c, 0x31, - 0xcc, 0x80, 0x8e, 0xc8, 0xf3, 0x90, 0x7a, 0xdd, 0xb1, 0x4c, 0x57, 0xdb, 0x1b, 0x47, 0xfd, 0xfb, - 0x9c, 0x5a, 0xe0, 0x13, 0x81, 0x75, 0x2c, 0x1b, 0xbb, 0xda, 0x9e, 0x33, 0x8e, 0xf6, 0xbf, 0x71, - 0x5a, 0x8f, 0x80, 0x10, 0xeb, 0x9a, 0xe3, 0x4e, 0xd2, 0xef, 0xff, 0x2e, 0x88, 0x05, 0x01, 0x69, - 0x34, 0xf9, 0x7d, 0x0b, 0x1f, 0x8e, 0xa3, 0xfd, 0x03, 0xd1, 0x68, 0x8e, 0xbf, 0xfc, 0x02, 0x64, - 0xc8, 0x4f, 0x76, 0xca, 0x75, 0x0c, 0xf1, 0x1f, 0x72, 0x62, 0x9f, 0x82, 0xd4, 0xec, 0xb8, 0x2d, - 0xd7, 0x18, 0x2f, 0xec, 0x3f, 0xe2, 0x23, 0x2d, 0xf0, 0x97, 0xcb, 0x90, 0x75, 0xdc, 0x56, 0xab, - 0xc7, 0xfd, 0xd3, 0x31, 0xe4, 0x7f, 0xfc, 0x25, 0x2f, 0x65, 0xe1, 0xd1, 0x90, 0xd1, 0xbe, 0x73, - 0xcb, 0xed, 0x5a, 0x74, 0xbf, 0x65, 0x1c, 0x87, 0xb7, 0x39, 0x87, 0x00, 0xc9, 0x72, 0x15, 0x72, - 0xa4, 0x2f, 0x36, 0xee, 0x62, 0xba, 0x39, 0x36, 0x86, 0xc5, 0x9f, 0x70, 0x01, 0x84, 0x88, 0x2a, - 0x5f, 0xff, 0x2b, 0x6f, 0xcd, 0x47, 0x3e, 0xfb, 0xd6, 0x7c, 0xe4, 0xb7, 0xde, 0x9a, 0x8f, 0x7c, - 0xf4, 0x73, 0xf3, 0x53, 0x9f, 0xfd, 0xdc, 0xfc, 0xd4, 0x6f, 0x7c, 0x6e, 0x7e, 0x6a, 0x78, 0x96, - 0x18, 0x56, 0xad, 0x55, 0x8b, 0xe5, 0x87, 0x5f, 0x7b, 0x78, 0xcf, 0x70, 0xf7, 0x7b, 0x3b, 0x4b, - 0xba, 0xd5, 0xb9, 0xa8, 0x5b, 0x4e, 0xc7, 0x72, 0x2e, 0x86, 0xf3, 0xba, 0xf4, 0x17, 0xfc, 0xef, - 0x08, 0x89, 0x99, 0xc3, 0xe9, 0x5c, 0xcd, 0x3c, 0x1c, 0x75, 0x99, 0xee, 0x0a, 0xc4, 0xca, 0xe6, - 0x21, 0x3a, 0xcd, 0x0c, 0x9c, 0xda, 0xb3, 0xdb, 0xfc, 0xa8, 0x65, 0x8a, 0x7c, 0x6f, 0xdb, 0x6d, - 0x34, 0xeb, 0x9f, 0x87, 0x8e, 0x9c, 0xcf, 0xf1, 0x43, 0xce, 0x95, 0x6f, 0x8f, 0x1c, 0xaf, 0x27, - 0xe9, 0xb2, 0x79, 0x48, 0x3b, 0xb2, 0x15, 0x79, 0xed, 0xf1, 0xb1, 0x79, 0xee, 0x5b, 0xa6, 0x75, - 0xc7, 0x24, 0xcd, 0xee, 0xee, 0x88, 0x1c, 0xf7, 0x7c, 0x7f, 0x8e, 0xfb, 0xfd, 0xb8, 0xdd, 0x7e, - 0x89, 0xe0, 0x35, 0x09, 0xc9, 0x4e, 0x92, 0x9d, 0xea, 0x87, 0xef, 0x8c, 0xc2, 0xfc, 0x40, 0x3a, - 0x9b, 0x2b, 0xc1, 0x28, 0x21, 0x2c, 0x43, 0x7a, 0x45, 0xe8, 0xd6, 0x1c, 0xa4, 0x1c, 0xac, 0x5b, - 0x66, 0xcb, 0xa1, 0x82, 0x88, 0x29, 0xe2, 0x93, 0x08, 0xc2, 0xd4, 0x4c, 0xcb, 0xe1, 0x87, 0x95, - 0xd9, 0x47, 0xe5, 0xe3, 0xc7, 0x14, 0x44, 0x5e, 0xd4, 0x24, 0xa4, 0xf1, 0xd4, 0x84, 0xd2, 0x10, - 0x9d, 0x08, 0x65, 0xfe, 0x27, 0x95, 0xca, 0xf7, 0x44, 0x61, 0xa1, 0x5f, 0x2a, 0x64, 0x66, 0x39, - 0xae, 0xd6, 0xe9, 0x8e, 0x12, 0xcb, 0x55, 0xc8, 0x34, 0x05, 0xce, 0xb1, 0xe5, 0x72, 0xef, 0x98, - 0x72, 0x29, 0x78, 0x55, 0x09, 0xc1, 0x5c, 0x9a, 0x50, 0x30, 0x5e, 0x3f, 0xee, 0x4b, 0x32, 0xff, - 0x2b, 0x09, 0xa7, 0xd9, 0x74, 0x52, 0xd9, 0x54, 0x62, 0x1f, 0x5c, 0x26, 0xb9, 0x60, 0xd1, 0xf8, - 0x7d, 0x12, 0xf9, 0x25, 0x98, 0xa9, 0x13, 0x6b, 0x41, 0xa2, 0x20, 0x7f, 0x87, 0x67, 0xe8, 0x79, - 0xee, 0xc5, 0x90, 0xc3, 0xcf, 0xf7, 0xb7, 0x82, 0x20, 0xf9, 0x1b, 0x22, 0x20, 0x35, 0x74, 0xad, - 0xad, 0xd9, 0x5f, 0x2e, 0x2b, 0xf4, 0x2c, 0x00, 0x3b, 0xee, 0xe1, 0x5d, 0xdc, 0x2b, 0x5c, 0x9a, - 0x5b, 0x0a, 0x76, 0x6e, 0x89, 0xd5, 0x44, 0x4f, 0x50, 0x65, 0x28, 0x2e, 0xf9, 0x79, 0xe1, 0x15, - 0x00, 0xbf, 0x00, 0x9d, 0x81, 0x53, 0x8d, 0x6a, 0x79, 0xad, 0xac, 0x88, 0x43, 0x42, 0x8d, 0xad, - 0x5a, 0xb5, 0x7e, 0xad, 0x5e, 0x5b, 0x91, 0xa6, 0xd0, 0x49, 0x40, 0xc1, 0x42, 0xef, 0x50, 0xd3, - 0x09, 0x98, 0x0e, 0xc2, 0xd9, 0x2d, 0x95, 0x28, 0xf1, 0x14, 0x8d, 0x4e, 0xb7, 0x8d, 0xe9, 0xce, - 0xa3, 0x6a, 0x08, 0xa9, 0x8d, 0x77, 0x42, 0x7e, 0xf5, 0xdf, 0xb3, 0x9b, 0x0b, 0x33, 0x3e, 0xb9, - 0x27, 0xf3, 0xe5, 0x35, 0x98, 0xd6, 0x74, 0x1d, 0x77, 0x43, 0x2c, 0xc7, 0x98, 0x6a, 0xc2, 0x90, - 0xee, 0xa5, 0x72, 0x4a, 0x9f, 0xdb, 0xb3, 0x90, 0x74, 0x68, 0xef, 0xc7, 0xb1, 0xf8, 0x35, 0xce, - 0x82, 0xa3, 0x2f, 0x9b, 0x30, 0x4d, 0x3c, 0x3f, 0xcd, 0xc6, 0x81, 0x66, 0x1c, 0x9d, 0x67, 0xf8, - 0x47, 0x3f, 0xfd, 0x24, 0xdd, 0x59, 0x3d, 0x1b, 0x1e, 0x96, 0x21, 0xea, 0xa4, 0x48, 0x9c, 0xb7, - 0xdf, 0x50, 0x0c, 0x05, 0x51, 0x1f, 0x6f, 0xf0, 0xd1, 0x95, 0xfd, 0x22, 0xaf, 0x6c, 0x7e, 0x98, - 0x0e, 0x04, 0x6a, 0xca, 0x73, 0xae, 0xac, 0xa0, 0x52, 0x1b, 0x35, 0xa7, 0x5f, 0x7b, 0x6c, 0x70, - 0x75, 0x62, 0xff, 0x3d, 0x41, 0x39, 0x5f, 0x0d, 0x56, 0xe3, 0xcd, 0xbd, 0x8f, 0xc7, 0x61, 0x5a, - 0xeb, 0x18, 0xa6, 0x75, 0x91, 0xfe, 0xcb, 0xe7, 0x5c, 0x82, 0x7e, 0x4c, 0xb0, 0x29, 0x79, 0x85, - 0x4d, 0x85, 0xf1, 0x1a, 0xf3, 0x87, 0xdf, 0xfa, 0x23, 0x09, 0x7f, 0xba, 0x2c, 0xaf, 0x83, 0x24, - 0x0e, 0xf1, 0x62, 0x53, 0xb7, 0x5a, 0x13, 0x65, 0x29, 0xfe, 0x48, 0xf0, 0x10, 0xf9, 0xad, 0x1a, - 0x27, 0x5d, 0x7e, 0x2f, 0xa4, 0x3d, 0x36, 0xe3, 0x3c, 0x13, 0xc1, 0xc4, 0xa3, 0x20, 0x7e, 0x09, - 0x9b, 0x99, 0x93, 0x78, 0xa1, 0x6f, 0x0b, 0x7a, 0x36, 0x43, 0x37, 0x48, 0x6f, 0x56, 0xa1, 0xd0, - 0xb2, 0x4c, 0x57, 0xb5, 0x3a, 0x86, 0x8b, 0x3b, 0x5d, 0x77, 0xac, 0x5f, 0xf7, 0x27, 0x8c, 0x49, - 0x5a, 0xc9, 0x13, 0xba, 0x4d, 0x41, 0x46, 0x5a, 0xc2, 0xee, 0xe9, 0x4d, 0xd2, 0x92, 0xff, 0xe1, - 0xb5, 0x84, 0xd2, 0x90, 0x96, 0xdc, 0x97, 0x76, 0x38, 0xad, 0x5b, 0xdc, 0x98, 0xbb, 0x07, 0x4c, - 0x0b, 0x3c, 0xed, 0xf8, 0xa7, 0x71, 0x98, 0xe7, 0xc8, 0x3b, 0x9a, 0x83, 0x2f, 0xde, 0x7e, 0x6a, - 0x07, 0xbb, 0xda, 0x53, 0x17, 0x75, 0xcb, 0x10, 0x2b, 0xf9, 0x0c, 0x37, 0xd6, 0xa4, 0x7c, 0x89, - 0x97, 0x97, 0x86, 0x6e, 0x77, 0x97, 0x46, 0x1b, 0xf9, 0xd2, 0xa0, 0x0e, 0xca, 0x6d, 0x88, 0x57, - 0x2d, 0xc3, 0x24, 0x6b, 0x5b, 0x0b, 0x9b, 0x56, 0x87, 0x9b, 0x5b, 0xf6, 0x81, 0xae, 0x43, 0x52, - 0xeb, 0x58, 0x3d, 0xd3, 0x65, 0xa6, 0xb6, 0xf2, 0xe4, 0xaf, 0xbc, 0xb9, 0x30, 0xf5, 0x9f, 0xde, - 0x5c, 0x38, 0xc1, 0xd8, 0x3a, 0xad, 0x5b, 0x4b, 0x86, 0x75, 0xb1, 0xa3, 0xb9, 0xfb, 0x64, 0xfa, - 0xfe, 0xfa, 0x67, 0x9e, 0x00, 0x5e, 0x5f, 0xdd, 0x74, 0x3f, 0xfd, 0xbb, 0x3f, 0x71, 0x21, 0xa2, - 0x70, 0xfa, 0xe5, 0xf8, 0xe7, 0x3f, 0xb9, 0x10, 0x91, 0xbb, 0x90, 0x5a, 0xc1, 0xfa, 0x11, 0x15, - 0xd6, 0xfb, 0x2a, 0x7c, 0x8a, 0x57, 0x78, 0x66, 0xb0, 0x42, 0x76, 0x60, 0x6f, 0x05, 0xeb, 0x81, - 0x6a, 0x57, 0xb0, 0xde, 0x57, 0x63, 0x1d, 0xd2, 0x75, 0xd3, 0x65, 0x97, 0x8d, 0x5e, 0x80, 0x98, - 0x61, 0xb2, 0xf3, 0xeb, 0x99, 0xca, 0x63, 0xc7, 0xe8, 0x8a, 0x42, 0xe8, 0xe4, 0x4d, 0x48, 0xaf, - 0x60, 0x9d, 0xb1, 0xaa, 0x42, 0xac, 0x85, 0x75, 0xce, 0xea, 0x3e, 0x1a, 0x49, 0xa8, 0x2b, 0x2b, - 0xbf, 0xf1, 0xdb, 0xf3, 0x53, 0x1f, 0x7a, 0x6b, 0x7e, 0x6a, 0xa4, 0x3a, 0xc9, 0xe3, 0xd5, 0xc9, - 0xd3, 0xa2, 0x1f, 0x89, 0xc3, 0x83, 0xf4, 0xb6, 0xaa, 0xdd, 0x31, 0x4c, 0xf7, 0xa2, 0x6e, 0x1f, - 0x76, 0x5d, 0x8b, 0x18, 0x15, 0x6b, 0x97, 0x2b, 0xd1, 0xb4, 0x5f, 0xbc, 0xc4, 0x8a, 0x87, 0xab, - 0x90, 0xbc, 0x0b, 0x89, 0x2d, 0x42, 0x47, 0x06, 0xc9, 0xb5, 0x5c, 0xad, 0xcd, 0x3d, 0x21, 0xf6, - 0x41, 0xa0, 0xec, 0x86, 0x6b, 0x94, 0x41, 0x0d, 0x71, 0xb9, 0xb5, 0x8d, 0xb5, 0x5d, 0x76, 0x51, - 0x28, 0x46, 0x5d, 0xe8, 0x34, 0x01, 0xd0, 0x3b, 0x41, 0xb3, 0x90, 0xd0, 0x7a, 0xec, 0x30, 0x4f, - 0x8c, 0xf8, 0xd6, 0xf4, 0x43, 0x7e, 0x09, 0x52, 0x7c, 0x4f, 0x1f, 0x49, 0x10, 0xbb, 0x85, 0x0f, - 0x69, 0x3d, 0x39, 0x85, 0xfc, 0x44, 0x4b, 0x90, 0xa0, 0x8d, 0xe7, 0x37, 0x20, 0xe7, 0x96, 0x06, - 0x5a, 0xbf, 0x44, 0x1b, 0xa9, 0x30, 0x34, 0xf9, 0x06, 0xa4, 0x57, 0x2c, 0xa2, 0xd9, 0x61, 0x6e, - 0x19, 0xc6, 0x8d, 0xb6, 0xb9, 0xdb, 0xe3, 0x7a, 0xa5, 0xb0, 0x0f, 0x74, 0x12, 0x92, 0xec, 0xe2, - 0x18, 0x3f, 0x90, 0xc4, 0xbf, 0xe4, 0x2a, 0xa4, 0x28, 0xef, 0xcd, 0x2e, 0x71, 0x43, 0xbc, 0xb3, - 0xf4, 0x19, 0x7e, 0x8d, 0x98, 0xb3, 0x8f, 0xfa, 0x8d, 0x45, 0x10, 0x6f, 0x69, 0xae, 0xc6, 0xfb, - 0x4d, 0x7f, 0xcb, 0xef, 0x83, 0x34, 0x67, 0xe2, 0xa0, 0x4b, 0x10, 0xb3, 0xba, 0x0e, 0x3f, 0x52, - 0x54, 0x1a, 0xd5, 0x95, 0xcd, 0x6e, 0x25, 0x4e, 0x74, 0x49, 0x21, 0xc8, 0x95, 0x8d, 0x91, 0x6a, - 0xf1, 0x4c, 0x48, 0x2d, 0x3a, 0xd8, 0xdd, 0xd9, 0x75, 0xfd, 0x1f, 0x6c, 0x38, 0x07, 0x54, 0xc1, - 0x53, 0x94, 0x7b, 0x51, 0x98, 0x0f, 0x94, 0xde, 0xc6, 0xb6, 0x63, 0x58, 0x26, 0xd3, 0x26, 0xae, - 0x29, 0x28, 0xd0, 0x40, 0x5e, 0x3e, 0x42, 0x55, 0x5e, 0x80, 0x58, 0xb9, 0xdb, 0x45, 0x25, 0x48, - 0xd3, 0x6f, 0xdd, 0x62, 0xba, 0x12, 0x57, 0xbc, 0x6f, 0x52, 0xe6, 0x58, 0xbb, 0xee, 0x1d, 0xcd, - 0xf6, 0xee, 0x55, 0x8b, 0x6f, 0xf9, 0x79, 0xc8, 0x54, 0x2d, 0xd3, 0xc1, 0xa6, 0xd3, 0xa3, 0xfe, - 0xf5, 0x4e, 0xdb, 0xd2, 0x6f, 0x71, 0x0e, 0xec, 0x83, 0x08, 0x5b, 0xeb, 0x76, 0x29, 0x65, 0x5c, - 0x21, 0x3f, 0xd9, 0xcc, 0xae, 0x6c, 0x8e, 0x14, 0xcf, 0xe5, 0xe3, 0x89, 0x87, 0x77, 0xd0, 0x77, - 0x94, 0x23, 0xf0, 0xc0, 0xe0, 0x44, 0xba, 0x85, 0x0f, 0x9d, 0xe3, 0xce, 0xa3, 0x57, 0x20, 0xb3, - 0x45, 0x9f, 0x3c, 0x79, 0x09, 0x1f, 0xa2, 0x12, 0xa4, 0x70, 0xeb, 0xd2, 0xe5, 0xcb, 0x4f, 0x3d, - 0xcf, 0xb4, 0xfc, 0xfa, 0x94, 0x22, 0x00, 0x68, 0x1e, 0x32, 0x0e, 0xd6, 0xbb, 0x97, 0x2e, 0x5f, - 0xb9, 0xf5, 0x14, 0x53, 0xab, 0xeb, 0x53, 0x8a, 0x0f, 0x5a, 0x4e, 0x93, 0x1e, 0x7f, 0xfe, 0x53, - 0x0b, 0x91, 0x4a, 0x02, 0x62, 0x4e, 0xaf, 0xf3, 0xae, 0xe9, 0xc6, 0x1f, 0x24, 0x61, 0x31, 0x50, - 0xca, 0x16, 0xac, 0xdb, 0x5a, 0xdb, 0x68, 0x69, 0xfe, 0x43, 0x35, 0x52, 0xa0, 0xff, 0x14, 0x63, - 0xc4, 0x4a, 0x74, 0xa4, 0x14, 0xe5, 0x9f, 0x8a, 0x40, 0xee, 0xa6, 0xe0, 0xdc, 0xc0, 0x2e, 0xba, - 0x0a, 0xe0, 0xd5, 0x24, 0xa6, 0xca, 0x99, 0xa5, 0xfe, 0xba, 0x96, 0x3c, 0x1a, 0x25, 0x80, 0x8e, - 0x9e, 0xa5, 0x0a, 0xd8, 0xb5, 0x1c, 0x7e, 0xc7, 0x76, 0x0c, 0xa9, 0x87, 0x8c, 0x1e, 0x07, 0x44, - 0xad, 0x9a, 0x7a, 0xdb, 0x72, 0x0d, 0x73, 0x4f, 0xed, 0x5a, 0x77, 0xf8, 0xcb, 0x05, 0x31, 0x45, - 0xa2, 0x25, 0x37, 0x69, 0xc1, 0x16, 0x81, 0x93, 0x46, 0x67, 0x3c, 0x2e, 0x24, 0x54, 0xd4, 0x5a, - 0x2d, 0x1b, 0x3b, 0x0e, 0x37, 0x5c, 0xe2, 0x13, 0x5d, 0x85, 0x54, 0xb7, 0xb7, 0xa3, 0x0a, 0x2b, - 0x91, 0xbd, 0xf4, 0xc0, 0xb0, 0x39, 0x2f, 0x74, 0x83, 0xcf, 0xfa, 0x64, 0xb7, 0xb7, 0x43, 0x34, - 0xe5, 0x2c, 0xe4, 0x86, 0x34, 0x26, 0x7b, 0xdb, 0x6f, 0x07, 0x7d, 0x65, 0x87, 0xf7, 0x40, 0xed, - 0xda, 0x86, 0x65, 0x1b, 0xee, 0x21, 0x3d, 0x0a, 0x18, 0x53, 0x24, 0x51, 0xb0, 0xc5, 0xe1, 0xf2, - 0x2d, 0x28, 0x36, 0x68, 0x08, 0xe1, 0xb7, 0xfc, 0xb2, 0xdf, 0xbe, 0xc8, 0xf8, 0xf6, 0x8d, 0x6c, - 0x59, 0x74, 0xa0, 0x65, 0x17, 0xfe, 0x43, 0x04, 0xb2, 0x15, 0x32, 0x71, 0xeb, 0x2b, 0xd7, 0xda, - 0xda, 0x1e, 0x7a, 0x0a, 0x4e, 0x54, 0xd6, 0x36, 0xab, 0x2f, 0xa9, 0xf5, 0x15, 0xf5, 0xda, 0x5a, - 0x79, 0xd5, 0x3f, 0x7b, 0x5c, 0x3a, 0x79, 0xf7, 0xde, 0x22, 0x0a, 0xe0, 0x6e, 0x9b, 0x34, 0xce, - 0x45, 0x17, 0x61, 0x36, 0x4c, 0x52, 0xae, 0x34, 0x6a, 0x1b, 0x4d, 0x29, 0x52, 0x3a, 0x71, 0xf7, - 0xde, 0xe2, 0x74, 0x80, 0xa2, 0xbc, 0xe3, 0x60, 0xd3, 0x1d, 0x24, 0xa8, 0x6e, 0xae, 0xaf, 0xd7, - 0x9b, 0x52, 0x74, 0x80, 0xa0, 0x6a, 0x75, 0x3a, 0x86, 0x8b, 0x1e, 0x85, 0xe9, 0x30, 0xc1, 0x46, - 0x7d, 0x4d, 0x8a, 0x95, 0xd0, 0xdd, 0x7b, 0x8b, 0x85, 0x00, 0xf6, 0x86, 0xd1, 0x2e, 0xa5, 0x3f, - 0xf2, 0x43, 0xf3, 0x53, 0x9f, 0xfe, 0x5b, 0xf3, 0x91, 0xca, 0xfa, 0xc8, 0x39, 0xf7, 0xf4, 0xf1, - 0xe6, 0x5c, 0x78, 0xdd, 0xfe, 0xd2, 0x03, 0x21, 0x73, 0xc3, 0x7d, 0xc4, 0x80, 0x31, 0x9e, 0x74, - 0xba, 0x8d, 0xcb, 0x7b, 0x94, 0x8e, 0x76, 0x0f, 0x4a, 0x63, 0x16, 0x85, 0xd2, 0x58, 0xc3, 0x20, - 0x3f, 0x0f, 0xf9, 0x2d, 0xcd, 0x76, 0x1b, 0xd8, 0xbd, 0x8e, 0xb5, 0x16, 0xb6, 0xc3, 0xfe, 0x43, - 0x5e, 0xf8, 0x0f, 0x08, 0xe2, 0xd4, 0x49, 0x60, 0xeb, 0x27, 0xfd, 0x2d, 0xef, 0x43, 0x9c, 0x9e, - 0x72, 0xf6, 0x7c, 0x0b, 0x4e, 0xc1, 0x7c, 0x0b, 0xb2, 0x32, 0x1c, 0xba, 0xd8, 0x11, 0xa9, 0x39, - 0xfa, 0x81, 0x9e, 0x11, 0x1e, 0x42, 0xec, 0x68, 0x0f, 0x81, 0x4f, 0x2f, 0xee, 0x27, 0xb4, 0x21, - 0xc5, 0x87, 0xd8, 0x6b, 0x48, 0xc4, 0x6f, 0x08, 0x5a, 0x87, 0x62, 0x57, 0xb3, 0x5d, 0x7a, 0xeb, - 0x71, 0x9f, 0xf6, 0x82, 0xcf, 0xe0, 0x85, 0x41, 0x7b, 0x12, 0xea, 0x2c, 0xaf, 0x25, 0xdf, 0x0d, - 0x02, 0xe5, 0xff, 0x12, 0x87, 0x24, 0x17, 0xc6, 0x0b, 0x90, 0xe2, 0x62, 0xe5, 0x73, 0xee, 0xc1, - 0xa5, 0xc1, 0x65, 0x76, 0xc9, 0x5b, 0x0e, 0x39, 0x3f, 0x41, 0x83, 0x1e, 0x81, 0xb4, 0xbe, 0xaf, - 0x19, 0xa6, 0x6a, 0xb4, 0xb8, 0x73, 0x9c, 0x7d, 0xeb, 0xcd, 0x85, 0x54, 0x95, 0xc0, 0xea, 0x2b, - 0x4a, 0x8a, 0x16, 0xd6, 0x5b, 0xc4, 0xa7, 0xd9, 0xc7, 0xc6, 0xde, 0xbe, 0xcb, 0xed, 0x06, 0xff, - 0x42, 0xcf, 0x41, 0x9c, 0x28, 0x04, 0xbf, 0x13, 0x5f, 0x1a, 0x88, 0x7a, 0xbc, 0xb4, 0x54, 0x25, - 0x4d, 0x2a, 0xfe, 0xe8, 0x7f, 0x5e, 0x88, 0x28, 0x94, 0x02, 0x55, 0x21, 0xdf, 0xd6, 0x1c, 0x57, - 0xa5, 0xeb, 0x31, 0xa9, 0x3e, 0x41, 0x59, 0x9c, 0x1e, 0x14, 0x08, 0x17, 0x2c, 0x6f, 0x7a, 0x96, - 0x50, 0x31, 0x50, 0x0b, 0x9d, 0x07, 0x89, 0x32, 0xd1, 0xe9, 0x0c, 0x64, 0x5e, 0x62, 0x92, 0xca, - 0xbd, 0x40, 0xe0, 0x6c, 0x62, 0x52, 0x5f, 0xf1, 0x0c, 0x64, 0xe8, 0x2d, 0x5c, 0x8a, 0xc2, 0x8e, - 0xd6, 0xa7, 0x09, 0x80, 0x16, 0x9e, 0x83, 0xa2, 0x6f, 0xf5, 0x19, 0x4a, 0x9a, 0x71, 0xf1, 0xc1, - 0x14, 0xf1, 0x49, 0x98, 0x35, 0xf1, 0x01, 0x3d, 0xec, 0x1f, 0xc2, 0xce, 0x50, 0x6c, 0x44, 0xca, - 0x6e, 0x86, 0x29, 0x1e, 0x86, 0x82, 0x2e, 0x84, 0xcf, 0x70, 0x81, 0xe2, 0xe6, 0x3d, 0x28, 0x45, - 0x3b, 0x0d, 0x69, 0xad, 0xdb, 0x65, 0x08, 0x59, 0x6e, 0xf5, 0xbb, 0x5d, 0x5a, 0x74, 0x01, 0xa6, - 0x69, 0x1f, 0x6d, 0xec, 0xf4, 0xda, 0x2e, 0x67, 0x92, 0xa3, 0x38, 0x45, 0x52, 0xa0, 0x30, 0x38, - 0xc5, 0x7d, 0x08, 0xf2, 0xf8, 0xb6, 0xd1, 0xc2, 0xa6, 0x8e, 0x19, 0x5e, 0x9e, 0xe2, 0xe5, 0x04, - 0x90, 0x22, 0x3d, 0x0a, 0x9e, 0x35, 0x57, 0xc5, 0x4a, 0x53, 0x60, 0xfc, 0x04, 0xbc, 0xcc, 0xc0, - 0xf2, 0x1c, 0xc4, 0x57, 0x34, 0x57, 0x23, 0xee, 0x92, 0x7b, 0xc0, 0x96, 0xcf, 0x9c, 0x42, 0x7e, - 0xca, 0x3f, 0x1b, 0x83, 0xf8, 0x4d, 0xcb, 0xc5, 0xe8, 0xe9, 0x80, 0x2b, 0x5b, 0x18, 0xa6, 0xcf, - 0x0d, 0x63, 0xcf, 0xc4, 0xad, 0x75, 0x67, 0x2f, 0xf0, 0x64, 0x8e, 0xaf, 0x4e, 0xd1, 0x90, 0x3a, - 0xcd, 0x42, 0xc2, 0xb6, 0x7a, 0x66, 0x4b, 0x1c, 0x4a, 0xa7, 0x1f, 0xa8, 0x06, 0x69, 0x4f, 0x4b, - 0xe2, 0xe3, 0xb4, 0xa4, 0x48, 0xb4, 0x84, 0xe8, 0x30, 0x07, 0x28, 0xa9, 0x1d, 0xae, 0x2c, 0x15, - 0xc8, 0x78, 0xc6, 0x8b, 0x6b, 0xdb, 0x64, 0x0a, 0xeb, 0x93, 0x91, 0x25, 0xd2, 0x1b, 0x7b, 0x4f, - 0x78, 0x4c, 0xe3, 0x24, 0xaf, 0x80, 0x4b, 0x2f, 0xa4, 0x56, 0xfc, 0xf9, 0x9e, 0x14, 0xed, 0x97, - 0xaf, 0x56, 0xec, 0x09, 0x9f, 0x07, 0x20, 0xe3, 0x18, 0x7b, 0xa6, 0xe6, 0xf6, 0x6c, 0xcc, 0x35, - 0xcf, 0x07, 0x90, 0x52, 0xff, 0x82, 0x06, 0xd3, 0xb4, 0xc0, 0xab, 0x62, 0x17, 0x61, 0xc6, 0x7f, - 0xcf, 0xcb, 0xe7, 0xc2, 0xb4, 0x0c, 0x79, 0x45, 0x0d, 0x51, 0x22, 0xff, 0x52, 0x04, 0x92, 0x7c, - 0xc5, 0xf2, 0x87, 0x21, 0x32, 0x7c, 0x18, 0xa2, 0xa3, 0x86, 0x21, 0x76, 0xff, 0xc3, 0x50, 0x06, - 0xf0, 0x9a, 0xe9, 0xf0, 0x47, 0x5a, 0x86, 0xb8, 0x55, 0xac, 0x89, 0x0d, 0x63, 0x8f, 0xcf, 0xfb, - 0x00, 0x91, 0xfc, 0x9b, 0x11, 0xe2, 0xe1, 0xf3, 0x72, 0x54, 0x86, 0xbc, 0x68, 0x97, 0xba, 0xdb, - 0xd6, 0xf6, 0xb8, 0x2a, 0x3e, 0x38, 0xb2, 0x71, 0x64, 0x15, 0x56, 0xb2, 0xbc, 0x3d, 0xd4, 0x9f, - 0x18, 0x3a, 0xac, 0xd1, 0x11, 0xc3, 0x1a, 0xd2, 0xa3, 0xd8, 0xfd, 0xe9, 0x51, 0x68, 0xc4, 0xe3, - 0x7d, 0x23, 0x2e, 0xff, 0x76, 0x84, 0xbf, 0x26, 0xd6, 0x62, 0xb7, 0x4b, 0xfe, 0xac, 0x86, 0xea, - 0x35, 0xae, 0x5b, 0x2d, 0xdc, 0x52, 0x07, 0xc6, 0xec, 0xa1, 0x41, 0x8e, 0xe1, 0x36, 0xfb, 0x63, - 0x87, 0x04, 0x97, 0x86, 0x3f, 0x86, 0x9f, 0x89, 0xc2, 0xf4, 0x00, 0xfe, 0x9f, 0xbf, 0xb1, 0x0c, - 0xcf, 0xde, 0xc4, 0x84, 0xb3, 0x37, 0x39, 0x72, 0xf6, 0xfe, 0x74, 0x94, 0x26, 0x00, 0xba, 0x96, - 0xa3, 0xb5, 0xbf, 0x12, 0xb6, 0xf7, 0x0c, 0x64, 0xba, 0x56, 0x5b, 0x65, 0x25, 0xec, 0x5a, 0x50, - 0xba, 0x6b, 0xb5, 0x95, 0x01, 0x35, 0x4b, 0xbc, 0x43, 0x86, 0x39, 0xf9, 0x0e, 0x0c, 0x42, 0xaa, - 0x7f, 0x42, 0xd9, 0x90, 0x63, 0xa2, 0xe0, 0x5e, 0xd3, 0x93, 0x44, 0x06, 0xd4, 0x0d, 0x8b, 0x0c, - 0x7a, 0x79, 0xac, 0xd9, 0x0c, 0x53, 0xe1, 0x78, 0x84, 0x82, 0x39, 0x19, 0xc3, 0x32, 0x47, 0x41, - 0x8b, 0xa5, 0x70, 0x3c, 0xf9, 0xbb, 0x23, 0x00, 0x6b, 0x44, 0xb2, 0xb4, 0xbf, 0xc4, 0xdf, 0x71, - 0x68, 0x13, 0xd4, 0x50, 0xcd, 0xf3, 0xa3, 0x06, 0x8d, 0xd7, 0x9f, 0x73, 0x82, 0xed, 0xae, 0x42, - 0xde, 0xd7, 0x6d, 0x07, 0x8b, 0xc6, 0xcc, 0x1f, 0x11, 0x95, 0x36, 0xb0, 0xab, 0xe4, 0x6e, 0x07, - 0xbe, 0xe4, 0x7f, 0x12, 0x81, 0x0c, 0x6d, 0xd3, 0x3a, 0x76, 0xb5, 0xd0, 0x18, 0x46, 0xee, 0x7f, - 0x0c, 0x1f, 0x04, 0x60, 0x6c, 0x1c, 0xe3, 0x0d, 0xcc, 0x35, 0x2b, 0x43, 0x21, 0x0d, 0xe3, 0x0d, - 0x8c, 0xae, 0x78, 0x02, 0x8f, 0x1d, 0x2d, 0x70, 0x11, 0xb5, 0x72, 0xb1, 0x9f, 0x82, 0x14, 0x7d, - 0xef, 0xf2, 0xc0, 0xe1, 0x81, 0x68, 0xd2, 0xec, 0x75, 0x9a, 0x07, 0x8e, 0xfc, 0x3a, 0xa4, 0x9a, - 0x07, 0x2c, 0x9f, 0x78, 0x06, 0x32, 0xb6, 0x65, 0x71, 0xef, 0x8f, 0x79, 0xdd, 0x69, 0x02, 0xa0, - 0xce, 0x8e, 0xc8, 0xa1, 0x45, 0xfd, 0x1c, 0x9a, 0x9f, 0x04, 0x8c, 0x4d, 0x94, 0x04, 0x24, 0xd1, - 0x67, 0x3e, 0x34, 0x93, 0xd0, 0xe3, 0x70, 0xaa, 0x51, 0x5f, 0xdd, 0xa8, 0xad, 0xa8, 0xeb, 0x8d, - 0xd5, 0xbe, 0x2b, 0xff, 0xa5, 0xe2, 0xdd, 0x7b, 0x8b, 0x59, 0x1e, 0x76, 0x8e, 0xc2, 0xde, 0x52, - 0x6a, 0x37, 0x37, 0x9b, 0x35, 0x29, 0xc2, 0xb0, 0xb7, 0x6c, 0x7c, 0xdb, 0x72, 0xd9, 0x83, 0xb2, - 0x4f, 0xc2, 0xe9, 0x21, 0xd8, 0x5e, 0xf0, 0x39, 0x7d, 0xf7, 0xde, 0x62, 0x7e, 0xcb, 0xc6, 0x4c, - 0xcb, 0x28, 0xc5, 0x12, 0xcc, 0x0d, 0x52, 0x6c, 0x6e, 0x6d, 0x36, 0xca, 0x6b, 0xd2, 0x62, 0x49, - 0xba, 0x7b, 0x6f, 0x31, 0x27, 0x4c, 0x06, 0xc1, 0x7f, 0xf7, 0xa3, 0xcf, 0x6f, 0x4e, 0x87, 0xb2, - 0xc6, 0x2c, 0xae, 0xeb, 0x6a, 0xb6, 0xd6, 0x39, 0x6e, 0xf8, 0x39, 0xe6, 0x30, 0x82, 0xfc, 0x53, - 0x51, 0x28, 0x7a, 0xc1, 0xcd, 0x16, 0xad, 0x01, 0x3d, 0x1d, 0xcc, 0xf8, 0x65, 0x47, 0xae, 0x1d, - 0x0c, 0x5b, 0x24, 0x04, 0xdf, 0x0b, 0x69, 0xe1, 0x24, 0xf3, 0x49, 0xb5, 0x38, 0x64, 0x7d, 0xe3, - 0x18, 0x9c, 0xd4, 0xa3, 0x40, 0x2f, 0x42, 0xc6, 0x9b, 0x62, 0xde, 0xa3, 0x6b, 0xa3, 0xe7, 0x24, - 0xa7, 0xf7, 0x69, 0xd0, 0xf3, 0x7e, 0x18, 0x17, 0x1f, 0x15, 0x18, 0xde, 0x64, 0x08, 0x9c, 0xd8, - 0x0b, 0xe1, 0x9e, 0x84, 0xb8, 0xb6, 0xa3, 0x1b, 0xdc, 0x00, 0x3f, 0x30, 0x48, 0x57, 0xae, 0x54, - 0xeb, 0x9c, 0x88, 0x62, 0xca, 0x75, 0x9e, 0x4c, 0xe1, 0xf2, 0xa2, 0x4f, 0xdc, 0x1c, 0xa8, 0x2c, - 0x16, 0x66, 0xde, 0x45, 0xba, 0xa3, 0x1d, 0x54, 0x68, 0x38, 0x7c, 0x0a, 0x52, 0xa4, 0x70, 0x8f, - 0x3f, 0xa2, 0x10, 0x53, 0x92, 0x1d, 0xed, 0x60, 0x55, 0x73, 0x6e, 0xc4, 0xd3, 0x31, 0x29, 0x2e, - 0xff, 0x18, 0xf1, 0x54, 0x42, 0x52, 0x41, 0x8f, 0x01, 0x22, 0x14, 0xda, 0x1e, 0x56, 0xc9, 0xd4, - 0xa5, 0xe2, 0x15, 0x7c, 0x8b, 0x1d, 0xed, 0xa0, 0xbc, 0x87, 0x37, 0x7a, 0x1d, 0xda, 0x00, 0x07, - 0xad, 0x83, 0x24, 0x90, 0xc5, 0xc8, 0x72, 0xf1, 0x9f, 0x1e, 0x7c, 0xb4, 0x95, 0x23, 0xb0, 0x05, - 0xe0, 0x63, 0x64, 0x01, 0x28, 0x30, 0x7e, 0xde, 0xf1, 0x93, 0x50, 0x57, 0x62, 0xe1, 0xae, 0xc8, - 0x2f, 0x42, 0xb1, 0x6f, 0x04, 0x90, 0x0c, 0x79, 0x9e, 0xb1, 0xa2, 0x5b, 0xfb, 0x2c, 0xc2, 0xc9, - 0x28, 0x59, 0x96, 0x99, 0xa2, 0x47, 0x1d, 0x96, 0xd3, 0x3f, 0xf7, 0xc9, 0x85, 0x08, 0xdd, 0xf6, - 0x79, 0x0c, 0xf2, 0xa1, 0x31, 0x10, 0x59, 0xe4, 0x88, 0x9f, 0x45, 0xf6, 0x91, 0x5f, 0x83, 0x1c, - 0x31, 0x40, 0xb8, 0xc5, 0x71, 0x1f, 0x81, 0x22, 0x33, 0x90, 0xfd, 0xb2, 0x66, 0x0e, 0xcf, 0xba, - 0x10, 0xb8, 0x2c, 0x3c, 0xa0, 0xb0, 0xd8, 0xb3, 0x02, 0x6b, 0x55, 0x73, 0xe4, 0x4d, 0x00, 0x7f, - 0x50, 0x51, 0x19, 0x1e, 0x24, 0xc6, 0x23, 0x78, 0x14, 0x95, 0x3f, 0xb7, 0x15, 0xf2, 0x18, 0x4b, - 0x04, 0xc9, 0x3f, 0x6e, 0xca, 0x1e, 0xdd, 0xba, 0x4e, 0x31, 0x2a, 0x2f, 0x7f, 0xfa, 0xad, 0xf9, - 0xc8, 0xbb, 0x63, 0x0b, 0xfe, 0xe3, 0xab, 0x70, 0x26, 0x50, 0x48, 0x14, 0x30, 0x94, 0x88, 0x2a, - 0x06, 0xf4, 0x95, 0x14, 0x8e, 0x4b, 0x28, 0x1d, 0x99, 0xff, 0x2d, 0x1d, 0x6d, 0x76, 0xc6, 0x67, - 0x9b, 0xc6, 0xe7, 0xbb, 0x86, 0x27, 0xe5, 0xff, 0x71, 0x06, 0x52, 0x0a, 0xfe, 0x60, 0x0f, 0x3b, - 0x2e, 0xba, 0x04, 0x71, 0xac, 0xef, 0x5b, 0xc3, 0x72, 0xa0, 0xa4, 0x83, 0x4b, 0x1c, 0xaf, 0xa6, - 0xef, 0x5b, 0xd7, 0xa7, 0x14, 0x8a, 0x8b, 0x2e, 0x43, 0x62, 0xb7, 0xdd, 0xe3, 0xe9, 0xab, 0x3e, - 0x9b, 0x15, 0x24, 0xba, 0x46, 0x90, 0xae, 0x4f, 0x29, 0x0c, 0x9b, 0x54, 0x45, 0x5f, 0xdb, 0x8e, - 0x1d, 0x5d, 0x55, 0xdd, 0xdc, 0xa5, 0x55, 0x11, 0x5c, 0x54, 0x01, 0x30, 0x4c, 0xc3, 0x55, 0x69, - 0x6a, 0x87, 0x5b, 0x8d, 0xb3, 0xa3, 0x29, 0x0d, 0x97, 0x26, 0x83, 0xae, 0x4f, 0x29, 0x19, 0x43, - 0x7c, 0x90, 0xe6, 0x7e, 0xb0, 0x87, 0xed, 0x43, 0xee, 0xad, 0x8d, 0x6c, 0xee, 0xcb, 0x04, 0x89, - 0x34, 0x97, 0x62, 0x13, 0x23, 0xcb, 0x1e, 0xee, 0x73, 0x0f, 0xf8, 0x73, 0xb4, 0x0b, 0xa3, 0x28, - 0xe9, 0xeb, 0x7d, 0xcd, 0x83, 0xeb, 0x53, 0x4a, 0x4a, 0x67, 0x3f, 0xd1, 0x73, 0x9e, 0x0b, 0x96, - 0x1d, 0xf4, 0x7a, 0x42, 0xb4, 0x2c, 0xed, 0x33, 0x25, 0x5c, 0x31, 0xb4, 0x01, 0x85, 0xb6, 0xe1, - 0xb8, 0xaa, 0x63, 0x6a, 0x5d, 0x67, 0xdf, 0x72, 0x1d, 0x9a, 0x3f, 0xc9, 0x5e, 0x7a, 0x78, 0x14, - 0x87, 0x35, 0xc3, 0x71, 0x1b, 0x02, 0xf9, 0xfa, 0x94, 0x92, 0x6f, 0x07, 0x01, 0x84, 0x9f, 0xb5, - 0xbb, 0x8b, 0x6d, 0x8f, 0x21, 0xcd, 0xb3, 0x1c, 0xc1, 0x6f, 0x93, 0x60, 0x0b, 0x7a, 0xc2, 0xcf, - 0x0a, 0x02, 0xd0, 0xd7, 0xc0, 0x4c, 0xdb, 0xd2, 0x5a, 0x1e, 0x3b, 0x55, 0xdf, 0xef, 0x99, 0xb7, - 0x68, 0x52, 0x26, 0x7b, 0xe9, 0xd1, 0x91, 0x8d, 0xb4, 0xb4, 0x96, 0x60, 0x51, 0x25, 0x04, 0xd7, - 0xa7, 0x94, 0xe9, 0x76, 0x3f, 0x10, 0x7d, 0x00, 0x66, 0xb5, 0x6e, 0xb7, 0x7d, 0xd8, 0xcf, 0xbd, - 0x48, 0xb9, 0x5f, 0x18, 0xc5, 0xbd, 0x4c, 0x68, 0xfa, 0xd9, 0x23, 0x6d, 0x00, 0x8a, 0x9a, 0x20, - 0x75, 0x6d, 0x4c, 0x6f, 0x73, 0x75, 0xb9, 0x97, 0x41, 0xdf, 0xba, 0xca, 0x5e, 0x3a, 0x37, 0x8a, - 0xf7, 0x16, 0xc3, 0x17, 0x4e, 0xc9, 0xf5, 0x29, 0xa5, 0xd8, 0x0d, 0x83, 0x18, 0x57, 0x4b, 0xc7, - 0xf4, 0x29, 0x3e, 0xce, 0x75, 0x7a, 0x1c, 0x57, 0x8a, 0x1f, 0xe6, 0x1a, 0x02, 0xa1, 0x1a, 0x64, - 0x59, 0x28, 0xaa, 0x12, 0x63, 0x48, 0x5f, 0xc8, 0xca, 0x5e, 0x92, 0x47, 0xce, 0x50, 0x8a, 0x7a, - 0xd3, 0x72, 0xf1, 0xf5, 0x29, 0x05, 0xb0, 0xf7, 0x85, 0x34, 0x38, 0x41, 0x1f, 0x0b, 0x3b, 0x54, - 0xc3, 0x86, 0x77, 0x6e, 0x86, 0x32, 0x7c, 0x6c, 0x14, 0xc3, 0x9b, 0x94, 0xe8, 0x66, 0xd0, 0x0e, - 0x5f, 0x9f, 0x52, 0x66, 0x6e, 0x0f, 0x82, 0x89, 0x8a, 0xed, 0x1a, 0xa6, 0xd6, 0x36, 0xde, 0xc0, - 0x6c, 0x09, 0xa5, 0xcf, 0x64, 0x1e, 0xa1, 0x62, 0xd7, 0x38, 0x36, 0x5d, 0x58, 0x89, 0x8a, 0xed, - 0x06, 0x01, 0x95, 0x14, 0x3f, 0x87, 0xea, 0x3d, 0xfb, 0x96, 0x92, 0xd2, 0xec, 0xa9, 0xb7, 0x1b, - 0xf1, 0x34, 0x48, 0x59, 0xf9, 0x1c, 0x64, 0x03, 0x86, 0x09, 0xcd, 0x41, 0x8a, 0x9f, 0xd4, 0x11, - 0x27, 0x5a, 0xf9, 0xa7, 0x5c, 0x80, 0x5c, 0xd0, 0x18, 0xc9, 0x1f, 0x8d, 0x78, 0x94, 0xf4, 0xbd, - 0x8b, 0xb9, 0x70, 0x46, 0x3a, 0xe3, 0x7b, 0x2a, 0x0f, 0x89, 0xa5, 0x4d, 0x94, 0xb3, 0xed, 0xd7, - 0x1c, 0x05, 0xf2, 0x95, 0x15, 0x2d, 0x40, 0xb6, 0x7b, 0xa9, 0xeb, 0xa1, 0xc4, 0x28, 0x0a, 0x74, - 0x2f, 0x75, 0x05, 0xc2, 0x59, 0xc8, 0x91, 0x7e, 0xab, 0x41, 0x7f, 0x29, 0xa3, 0x64, 0x09, 0x8c, - 0xa3, 0xc8, 0xff, 0x2a, 0x0a, 0x52, 0xbf, 0x01, 0xf3, 0x52, 0xd5, 0x91, 0x63, 0xa7, 0xaa, 0x4f, - 0xf7, 0x27, 0xc9, 0xfd, 0xbc, 0xf8, 0x1a, 0x48, 0x7e, 0x7a, 0x97, 0x2d, 0x35, 0xa3, 0xfd, 0xbf, - 0x3e, 0x47, 0x55, 0x29, 0xea, 0x7d, 0x9e, 0xeb, 0xb5, 0xd0, 0x66, 0xa5, 0xf8, 0x73, 0x14, 0xfd, - 0x03, 0xee, 0x39, 0x31, 0xdb, 0xdd, 0x96, 0xe6, 0x62, 0x91, 0x1f, 0x0b, 0xec, 0x5b, 0x3e, 0x02, - 0x45, 0xad, 0xdb, 0x55, 0x1d, 0x57, 0x73, 0x31, 0xf7, 0x35, 0x58, 0xe6, 0x21, 0xaf, 0x75, 0xbb, - 0x0d, 0x02, 0x65, 0xbe, 0xc6, 0xc3, 0x50, 0x20, 0x36, 0xdd, 0xd0, 0xda, 0xc2, 0x55, 0x48, 0x32, - 0x97, 0x84, 0x43, 0x99, 0x77, 0x20, 0xb7, 0xbc, 0x11, 0xa7, 0xf6, 0xdc, 0x8b, 0xa9, 0x22, 0x81, - 0x98, 0x0a, 0xf1, 0x77, 0x48, 0x98, 0x7c, 0xc4, 0xdb, 0x2d, 0xc3, 0x37, 0x0d, 0x66, 0x69, 0xfc, - 0x75, 0x9b, 0x25, 0x4b, 0xd2, 0x0a, 0xfb, 0x90, 0x15, 0x28, 0x84, 0x6d, 0x3f, 0x2a, 0x40, 0xd4, - 0x3d, 0xe0, 0xb5, 0x44, 0xdd, 0x03, 0xe2, 0xe9, 0x7a, 0xaf, 0xf7, 0x16, 0x86, 0xac, 0x76, 0x9c, - 0xce, 0xcf, 0x75, 0xc8, 0x45, 0xc8, 0x87, 0xd6, 0x04, 0xf9, 0x24, 0xcc, 0x0e, 0x33, 0xf1, 0xf2, - 0xbe, 0x07, 0x0f, 0x99, 0x6a, 0x74, 0x19, 0xd2, 0x9e, 0x8d, 0x1f, 0x12, 0x1d, 0xd3, 0x6a, 0x05, - 0xb2, 0xe2, 0xa1, 0x86, 0xd2, 0xf9, 0xd1, 0x50, 0x3a, 0x5f, 0xfe, 0x7a, 0x98, 0x1b, 0x65, 0xbf, - 0xfb, 0x92, 0x7c, 0x71, 0x4f, 0x60, 0x27, 0x21, 0xc9, 0x9f, 0xc9, 0x8c, 0xd2, 0x0d, 0x2c, 0xfe, - 0x45, 0x04, 0xc9, 0x6c, 0x79, 0x8c, 0xed, 0x6b, 0xd1, 0x0f, 0x59, 0x85, 0xd3, 0x23, 0x6d, 0xf8, - 0xe8, 0xad, 0x30, 0xc6, 0x88, 0x6f, 0x85, 0xe9, 0xa2, 0x39, 0x0e, 0xed, 0xab, 0x38, 0xc8, 0xc2, - 0xbe, 0xe4, 0x8f, 0xc5, 0xe0, 0xe4, 0x70, 0x4b, 0x8e, 0x16, 0x21, 0x47, 0xfc, 0x56, 0x37, 0xec, - 0xe2, 0x42, 0x47, 0x3b, 0x68, 0x72, 0xff, 0x96, 0x6f, 0x25, 0x44, 0xbd, 0xad, 0x04, 0xb4, 0x0d, - 0xd3, 0x6d, 0x4b, 0xd7, 0xda, 0x6a, 0x60, 0x2b, 0x87, 0x4f, 0xa2, 0x87, 0x06, 0x84, 0x1d, 0x4e, - 0x19, 0x12, 0x83, 0xc3, 0xf5, 0xbf, 0x48, 0x79, 0xac, 0x79, 0xbb, 0x3e, 0x68, 0x05, 0xb2, 0x1d, - 0xc3, 0xd9, 0xc1, 0xfb, 0xda, 0x6d, 0xc3, 0xb2, 0xf9, 0x6c, 0x1a, 0x54, 0x9a, 0x75, 0x1f, 0x47, - 0xec, 0x30, 0x05, 0xc8, 0x02, 0x43, 0x92, 0x18, 0xba, 0xf1, 0x95, 0x3c, 0xb6, 0x35, 0x19, 0xb5, - 0x87, 0x94, 0x1a, 0xb9, 0x87, 0x34, 0x6c, 0xc3, 0x26, 0x3d, 0x7c, 0xc3, 0xe6, 0x23, 0xc1, 0xa1, - 0x09, 0xaf, 0x7d, 0x03, 0x7b, 0x38, 0xa8, 0x01, 0xb3, 0x9c, 0xbe, 0x15, 0x92, 0xfd, 0x90, 0xa3, - 0x0e, 0x6c, 0x7e, 0xf5, 0xcb, 0x1c, 0x09, 0xf2, 0xd1, 0x62, 0x8f, 0xdd, 0x9f, 0xd8, 0xc5, 0x26, - 0x6a, 0x3c, 0xb0, 0x89, 0xfa, 0xff, 0xd8, 0x50, 0x7c, 0x38, 0x06, 0xd3, 0x03, 0x8e, 0xc4, 0xd0, - 0xdd, 0xe1, 0x51, 0x19, 0x59, 0xd1, 0xb1, 0xd8, 0xb1, 0x3b, 0xc6, 0xc7, 0x3a, 0x3e, 0x7e, 0xac, - 0x13, 0xef, 0xe0, 0x58, 0x27, 0xef, 0x6f, 0xac, 0xdf, 0xd5, 0x51, 0xf8, 0x44, 0x04, 0x4a, 0xa3, - 0xbd, 0xaf, 0xa1, 0xc3, 0x71, 0xac, 0x0d, 0x84, 0x51, 0x6b, 0xdc, 0xc3, 0x50, 0xe8, 0xf3, 0x0d, - 0x99, 0x2a, 0xe7, 0x43, 0x51, 0xb8, 0xfc, 0x8d, 0x31, 0x6f, 0xe1, 0x09, 0x39, 0x70, 0x43, 0x66, - 0xeb, 0xcb, 0x30, 0xd3, 0xc2, 0xba, 0xd1, 0xba, 0xdf, 0xc9, 0x3a, 0xcd, 0xa9, 0xff, 0xff, 0x5c, - 0x1d, 0xd4, 0x92, 0xef, 0x02, 0x48, 0x2b, 0xd8, 0xe9, 0x12, 0x7f, 0x0c, 0x55, 0x20, 0x83, 0x0f, - 0x74, 0xdc, 0x75, 0xfd, 0x43, 0x15, 0xc3, 0x42, 0x04, 0x86, 0x5d, 0x13, 0x98, 0x24, 0x40, 0xf6, - 0xc8, 0xd0, 0xd3, 0x3c, 0x07, 0x30, 0x3a, 0x9c, 0xe7, 0xe4, 0xc1, 0x24, 0xc0, 0x15, 0x91, 0x04, - 0x88, 0x8d, 0x8c, 0x6f, 0x19, 0x55, 0x5f, 0x16, 0xe0, 0x69, 0x9e, 0x05, 0x88, 0x8f, 0xa9, 0x2c, - 0x94, 0x06, 0xa8, 0x86, 0xd2, 0x00, 0xc9, 0x31, 0xdd, 0x1c, 0x91, 0x07, 0xb8, 0x22, 0xf2, 0x00, - 0xa9, 0x31, 0x2d, 0xee, 0x4b, 0x04, 0xbc, 0x10, 0x48, 0x04, 0x64, 0x06, 0xb3, 0xad, 0x21, 0xd2, - 0x21, 0x99, 0x80, 0xe7, 0xbd, 0x4c, 0x40, 0x6e, 0x64, 0x16, 0x81, 0x13, 0xf7, 0xa7, 0x02, 0x36, - 0x07, 0x52, 0x01, 0x79, 0xfe, 0x47, 0x97, 0x46, 0xb1, 0x18, 0x93, 0x0b, 0xd8, 0x1c, 0xc8, 0x05, - 0x14, 0xc6, 0x30, 0x1c, 0x93, 0x0c, 0xf8, 0xda, 0xe1, 0xc9, 0x80, 0xd1, 0xe1, 0x3a, 0x6f, 0xe6, - 0x64, 0xd9, 0x00, 0x75, 0x44, 0x36, 0x40, 0x1a, 0x19, 0xb9, 0x32, 0xf6, 0x13, 0xa7, 0x03, 0xb6, - 0x87, 0xa4, 0x03, 0x58, 0xe0, 0x7e, 0x7e, 0x24, 0xf3, 0x09, 0xf2, 0x01, 0xdb, 0x43, 0xf2, 0x01, - 0x68, 0x2c, 0xdb, 0xb1, 0x09, 0x81, 0x6b, 0xe1, 0x84, 0xc0, 0xcc, 0x08, 0xaf, 0xd3, 0x9f, 0xed, - 0x23, 0x32, 0x02, 0x3b, 0xa3, 0x32, 0x02, 0x2c, 0x6a, 0x7f, 0x7c, 0x24, 0xc7, 0x63, 0xa4, 0x04, - 0x36, 0x07, 0x52, 0x02, 0x27, 0xc6, 0x68, 0xda, 0xe4, 0x39, 0x01, 0xf6, 0x08, 0x3c, 0x7b, 0xfe, - 0x1d, 0xa4, 0xec, 0x8d, 0x78, 0x3a, 0x2b, 0xe5, 0xe4, 0x47, 0x89, 0x07, 0xd3, 0x67, 0xe7, 0x48, - 0xac, 0x80, 0x6d, 0xdb, 0xb2, 0xc5, 0x1d, 0x0b, 0xfa, 0x21, 0x9f, 0x27, 0x31, 0xa2, 0x6f, 0xd3, - 0x8e, 0xc8, 0x1f, 0xd0, 0x98, 0x2c, 0x60, 0xc7, 0xe4, 0x9f, 0x8b, 0xf8, 0xb4, 0x34, 0x83, 0x10, - 0x8c, 0x2f, 0x33, 0x3c, 0xbe, 0x0c, 0x64, 0x15, 0xa2, 0xe1, 0xac, 0xc2, 0x02, 0x64, 0x49, 0xac, - 0xd5, 0x97, 0x30, 0xd0, 0xba, 0x5e, 0xc2, 0x40, 0x1c, 0xa0, 0x62, 0xb9, 0x07, 0xbe, 0x2c, 0xb1, - 0xdd, 0xc4, 0xa2, 0x77, 0x98, 0x8c, 0x85, 0xba, 0xe8, 0x09, 0x98, 0x09, 0xe0, 0x7a, 0x31, 0x1c, - 0x8b, 0x9e, 0x25, 0x0f, 0xbb, 0xcc, 0x83, 0xb9, 0x7f, 0x16, 0xf1, 0x25, 0xe4, 0x67, 0x1a, 0x86, - 0x25, 0x05, 0x22, 0xef, 0x50, 0x52, 0x20, 0x7a, 0xdf, 0x49, 0x81, 0x60, 0x4c, 0x1a, 0x0b, 0xc7, - 0xa4, 0xff, 0x33, 0xe2, 0x8f, 0x89, 0x17, 0xe2, 0xeb, 0x56, 0x0b, 0xf3, 0x28, 0x91, 0xfe, 0x26, - 0x2e, 0x49, 0xdb, 0xda, 0xe3, 0xb1, 0x20, 0xf9, 0x49, 0xb0, 0xbc, 0x85, 0x27, 0xc3, 0xd7, 0x15, - 0x2f, 0xc0, 0x4c, 0x04, 0xef, 0x71, 0xf0, 0xcb, 0x0d, 0x49, 0xff, 0x72, 0x83, 0x77, 0x31, 0x3a, - 0x15, 0xb8, 0x18, 0x8d, 0x9e, 0x83, 0x0c, 0x4d, 0xf6, 0xab, 0x56, 0x57, 0xfc, 0xc5, 0xb2, 0x33, - 0xa3, 0x2f, 0x36, 0x38, 0xf4, 0xc8, 0x35, 0xbb, 0x0c, 0xe1, 0x7b, 0x1c, 0x99, 0x90, 0xc7, 0xf1, - 0x00, 0x64, 0x48, 0xeb, 0xd9, 0x5f, 0xde, 0x00, 0x7e, 0xab, 0x5e, 0x00, 0xe4, 0x1f, 0x8f, 0x42, - 0xb1, 0x6f, 0xa1, 0x19, 0xda, 0xf7, 0x61, 0xdb, 0xc8, 0x93, 0xc9, 0x63, 0x1e, 0x60, 0x4f, 0x73, - 0xd4, 0x3b, 0x9a, 0xe9, 0xe2, 0x16, 0x17, 0x4a, 0x00, 0x82, 0x4a, 0x90, 0x26, 0x5f, 0x3d, 0x07, - 0xb7, 0x78, 0xf6, 0xc5, 0xfb, 0x46, 0xd7, 0x21, 0x89, 0x6f, 0xd3, 0x97, 0x67, 0xd9, 0xfb, 0xcd, - 0x27, 0x07, 0xc3, 0x61, 0x52, 0x5c, 0x99, 0x23, 0x83, 0xfd, 0x85, 0x37, 0x17, 0x24, 0x86, 0xfd, - 0xb8, 0x77, 0x99, 0x4d, 0xe1, 0xf4, 0x61, 0x29, 0xa4, 0xfb, 0xa4, 0x40, 0xf3, 0x80, 0x39, 0x11, - 0xde, 0x13, 0x99, 0xb2, 0x33, 0xde, 0x4a, 0xbe, 0x83, 0x3b, 0x5d, 0xcb, 0x6a, 0xab, 0x6c, 0x8e, - 0x97, 0xa1, 0x10, 0x5e, 0x57, 0xd9, 0x5f, 0xc5, 0x72, 0x35, 0xc3, 0x54, 0x43, 0x4e, 0x70, 0x8e, - 0x01, 0xd9, 0x9c, 0xba, 0x11, 0x4f, 0x47, 0xa4, 0xe8, 0x8d, 0x78, 0x3a, 0x2a, 0xc5, 0xe4, 0x2d, - 0x38, 0x31, 0x74, 0x5d, 0x45, 0xcf, 0x42, 0xc6, 0x5f, 0x92, 0xd9, 0x31, 0xfd, 0x23, 0x32, 0x2d, - 0x3e, 0xae, 0xfc, 0x8b, 0x11, 0x9f, 0x65, 0x38, 0x77, 0x53, 0x83, 0x24, 0x3b, 0x33, 0xc9, 0xcf, - 0xc7, 0x3c, 0x31, 0xd9, 0x8a, 0xbc, 0xc4, 0x0e, 0x54, 0x2a, 0x9c, 0x58, 0xfe, 0x00, 0x24, 0x19, - 0x04, 0x65, 0x21, 0xe5, 0xbf, 0x71, 0x0d, 0x90, 0x2c, 0x57, 0xab, 0xb5, 0x2d, 0xf1, 0x60, 0x6d, - 0x65, 0x53, 0x69, 0x4a, 0x51, 0x02, 0x56, 0x6a, 0x37, 0x6a, 0xd5, 0xa6, 0x14, 0x43, 0xd3, 0x90, - 0x67, 0xbf, 0xd5, 0x6b, 0x9b, 0xca, 0x7a, 0xb9, 0x29, 0xc5, 0x03, 0xa0, 0x46, 0x6d, 0x63, 0xa5, - 0xa6, 0x48, 0x09, 0xf9, 0x29, 0x38, 0x3d, 0x72, 0x0d, 0xf7, 0x13, 0x33, 0x91, 0x40, 0x62, 0x46, - 0xfe, 0x58, 0x94, 0x04, 0x35, 0xa3, 0x16, 0x66, 0x74, 0xa3, 0xaf, 0xe3, 0x97, 0x8e, 0xb1, 0xaa, - 0xf7, 0xf5, 0x9e, 0xc4, 0x31, 0x36, 0xde, 0xc5, 0xae, 0xbe, 0xcf, 0x1c, 0x05, 0x66, 0x81, 0xf2, - 0x4a, 0x9e, 0x43, 0x29, 0x91, 0xc3, 0xd0, 0x5e, 0xc7, 0xba, 0xab, 0x32, 0x25, 0x72, 0xf8, 0x1f, - 0xf1, 0xcd, 0x33, 0x68, 0x83, 0x01, 0xe5, 0xaf, 0x3f, 0x96, 0x2c, 0x33, 0x90, 0x50, 0x6a, 0x4d, - 0xe5, 0x55, 0x29, 0x86, 0x10, 0x14, 0xe8, 0x4f, 0xb5, 0xb1, 0x51, 0xde, 0x6a, 0x5c, 0xdf, 0x24, - 0xb2, 0x9c, 0x81, 0xa2, 0x90, 0xa5, 0x00, 0x26, 0xe4, 0xc7, 0xe0, 0xd4, 0x08, 0xaf, 0x62, 0xc8, - 0x21, 0xd6, 0x4f, 0x45, 0x82, 0xd8, 0x61, 0xcf, 0x60, 0x13, 0x92, 0x8e, 0xab, 0xb9, 0x3d, 0x87, - 0x0b, 0xf1, 0xd9, 0x49, 0xdd, 0x8c, 0x25, 0xf1, 0xa3, 0x41, 0xc9, 0x15, 0xce, 0x46, 0xbe, 0x0c, - 0x85, 0x70, 0xc9, 0x68, 0x19, 0xf8, 0x4a, 0x14, 0x95, 0xaf, 0x02, 0x1a, 0xf4, 0x3e, 0x86, 0x84, - 0x97, 0x91, 0x61, 0xe1, 0xe5, 0x0f, 0x47, 0xe0, 0xcc, 0x11, 0x9e, 0x06, 0x7a, 0xb9, 0xaf, 0x93, - 0xcf, 0x1f, 0xc7, 0x4f, 0x59, 0x62, 0xb0, 0xbe, 0x6e, 0x3e, 0x0d, 0xb9, 0x20, 0x7c, 0xb2, 0x4e, - 0x7e, 0x21, 0xea, 0x4f, 0xe2, 0x70, 0x1c, 0xec, 0x9b, 0xc0, 0xc8, 0x97, 0x69, 0x02, 0xdf, 0x0b, - 0xe0, 0x1e, 0x88, 0x53, 0xd4, 0x7c, 0x1d, 0x7d, 0x70, 0x48, 0x7e, 0x11, 0xeb, 0xcd, 0x03, 0x3e, - 0x09, 0x32, 0x2e, 0xff, 0xe5, 0xa0, 0x46, 0x30, 0x29, 0xd0, 0xa3, 0x6b, 0xac, 0xe3, 0xfd, 0x09, - 0xdf, 0xc9, 0x16, 0x63, 0x3f, 0x79, 0xc0, 0xc0, 0x0e, 0x7a, 0x15, 0x4e, 0xf5, 0x39, 0x0a, 0x1e, - 0xeb, 0xf8, 0xa4, 0xfe, 0xc2, 0x89, 0xb0, 0xbf, 0x20, 0x58, 0x07, 0x57, 0xfb, 0x44, 0x78, 0xb5, - 0x7f, 0x15, 0xc0, 0x4f, 0x0e, 0xf8, 0xc7, 0xfe, 0x22, 0xc1, 0x63, 0x7f, 0x97, 0x21, 0x41, 0x34, - 0x49, 0xc8, 0x69, 0xd0, 0x14, 0x13, 0x4d, 0x08, 0x24, 0x17, 0x18, 0xb6, 0x6c, 0x00, 0x1a, 0x4c, - 0xd0, 0x8e, 0xa8, 0xe2, 0x85, 0x70, 0x15, 0x67, 0x47, 0xa6, 0x7a, 0x87, 0x57, 0xf5, 0x06, 0x24, - 0xe8, 0xc8, 0x0f, 0xbd, 0x4b, 0xf9, 0x75, 0x00, 0x9a, 0xeb, 0xda, 0xc6, 0x4e, 0xcf, 0xaf, 0x60, - 0x61, 0xb8, 0xe6, 0x94, 0x05, 0x5e, 0xe5, 0x01, 0xae, 0x42, 0xb3, 0x3e, 0x69, 0x40, 0x8d, 0x02, - 0x0c, 0xe5, 0x0d, 0x28, 0x84, 0x69, 0x87, 0xdf, 0x0d, 0xf5, 0x1f, 0x7e, 0xc9, 0x08, 0xff, 0xc6, - 0xf3, 0x8e, 0xf8, 0x63, 0x4c, 0xf4, 0x43, 0xfe, 0x50, 0x14, 0x72, 0x41, 0xc5, 0xfb, 0x8b, 0xe7, - 0x82, 0xc8, 0xdf, 0x14, 0x81, 0xb4, 0xd7, 0xfd, 0x23, 0x0e, 0x3b, 0xfb, 0x77, 0x84, 0xbd, 0xcd, - 0x0b, 0xb6, 0x4d, 0x14, 0xf3, 0xb6, 0x89, 0xae, 0x7a, 0xcb, 0xdf, 0xa8, 0x84, 0x48, 0x50, 0xd6, - 0xe2, 0xc0, 0x21, 0x5f, 0xed, 0xaf, 0x4e, 0x76, 0x15, 0x6f, 0x16, 0x12, 0xc1, 0x6b, 0x74, 0xec, - 0x43, 0x6e, 0x05, 0x4e, 0x18, 0xb1, 0x89, 0x18, 0xbc, 0xb3, 0x17, 0x39, 0xf6, 0x9d, 0x3d, 0xaf, - 0x96, 0x68, 0xb0, 0x96, 0xef, 0x8c, 0x40, 0x5a, 0xcc, 0x09, 0xf4, 0xbe, 0xe0, 0xc9, 0x33, 0xb1, - 0xb5, 0x39, 0xd2, 0x1e, 0x71, 0xfe, 0x81, 0x83, 0x67, 0x03, 0x07, 0xae, 0x63, 0xc7, 0x3d, 0x70, - 0xcd, 0x3d, 0xbb, 0x3f, 0x8e, 0x80, 0xd4, 0x3f, 0x63, 0xbf, 0xec, 0xd6, 0x0d, 0x2e, 0x73, 0xb1, - 0x21, 0xcb, 0xdc, 0xa8, 0x53, 0xd4, 0xf1, 0x51, 0xa7, 0xa8, 0x07, 0x7b, 0x9d, 0xb8, 0xcf, 0x5e, - 0x7f, 0x38, 0x0a, 0xd9, 0x40, 0x7a, 0x14, 0x3d, 0x13, 0x3a, 0x91, 0xbd, 0x78, 0x54, 0x2a, 0x35, - 0x70, 0x24, 0x3b, 0x24, 0xa6, 0xe8, 0xf1, 0xc5, 0xf4, 0xce, 0xdf, 0xce, 0x1a, 0x7e, 0x81, 0x35, - 0x31, 0xe2, 0x02, 0xeb, 0x5f, 0x8d, 0x40, 0xda, 0x73, 0xbb, 0x8f, 0xbb, 0x89, 0x79, 0x12, 0x92, - 0xdc, 0xb3, 0x64, 0xbb, 0x98, 0xfc, 0x6b, 0x68, 0x5a, 0xb9, 0x04, 0x69, 0xf1, 0xf7, 0x14, 0xf9, - 0xaa, 0xe6, 0x7d, 0x5f, 0x78, 0x1e, 0xb2, 0x81, 0x0d, 0x60, 0x62, 0x1a, 0x37, 0x6a, 0xef, 0x97, - 0xa6, 0x4a, 0xa9, 0xbb, 0xf7, 0x16, 0x63, 0x1b, 0xf8, 0x0e, 0x99, 0xcd, 0x4a, 0xad, 0x7a, 0xbd, - 0x56, 0x7d, 0x49, 0x8a, 0x94, 0xb2, 0x77, 0xef, 0x2d, 0xa6, 0x14, 0x4c, 0x33, 0x8a, 0x17, 0x5e, - 0x82, 0x62, 0xdf, 0xc0, 0x84, 0xdd, 0x16, 0x04, 0x85, 0x95, 0xed, 0xad, 0xb5, 0x7a, 0xb5, 0xdc, - 0xac, 0xa9, 0xec, 0xdc, 0x2e, 0x3a, 0x05, 0x33, 0x6b, 0xf5, 0xd5, 0xeb, 0x4d, 0xb5, 0xba, 0x56, - 0xaf, 0x6d, 0x34, 0xd5, 0x72, 0xb3, 0x59, 0xae, 0xbe, 0x24, 0x45, 0x2f, 0xdd, 0xcb, 0x42, 0xbc, - 0x5c, 0xa9, 0xd6, 0x51, 0x15, 0xe2, 0x34, 0x15, 0x72, 0xe4, 0x09, 0xb0, 0xd2, 0xd1, 0xb9, 0x61, - 0x74, 0x0d, 0x12, 0x34, 0x4b, 0x82, 0x8e, 0x3e, 0x12, 0x56, 0x1a, 0x93, 0x2c, 0x26, 0x8d, 0xa1, - 0x33, 0xf2, 0xc8, 0x33, 0x62, 0xa5, 0xa3, 0x73, 0xc7, 0x68, 0x0d, 0x52, 0x22, 0x48, 0x1e, 0x77, - 0x70, 0xab, 0x34, 0x36, 0xa1, 0x4b, 0xba, 0xc6, 0x92, 0x0d, 0x47, 0x1f, 0x1f, 0x2b, 0x8d, 0xc9, - 0x2a, 0xa3, 0xba, 0x77, 0x9f, 0x69, 0xcc, 0x89, 0xb0, 0xd2, 0xb8, 0x3c, 0x31, 0x52, 0x20, 0xe3, - 0xa7, 0x71, 0xc6, 0x1f, 0x8a, 0x2b, 0x4d, 0x90, 0x30, 0x47, 0x1f, 0x80, 0x7c, 0x38, 0xd4, 0x9d, - 0xec, 0xd4, 0x59, 0x69, 0xc2, 0x8c, 0x34, 0xe1, 0x1f, 0x8e, 0x7b, 0x27, 0x3b, 0x85, 0x56, 0x9a, - 0x30, 0x41, 0x8d, 0x5e, 0x87, 0xe9, 0xc1, 0xb8, 0x74, 0xf2, 0x43, 0x69, 0xa5, 0x63, 0xa4, 0xac, - 0x51, 0x07, 0xd0, 0x90, 0x78, 0xf6, 0x18, 0x67, 0xd4, 0x4a, 0xc7, 0xc9, 0x60, 0xa3, 0x16, 0x14, - 0xfb, 0x83, 0xc4, 0x49, 0xcf, 0xac, 0x95, 0x26, 0xce, 0x66, 0xb3, 0x5a, 0xc2, 0xc1, 0xe5, 0xa4, - 0x67, 0xd8, 0x4a, 0x13, 0x27, 0xb7, 0xd1, 0x36, 0x40, 0x20, 0x3e, 0x9c, 0xe0, 0x4c, 0x5b, 0x69, - 0x92, 0x34, 0x37, 0xea, 0xc2, 0xcc, 0xb0, 0xc0, 0xf1, 0x38, 0x47, 0xdc, 0x4a, 0xc7, 0xca, 0x7e, - 0x13, 0x7d, 0x0e, 0x87, 0x80, 0x93, 0x1d, 0x79, 0x2b, 0x4d, 0x98, 0x06, 0xaf, 0x94, 0x47, 0x9e, - 0x73, 0x3e, 0x77, 0xe4, 0x39, 0x67, 0xff, 0xe4, 0xb2, 0x77, 0xb6, 0xf9, 0xdf, 0x5e, 0x84, 0xf7, - 0xf0, 0x17, 0x74, 0x1c, 0x57, 0xbb, 0x65, 0x98, 0x7b, 0xde, 0x33, 0x4b, 0xfc, 0x9b, 0x1f, 0x72, - 0x3e, 0xc9, 0x5f, 0xe9, 0x11, 0xd0, 0x31, 0x8f, 0x2d, 0x8d, 0x7c, 0x81, 0x72, 0xdc, 0x7d, 0x88, - 0xf1, 0xc7, 0x97, 0x8f, 0x78, 0xc8, 0x69, 0xcc, 0x73, 0x51, 0x43, 0x1e, 0x7a, 0x2a, 0x1d, 0xf9, - 0xc6, 0x40, 0xe9, 0xa8, 0x73, 0xdf, 0xc4, 0x8b, 0x2d, 0x5c, 0x37, 0x1c, 0xd7, 0xb2, 0x0d, 0x5d, - 0x6b, 0xd3, 0xe5, 0xe5, 0xea, 0xa4, 0xb7, 0xb2, 0x2a, 0x19, 0xe2, 0xae, 0xf0, 0xb7, 0xa0, 0xf8, - 0x4d, 0xa1, 0x15, 0x48, 0xde, 0xd6, 0xda, 0xec, 0x4e, 0x54, 0xf0, 0x21, 0xb8, 0x7e, 0x99, 0x07, - 0xfc, 0xa8, 0x20, 0x17, 0x46, 0x2b, 0x7f, 0x37, 0xbd, 0x4f, 0xd2, 0xe9, 0x18, 0x0e, 0xd1, 0x45, - 0x85, 0x86, 0xd2, 0x37, 0x20, 0x6e, 0x6b, 0x2e, 0x0f, 0x30, 0x2b, 0x57, 0x8e, 0xfd, 0x2e, 0x13, - 0xab, 0x81, 0xf2, 0x40, 0x2f, 0x43, 0xba, 0xa3, 0x1d, 0xa8, 0x94, 0x5f, 0xf4, 0xcb, 0xe2, 0x97, - 0xea, 0x68, 0x07, 0xa4, 0x7d, 0xe8, 0x03, 0x50, 0x24, 0x2c, 0xf5, 0x7d, 0xcd, 0xdc, 0xc3, 0x8c, - 0x73, 0xec, 0xcb, 0xe2, 0x9c, 0xef, 0x68, 0x07, 0x55, 0xca, 0x8d, 0xf0, 0xe7, 0x4f, 0x5e, 0xfd, - 0x72, 0x84, 0x67, 0x0d, 0xa8, 0x60, 0x90, 0x06, 0x92, 0xee, 0x7d, 0xd1, 0x4a, 0xc5, 0x16, 0xc7, - 0xb9, 0x51, 0x72, 0xef, 0x13, 0x6b, 0x25, 0x4f, 0x9a, 0xf7, 0xd9, 0x37, 0x17, 0x22, 0xac, 0xd6, - 0xa2, 0x3e, 0x20, 0xf6, 0x2c, 0x4b, 0x86, 0xa8, 0xd4, 0x87, 0x8d, 0x8e, 0xf5, 0x61, 0xf3, 0xc2, - 0x87, 0x65, 0x0c, 0x81, 0x51, 0x93, 0x72, 0xde, 0x87, 0x4f, 0x47, 0x20, 0xbb, 0x12, 0x78, 0xd6, - 0x71, 0x0e, 0x52, 0x1d, 0xcb, 0x34, 0x6e, 0x61, 0xdb, 0xdb, 0xa3, 0x62, 0x9f, 0xc4, 0xcf, 0x64, - 0x7f, 0x1d, 0xd0, 0x3d, 0x14, 0xaf, 0x0b, 0x89, 0x6f, 0x42, 0x75, 0x07, 0xef, 0x38, 0x86, 0x90, - 0xb3, 0x22, 0x3e, 0xd1, 0xa3, 0x20, 0x39, 0x58, 0xef, 0xd9, 0x86, 0x7b, 0xa8, 0xea, 0x96, 0xe9, - 0x6a, 0xba, 0xcb, 0xe3, 0xf0, 0xa2, 0x80, 0x57, 0x19, 0x98, 0x30, 0x69, 0x61, 0x57, 0x33, 0xda, - 0xec, 0x64, 0x66, 0x46, 0x11, 0x9f, 0xbc, 0xa9, 0x77, 0x53, 0xc1, 0x38, 0xb4, 0x0a, 0x92, 0xd5, - 0xc5, 0x76, 0xe8, 0x40, 0x0a, 0xd3, 0xc6, 0xb9, 0x5f, 0xff, 0xcc, 0x13, 0xb3, 0x5c, 0xe0, 0xfc, - 0x30, 0x03, 0xfb, 0x2b, 0x06, 0x4a, 0x51, 0x50, 0x88, 0x93, 0x2a, 0xaf, 0x86, 0x76, 0xa5, 0x7a, - 0x3b, 0xfe, 0x33, 0x32, 0xb3, 0x03, 0x42, 0x2d, 0x9b, 0x87, 0x95, 0xb9, 0x5f, 0xf3, 0x59, 0xfb, - 0x71, 0xea, 0x4b, 0xf8, 0x30, 0xb8, 0x45, 0x45, 0xd9, 0x10, 0x17, 0xfe, 0x75, 0xcd, 0x68, 0x8b, - 0x3f, 0xa4, 0xaa, 0xf0, 0x2f, 0xb4, 0xec, 0xa5, 0x17, 0xe3, 0x34, 0x1e, 0x92, 0x47, 0xe9, 0x46, - 0xc5, 0x32, 0x5b, 0xe1, 0x3c, 0x22, 0xaa, 0x42, 0xd2, 0xb5, 0x6e, 0x61, 0x93, 0x0b, 0xe8, 0x78, - 0x4f, 0xab, 0x71, 0x52, 0xf4, 0xb5, 0x20, 0xb5, 0x70, 0x1b, 0xef, 0xb1, 0xfb, 0x92, 0xfb, 0x9a, - 0x8d, 0xd9, 0x6d, 0xfd, 0xfb, 0x7a, 0x5e, 0xad, 0xe8, 0xb1, 0x6a, 0x50, 0x4e, 0x68, 0x2b, 0xfc, - 0x70, 0x68, 0x8a, 0x6f, 0x1e, 0x8f, 0xe8, 0x63, 0x40, 0xf3, 0x82, 0x96, 0x27, 0xf4, 0xd0, 0xe8, - 0xa3, 0x20, 0xf5, 0xcc, 0x1d, 0xcb, 0xa4, 0x7f, 0x7f, 0x90, 0x47, 0x51, 0x69, 0xb6, 0x53, 0xe9, - 0xc1, 0xf9, 0x4e, 0xe5, 0x16, 0x14, 0x7c, 0x54, 0x3a, 0x43, 0x32, 0xc7, 0x9d, 0x21, 0x79, 0x8f, - 0x01, 0x41, 0x41, 0xeb, 0x00, 0xfe, 0x1c, 0xa4, 0x5b, 0x65, 0xd9, 0xd1, 0x23, 0xe6, 0xcf, 0xe6, - 0x60, 0x67, 0x02, 0x0c, 0xd0, 0xd7, 0xc0, 0x4c, 0xc7, 0x30, 0x55, 0x07, 0xb7, 0x77, 0x55, 0x2e, - 0x39, 0xc2, 0x37, 0x7b, 0xfc, 0xd1, 0x9c, 0xee, 0x18, 0x66, 0x03, 0xb7, 0x77, 0x57, 0x3c, 0x2e, - 0xe8, 0xbd, 0x70, 0xc6, 0xef, 0xbd, 0x65, 0xaa, 0xfb, 0x56, 0xbb, 0xa5, 0xda, 0x78, 0x57, 0xd5, - 0xe9, 0x3b, 0x7f, 0x39, 0x2a, 0xb3, 0x53, 0x1e, 0xca, 0xa6, 0x79, 0xdd, 0x6a, 0xb7, 0x14, 0xbc, - 0x5b, 0x25, 0xc5, 0xe8, 0x21, 0xf0, 0xbb, 0xae, 0x1a, 0x2d, 0x67, 0x2e, 0xbf, 0x18, 0x3b, 0x1f, - 0x57, 0x72, 0x1e, 0xb0, 0xde, 0x72, 0x96, 0xd3, 0x1f, 0xf9, 0xe4, 0xc2, 0xd4, 0xe7, 0x3f, 0xb9, - 0x30, 0x25, 0x5f, 0xa3, 0x6f, 0x4a, 0xf1, 0x79, 0x84, 0x1d, 0x74, 0x05, 0x32, 0x9a, 0xf8, 0x60, - 0x37, 0xc6, 0x8e, 0x98, 0x87, 0x3e, 0xaa, 0xfc, 0x63, 0x11, 0x48, 0xae, 0xdc, 0xdc, 0xd2, 0x0c, - 0x1b, 0xd5, 0x60, 0xda, 0x57, 0xcc, 0x49, 0xa7, 0xb4, 0xaf, 0xcb, 0x62, 0x4e, 0x6f, 0x8c, 0x3a, - 0xaa, 0x96, 0xa9, 0x9c, 0xfd, 0xf5, 0xcf, 0x3c, 0xf1, 0x20, 0x67, 0x73, 0xb3, 0xef, 0xd4, 0x9a, - 0xe0, 0xd7, 0x7f, 0x9a, 0x2d, 0xd0, 0xe7, 0x1b, 0x90, 0x62, 0x4d, 0x75, 0xd0, 0x8b, 0x90, 0xe8, - 0x92, 0x1f, 0x3c, 0x03, 0x3f, 0x3f, 0x52, 0xc1, 0x29, 0x7e, 0x50, 0x1d, 0x18, 0x9d, 0xfc, 0x2d, - 0x51, 0x80, 0x95, 0x9b, 0x37, 0x9b, 0xb6, 0xd1, 0x6d, 0x63, 0xf7, 0x9d, 0xea, 0xfb, 0x36, 0x9c, - 0x08, 0xdc, 0x85, 0xb6, 0xf5, 0xe3, 0xf7, 0x7f, 0xc6, 0xbf, 0x16, 0x6d, 0xeb, 0x43, 0xd9, 0xb6, - 0x1c, 0xd7, 0x63, 0x1b, 0x3b, 0x3e, 0xdb, 0x15, 0xc7, 0x1d, 0x94, 0xec, 0x2b, 0x90, 0xf5, 0x85, - 0xe1, 0xa0, 0x3a, 0xa4, 0x5d, 0xfe, 0x9b, 0x0b, 0x58, 0x1e, 0x2d, 0x60, 0x41, 0x16, 0x14, 0xb2, - 0x47, 0x2e, 0xff, 0x69, 0x04, 0x20, 0x30, 0x47, 0xbe, 0x3a, 0x75, 0x8c, 0x84, 0xeb, 0xdc, 0x12, - 0xc7, 0xee, 0xfb, 0x35, 0x4e, 0xc6, 0x20, 0x20, 0xd4, 0x6f, 0x8b, 0xc2, 0xcc, 0xb6, 0x98, 0xbd, - 0x5f, 0xfd, 0x32, 0xd8, 0x86, 0x14, 0x36, 0x5d, 0xdb, 0xf0, 0xf6, 0x90, 0x9e, 0x1c, 0x35, 0xe6, - 0x43, 0x3a, 0x55, 0x33, 0x5d, 0xfb, 0x30, 0xa8, 0x01, 0x82, 0x57, 0x40, 0x1e, 0x1f, 0x8f, 0xc1, - 0xdc, 0x28, 0x52, 0x74, 0x0e, 0x8a, 0xba, 0x8d, 0x29, 0x20, 0x7c, 0x45, 0xb4, 0x20, 0xc0, 0x7c, - 0x8d, 0x51, 0x80, 0x78, 0x65, 0x44, 0xb9, 0x08, 0xea, 0xfd, 0xb9, 0x61, 0x05, 0x9f, 0x03, 0x5d, - 0x65, 0x9a, 0x50, 0x14, 0x77, 0x4e, 0x76, 0xb4, 0xb6, 0x66, 0xea, 0xc2, 0x5d, 0x3d, 0xd6, 0x92, - 0x20, 0xee, 0xad, 0x54, 0x18, 0x0b, 0x54, 0x83, 0x94, 0xe0, 0x16, 0x3f, 0x3e, 0x37, 0x41, 0x8b, - 0xce, 0x42, 0x2e, 0xb8, 0x30, 0x50, 0xd7, 0x23, 0xae, 0x64, 0x03, 0xeb, 0xc2, 0xb8, 0x95, 0x27, - 0x79, 0xe4, 0xca, 0xc3, 0xbd, 0xbb, 0x1f, 0xa0, 0x47, 0xc3, 0x5b, 0x7f, 0xfe, 0x87, 0x65, 0x0b, - 0x80, 0x4d, 0x55, 0x62, 0x49, 0xf9, 0xc8, 0xdc, 0xc7, 0x7c, 0xcf, 0x30, 0x26, 0x2b, 0x8e, 0xfb, - 0x95, 0x1a, 0xa1, 0xdf, 0x8c, 0x42, 0x2e, 0x38, 0x42, 0x7f, 0x21, 0x17, 0x2d, 0xb4, 0xe1, 0x9b, - 0x29, 0x76, 0x7d, 0xe6, 0xd1, 0x51, 0x66, 0x6a, 0x40, 0x9b, 0xc7, 0xd8, 0xa7, 0x4f, 0xc4, 0x20, - 0xc9, 0xcf, 0xb7, 0x6d, 0x0e, 0x38, 0xb2, 0x91, 0x71, 0x0f, 0x00, 0xe4, 0xc5, 0x03, 0x00, 0x43, - 0xfd, 0xd8, 0x87, 0xa1, 0x40, 0x02, 0xe2, 0xd0, 0xa1, 0xb9, 0xc8, 0xf9, 0x3c, 0x8d, 0x6b, 0xfd, - 0x23, 0xe2, 0x68, 0x01, 0xb2, 0x04, 0xcd, 0xb7, 0xc3, 0x04, 0x07, 0x3a, 0xda, 0x41, 0x8d, 0x41, - 0xd0, 0x13, 0x80, 0xf6, 0xbd, 0x04, 0x85, 0xea, 0x0b, 0x82, 0xe0, 0x4d, 0xfb, 0x25, 0x02, 0xfd, - 0x41, 0x00, 0xd2, 0x0a, 0x95, 0x3d, 0x40, 0xcd, 0x9f, 0xf7, 0x26, 0x90, 0x15, 0xfa, 0x08, 0xf5, - 0x37, 0x46, 0x98, 0x3f, 0xdc, 0x17, 0x36, 0xf3, 0x70, 0xa4, 0x39, 0xc1, 0xa4, 0xf8, 0xa3, 0x37, - 0x17, 0x4a, 0x87, 0x5a, 0xa7, 0xbd, 0x2c, 0x0f, 0xe1, 0x23, 0x0f, 0x8b, 0xe4, 0x89, 0xe3, 0x1c, - 0x0e, 0xbb, 0x97, 0xdf, 0x43, 0xd4, 0xfb, 0xee, 0xef, 0xfe, 0xc4, 0x85, 0x33, 0x81, 0x37, 0x9f, - 0x0f, 0xbc, 0xf4, 0x15, 0x1b, 0x13, 0xe2, 0xa9, 0x22, 0x7f, 0xd5, 0xf0, 0x4e, 0xc6, 0xaf, 0x03, - 0x04, 0x3c, 0xf9, 0xc8, 0xd1, 0x11, 0x82, 0x4f, 0x1f, 0x8a, 0x10, 0x02, 0x73, 0xea, 0x7d, 0xbe, - 0xd1, 0x16, 0x6f, 0x3e, 0x0c, 0x79, 0x91, 0x7c, 0xa9, 0x6a, 0x19, 0x21, 0x16, 0x82, 0x88, 0x4e, - 0xd5, 0x29, 0xf9, 0x5f, 0x47, 0xe0, 0xf4, 0x80, 0xfa, 0x79, 0x4d, 0xd6, 0x01, 0xd9, 0x81, 0x42, - 0x3a, 0x8c, 0x62, 0x2b, 0xf6, 0xfe, 0xb4, 0x79, 0xda, 0x1e, 0xb0, 0xdc, 0xef, 0xcc, 0xea, 0xc3, - 0x4d, 0xcf, 0xaf, 0x46, 0x60, 0x36, 0xd8, 0x00, 0xaf, 0x2b, 0x0d, 0xc8, 0x05, 0xab, 0xe6, 0x9d, - 0x78, 0xcf, 0x24, 0x9d, 0x08, 0xb6, 0x3f, 0xc4, 0x04, 0xdd, 0xf4, 0xa7, 0x38, 0xcb, 0x9b, 0x3d, - 0x35, 0xb1, 0x50, 0x44, 0xc3, 0x86, 0x4e, 0x75, 0x36, 0x36, 0xbf, 0x17, 0x81, 0xf8, 0x96, 0x65, - 0xb5, 0xd1, 0x07, 0x61, 0xda, 0xb4, 0x5c, 0x95, 0x4c, 0x07, 0xdc, 0x52, 0x79, 0x60, 0xcf, 0xcc, - 0x67, 0xed, 0x48, 0x59, 0x7d, 0xe1, 0xcd, 0x85, 0x41, 0xca, 0x61, 0x6f, 0xc2, 0x17, 0x4d, 0xcb, - 0xad, 0x50, 0xa4, 0x26, 0x8b, 0xfd, 0x77, 0x21, 0x1f, 0xae, 0x8e, 0x99, 0xd8, 0xf2, 0xb8, 0xea, - 0xf2, 0x63, 0xab, 0xca, 0xed, 0x04, 0xea, 0x61, 0xcf, 0x28, 0xff, 0x01, 0x19, 0xb9, 0x57, 0x41, - 0xba, 0xd9, 0x7f, 0xc4, 0xa7, 0x06, 0x29, 0x71, 0xa4, 0x27, 0x32, 0xe1, 0x69, 0xa1, 0xa0, 0x38, - 0x39, 0xed, 0x85, 0x9f, 0x89, 0x00, 0xf8, 0x49, 0x12, 0xf4, 0x38, 0x9c, 0xaa, 0x6c, 0x6e, 0xac, - 0xa8, 0x8d, 0x66, 0xb9, 0xb9, 0xdd, 0x08, 0xff, 0x25, 0x11, 0xf1, 0xfe, 0x90, 0xd3, 0xc5, 0xba, - 0xb1, 0x6b, 0xe0, 0x16, 0x7a, 0x04, 0x66, 0xc3, 0xd8, 0xe4, 0xab, 0xb6, 0x22, 0x45, 0x4a, 0xb9, - 0xbb, 0xf7, 0x16, 0xd3, 0xcc, 0x4f, 0xc4, 0x2d, 0x74, 0x1e, 0x4e, 0x0c, 0xe2, 0xd5, 0x37, 0x56, - 0xa5, 0x68, 0x29, 0x7f, 0xf7, 0xde, 0x62, 0xc6, 0x73, 0x28, 0x91, 0x0c, 0x28, 0x88, 0xc9, 0xf9, - 0xc5, 0x4a, 0x70, 0xf7, 0xde, 0x62, 0x92, 0x8d, 0x42, 0x29, 0xfe, 0x91, 0x1f, 0x9a, 0x9f, 0xba, - 0xf0, 0x75, 0x00, 0x75, 0x73, 0xd7, 0xd6, 0xe8, 0x9f, 0xd3, 0x47, 0x25, 0x38, 0x59, 0xdf, 0xb8, - 0xa6, 0x94, 0xab, 0xcd, 0xfa, 0xe6, 0x46, 0xdf, 0x1f, 0x40, 0x09, 0x97, 0xad, 0x6c, 0x6e, 0x57, - 0xd6, 0x6a, 0x6a, 0xa3, 0xbe, 0xba, 0xc1, 0x36, 0x5b, 0x43, 0x65, 0xef, 0xdf, 0x68, 0xd6, 0xd7, - 0x6b, 0x52, 0xb4, 0x72, 0x6d, 0x64, 0x32, 0xff, 0xf1, 0x23, 0x5f, 0xb9, 0xf7, 0x2d, 0x5e, 0x28, - 0xa3, 0xff, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x39, 0x56, 0x48, 0x57, 0x54, 0xa1, 0x00, 0x00, + // 11540 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6b, 0x90, 0x1c, 0xc7, + 0x79, 0xd8, 0xcd, 0xee, 0xde, 0x3e, 0xbe, 0x7d, 0xcd, 0xf5, 0x1d, 0x80, 0xc3, 0x82, 0xc4, 0x1d, + 0x86, 0x22, 0x01, 0x82, 0xe4, 0x81, 0x04, 0x09, 0x90, 0x3c, 0x48, 0x62, 0x76, 0xf7, 0x16, 0xc0, + 0x82, 0xf7, 0xe2, 0xec, 0x1e, 0x44, 0xd2, 0x96, 0x46, 0x73, 0xb3, 0x7d, 0x77, 0x43, 0xec, 0xce, + 0xac, 0x66, 0x66, 0x81, 0x3b, 0x56, 0x2a, 0x25, 0x47, 0xb6, 0x23, 0xc3, 0x8f, 0xc8, 0xb1, 0x63, + 0xcb, 0x96, 0x20, 0x4b, 0x76, 0x6c, 0xcb, 0xce, 0xcb, 0x96, 0x15, 0x3f, 0xe2, 0x8a, 0x63, 0xe7, + 0x69, 0xbb, 0x92, 0x94, 0xe2, 0x1f, 0x89, 0x93, 0x2a, 0x33, 0x36, 0xe5, 0x8a, 0x14, 0x59, 0x4e, + 0xfc, 0x90, 0xf3, 0x28, 0x55, 0x52, 0xa9, 0x7e, 0xcd, 0x63, 0x1f, 0xb7, 0x7b, 0x10, 0x29, 0x3b, + 0x76, 0xfe, 0x00, 0xdb, 0x5f, 0x7f, 0xdf, 0xd7, 0xdd, 0x5f, 0x7f, 0xfd, 0xf5, 0xf7, 0x7d, 0xdd, + 0xd3, 0x07, 0xbf, 0x53, 0x81, 0xc5, 0x5d, 0xdb, 0xde, 0x6d, 0xe3, 0x0b, 0x5d, 0xc7, 0xf6, 0xec, + 0xed, 0xde, 0xce, 0x85, 0x16, 0x76, 0x0d, 0xc7, 0xec, 0x7a, 0xb6, 0xb3, 0x44, 0x61, 0xa8, 0xc8, + 0x30, 0x96, 0x04, 0x86, 0xb2, 0x06, 0x33, 0x57, 0xcd, 0x36, 0x5e, 0xf1, 0x11, 0x1b, 0xd8, 0x43, + 0xcf, 0x41, 0x62, 0xc7, 0x6c, 0xe3, 0x79, 0x69, 0x31, 0x7e, 0x2e, 0x7b, 0xf1, 0x1d, 0x4b, 0x7d, + 0x44, 0x4b, 0x51, 0x8a, 0x4d, 0x02, 0x56, 0x29, 0x85, 0xf2, 0x7f, 0x12, 0x30, 0x3b, 0xa4, 0x16, + 0x21, 0x48, 0x58, 0x7a, 0x87, 0x70, 0x94, 0xce, 0x65, 0x54, 0xfa, 0x1b, 0xcd, 0x43, 0xaa, 0xab, + 0x1b, 0xb7, 0xf4, 0x5d, 0x3c, 0x1f, 0xa3, 0x60, 0x51, 0x44, 0xa7, 0x01, 0x5a, 0xb8, 0x8b, 0xad, + 0x16, 0xb6, 0x8c, 0x83, 0xf9, 0xf8, 0x62, 0xfc, 0x5c, 0x46, 0x0d, 0x41, 0xd0, 0x63, 0x30, 0xd3, + 0xed, 0x6d, 0xb7, 0x4d, 0x43, 0x0b, 0xa1, 0xc1, 0x62, 0xfc, 0xdc, 0xb4, 0x2a, 0xb3, 0x8a, 0x95, + 0x00, 0xf9, 0x2c, 0x14, 0xef, 0x60, 0xfd, 0x56, 0x18, 0x35, 0x4b, 0x51, 0x0b, 0x04, 0x1c, 0x42, + 0xac, 0x42, 0xae, 0x83, 0x5d, 0x57, 0xdf, 0xc5, 0x9a, 0x77, 0xd0, 0xc5, 0xf3, 0x09, 0x3a, 0xfa, + 0xc5, 0x81, 0xd1, 0xf7, 0x8f, 0x3c, 0xcb, 0xa9, 0x9a, 0x07, 0x5d, 0x8c, 0xca, 0x90, 0xc1, 0x56, + 0xaf, 0xc3, 0x38, 0x4c, 0x8f, 0x90, 0x5f, 0xcd, 0xea, 0x75, 0xfa, 0xb9, 0xa4, 0x09, 0x19, 0x67, + 0x91, 0x72, 0xb1, 0x73, 0xdb, 0x34, 0xf0, 0x7c, 0x92, 0x32, 0x38, 0x3b, 0xc0, 0xa0, 0xc1, 0xea, + 0xfb, 0x79, 0x08, 0x3a, 0x54, 0x85, 0x0c, 0xde, 0xf7, 0xb0, 0xe5, 0x9a, 0xb6, 0x35, 0x9f, 0xa2, + 0x4c, 0x1e, 0x1e, 0x32, 0x8b, 0xb8, 0xdd, 0xea, 0x67, 0x11, 0xd0, 0xa1, 0xcb, 0x90, 0xb2, 0xbb, + 0x9e, 0x69, 0x5b, 0xee, 0x7c, 0x7a, 0x51, 0x3a, 0x97, 0xbd, 0xf8, 0xc0, 0x50, 0x45, 0xd8, 0x60, + 0x38, 0xaa, 0x40, 0x46, 0x75, 0x90, 0x5d, 0xbb, 0xe7, 0x18, 0x58, 0x33, 0xec, 0x16, 0xd6, 0x4c, + 0x6b, 0xc7, 0x9e, 0xcf, 0x50, 0x06, 0x0b, 0x83, 0x03, 0xa1, 0x88, 0x55, 0xbb, 0x85, 0xeb, 0xd6, + 0x8e, 0xad, 0x16, 0xdc, 0x48, 0x19, 0x1d, 0x87, 0xa4, 0x7b, 0x60, 0x79, 0xfa, 0xfe, 0x7c, 0x8e, + 0x6a, 0x08, 0x2f, 0x11, 0xd5, 0xc1, 0x2d, 0x93, 0x34, 0x37, 0x9f, 0x67, 0xaa, 0xc3, 0x8b, 0xca, + 0x2f, 0x24, 0xa1, 0x38, 0x89, 0xf2, 0x5d, 0x81, 0xe9, 0x1d, 0x32, 0xfe, 0xf9, 0xd8, 0x51, 0xa4, + 0xc3, 0x68, 0xa2, 0xe2, 0x4d, 0xde, 0xa7, 0x78, 0xcb, 0x90, 0xb5, 0xb0, 0xeb, 0xe1, 0x16, 0xd3, + 0x95, 0xf8, 0x84, 0xda, 0x06, 0x8c, 0x68, 0x50, 0xd9, 0x12, 0xf7, 0xa5, 0x6c, 0x2f, 0x43, 0xd1, + 0xef, 0x92, 0xe6, 0xe8, 0xd6, 0xae, 0xd0, 0xda, 0x0b, 0xe3, 0x7a, 0xb2, 0x54, 0x13, 0x74, 0x2a, + 0x21, 0x53, 0x0b, 0x38, 0x52, 0x46, 0x2b, 0x00, 0xb6, 0x85, 0xed, 0x1d, 0xad, 0x85, 0x8d, 0xf6, + 0x7c, 0x7a, 0x84, 0x94, 0x36, 0x08, 0xca, 0x80, 0x94, 0x6c, 0x06, 0x35, 0xda, 0xe8, 0xf9, 0x40, + 0x09, 0x53, 0x23, 0x74, 0x68, 0x8d, 0x2d, 0xbf, 0x01, 0x3d, 0xdc, 0x82, 0x82, 0x83, 0xc9, 0x8a, + 0xc0, 0x2d, 0x3e, 0xb2, 0x0c, 0xed, 0xc4, 0xd2, 0xd8, 0x91, 0xa9, 0x9c, 0x8c, 0x0d, 0x2c, 0xef, + 0x84, 0x8b, 0xe8, 0x21, 0xf0, 0x01, 0x1a, 0x55, 0x2b, 0xa0, 0xf6, 0x29, 0x27, 0x80, 0xeb, 0x7a, + 0x07, 0x97, 0x5e, 0x87, 0x42, 0x54, 0x3c, 0x68, 0x0e, 0xa6, 0x5d, 0x4f, 0x77, 0x3c, 0xaa, 0x85, + 0xd3, 0x2a, 0x2b, 0x20, 0x19, 0xe2, 0xd8, 0x6a, 0x51, 0xfb, 0x37, 0xad, 0x92, 0x9f, 0xe8, 0x2f, + 0x05, 0x03, 0x8e, 0xd3, 0x01, 0x3f, 0x32, 0x38, 0xa3, 0x11, 0xce, 0xfd, 0xe3, 0x2e, 0x3d, 0x0b, + 0xf9, 0xc8, 0x00, 0x26, 0x6d, 0x5a, 0xf9, 0xcb, 0x70, 0x6c, 0x28, 0x6b, 0xf4, 0x32, 0xcc, 0xf5, + 0x2c, 0xd3, 0xf2, 0xb0, 0xd3, 0x75, 0x30, 0xd1, 0x58, 0xd6, 0xd4, 0xfc, 0x17, 0x52, 0x23, 0x74, + 0x6e, 0x2b, 0x8c, 0xcd, 0xb8, 0xa8, 0xb3, 0xbd, 0x41, 0xe0, 0xf9, 0x4c, 0xfa, 0x8b, 0x29, 0xf9, + 0x83, 0x1f, 0xfc, 0xe0, 0x07, 0x63, 0xca, 0xaf, 0x24, 0x61, 0x6e, 0xd8, 0x9a, 0x19, 0xba, 0x7c, + 0x8f, 0x43, 0xd2, 0xea, 0x75, 0xb6, 0xb1, 0x43, 0x85, 0x34, 0xad, 0xf2, 0x12, 0x2a, 0xc3, 0x74, + 0x5b, 0xdf, 0xc6, 0xed, 0xf9, 0xc4, 0xa2, 0x74, 0xae, 0x70, 0xf1, 0xb1, 0x89, 0x56, 0xe5, 0xd2, + 0x2a, 0x21, 0x51, 0x19, 0x25, 0x7a, 0x37, 0x24, 0xb8, 0xf1, 0x26, 0x1c, 0xce, 0x4f, 0xc6, 0x81, + 0xac, 0x25, 0x95, 0xd2, 0xa1, 0x53, 0x90, 0x21, 0xff, 0x33, 0xdd, 0x48, 0xd2, 0x3e, 0xa7, 0x09, + 0x80, 0xe8, 0x05, 0x2a, 0x41, 0x9a, 0x2e, 0x93, 0x16, 0x16, 0x9b, 0x9e, 0x5f, 0x26, 0x8a, 0xd5, + 0xc2, 0x3b, 0x7a, 0xaf, 0xed, 0x69, 0xb7, 0xf5, 0x76, 0x0f, 0x53, 0x85, 0xcf, 0xa8, 0x39, 0x0e, + 0xbc, 0x49, 0x60, 0x68, 0x01, 0xb2, 0x6c, 0x55, 0x99, 0x56, 0x0b, 0xef, 0x53, 0xbb, 0x3a, 0xad, + 0xb2, 0x85, 0x56, 0x27, 0x10, 0xd2, 0xfc, 0x6b, 0xae, 0x6d, 0x09, 0xd5, 0xa4, 0x4d, 0x10, 0x00, + 0x6d, 0xfe, 0xd9, 0x7e, 0x93, 0xfe, 0xe0, 0xf0, 0xe1, 0x0d, 0xac, 0xa5, 0xb3, 0x50, 0xa4, 0x18, + 0x4f, 0xf3, 0xa9, 0xd7, 0xdb, 0xf3, 0x33, 0x8b, 0xd2, 0xb9, 0xb4, 0x5a, 0x60, 0xe0, 0x0d, 0x0e, + 0x55, 0x7e, 0x36, 0x06, 0x09, 0x6a, 0x58, 0x8a, 0x90, 0x6d, 0xbe, 0xb2, 0x59, 0xd3, 0x56, 0x36, + 0xb6, 0x2a, 0xab, 0x35, 0x59, 0x42, 0x05, 0x00, 0x0a, 0xb8, 0xba, 0xba, 0x51, 0x6e, 0xca, 0x31, + 0xbf, 0x5c, 0x5f, 0x6f, 0x5e, 0x7e, 0x46, 0x8e, 0xfb, 0x04, 0x5b, 0x0c, 0x90, 0x08, 0x23, 0x3c, + 0x7d, 0x51, 0x9e, 0x46, 0x32, 0xe4, 0x18, 0x83, 0xfa, 0xcb, 0xb5, 0x95, 0xcb, 0xcf, 0xc8, 0xc9, + 0x28, 0xe4, 0xe9, 0x8b, 0x72, 0x0a, 0xe5, 0x21, 0x43, 0x21, 0x95, 0x8d, 0x8d, 0x55, 0x39, 0xed, + 0xf3, 0x6c, 0x34, 0xd5, 0xfa, 0xfa, 0x35, 0x39, 0xe3, 0xf3, 0xbc, 0xa6, 0x6e, 0x6c, 0x6d, 0xca, + 0xe0, 0x73, 0x58, 0xab, 0x35, 0x1a, 0xe5, 0x6b, 0x35, 0x39, 0xeb, 0x63, 0x54, 0x5e, 0x69, 0xd6, + 0x1a, 0x72, 0x2e, 0xd2, 0xad, 0xa7, 0x2f, 0xca, 0x79, 0xbf, 0x89, 0xda, 0xfa, 0xd6, 0x9a, 0x5c, + 0x40, 0x33, 0x90, 0x67, 0x4d, 0x88, 0x4e, 0x14, 0xfb, 0x40, 0x97, 0x9f, 0x91, 0xe5, 0xa0, 0x23, + 0x8c, 0xcb, 0x4c, 0x04, 0x70, 0xf9, 0x19, 0x19, 0x29, 0x55, 0x98, 0xa6, 0x6a, 0x88, 0x10, 0x14, + 0x56, 0xcb, 0x95, 0xda, 0xaa, 0xb6, 0xb1, 0xd9, 0xac, 0x6f, 0xac, 0x97, 0x57, 0x65, 0x29, 0x80, + 0xa9, 0xb5, 0x97, 0xb6, 0xea, 0x6a, 0x6d, 0x45, 0x8e, 0x85, 0x61, 0x9b, 0xb5, 0x72, 0xb3, 0xb6, + 0x22, 0xc7, 0x15, 0x03, 0xe6, 0x86, 0x19, 0xd4, 0xa1, 0x4b, 0x28, 0xa4, 0x0b, 0xb1, 0x11, 0xba, + 0x40, 0x79, 0xf5, 0xeb, 0x82, 0xf2, 0xf9, 0x18, 0xcc, 0x0e, 0xd9, 0x54, 0x86, 0x36, 0xf2, 0x02, + 0x4c, 0x33, 0x5d, 0x66, 0xdb, 0xec, 0xa3, 0x43, 0x77, 0x27, 0xaa, 0xd9, 0x03, 0x5b, 0x2d, 0xa5, + 0x0b, 0x3b, 0x21, 0xf1, 0x11, 0x4e, 0x08, 0x61, 0x31, 0xa0, 0xb0, 0xef, 0x1d, 0x30, 0xfe, 0x6c, + 0x7f, 0xbc, 0x3c, 0xc9, 0xfe, 0x48, 0x61, 0x47, 0xdb, 0x04, 0xa6, 0x87, 0x6c, 0x02, 0x57, 0x60, + 0x66, 0x80, 0xd1, 0xc4, 0xc6, 0xf8, 0x43, 0x12, 0xcc, 0x8f, 0x12, 0xce, 0x18, 0x93, 0x18, 0x8b, + 0x98, 0xc4, 0x2b, 0xfd, 0x12, 0x3c, 0x33, 0x7a, 0x12, 0x06, 0xe6, 0xfa, 0xc7, 0x25, 0x38, 0x3e, + 0xdc, 0xd9, 0x1c, 0xda, 0x87, 0x77, 0x43, 0xb2, 0x83, 0xbd, 0x3d, 0x5b, 0xb8, 0x55, 0x8f, 0x0c, + 0xd9, 0xac, 0x49, 0x75, 0xff, 0x64, 0x73, 0xaa, 0xf0, 0x6e, 0x1f, 0x1f, 0xe5, 0x31, 0xb2, 0xde, + 0x0c, 0xf4, 0xf4, 0xdb, 0x62, 0x70, 0x6c, 0x28, 0xf3, 0xa1, 0x1d, 0x7d, 0x10, 0xc0, 0xb4, 0xba, + 0x3d, 0x8f, 0xb9, 0x4e, 0xcc, 0x12, 0x67, 0x28, 0x84, 0x1a, 0x2f, 0x62, 0x65, 0x7b, 0x9e, 0x5f, + 0x1f, 0xa7, 0xf5, 0xc0, 0x40, 0x14, 0xe1, 0xb9, 0xa0, 0xa3, 0x09, 0xda, 0xd1, 0xd3, 0x23, 0x46, + 0x3a, 0xa0, 0x98, 0x4f, 0x82, 0x6c, 0xb4, 0x4d, 0x6c, 0x79, 0x9a, 0xeb, 0x39, 0x58, 0xef, 0x98, + 0xd6, 0x2e, 0xdd, 0x6a, 0xd2, 0xcb, 0xd3, 0x3b, 0x7a, 0xdb, 0xc5, 0x6a, 0x91, 0x55, 0x37, 0x44, + 0x2d, 0xa1, 0xa0, 0x0a, 0xe4, 0x84, 0x28, 0x92, 0x11, 0x0a, 0x56, 0xed, 0x53, 0x28, 0xdf, 0x9d, + 0x81, 0x6c, 0xc8, 0x35, 0x47, 0x67, 0x20, 0xf7, 0x9a, 0x7e, 0x5b, 0xd7, 0x44, 0xb8, 0xc5, 0x24, + 0x91, 0x25, 0xb0, 0x4d, 0x1e, 0x72, 0x3d, 0x09, 0x73, 0x14, 0xc5, 0xee, 0x79, 0xd8, 0xd1, 0x8c, + 0xb6, 0xee, 0xba, 0x54, 0x68, 0x69, 0x8a, 0x8a, 0x48, 0xdd, 0x06, 0xa9, 0xaa, 0x8a, 0x1a, 0x74, + 0x09, 0x66, 0x29, 0x45, 0xa7, 0xd7, 0xf6, 0xcc, 0x6e, 0x1b, 0x6b, 0x24, 0x00, 0x74, 0xe9, 0x96, + 0xe3, 0xf7, 0x6c, 0x86, 0x60, 0xac, 0x71, 0x04, 0xd2, 0x23, 0x17, 0xad, 0xc0, 0x83, 0x94, 0x6c, + 0x17, 0x5b, 0xd8, 0xd1, 0x3d, 0xac, 0xe1, 0x0f, 0xf4, 0xf4, 0xb6, 0xab, 0xe9, 0x56, 0x4b, 0xdb, + 0xd3, 0xdd, 0xbd, 0xf9, 0x39, 0xc2, 0xa0, 0x12, 0x9b, 0x97, 0xd4, 0x93, 0x04, 0xf1, 0x1a, 0xc7, + 0xab, 0x51, 0xb4, 0xb2, 0xd5, 0xba, 0xae, 0xbb, 0x7b, 0x68, 0x19, 0x8e, 0x53, 0x2e, 0xae, 0xe7, + 0x98, 0xd6, 0xae, 0x66, 0xec, 0x61, 0xe3, 0x96, 0xd6, 0xf3, 0x76, 0x9e, 0x9b, 0x3f, 0x15, 0x6e, + 0x9f, 0xf6, 0xb0, 0x41, 0x71, 0xaa, 0x04, 0x65, 0xcb, 0xdb, 0x79, 0x0e, 0x35, 0x20, 0x47, 0x26, + 0xa3, 0x63, 0xbe, 0x8e, 0xb5, 0x1d, 0xdb, 0xa1, 0x7b, 0x68, 0x61, 0x88, 0x69, 0x0a, 0x49, 0x70, + 0x69, 0x83, 0x13, 0xac, 0xd9, 0x2d, 0xbc, 0x3c, 0xdd, 0xd8, 0xac, 0xd5, 0x56, 0xd4, 0xac, 0xe0, + 0x72, 0xd5, 0x76, 0x88, 0x42, 0xed, 0xda, 0xbe, 0x80, 0xb3, 0x4c, 0xa1, 0x76, 0x6d, 0x21, 0xde, + 0x4b, 0x30, 0x6b, 0x18, 0x6c, 0xcc, 0xa6, 0xa1, 0xf1, 0x30, 0xcd, 0x9d, 0x97, 0x23, 0xc2, 0x32, + 0x8c, 0x6b, 0x0c, 0x81, 0xeb, 0xb8, 0x8b, 0x9e, 0x87, 0x63, 0x81, 0xb0, 0xc2, 0x84, 0x33, 0x03, + 0xa3, 0xec, 0x27, 0xbd, 0x04, 0xb3, 0xdd, 0x83, 0x41, 0x42, 0x14, 0x69, 0xb1, 0x7b, 0xd0, 0x4f, + 0xf6, 0x2c, 0xcc, 0x75, 0xf7, 0xba, 0x83, 0x74, 0xe7, 0xc3, 0x74, 0xa8, 0xbb, 0xd7, 0xed, 0x27, + 0x7c, 0x98, 0xc6, 0xec, 0x0e, 0x36, 0x74, 0x0f, 0xb7, 0xe6, 0x4f, 0x84, 0xd1, 0x43, 0x15, 0x68, + 0x09, 0x64, 0xc3, 0xd0, 0xb0, 0xa5, 0x6f, 0xb7, 0xb1, 0xa6, 0x3b, 0xd8, 0xd2, 0xdd, 0xf9, 0x05, + 0x8a, 0x9c, 0xf0, 0x9c, 0x1e, 0x56, 0x0b, 0x86, 0x51, 0xa3, 0x95, 0x65, 0x5a, 0x87, 0xce, 0xc3, + 0x8c, 0xbd, 0xfd, 0x9a, 0xc1, 0x34, 0x52, 0xeb, 0x3a, 0x78, 0xc7, 0xdc, 0x9f, 0x7f, 0x07, 0x15, + 0x6f, 0x91, 0x54, 0x50, 0x7d, 0xdc, 0xa4, 0x60, 0xf4, 0x28, 0xc8, 0x86, 0xbb, 0xa7, 0x3b, 0x5d, + 0x6a, 0x92, 0xdd, 0xae, 0x6e, 0xe0, 0xf9, 0x87, 0x19, 0x2a, 0x83, 0xaf, 0x0b, 0x30, 0x59, 0x11, + 0xee, 0x1d, 0x73, 0xc7, 0x13, 0x1c, 0xcf, 0xb2, 0x15, 0x41, 0x61, 0x9c, 0xdb, 0x39, 0x90, 0x89, + 0x24, 0x22, 0x0d, 0x9f, 0xa3, 0x68, 0x85, 0xee, 0x5e, 0x37, 0xdc, 0xee, 0x43, 0x90, 0x27, 0x98, + 0x41, 0xa3, 0x8f, 0x32, 0xc7, 0xad, 0xbb, 0x17, 0x6a, 0xf1, 0x19, 0x38, 0x4e, 0x90, 0x3a, 0xd8, + 0xd3, 0x5b, 0xba, 0xa7, 0x87, 0xb0, 0x1f, 0xa7, 0xd8, 0x44, 0xec, 0x6b, 0xbc, 0x32, 0xd2, 0x4f, + 0xa7, 0xb7, 0x7d, 0xe0, 0x2b, 0xd6, 0x13, 0xac, 0x9f, 0x04, 0x26, 0x54, 0xeb, 0x6d, 0x73, 0xce, + 0x95, 0x65, 0xc8, 0x85, 0xf5, 0x1e, 0x65, 0x80, 0x69, 0xbe, 0x2c, 0x11, 0x27, 0xa8, 0xba, 0xb1, + 0x42, 0xdc, 0x97, 0x57, 0x6b, 0x72, 0x8c, 0xb8, 0x51, 0xab, 0xf5, 0x66, 0x4d, 0x53, 0xb7, 0xd6, + 0x9b, 0xf5, 0xb5, 0x9a, 0x1c, 0x0f, 0x39, 0xf6, 0x37, 0x12, 0xe9, 0x47, 0xe4, 0xb3, 0xca, 0x2f, + 0xc6, 0xa1, 0x10, 0x8d, 0xd4, 0xd0, 0x3b, 0xe1, 0x84, 0x48, 0xb8, 0xb8, 0xd8, 0xd3, 0xee, 0x98, + 0x0e, 0x5d, 0x90, 0x1d, 0x9d, 0x6d, 0x8e, 0xbe, 0xfe, 0xcc, 0x71, 0xac, 0x06, 0xf6, 0xde, 0x63, + 0x3a, 0x64, 0xb9, 0x75, 0x74, 0x0f, 0xad, 0xc2, 0x82, 0x65, 0x6b, 0xae, 0xa7, 0x5b, 0x2d, 0xdd, + 0x69, 0x69, 0x41, 0xaa, 0x4b, 0xd3, 0x0d, 0x03, 0xbb, 0xae, 0xcd, 0x36, 0x42, 0x9f, 0xcb, 0x03, + 0x96, 0xdd, 0xe0, 0xc8, 0xc1, 0x0e, 0x51, 0xe6, 0xa8, 0x7d, 0xea, 0x1b, 0x1f, 0xa5, 0xbe, 0xa7, + 0x20, 0xd3, 0xd1, 0xbb, 0x1a, 0xb6, 0x3c, 0xe7, 0x80, 0xfa, 0xe7, 0x69, 0x35, 0xdd, 0xd1, 0xbb, + 0x35, 0x52, 0x46, 0x37, 0xe1, 0x91, 0x00, 0x55, 0x6b, 0xe3, 0x5d, 0xdd, 0x38, 0xd0, 0xa8, 0x33, + 0x4e, 0xd3, 0x06, 0x9a, 0x61, 0x5b, 0x3b, 0x6d, 0xd3, 0xf0, 0x5c, 0x6a, 0x1f, 0x98, 0x8d, 0x53, + 0x02, 0x8a, 0x55, 0x4a, 0x70, 0xc3, 0xb5, 0x2d, 0xea, 0x83, 0x57, 0x05, 0xf6, 0xd7, 0x25, 0xfc, + 0xba, 0x91, 0x48, 0x27, 0xe4, 0xe9, 0x1b, 0x89, 0xf4, 0xb4, 0x9c, 0xbc, 0x91, 0x48, 0x27, 0xe5, + 0xd4, 0x8d, 0x44, 0x3a, 0x2d, 0x67, 0x6e, 0x24, 0xd2, 0x19, 0x19, 0x94, 0x9f, 0x4b, 0x43, 0x2e, + 0x1c, 0x19, 0x90, 0x40, 0xcb, 0xa0, 0x7b, 0xa3, 0x44, 0xad, 0xe7, 0x43, 0x87, 0xc6, 0x11, 0x4b, + 0x55, 0xb2, 0x69, 0x2e, 0x27, 0x99, 0x1b, 0xae, 0x32, 0x4a, 0xe2, 0xb0, 0x10, 0xb5, 0xc6, 0xcc, + 0xed, 0x49, 0xab, 0xbc, 0x84, 0xae, 0x41, 0xf2, 0x35, 0x97, 0xf2, 0x4e, 0x52, 0xde, 0xef, 0x38, + 0x9c, 0xf7, 0x8d, 0x06, 0x65, 0x9e, 0xb9, 0xd1, 0xd0, 0xd6, 0x37, 0xd4, 0xb5, 0xf2, 0xaa, 0xca, + 0xc9, 0xd1, 0x49, 0x48, 0xb4, 0xf5, 0xd7, 0x0f, 0xa2, 0xdb, 0x2b, 0x05, 0xa1, 0x25, 0x28, 0xf6, + 0xac, 0xdb, 0xd8, 0x31, 0x77, 0x4c, 0x32, 0x55, 0x04, 0xab, 0x18, 0xc6, 0x2a, 0x04, 0xb5, 0xab, + 0x04, 0x7f, 0x42, 0xf5, 0x38, 0x09, 0x89, 0x3b, 0x58, 0xbf, 0x15, 0xdd, 0x04, 0x29, 0x08, 0x9d, + 0x83, 0x5c, 0x0b, 0x6f, 0xf7, 0x76, 0x35, 0x07, 0xb7, 0x74, 0xc3, 0x8b, 0x9a, 0xfe, 0x2c, 0xad, + 0x52, 0x69, 0x0d, 0x7a, 0x11, 0x32, 0x64, 0x8e, 0x2c, 0x3a, 0xc7, 0x33, 0x54, 0x04, 0x4f, 0x1c, + 0x2e, 0x02, 0x3e, 0xc5, 0x82, 0x48, 0x0d, 0xe8, 0xd1, 0x55, 0x48, 0x7a, 0xba, 0xb3, 0x8b, 0x3d, + 0x6a, 0xf9, 0x0b, 0x43, 0x92, 0x1f, 0x43, 0x38, 0x35, 0x29, 0x05, 0x8d, 0x69, 0x39, 0xf5, 0xdb, + 0x68, 0x65, 0x2e, 0xc0, 0x34, 0x55, 0x0f, 0x04, 0xc0, 0x15, 0x44, 0x9e, 0x42, 0x69, 0x48, 0x54, + 0x37, 0x54, 0x62, 0x69, 0x64, 0xc8, 0x31, 0xa8, 0xb6, 0x59, 0xaf, 0x55, 0x6b, 0x72, 0x4c, 0xb9, + 0x04, 0x49, 0x36, 0xe7, 0xc4, 0x0a, 0xf9, 0xb3, 0x2e, 0x4f, 0xf1, 0x22, 0xe7, 0x21, 0x89, 0xda, + 0xad, 0xb5, 0x4a, 0x4d, 0x95, 0x63, 0xca, 0x16, 0x14, 0xfb, 0xe4, 0x84, 0x8e, 0xc1, 0x8c, 0x5a, + 0x6b, 0xd6, 0xd6, 0x49, 0x9c, 0xa5, 0x6d, 0xad, 0xbf, 0xb8, 0xbe, 0xf1, 0x9e, 0x75, 0x79, 0x2a, + 0x0a, 0x16, 0x26, 0x4d, 0x42, 0x73, 0x20, 0x07, 0xe0, 0xc6, 0xc6, 0x96, 0x4a, 0x7b, 0xf3, 0x1d, + 0x31, 0x90, 0xfb, 0xa5, 0x86, 0x4e, 0xc0, 0x6c, 0xb3, 0xac, 0x5e, 0xab, 0x35, 0x35, 0x16, 0x3b, + 0xfa, 0xac, 0xe7, 0x40, 0x0e, 0x57, 0x5c, 0xad, 0xd3, 0xd0, 0x78, 0x01, 0x4e, 0x85, 0xa1, 0xb5, + 0x97, 0x9b, 0xb5, 0xf5, 0x06, 0x6d, 0xbc, 0xbc, 0x7e, 0x8d, 0xd8, 0xd7, 0x3e, 0x7e, 0x22, 0x5a, + 0x8d, 0x93, 0xae, 0x46, 0xf9, 0xd5, 0x56, 0x57, 0xe4, 0x44, 0x3f, 0x78, 0x63, 0xbd, 0xb6, 0x71, + 0x55, 0x9e, 0xee, 0x6f, 0x9d, 0x46, 0xb0, 0x49, 0x54, 0x82, 0xe3, 0xfd, 0x50, 0xad, 0xb6, 0xde, + 0x54, 0x5f, 0x91, 0x53, 0xfd, 0x0d, 0x37, 0x6a, 0xea, 0xcd, 0x7a, 0xb5, 0x26, 0xa7, 0xd1, 0x71, + 0x40, 0xd1, 0x1e, 0x35, 0xaf, 0x6f, 0xac, 0xc8, 0x99, 0x01, 0x8b, 0xa2, 0xb8, 0x90, 0x0b, 0x87, + 0x91, 0x5f, 0x9f, 0x5c, 0xd2, 0x47, 0x63, 0x90, 0x0d, 0x85, 0x85, 0xc4, 0x9f, 0xd7, 0xdb, 0x6d, + 0xfb, 0x8e, 0xa6, 0xb7, 0x4d, 0xdd, 0xe5, 0xf6, 0x06, 0x28, 0xa8, 0x4c, 0x20, 0x93, 0xae, 0xef, + 0xc9, 0x2d, 0x7c, 0xf2, 0xcf, 0xa2, 0x85, 0x9f, 0x96, 0x93, 0xca, 0x27, 0x24, 0x90, 0xfb, 0xe3, + 0xbd, 0xbe, 0xe1, 0x4b, 0xa3, 0x86, 0xff, 0x75, 0x99, 0xbb, 0x8f, 0x4b, 0x50, 0x88, 0x06, 0x79, + 0x7d, 0xdd, 0x3b, 0xf3, 0xa7, 0xda, 0xbd, 0xdf, 0x8e, 0x41, 0x3e, 0x12, 0xda, 0x4d, 0xda, 0xbb, + 0x0f, 0xc0, 0x8c, 0xd9, 0xc2, 0x9d, 0xae, 0xed, 0x61, 0xcb, 0x38, 0xd0, 0xda, 0xf8, 0x36, 0x6e, + 0xcf, 0x2b, 0xd4, 0x28, 0x5f, 0x38, 0x3c, 0x78, 0x5c, 0xaa, 0x07, 0x74, 0xab, 0x84, 0x6c, 0x79, + 0xb6, 0xbe, 0x52, 0x5b, 0xdb, 0xdc, 0x68, 0xd6, 0xd6, 0xab, 0xaf, 0x08, 0xeb, 0xa2, 0xca, 0x66, + 0x1f, 0xda, 0xdb, 0x68, 0xb4, 0x37, 0x41, 0xee, 0xef, 0x14, 0xb1, 0x15, 0x43, 0xba, 0x25, 0x4f, + 0xa1, 0x59, 0x28, 0xae, 0x6f, 0x68, 0x8d, 0xfa, 0x4a, 0x4d, 0xab, 0x5d, 0xbd, 0x5a, 0xab, 0x36, + 0x1b, 0x2c, 0x1d, 0xe8, 0x63, 0x37, 0xe5, 0x58, 0x58, 0xc4, 0x3f, 0x18, 0x87, 0xd9, 0x21, 0x3d, + 0x41, 0x65, 0x1e, 0xc8, 0xb3, 0xdc, 0xc2, 0x13, 0x93, 0xf4, 0x7e, 0x89, 0xb8, 0xd2, 0x9b, 0xba, + 0xe3, 0xf1, 0xb8, 0xff, 0x51, 0x20, 0x52, 0xb2, 0x3c, 0xb2, 0xb3, 0x3b, 0x3c, 0xcd, 0xca, 0xa2, + 0xfb, 0x62, 0x00, 0x67, 0x99, 0xd6, 0xc7, 0x01, 0x75, 0x6d, 0xd7, 0xf4, 0xcc, 0xdb, 0x58, 0x33, + 0x2d, 0x91, 0x93, 0x25, 0xd1, 0x7e, 0x42, 0x95, 0x45, 0x4d, 0xdd, 0xf2, 0x7c, 0x6c, 0x0b, 0xef, + 0xea, 0x7d, 0xd8, 0xc4, 0xf3, 0x88, 0xab, 0xb2, 0xa8, 0xf1, 0xb1, 0xcf, 0x40, 0xae, 0x65, 0xf7, + 0x48, 0x08, 0xc4, 0xf0, 0x88, 0xb5, 0x90, 0xd4, 0x2c, 0x83, 0xf9, 0x28, 0x3c, 0xb8, 0x0d, 0x92, + 0xc1, 0x39, 0x35, 0xcb, 0x60, 0x0c, 0xe5, 0x2c, 0x14, 0xf5, 0xdd, 0x5d, 0x87, 0x30, 0x17, 0x8c, + 0x58, 0xb8, 0x5e, 0xf0, 0xc1, 0x14, 0xb1, 0x74, 0x03, 0xd2, 0x42, 0x0e, 0xc4, 0x83, 0x25, 0x92, + 0xd0, 0xba, 0x2c, 0x07, 0x15, 0x3b, 0x97, 0x51, 0xd3, 0x96, 0xa8, 0x3c, 0x03, 0x39, 0xd3, 0xd5, + 0x82, 0xb3, 0xad, 0xd8, 0x62, 0xec, 0x5c, 0x5a, 0xcd, 0x9a, 0xae, 0x7f, 0x2e, 0xa0, 0xfc, 0x78, + 0x0c, 0x0a, 0xd1, 0x53, 0x3b, 0xb4, 0x02, 0xe9, 0xb6, 0x6d, 0xe8, 0x54, 0xb5, 0xd8, 0x91, 0xf1, + 0xb9, 0x31, 0x07, 0x7d, 0x4b, 0xab, 0x1c, 0x5f, 0xf5, 0x29, 0x4b, 0xff, 0x46, 0x82, 0xb4, 0x00, + 0xa3, 0xe3, 0x90, 0xe8, 0xea, 0xde, 0x1e, 0x65, 0x37, 0x5d, 0x89, 0xc9, 0x92, 0x4a, 0xcb, 0x04, + 0xee, 0x76, 0x75, 0x8b, 0xaa, 0x00, 0x87, 0x93, 0x32, 0x99, 0xd7, 0x36, 0xd6, 0x5b, 0x34, 0x17, + 0x60, 0x77, 0x3a, 0xd8, 0xf2, 0x5c, 0x31, 0xaf, 0x1c, 0x5e, 0xe5, 0x60, 0xf4, 0x18, 0xcc, 0x78, + 0x8e, 0x6e, 0xb6, 0x23, 0xb8, 0x09, 0x8a, 0x2b, 0x8b, 0x0a, 0x1f, 0x79, 0x19, 0x4e, 0x0a, 0xbe, + 0x2d, 0xec, 0xe9, 0xc6, 0x1e, 0x6e, 0x05, 0x44, 0x49, 0x9a, 0xf3, 0x3b, 0xc1, 0x11, 0x56, 0x78, + 0xbd, 0xa0, 0x55, 0x3e, 0x17, 0x83, 0x19, 0x91, 0xbd, 0x68, 0xf9, 0xc2, 0x5a, 0x03, 0xd0, 0x2d, + 0xcb, 0xf6, 0xc2, 0xe2, 0x1a, 0x54, 0xe5, 0x01, 0xba, 0xa5, 0xb2, 0x4f, 0xa4, 0x86, 0x18, 0x94, + 0x7e, 0x4f, 0x02, 0x08, 0xaa, 0x46, 0xca, 0x6d, 0x01, 0xb2, 0xfc, 0x4c, 0x96, 0x1e, 0xec, 0xb3, + 0x84, 0x17, 0x30, 0xd0, 0x55, 0xb3, 0x4d, 0xd3, 0x92, 0xdb, 0x78, 0xd7, 0xb4, 0xf8, 0x79, 0x0a, + 0x2b, 0x88, 0xb4, 0x64, 0x22, 0x38, 0x9e, 0x52, 0x21, 0xed, 0xe2, 0x8e, 0x6e, 0x79, 0xa6, 0xc1, + 0x4f, 0x48, 0x2e, 0x1f, 0xa9, 0xf3, 0x4b, 0x0d, 0x4e, 0xad, 0xfa, 0x7c, 0x94, 0x73, 0x90, 0x16, + 0x50, 0xe2, 0xf8, 0xad, 0x6f, 0xac, 0xd7, 0xe4, 0x29, 0x94, 0x82, 0x78, 0xa3, 0xd6, 0x94, 0x25, + 0x12, 0x76, 0x96, 0x57, 0xeb, 0xe5, 0x86, 0x1c, 0xab, 0xfc, 0x15, 0x98, 0x35, 0xec, 0x4e, 0x7f, + 0x83, 0x15, 0xb9, 0x2f, 0xe5, 0xe7, 0x5e, 0x97, 0x5e, 0x7d, 0x82, 0x23, 0xed, 0xda, 0x6d, 0xdd, + 0xda, 0x5d, 0xb2, 0x9d, 0xdd, 0xe0, 0x5a, 0x04, 0x89, 0x0e, 0xdc, 0xd0, 0xe5, 0x88, 0xee, 0xf6, + 0xff, 0x94, 0xa4, 0x1f, 0x8e, 0xc5, 0xaf, 0x6d, 0x56, 0x7e, 0x32, 0x56, 0xba, 0xc6, 0x08, 0x37, + 0xc5, 0x70, 0x54, 0xbc, 0xd3, 0xc6, 0x06, 0xe9, 0x3c, 0xfc, 0xfe, 0x63, 0x30, 0xb7, 0x6b, 0xef, + 0xda, 0x94, 0xd3, 0x05, 0xf2, 0x8b, 0xdf, 0xab, 0xc8, 0xf8, 0xd0, 0xd2, 0xd8, 0x4b, 0x18, 0xcb, + 0xeb, 0x30, 0xcb, 0x91, 0x35, 0x7a, 0x7c, 0xcb, 0x92, 0x0b, 0xe8, 0xd0, 0xcc, 0xf6, 0xfc, 0x4f, + 0xff, 0x2e, 0xf5, 0x4a, 0xd4, 0x19, 0x4e, 0x4a, 0xea, 0x58, 0xfe, 0x61, 0x59, 0x85, 0x63, 0x11, + 0x7e, 0xcc, 0x46, 0x60, 0x67, 0x0c, 0xc7, 0x7f, 0xce, 0x39, 0xce, 0x86, 0x38, 0x36, 0x38, 0xe9, + 0x72, 0x15, 0xf2, 0x47, 0xe1, 0xf5, 0x2f, 0x38, 0xaf, 0x1c, 0x0e, 0x33, 0xb9, 0x06, 0x45, 0xca, + 0xc4, 0xe8, 0xb9, 0x9e, 0xdd, 0xa1, 0x06, 0xf8, 0x70, 0x36, 0xff, 0xf2, 0x77, 0xd9, 0xa2, 0x2d, + 0x10, 0xb2, 0xaa, 0x4f, 0xb5, 0xbc, 0x0c, 0xf4, 0xc4, 0xba, 0x85, 0x8d, 0xf6, 0x18, 0x0e, 0xbf, + 0xca, 0x3b, 0xe2, 0xe3, 0x2f, 0xdf, 0x84, 0x39, 0xf2, 0x9b, 0xda, 0xc7, 0x70, 0x4f, 0xc6, 0xa7, + 0xc1, 0xe7, 0xff, 0xed, 0x87, 0x98, 0x5d, 0x98, 0xf5, 0x19, 0x84, 0xfa, 0x14, 0x9a, 0xc5, 0x5d, + 0xec, 0x79, 0xd8, 0x71, 0x35, 0xbd, 0x3d, 0xac, 0x7b, 0xa1, 0x3c, 0xe2, 0xfc, 0x0f, 0x7c, 0x39, + 0x3a, 0x8b, 0xd7, 0x18, 0x65, 0xb9, 0xdd, 0x5e, 0xde, 0x82, 0x13, 0x43, 0xb4, 0x62, 0x02, 0x9e, + 0x3f, 0xc8, 0x79, 0xce, 0x0d, 0x68, 0x06, 0x61, 0xbb, 0x09, 0x02, 0xee, 0xcf, 0xe5, 0x04, 0x3c, + 0x3f, 0xc6, 0x79, 0x22, 0x4e, 0x2b, 0xa6, 0x94, 0x70, 0xbc, 0x01, 0x33, 0xb7, 0xb1, 0xb3, 0x6d, + 0xbb, 0x3c, 0x77, 0x3b, 0x01, 0xbb, 0x8f, 0x73, 0x76, 0x45, 0x4e, 0x48, 0x93, 0xb9, 0x84, 0xd7, + 0xf3, 0x90, 0xde, 0xd1, 0x0d, 0x3c, 0x01, 0x8b, 0x7b, 0x9c, 0x45, 0x8a, 0xe0, 0x13, 0xd2, 0x32, + 0xe4, 0x76, 0x6d, 0xbe, 0x45, 0x8e, 0x27, 0xff, 0x04, 0x27, 0xcf, 0x0a, 0x1a, 0xce, 0xa2, 0x6b, + 0x77, 0x7b, 0x6d, 0xb2, 0x7f, 0x8e, 0x67, 0xf1, 0x43, 0x82, 0x85, 0xa0, 0xe1, 0x2c, 0x8e, 0x20, + 0xd6, 0x4f, 0x0a, 0x16, 0x6e, 0x48, 0x9e, 0x2f, 0x40, 0xd6, 0xb6, 0xda, 0x07, 0xb6, 0x35, 0x49, + 0x27, 0x3e, 0xc5, 0x39, 0x00, 0x27, 0x21, 0x0c, 0xae, 0x40, 0x66, 0xd2, 0x89, 0xf8, 0xd1, 0x2f, + 0x8b, 0xe5, 0x21, 0x66, 0xe0, 0x1a, 0x14, 0x85, 0x81, 0x32, 0x6d, 0x6b, 0x02, 0x16, 0x3f, 0xc6, + 0x59, 0x14, 0x42, 0x64, 0x7c, 0x18, 0x1e, 0x76, 0xbd, 0x5d, 0x3c, 0x09, 0x93, 0x1f, 0x17, 0xc3, + 0xe0, 0x24, 0x5c, 0x94, 0xdb, 0xd8, 0x32, 0xf6, 0x26, 0xe3, 0xf0, 0x69, 0x21, 0x4a, 0x41, 0x43, + 0x58, 0x54, 0x21, 0xdf, 0xd1, 0x1d, 0x77, 0x4f, 0x6f, 0x4f, 0x34, 0x1d, 0x3f, 0xc1, 0x79, 0xe4, + 0x7c, 0x22, 0x2e, 0x91, 0x9e, 0x75, 0x14, 0x36, 0x3f, 0x29, 0x24, 0x12, 0x22, 0xe3, 0x4b, 0xcf, + 0xf5, 0x68, 0xa2, 0xfb, 0x28, 0xdc, 0xfe, 0xb6, 0x58, 0x7a, 0x8c, 0x76, 0x2d, 0xcc, 0xf1, 0x0a, + 0x64, 0x5c, 0xf3, 0xf5, 0x89, 0xd8, 0xfc, 0x1d, 0x31, 0xd3, 0x94, 0x80, 0x10, 0xbf, 0x02, 0x27, + 0x87, 0x6e, 0x13, 0x13, 0x30, 0xfb, 0xbb, 0x9c, 0xd9, 0xf1, 0x21, 0x5b, 0x05, 0x37, 0x09, 0x47, + 0x65, 0xf9, 0xf7, 0x84, 0x49, 0xc0, 0x7d, 0xbc, 0x36, 0x49, 0xd0, 0xe2, 0xea, 0x3b, 0x47, 0x93, + 0xda, 0xdf, 0x17, 0x52, 0x63, 0xb4, 0x11, 0xa9, 0x35, 0xe1, 0x38, 0xe7, 0x78, 0xb4, 0x79, 0xfd, + 0x29, 0x61, 0x58, 0x19, 0xf5, 0x56, 0x74, 0x76, 0xbf, 0x01, 0x4a, 0xbe, 0x38, 0x85, 0x77, 0xec, + 0x6a, 0x1d, 0xbd, 0x3b, 0x01, 0xe7, 0x9f, 0xe6, 0x9c, 0x85, 0xc5, 0xf7, 0xdd, 0x6b, 0x77, 0x4d, + 0xef, 0x12, 0xe6, 0x2f, 0xc3, 0xbc, 0x60, 0xde, 0xb3, 0x1c, 0x6c, 0xd8, 0xbb, 0x96, 0xf9, 0x3a, + 0x6e, 0x4d, 0xc0, 0xfa, 0x33, 0x7d, 0x53, 0xb5, 0x15, 0x22, 0x27, 0x9c, 0xeb, 0x20, 0xfb, 0xbe, + 0x8a, 0x66, 0x76, 0xba, 0xb6, 0xe3, 0x8d, 0xe1, 0xf8, 0x33, 0x62, 0xa6, 0x7c, 0xba, 0x3a, 0x25, + 0x5b, 0xae, 0x01, 0xbb, 0xfd, 0x31, 0xa9, 0x4a, 0x7e, 0x96, 0x33, 0xca, 0x07, 0x54, 0xdc, 0x70, + 0x18, 0x76, 0xa7, 0xab, 0x3b, 0x93, 0xd8, 0xbf, 0x7f, 0x20, 0x0c, 0x07, 0x27, 0xe1, 0x86, 0x83, + 0x78, 0x74, 0x64, 0xb7, 0x9f, 0x80, 0xc3, 0xcf, 0x0a, 0xc3, 0x21, 0x68, 0x38, 0x0b, 0xe1, 0x30, + 0x4c, 0xc0, 0xe2, 0xe7, 0x04, 0x0b, 0x41, 0x43, 0x58, 0xbc, 0x14, 0x6c, 0xb4, 0x0e, 0xde, 0x35, + 0x5d, 0xcf, 0x61, 0x2e, 0xf9, 0xe1, 0xac, 0x7e, 0xfe, 0xcb, 0x51, 0x27, 0x4c, 0x0d, 0x91, 0x12, + 0x4b, 0xc4, 0x8f, 0x3e, 0x68, 0xc8, 0x36, 0xbe, 0x63, 0xbf, 0x20, 0x2c, 0x51, 0x88, 0x8c, 0xf4, + 0x2d, 0xe4, 0x21, 0x12, 0xb1, 0x1b, 0x24, 0x50, 0x99, 0x80, 0xdd, 0x3f, 0xec, 0xeb, 0x5c, 0x43, + 0xd0, 0x12, 0x9e, 0x21, 0xff, 0xa7, 0x67, 0xdd, 0xc2, 0x07, 0x13, 0x69, 0xe7, 0x2f, 0xf6, 0xf9, + 0x3f, 0x5b, 0x8c, 0x92, 0xd9, 0x90, 0x62, 0x9f, 0x3f, 0x85, 0xc6, 0xdd, 0xf5, 0x9b, 0xff, 0xa6, + 0xaf, 0xf0, 0xf1, 0x46, 0xdd, 0xa9, 0xe5, 0x55, 0xa2, 0xe4, 0x51, 0xa7, 0x67, 0x3c, 0xb3, 0x0f, + 0x7d, 0xc5, 0xd7, 0xf3, 0x88, 0xcf, 0xb3, 0x7c, 0x15, 0xf2, 0x11, 0x87, 0x67, 0x3c, 0xab, 0x6f, + 0xe6, 0xac, 0x72, 0x61, 0x7f, 0x67, 0xf9, 0x12, 0x24, 0x88, 0xf3, 0x32, 0x9e, 0xfc, 0x5b, 0x38, + 0x39, 0x45, 0x5f, 0x7e, 0x17, 0xa4, 0x85, 0xd3, 0x32, 0x9e, 0xf4, 0x5b, 0x39, 0xa9, 0x4f, 0x42, + 0xc8, 0x85, 0xc3, 0x32, 0x9e, 0xfc, 0xaf, 0x09, 0x72, 0x41, 0x42, 0xc8, 0x27, 0x17, 0xe1, 0x2f, + 0x7f, 0x7b, 0x82, 0x6f, 0x3a, 0x42, 0x76, 0x57, 0x20, 0xc5, 0x3d, 0x95, 0xf1, 0xd4, 0xdf, 0xc6, + 0x1b, 0x17, 0x14, 0xcb, 0xcf, 0xc2, 0xf4, 0x84, 0x02, 0xff, 0x4e, 0x4e, 0xca, 0xf0, 0x97, 0xab, + 0x90, 0x0d, 0x79, 0x27, 0xe3, 0xc9, 0xbf, 0x8b, 0x93, 0x87, 0xa9, 0x48, 0xd7, 0xb9, 0x77, 0x32, + 0x9e, 0xc1, 0x5f, 0x17, 0x5d, 0xe7, 0x14, 0x44, 0x6c, 0xc2, 0x31, 0x19, 0x4f, 0xfd, 0x11, 0x21, + 0x75, 0x41, 0xb2, 0xfc, 0x02, 0x64, 0xfc, 0xcd, 0x66, 0x3c, 0xfd, 0x77, 0x73, 0xfa, 0x80, 0x86, + 0x48, 0x20, 0xb4, 0xd9, 0x8d, 0x67, 0xf1, 0x37, 0x84, 0x04, 0x42, 0x54, 0x64, 0x19, 0xf5, 0x3b, + 0x30, 0xe3, 0x39, 0x7d, 0x8f, 0x58, 0x46, 0x7d, 0xfe, 0x0b, 0x99, 0x4d, 0x6a, 0xf3, 0xc7, 0xb3, + 0xf8, 0x5e, 0x31, 0x9b, 0x14, 0x9f, 0x74, 0xa3, 0xdf, 0x23, 0x18, 0xcf, 0xe3, 0xfb, 0x45, 0x37, + 0xfa, 0x1c, 0x82, 0xe5, 0x4d, 0x40, 0x83, 0xde, 0xc0, 0x78, 0x7e, 0x1f, 0xe5, 0xfc, 0x66, 0x06, + 0x9c, 0x81, 0xe5, 0xf7, 0xc0, 0xf1, 0xe1, 0x9e, 0xc0, 0x78, 0xae, 0x3f, 0xf0, 0x95, 0xbe, 0xd8, + 0x2d, 0xec, 0x08, 0x2c, 0x37, 0x83, 0x2d, 0x25, 0xec, 0x05, 0x8c, 0x67, 0xfb, 0x83, 0x5f, 0x89, + 0x1a, 0xee, 0xb0, 0x13, 0xb0, 0x5c, 0x06, 0x08, 0x36, 0xe0, 0xf1, 0xbc, 0x3e, 0xce, 0x79, 0x85, + 0x88, 0xc8, 0xd2, 0xe0, 0xfb, 0xef, 0x78, 0xfa, 0x7b, 0x62, 0x69, 0x70, 0x0a, 0xb2, 0x34, 0xc4, + 0xd6, 0x3b, 0x9e, 0xfa, 0x13, 0x62, 0x69, 0x08, 0x12, 0xa2, 0xd9, 0xa1, 0xdd, 0x6d, 0x3c, 0x87, + 0x4f, 0x09, 0xcd, 0x0e, 0x51, 0x2d, 0xaf, 0xc3, 0xcc, 0xc0, 0x86, 0x38, 0x9e, 0xd5, 0x0f, 0x73, + 0x56, 0x72, 0xff, 0x7e, 0x18, 0xde, 0xbc, 0xf8, 0x66, 0x38, 0x9e, 0xdb, 0x8f, 0xf4, 0x6d, 0x5e, + 0x7c, 0x2f, 0x5c, 0xbe, 0x02, 0x69, 0xab, 0xd7, 0x6e, 0x93, 0xc5, 0x83, 0x0e, 0xbf, 0x9f, 0x3b, + 0xff, 0x5f, 0xbe, 0xca, 0xa5, 0x23, 0x08, 0x96, 0x2f, 0xc1, 0x34, 0xee, 0x6c, 0xe3, 0xd6, 0x38, + 0xca, 0x2f, 0x7d, 0x55, 0x18, 0x4c, 0x82, 0xbd, 0xfc, 0x02, 0x00, 0x4b, 0x8d, 0xd0, 0x83, 0xf3, + 0x31, 0xb4, 0xbf, 0xf7, 0x55, 0x7e, 0x21, 0x2e, 0x20, 0x09, 0x18, 0xb0, 0xeb, 0x75, 0x87, 0x33, + 0xf8, 0x72, 0x94, 0x01, 0x9d, 0x91, 0xe7, 0x21, 0xf5, 0x9a, 0x6b, 0x5b, 0x9e, 0xbe, 0x3b, 0x8e, + 0xfa, 0xf7, 0x39, 0xb5, 0xc0, 0x27, 0x02, 0xeb, 0xd8, 0x0e, 0xf6, 0xf4, 0x5d, 0x77, 0x1c, 0xed, + 0x7f, 0xe5, 0xb4, 0x3e, 0x01, 0x21, 0x36, 0x74, 0xd7, 0x9b, 0x64, 0xdc, 0xff, 0x4d, 0x10, 0x0b, + 0x02, 0xd2, 0x69, 0xf2, 0xfb, 0x16, 0x3e, 0x18, 0x47, 0xfb, 0x07, 0xa2, 0xd3, 0x1c, 0x7f, 0xf9, + 0x5d, 0x90, 0x21, 0x3f, 0xd9, 0x2d, 0xd7, 0x31, 0xc4, 0x7f, 0xc8, 0x89, 0x03, 0x0a, 0xd2, 0xb2, + 0xeb, 0xb5, 0x3c, 0x73, 0xbc, 0xb0, 0xff, 0x88, 0xcf, 0xb4, 0xc0, 0x5f, 0x2e, 0x43, 0xd6, 0xf5, + 0x5a, 0xad, 0x1e, 0xf7, 0x4f, 0xc7, 0x90, 0xff, 0xf1, 0x57, 0xfd, 0x94, 0x85, 0x4f, 0x43, 0x66, + 0xfb, 0xce, 0x2d, 0xaf, 0x6b, 0xd3, 0xf3, 0x96, 0x71, 0x1c, 0xbe, 0xc2, 0x39, 0x84, 0x48, 0x96, + 0xab, 0x90, 0x23, 0x63, 0x71, 0x70, 0x17, 0xd3, 0xc3, 0xb1, 0x31, 0x2c, 0xfe, 0x84, 0x0b, 0x20, + 0x42, 0x54, 0x79, 0xff, 0xaf, 0xbe, 0x79, 0x5a, 0xfa, 0xdc, 0x9b, 0xa7, 0xa5, 0xdf, 0x7e, 0xf3, + 0xb4, 0xf4, 0x91, 0xcf, 0x9f, 0x9e, 0xfa, 0xdc, 0xe7, 0x4f, 0x4f, 0xfd, 0xe6, 0xe7, 0x4f, 0x4f, + 0x0d, 0xcf, 0x12, 0xc3, 0x35, 0xfb, 0x9a, 0xcd, 0xf2, 0xc3, 0xaf, 0x3e, 0xbc, 0x6b, 0x7a, 0x7b, + 0xbd, 0xed, 0x25, 0xc3, 0xee, 0x5c, 0x30, 0x6c, 0xb7, 0x63, 0xbb, 0x17, 0xa2, 0x79, 0x5d, 0xfa, + 0x0b, 0xfe, 0xb7, 0x44, 0x62, 0xe6, 0x68, 0x3a, 0x57, 0xb7, 0x0e, 0x46, 0x7d, 0x4c, 0x77, 0x19, + 0xe2, 0x65, 0xeb, 0x00, 0x9d, 0x64, 0x06, 0x4e, 0xeb, 0x39, 0x6d, 0x7e, 0xd5, 0x32, 0x45, 0xca, + 0x5b, 0x4e, 0x1b, 0xcd, 0x05, 0xf7, 0xa1, 0xa5, 0x73, 0x39, 0x7e, 0xc9, 0xb9, 0xf2, 0x5d, 0xd2, + 0xd1, 0x46, 0x92, 0x2e, 0x5b, 0x07, 0x74, 0x20, 0x9b, 0xd2, 0xab, 0x8f, 0x8f, 0xcd, 0x73, 0xdf, + 0xb2, 0xec, 0x3b, 0x16, 0xe9, 0x76, 0x77, 0x5b, 0xe4, 0xb8, 0x4f, 0xf7, 0xe7, 0xb8, 0xdf, 0x83, + 0xdb, 0xed, 0x17, 0x09, 0x5e, 0x93, 0x90, 0x6c, 0x27, 0xd9, 0xad, 0x7e, 0xf8, 0x9e, 0x18, 0x9c, + 0x1e, 0x48, 0x67, 0x73, 0x25, 0x18, 0x25, 0x84, 0x65, 0x48, 0xaf, 0x08, 0xdd, 0x9a, 0x87, 0x94, + 0x8b, 0x0d, 0xdb, 0x6a, 0xb9, 0x54, 0x10, 0x71, 0x55, 0x14, 0x89, 0x20, 0x2c, 0xdd, 0xb2, 0x5d, + 0x7e, 0x59, 0x99, 0x15, 0x2a, 0x1f, 0x3b, 0xa2, 0x20, 0xf2, 0xa2, 0x25, 0x21, 0x8d, 0xa7, 0x26, + 0x94, 0x86, 0x18, 0x44, 0x24, 0xf3, 0x3f, 0xa9, 0x54, 0xbe, 0x3f, 0x06, 0x0b, 0xfd, 0x52, 0x21, + 0x2b, 0xcb, 0xf5, 0xf4, 0x4e, 0x77, 0x94, 0x58, 0xae, 0x40, 0xa6, 0x29, 0x70, 0x8e, 0x2c, 0x97, + 0x7b, 0x47, 0x94, 0x4b, 0xc1, 0x6f, 0x4a, 0x08, 0xe6, 0xe2, 0x84, 0x82, 0xf1, 0xc7, 0x71, 0x5f, + 0x92, 0xf9, 0x5f, 0x49, 0x38, 0xc9, 0x96, 0x93, 0xc6, 0x96, 0x12, 0x2b, 0x70, 0x99, 0xe4, 0xc2, + 0x55, 0xe3, 0xcf, 0x49, 0x94, 0x17, 0x61, 0xb6, 0x4e, 0xac, 0x05, 0x89, 0x82, 0x82, 0x13, 0x9e, + 0xa1, 0xf7, 0xb9, 0x17, 0x23, 0x0e, 0x3f, 0x3f, 0xdf, 0x0a, 0x83, 0x94, 0x6f, 0x92, 0x40, 0x6e, + 0x18, 0x7a, 0x5b, 0x77, 0xbe, 0x56, 0x56, 0xe8, 0x59, 0x00, 0x76, 0xdd, 0xc3, 0xff, 0x70, 0xaf, + 0x70, 0x71, 0x7e, 0x29, 0x3c, 0xb8, 0x25, 0xd6, 0x12, 0xbd, 0x41, 0x95, 0xa1, 0xb8, 0xe4, 0xe7, + 0xf9, 0x97, 0x01, 0x82, 0x0a, 0x74, 0x0a, 0x4e, 0x34, 0xaa, 0xe5, 0xd5, 0xb2, 0x2a, 0x2e, 0x09, + 0x35, 0x36, 0x6b, 0xd5, 0xfa, 0xd5, 0x7a, 0x6d, 0x45, 0x9e, 0x42, 0xc7, 0x01, 0x85, 0x2b, 0xfd, + 0x4b, 0x4d, 0xc7, 0x60, 0x26, 0x0c, 0x67, 0x5f, 0xa9, 0xc4, 0x88, 0xa7, 0x68, 0x76, 0xba, 0x6d, + 0x4c, 0x4f, 0x1e, 0x35, 0x53, 0x48, 0x6d, 0xbc, 0x13, 0xf2, 0x6b, 0xff, 0x8e, 0x7d, 0xb9, 0x30, + 0x1b, 0x90, 0xfb, 0x32, 0x5f, 0x5e, 0x85, 0x19, 0xdd, 0x30, 0x70, 0x37, 0xc2, 0x72, 0x8c, 0xa9, + 0x26, 0x0c, 0xe9, 0x59, 0x2a, 0xa7, 0x0c, 0xb8, 0x3d, 0x0b, 0x49, 0x97, 0x8e, 0x7e, 0x1c, 0x8b, + 0x5f, 0xe7, 0x2c, 0x38, 0xfa, 0xb2, 0x05, 0x33, 0xc4, 0xf3, 0xd3, 0x1d, 0x1c, 0xea, 0xc6, 0xe1, + 0x79, 0x86, 0x7f, 0xf4, 0x33, 0x4f, 0xd2, 0x93, 0xd5, 0x33, 0xd1, 0x69, 0x19, 0xa2, 0x4e, 0xaa, + 0xcc, 0x79, 0x07, 0x1d, 0xc5, 0x50, 0x10, 0xed, 0xf1, 0x0e, 0x1f, 0xde, 0xd8, 0x2f, 0xf1, 0xc6, + 0x4e, 0x0f, 0xd3, 0x81, 0x50, 0x4b, 0x79, 0xce, 0x95, 0x55, 0x54, 0x6a, 0xa3, 0xd6, 0xf4, 0xab, + 0x8f, 0x0d, 0xee, 0x4e, 0xec, 0xbf, 0x27, 0x28, 0xe7, 0x2b, 0xe1, 0x66, 0xfc, 0xb5, 0xf7, 0xb1, + 0x04, 0xcc, 0xe8, 0x1d, 0xd3, 0xb2, 0x2f, 0xd0, 0x7f, 0xf9, 0x9a, 0x9b, 0xa6, 0x85, 0x09, 0x0e, + 0x25, 0x2f, 0xb3, 0xa5, 0x30, 0x5e, 0x63, 0xfe, 0xf0, 0x3b, 0x7e, 0x6c, 0x3a, 0x58, 0x2e, 0xcb, + 0x6b, 0x20, 0x8b, 0x4b, 0xbc, 0xd8, 0x32, 0xec, 0xd6, 0x44, 0x59, 0x8a, 0x3f, 0x12, 0x3c, 0x44, + 0x7e, 0xab, 0xc6, 0x49, 0x97, 0xdf, 0x09, 0x69, 0x9f, 0xcd, 0x38, 0xcf, 0x44, 0x30, 0xf1, 0x29, + 0x88, 0x5f, 0xc2, 0x56, 0xe6, 0x24, 0x5e, 0xe8, 0x57, 0x04, 0x3d, 0x5b, 0xa1, 0xeb, 0x64, 0x34, + 0xd7, 0xa0, 0xd0, 0xb2, 0x2d, 0x4f, 0xb3, 0x3b, 0xa6, 0x87, 0x3b, 0x5d, 0x6f, 0xac, 0x5f, 0xf7, + 0x27, 0x8c, 0x49, 0x5a, 0xcd, 0x13, 0xba, 0x0d, 0x41, 0x46, 0x7a, 0xc2, 0xbe, 0xd3, 0x9b, 0xa4, + 0x27, 0xff, 0xdd, 0xef, 0x09, 0xa5, 0x21, 0x3d, 0xb9, 0x2f, 0xed, 0x70, 0x5b, 0xb7, 0xb8, 0x31, + 0xf7, 0xf6, 0x99, 0x16, 0xf8, 0xda, 0xf1, 0x4f, 0x13, 0x70, 0x9a, 0x23, 0x6f, 0xeb, 0x2e, 0xbe, + 0x70, 0xfb, 0xa9, 0x6d, 0xec, 0xe9, 0x4f, 0x5d, 0x30, 0x6c, 0x53, 0xec, 0xe4, 0xb3, 0xdc, 0x58, + 0x93, 0xfa, 0x25, 0x5e, 0x5f, 0x1a, 0x7a, 0xdc, 0x5d, 0x1a, 0x6d, 0xe4, 0x4b, 0x83, 0x3a, 0xa8, + 0xb4, 0x21, 0x51, 0xb5, 0x4d, 0x8b, 0xec, 0x6d, 0x2d, 0x6c, 0xd9, 0x1d, 0x6e, 0x6e, 0x59, 0x01, + 0x5d, 0x87, 0xa4, 0xde, 0xb1, 0x7b, 0x96, 0xc7, 0x4c, 0x6d, 0xe5, 0xc9, 0x5f, 0x7d, 0x63, 0x61, + 0xea, 0x3f, 0xbe, 0xb1, 0x70, 0x8c, 0xb1, 0x75, 0x5b, 0xb7, 0x96, 0x4c, 0xfb, 0x42, 0x47, 0xf7, + 0xf6, 0xc8, 0xf2, 0xfd, 0x8d, 0xcf, 0x3e, 0x01, 0xbc, 0xbd, 0xba, 0xe5, 0x7d, 0xfa, 0x0b, 0x3f, + 0x75, 0x5e, 0x52, 0x39, 0xfd, 0x72, 0xe2, 0x8b, 0x9f, 0x5c, 0x90, 0x94, 0x2e, 0xa4, 0x56, 0xb0, + 0x71, 0x48, 0x83, 0xf5, 0xbe, 0x06, 0x9f, 0xe2, 0x0d, 0x9e, 0x1a, 0x6c, 0x90, 0x5d, 0xd8, 0x5b, + 0xc1, 0x46, 0xa8, 0xd9, 0x15, 0x6c, 0xf4, 0xb5, 0x58, 0x87, 0x74, 0xdd, 0xf2, 0xd8, 0xc7, 0x46, + 0xef, 0x82, 0xb8, 0x69, 0xb1, 0xfb, 0xeb, 0x99, 0xca, 0x63, 0x47, 0x18, 0x8a, 0x4a, 0xe8, 0x94, + 0x0d, 0x48, 0xaf, 0x60, 0x83, 0xb1, 0xaa, 0x42, 0xbc, 0x85, 0x0d, 0xce, 0xea, 0x3e, 0x3a, 0x49, + 0xa8, 0x2b, 0x2b, 0xbf, 0xf9, 0x3b, 0xa7, 0xa7, 0x3e, 0xf8, 0xe6, 0xe9, 0xa9, 0x91, 0xea, 0xa4, + 0x8c, 0x57, 0x27, 0x5f, 0x8b, 0x7e, 0x2c, 0x01, 0x0f, 0xd2, 0xaf, 0x55, 0x9d, 0x8e, 0x69, 0x79, + 0x17, 0x0c, 0xe7, 0xa0, 0xeb, 0xd9, 0xc4, 0xa8, 0xd8, 0x3b, 0x5c, 0x89, 0x66, 0x82, 0xea, 0x25, + 0x56, 0x3d, 0x5c, 0x85, 0x94, 0x1d, 0x98, 0xde, 0x24, 0x74, 0x64, 0x92, 0x3c, 0xdb, 0xd3, 0xdb, + 0xdc, 0x13, 0x62, 0x05, 0x02, 0x65, 0x5f, 0xb8, 0xc6, 0x18, 0xd4, 0x14, 0x1f, 0xb7, 0xb6, 0xb1, + 0xbe, 0xc3, 0x3e, 0x14, 0x8a, 0x53, 0x17, 0x3a, 0x4d, 0x00, 0xf4, 0x9b, 0xa0, 0x39, 0x98, 0xd6, + 0x7b, 0xec, 0x32, 0x4f, 0x9c, 0xf8, 0xd6, 0xb4, 0xa0, 0xbc, 0x08, 0x29, 0x7e, 0xa6, 0x8f, 0x64, + 0x88, 0xdf, 0xc2, 0x07, 0xb4, 0x9d, 0x9c, 0x4a, 0x7e, 0xa2, 0x25, 0x98, 0xa6, 0x9d, 0xe7, 0x5f, + 0x40, 0xce, 0x2f, 0x0d, 0xf4, 0x7e, 0x89, 0x76, 0x52, 0x65, 0x68, 0xca, 0x0d, 0x48, 0xaf, 0xd8, + 0x44, 0xb3, 0xa3, 0xdc, 0x32, 0x8c, 0x1b, 0xed, 0x73, 0xb7, 0xc7, 0xf5, 0x4a, 0x65, 0x05, 0x74, + 0x1c, 0x92, 0xec, 0xc3, 0x31, 0x7e, 0x21, 0x89, 0x97, 0x94, 0x2a, 0xa4, 0x28, 0xef, 0x8d, 0x2e, + 0x71, 0x43, 0xfc, 0xbb, 0xf4, 0x19, 0xfe, 0x19, 0x31, 0x67, 0x1f, 0x0b, 0x3a, 0x8b, 0x20, 0xd1, + 0xd2, 0x3d, 0x9d, 0x8f, 0x9b, 0xfe, 0x56, 0xde, 0x0d, 0x69, 0xce, 0xc4, 0x45, 0x17, 0x21, 0x6e, + 0x77, 0x5d, 0x7e, 0xa5, 0xa8, 0x34, 0x6a, 0x28, 0x1b, 0xdd, 0x4a, 0x82, 0xe8, 0x92, 0x4a, 0x90, + 0x2b, 0xeb, 0x23, 0xd5, 0xe2, 0x99, 0x88, 0x5a, 0x74, 0xb0, 0xb7, 0xbd, 0xe3, 0x05, 0x3f, 0xd8, + 0x74, 0x0e, 0xa8, 0x82, 0xaf, 0x28, 0xf7, 0x62, 0x70, 0x3a, 0x54, 0x7b, 0x1b, 0x3b, 0xae, 0x69, + 0x5b, 0x4c, 0x9b, 0xb8, 0xa6, 0xa0, 0x50, 0x07, 0x79, 0xfd, 0x08, 0x55, 0x79, 0x17, 0xc4, 0xcb, + 0xdd, 0x2e, 0x2a, 0x41, 0x9a, 0x96, 0x0d, 0x9b, 0xe9, 0x4a, 0x42, 0xf5, 0xcb, 0xa4, 0xce, 0xb5, + 0x77, 0xbc, 0x3b, 0xba, 0xe3, 0x7f, 0x57, 0x2d, 0xca, 0xca, 0xf3, 0x90, 0xa9, 0xda, 0x96, 0x8b, + 0x2d, 0xb7, 0x47, 0xfd, 0xeb, 0xed, 0xb6, 0x6d, 0xdc, 0xe2, 0x1c, 0x58, 0x81, 0x08, 0x5b, 0xef, + 0x76, 0x29, 0x65, 0x42, 0x25, 0x3f, 0xd9, 0xca, 0xae, 0x6c, 0x8c, 0x14, 0xcf, 0xa5, 0xa3, 0x89, + 0x87, 0x0f, 0x30, 0x70, 0x94, 0x25, 0x78, 0x60, 0x70, 0x21, 0xdd, 0xc2, 0x07, 0xee, 0x51, 0xd7, + 0xd1, 0xcb, 0x90, 0xd9, 0xa4, 0x4f, 0x9e, 0xbc, 0x88, 0x0f, 0x50, 0x09, 0x52, 0xb8, 0x75, 0xf1, + 0xd2, 0xa5, 0xa7, 0x9e, 0x67, 0x5a, 0x7e, 0x7d, 0x4a, 0x15, 0x00, 0x74, 0x1a, 0x32, 0x2e, 0x36, + 0xba, 0x17, 0x2f, 0x5d, 0xbe, 0xf5, 0x14, 0x53, 0xab, 0xeb, 0x53, 0x6a, 0x00, 0x5a, 0x4e, 0x93, + 0x11, 0x7f, 0xf1, 0x53, 0x0b, 0x52, 0x65, 0x1a, 0xe2, 0x6e, 0xaf, 0xf3, 0xb6, 0xe9, 0xc6, 0x1f, + 0x24, 0x61, 0x31, 0x54, 0xcb, 0x36, 0xac, 0xdb, 0x7a, 0xdb, 0x6c, 0xe9, 0xc1, 0x43, 0x35, 0x72, + 0x68, 0xfc, 0x14, 0x63, 0xc4, 0x4e, 0x74, 0xa8, 0x14, 0x95, 0xcf, 0x48, 0x90, 0xbb, 0x29, 0x38, + 0x37, 0xb0, 0x87, 0xae, 0x00, 0xf8, 0x2d, 0x89, 0xa5, 0x72, 0x6a, 0xa9, 0xbf, 0xad, 0x25, 0x9f, + 0x46, 0x0d, 0xa1, 0xa3, 0x67, 0xa9, 0x02, 0x76, 0x6d, 0x97, 0x7f, 0x63, 0x3b, 0x86, 0xd4, 0x47, + 0x46, 0x8f, 0x03, 0xa2, 0x56, 0x4d, 0xbb, 0x6d, 0x7b, 0xa6, 0xb5, 0xab, 0x75, 0xed, 0x3b, 0xfc, + 0xe5, 0x82, 0xb8, 0x2a, 0xd3, 0x9a, 0x9b, 0xb4, 0x62, 0x93, 0xc0, 0x49, 0xa7, 0x33, 0x3e, 0x17, + 0x12, 0x2a, 0xea, 0xad, 0x96, 0x83, 0x5d, 0x97, 0x1b, 0x2e, 0x51, 0x44, 0x57, 0x20, 0xd5, 0xed, + 0x6d, 0x6b, 0xc2, 0x4a, 0x64, 0x2f, 0x3e, 0x30, 0x6c, 0xcd, 0x0b, 0xdd, 0xe0, 0xab, 0x3e, 0xd9, + 0xed, 0x6d, 0x13, 0x4d, 0x39, 0x03, 0xb9, 0x21, 0x9d, 0xc9, 0xde, 0x0e, 0xfa, 0x41, 0x5f, 0xd9, + 0xe1, 0x23, 0xd0, 0xba, 0x8e, 0x69, 0x3b, 0xa6, 0x77, 0x40, 0xaf, 0x02, 0xc6, 0x55, 0x59, 0x54, + 0x6c, 0x72, 0xb8, 0x72, 0x0b, 0x8a, 0x0d, 0x1a, 0x42, 0x04, 0x3d, 0xbf, 0x14, 0xf4, 0x4f, 0x1a, + 0xdf, 0xbf, 0x91, 0x3d, 0x8b, 0x0d, 0xf4, 0xec, 0xfc, 0xbf, 0x97, 0x20, 0x5b, 0x21, 0x0b, 0xb7, + 0xbe, 0x72, 0xb5, 0xad, 0xef, 0xa2, 0xa7, 0xe0, 0x58, 0x65, 0x75, 0xa3, 0xfa, 0xa2, 0x56, 0x5f, + 0xd1, 0xae, 0xae, 0x96, 0xaf, 0x05, 0x77, 0x8f, 0x4b, 0xc7, 0xef, 0xde, 0x5b, 0x44, 0x21, 0xdc, + 0x2d, 0x8b, 0xc6, 0xb9, 0xe8, 0x02, 0xcc, 0x45, 0x49, 0xca, 0x95, 0x46, 0x6d, 0xbd, 0x29, 0x4b, + 0xa5, 0x63, 0x77, 0xef, 0x2d, 0xce, 0x84, 0x28, 0xca, 0xdb, 0x2e, 0xb6, 0xbc, 0x41, 0x82, 0xea, + 0xc6, 0xda, 0x5a, 0xbd, 0x29, 0xc7, 0x06, 0x08, 0xaa, 0x76, 0xa7, 0x63, 0x7a, 0xe8, 0x51, 0x98, + 0x89, 0x12, 0xac, 0xd7, 0x57, 0xe5, 0x78, 0x09, 0xdd, 0xbd, 0xb7, 0x58, 0x08, 0x61, 0xaf, 0x9b, + 0xed, 0x52, 0xfa, 0xc3, 0x3f, 0x72, 0x7a, 0xea, 0xd3, 0x7f, 0xeb, 0xb4, 0x54, 0x59, 0x1b, 0xb9, + 0xe6, 0x9e, 0x3e, 0xda, 0x9a, 0x8b, 0xee, 0xdb, 0x5f, 0x7d, 0x20, 0x62, 0x6e, 0xb8, 0x8f, 0x18, + 0x32, 0xc6, 0x93, 0x2e, 0xb7, 0x71, 0x79, 0x8f, 0xd2, 0xe1, 0xee, 0x41, 0x69, 0xcc, 0xa6, 0x50, + 0x1a, 0x6b, 0x18, 0x94, 0xe7, 0x21, 0xbf, 0xa9, 0x3b, 0x5e, 0x03, 0x7b, 0xd7, 0xb1, 0xde, 0xc2, + 0x4e, 0xd4, 0x7f, 0xc8, 0x0b, 0xff, 0x01, 0x41, 0x82, 0x3a, 0x09, 0x6c, 0xff, 0xa4, 0xbf, 0x95, + 0x3d, 0x48, 0xd0, 0x5b, 0xce, 0xbe, 0x6f, 0xc1, 0x29, 0x98, 0x6f, 0x41, 0x76, 0x86, 0x03, 0x0f, + 0xbb, 0x22, 0x35, 0x47, 0x0b, 0xe8, 0x19, 0xe1, 0x21, 0xc4, 0x0f, 0xf7, 0x10, 0xf8, 0xf2, 0xe2, + 0x7e, 0x42, 0x1b, 0x52, 0x7c, 0x8a, 0xfd, 0x8e, 0x48, 0x41, 0x47, 0xd0, 0x1a, 0x14, 0xbb, 0xba, + 0xe3, 0xd1, 0xaf, 0x1e, 0xf7, 0xe8, 0x28, 0xf8, 0x0a, 0x5e, 0x18, 0xb4, 0x27, 0x91, 0xc1, 0xf2, + 0x56, 0xf2, 0xdd, 0x30, 0x50, 0xf9, 0xcf, 0x09, 0x48, 0x72, 0x61, 0xbc, 0x0b, 0x52, 0x5c, 0xac, + 0x7c, 0xcd, 0x3d, 0xb8, 0x34, 0xb8, 0xcd, 0x2e, 0xf9, 0xdb, 0x21, 0xe7, 0x27, 0x68, 0xd0, 0x23, + 0x90, 0x36, 0xf6, 0x74, 0xd3, 0xd2, 0xcc, 0x16, 0x77, 0x8e, 0xb3, 0x6f, 0xbe, 0xb1, 0x90, 0xaa, + 0x12, 0x58, 0x7d, 0x45, 0x4d, 0xd1, 0xca, 0x7a, 0x8b, 0xf8, 0x34, 0x7b, 0xd8, 0xdc, 0xdd, 0xf3, + 0xb8, 0xdd, 0xe0, 0x25, 0xf4, 0x1c, 0x24, 0x88, 0x42, 0xf0, 0x6f, 0xe2, 0x4b, 0x03, 0x51, 0x8f, + 0x9f, 0x96, 0xaa, 0xa4, 0x49, 0xc3, 0x1f, 0xf9, 0x4f, 0x0b, 0x92, 0x4a, 0x29, 0x50, 0x15, 0xf2, + 0x6d, 0xdd, 0xf5, 0x34, 0xba, 0x1f, 0x93, 0xe6, 0xa7, 0x29, 0x8b, 0x93, 0x83, 0x02, 0xe1, 0x82, + 0xe5, 0x5d, 0xcf, 0x12, 0x2a, 0x06, 0x6a, 0xa1, 0x73, 0x20, 0x53, 0x26, 0x06, 0x5d, 0x81, 0xcc, + 0x4b, 0x4c, 0x52, 0xb9, 0x17, 0x08, 0x9c, 0x2d, 0x4c, 0xea, 0x2b, 0x9e, 0x82, 0x0c, 0xfd, 0x0a, + 0x97, 0xa2, 0xb0, 0xab, 0xf5, 0x69, 0x02, 0xa0, 0x95, 0x67, 0xa1, 0x18, 0x58, 0x7d, 0x86, 0x92, + 0x66, 0x5c, 0x02, 0x30, 0x45, 0x7c, 0x12, 0xe6, 0x2c, 0xbc, 0x4f, 0x2f, 0xfb, 0x47, 0xb0, 0x33, + 0x14, 0x1b, 0x91, 0xba, 0x9b, 0x51, 0x8a, 0x87, 0xa1, 0x60, 0x08, 0xe1, 0x33, 0x5c, 0xa0, 0xb8, + 0x79, 0x1f, 0x4a, 0xd1, 0x4e, 0x42, 0x5a, 0xef, 0x76, 0x19, 0x42, 0x96, 0x5b, 0xfd, 0x6e, 0x97, + 0x56, 0x9d, 0x87, 0x19, 0x3a, 0x46, 0x07, 0xbb, 0xbd, 0xb6, 0xc7, 0x99, 0xe4, 0x28, 0x4e, 0x91, + 0x54, 0xa8, 0x0c, 0x4e, 0x71, 0x1f, 0x82, 0x3c, 0xbe, 0x6d, 0xb6, 0xb0, 0x65, 0x60, 0x86, 0x97, + 0xa7, 0x78, 0x39, 0x01, 0xa4, 0x48, 0x8f, 0x82, 0x6f, 0xcd, 0x35, 0xb1, 0xd3, 0x14, 0x18, 0x3f, + 0x01, 0x2f, 0x33, 0xb0, 0x32, 0x0f, 0x89, 0x15, 0xdd, 0xd3, 0x89, 0xbb, 0xe4, 0xed, 0xb3, 0xed, + 0x33, 0xa7, 0x92, 0x9f, 0xca, 0xcf, 0xc5, 0x21, 0x71, 0xd3, 0xf6, 0x30, 0x7a, 0x3a, 0xe4, 0xca, + 0x16, 0x86, 0xe9, 0x73, 0xc3, 0xdc, 0xb5, 0x70, 0x6b, 0xcd, 0xdd, 0x0d, 0x3d, 0x99, 0x13, 0xa8, + 0x53, 0x2c, 0xa2, 0x4e, 0x73, 0x30, 0xed, 0xd8, 0x3d, 0xab, 0x25, 0x2e, 0xa5, 0xd3, 0x02, 0xaa, + 0x41, 0xda, 0xd7, 0x92, 0xc4, 0x38, 0x2d, 0x29, 0x12, 0x2d, 0x21, 0x3a, 0xcc, 0x01, 0x6a, 0x6a, + 0x9b, 0x2b, 0x4b, 0x05, 0x32, 0xbe, 0xf1, 0xe2, 0xda, 0x36, 0x99, 0xc2, 0x06, 0x64, 0x64, 0x8b, + 0xf4, 0xe7, 0xde, 0x17, 0x1e, 0xd3, 0x38, 0xd9, 0xaf, 0xe0, 0xd2, 0x8b, 0xa8, 0x15, 0x7f, 0xbe, + 0x27, 0x45, 0xc7, 0x15, 0xa8, 0x15, 0x7b, 0xc2, 0xe7, 0x01, 0xc8, 0xb8, 0xe6, 0xae, 0xa5, 0x7b, + 0x3d, 0x07, 0x73, 0xcd, 0x0b, 0x00, 0xa4, 0x36, 0xf8, 0x40, 0x83, 0x69, 0x5a, 0xe8, 0x55, 0xb1, + 0x0b, 0x30, 0x1b, 0xbc, 0xe7, 0x15, 0x70, 0x61, 0x5a, 0x86, 0xfc, 0xaa, 0x86, 0xa8, 0x51, 0x7e, + 0x59, 0x82, 0x24, 0xdf, 0xb1, 0x82, 0x69, 0x90, 0x86, 0x4f, 0x43, 0x6c, 0xd4, 0x34, 0xc4, 0xef, + 0x7f, 0x1a, 0xca, 0x00, 0x7e, 0x37, 0x5d, 0xfe, 0x48, 0xcb, 0x10, 0xb7, 0x8a, 0x75, 0xb1, 0x61, + 0xee, 0xf2, 0x75, 0x1f, 0x22, 0x52, 0x7e, 0x4b, 0x22, 0x1e, 0x3e, 0xaf, 0x47, 0x65, 0xc8, 0x8b, + 0x7e, 0x69, 0x3b, 0x6d, 0x7d, 0x97, 0xab, 0xe2, 0x83, 0x23, 0x3b, 0x47, 0x76, 0x61, 0x35, 0xcb, + 0xfb, 0x43, 0xfd, 0x89, 0xa1, 0xd3, 0x1a, 0x1b, 0x31, 0xad, 0x11, 0x3d, 0x8a, 0xdf, 0x9f, 0x1e, + 0x45, 0x66, 0x3c, 0xd1, 0x37, 0xe3, 0xca, 0xef, 0x48, 0xfc, 0x35, 0xb1, 0x16, 0xfb, 0xba, 0xe4, + 0x4f, 0x6b, 0xaa, 0x5e, 0xe5, 0xba, 0xd5, 0xc2, 0x2d, 0x6d, 0x60, 0xce, 0x1e, 0x1a, 0xe4, 0x18, + 0xed, 0x73, 0x30, 0x77, 0x48, 0x70, 0x69, 0x04, 0x73, 0xf8, 0xd9, 0x18, 0xcc, 0x0c, 0xe0, 0xff, + 0xf9, 0x9b, 0xcb, 0xe8, 0xea, 0x9d, 0x9e, 0x70, 0xf5, 0x26, 0x47, 0xae, 0xde, 0x9f, 0x89, 0xd1, + 0x04, 0x40, 0xd7, 0x76, 0xf5, 0xf6, 0xd7, 0xc3, 0xf6, 0x9e, 0x82, 0x4c, 0xd7, 0x6e, 0x6b, 0xac, + 0x86, 0x7d, 0x16, 0x94, 0xee, 0xda, 0x6d, 0x75, 0x40, 0xcd, 0xa6, 0xdf, 0x22, 0xc3, 0x9c, 0x7c, + 0x0b, 0x26, 0x21, 0xd5, 0xbf, 0xa0, 0x1c, 0xc8, 0x31, 0x51, 0x70, 0xaf, 0xe9, 0x49, 0x22, 0x03, + 0xea, 0x86, 0x49, 0x83, 0x5e, 0x1e, 0xeb, 0x36, 0xc3, 0x54, 0x39, 0x1e, 0xa1, 0x60, 0x4e, 0xc6, + 0xb0, 0xcc, 0x51, 0xd8, 0x62, 0xa9, 0x1c, 0x4f, 0xf9, 0x3e, 0x09, 0x60, 0x95, 0x48, 0x96, 0x8e, + 0x97, 0xf8, 0x3b, 0x2e, 0xed, 0x82, 0x16, 0x69, 0xf9, 0xf4, 0xa8, 0x49, 0xe3, 0xed, 0xe7, 0xdc, + 0x70, 0xbf, 0xab, 0x90, 0x0f, 0x74, 0xdb, 0xc5, 0xa2, 0x33, 0xa7, 0x0f, 0x89, 0x4a, 0x1b, 0xd8, + 0x53, 0x73, 0xb7, 0x43, 0x25, 0xe5, 0x9f, 0x48, 0x90, 0xa1, 0x7d, 0x5a, 0xc3, 0x9e, 0x1e, 0x99, + 0x43, 0xe9, 0xfe, 0xe7, 0xf0, 0x41, 0x00, 0xc6, 0xc6, 0x35, 0x5f, 0xc7, 0x5c, 0xb3, 0x32, 0x14, + 0xd2, 0x30, 0x5f, 0xc7, 0xe8, 0xb2, 0x2f, 0xf0, 0xf8, 0xe1, 0x02, 0x17, 0x51, 0x2b, 0x17, 0xfb, + 0x09, 0x48, 0xd1, 0xf7, 0x2e, 0xf7, 0x5d, 0x1e, 0x88, 0x26, 0xad, 0x5e, 0xa7, 0xb9, 0xef, 0x2a, + 0xaf, 0x41, 0xaa, 0xb9, 0xcf, 0xf2, 0x89, 0xa7, 0x20, 0xe3, 0xd8, 0x36, 0xf7, 0xfe, 0x98, 0xd7, + 0x9d, 0x26, 0x00, 0xea, 0xec, 0x88, 0x1c, 0x5a, 0x2c, 0xc8, 0xa1, 0x05, 0x49, 0xc0, 0xf8, 0x44, + 0x49, 0x40, 0x12, 0x7d, 0xe6, 0x23, 0x2b, 0x09, 0x3d, 0x0e, 0x27, 0x1a, 0xf5, 0x6b, 0xeb, 0xb5, + 0x15, 0x6d, 0xad, 0x71, 0xad, 0xef, 0x93, 0xff, 0x52, 0xf1, 0xee, 0xbd, 0xc5, 0x2c, 0x0f, 0x3b, + 0x47, 0x61, 0x6f, 0xaa, 0xb5, 0x9b, 0x1b, 0xcd, 0x9a, 0x2c, 0x31, 0xec, 0x4d, 0x07, 0xdf, 0xb6, + 0x3d, 0xf6, 0xa0, 0xec, 0x93, 0x70, 0x72, 0x08, 0xb6, 0x1f, 0x7c, 0xce, 0xdc, 0xbd, 0xb7, 0x98, + 0xdf, 0x74, 0x30, 0xd3, 0x32, 0x4a, 0xb1, 0x04, 0xf3, 0x83, 0x14, 0x1b, 0x9b, 0x1b, 0x8d, 0xf2, + 0xaa, 0xbc, 0x58, 0x92, 0xef, 0xde, 0x5b, 0xcc, 0x09, 0x93, 0x41, 0xf0, 0xdf, 0xfe, 0xe8, 0xf3, + 0xdb, 0xd2, 0x91, 0xac, 0x31, 0x8b, 0xeb, 0xba, 0xba, 0xa3, 0x77, 0x8e, 0x1a, 0x7e, 0x8e, 0xb9, + 0x8c, 0xa0, 0x7c, 0x26, 0x06, 0x45, 0x3f, 0xb8, 0xd9, 0xa4, 0x2d, 0xa0, 0xa7, 0xc3, 0x19, 0xbf, + 0xec, 0xc8, 0xbd, 0x83, 0x61, 0x8b, 0x84, 0xe0, 0x3b, 0x21, 0x2d, 0x9c, 0x64, 0xbe, 0xa8, 0x16, + 0x87, 0xec, 0x6f, 0x1c, 0x83, 0x93, 0xfa, 0x14, 0xe8, 0x05, 0xc8, 0xf8, 0x4b, 0xcc, 0x7f, 0x74, + 0x6d, 0xf4, 0x9a, 0xe4, 0xf4, 0x01, 0x0d, 0x7a, 0x3e, 0x08, 0xe3, 0x12, 0xa3, 0x02, 0xc3, 0x9b, + 0x0c, 0x81, 0x13, 0xfb, 0x21, 0xdc, 0x93, 0x90, 0xd0, 0xb7, 0x0d, 0x93, 0x1b, 0xe0, 0x07, 0x06, + 0xe9, 0xca, 0x95, 0x6a, 0x9d, 0x13, 0x51, 0x4c, 0xa5, 0xce, 0x93, 0x29, 0x5c, 0x5e, 0xf4, 0x89, + 0x9b, 0x7d, 0x8d, 0xc5, 0xc2, 0xcc, 0xbb, 0x48, 0x77, 0xf4, 0xfd, 0x0a, 0x0d, 0x87, 0x4f, 0x40, + 0x8a, 0x54, 0xee, 0xf2, 0x47, 0x14, 0xe2, 0x6a, 0xb2, 0xa3, 0xef, 0x5f, 0xd3, 0xdd, 0x1b, 0x89, + 0x74, 0x5c, 0x4e, 0x28, 0x3f, 0x41, 0x3c, 0x95, 0x88, 0x54, 0xd0, 0x63, 0x80, 0x08, 0x85, 0xbe, + 0x8b, 0x35, 0xb2, 0x74, 0xa9, 0x78, 0x05, 0xdf, 0x62, 0x47, 0xdf, 0x2f, 0xef, 0xe2, 0xf5, 0x5e, + 0x87, 0x76, 0xc0, 0x45, 0x6b, 0x20, 0x0b, 0x64, 0x31, 0xb3, 0x5c, 0xfc, 0x27, 0x07, 0x1f, 0x6d, + 0xe5, 0x08, 0x6c, 0x03, 0xf8, 0x28, 0xd9, 0x00, 0x0a, 0x8c, 0x9f, 0x7f, 0xfd, 0x24, 0x32, 0x94, + 0x78, 0x74, 0x28, 0xca, 0x0b, 0x50, 0xec, 0x9b, 0x01, 0xa4, 0x40, 0x9e, 0x67, 0xac, 0xe8, 0xd1, + 0x3e, 0x8b, 0x70, 0x32, 0x6a, 0x96, 0x65, 0xa6, 0xe8, 0x55, 0x87, 0xe5, 0xf4, 0xcf, 0x7f, 0x72, + 0x41, 0xa2, 0xc7, 0x3e, 0x8f, 0x41, 0x3e, 0x32, 0x07, 0x22, 0x8b, 0x2c, 0x05, 0x59, 0xe4, 0x00, + 0xf9, 0x55, 0xc8, 0x11, 0x03, 0x84, 0x5b, 0x1c, 0xf7, 0x11, 0x28, 0x32, 0x03, 0xd9, 0x2f, 0x6b, + 0xe6, 0xf0, 0xac, 0x09, 0x81, 0x2b, 0xc2, 0x03, 0x8a, 0x8a, 0x3d, 0x2b, 0xb0, 0xae, 0xe9, 0xae, + 0xb2, 0x01, 0x10, 0x4c, 0x2a, 0x2a, 0xc3, 0x83, 0xc4, 0x78, 0x84, 0xaf, 0xa2, 0xf2, 0xe7, 0xb6, + 0x22, 0x1e, 0x63, 0x89, 0x20, 0x05, 0xd7, 0x4d, 0xd9, 0xa3, 0x5b, 0xd7, 0x29, 0x46, 0xe5, 0xa5, + 0x4f, 0xbf, 0x79, 0x5a, 0x7a, 0x7b, 0x6c, 0xc1, 0x7f, 0x78, 0x05, 0x4e, 0x85, 0x2a, 0x89, 0x02, + 0x46, 0x12, 0x51, 0xc5, 0x90, 0xbe, 0x92, 0xca, 0x71, 0x09, 0xa5, 0x43, 0xf3, 0xbf, 0xa5, 0xc3, + 0xcd, 0xce, 0xf8, 0x6c, 0xd3, 0xf8, 0x7c, 0xd7, 0xf0, 0xa4, 0xfc, 0x3f, 0xce, 0x40, 0x4a, 0xc5, + 0x1f, 0xe8, 0x61, 0xd7, 0x43, 0x17, 0x21, 0x81, 0x8d, 0x3d, 0x7b, 0x58, 0x0e, 0x94, 0x0c, 0x70, + 0x89, 0xe3, 0xd5, 0x8c, 0x3d, 0xfb, 0xfa, 0x94, 0x4a, 0x71, 0xd1, 0x25, 0x98, 0xde, 0x69, 0xf7, + 0x78, 0xfa, 0xaa, 0xcf, 0x66, 0x85, 0x89, 0xae, 0x12, 0xa4, 0xeb, 0x53, 0x2a, 0xc3, 0x26, 0x4d, + 0xd1, 0xd7, 0xb6, 0xe3, 0x87, 0x37, 0x55, 0xb7, 0x76, 0x68, 0x53, 0x04, 0x17, 0x55, 0x00, 0x4c, + 0xcb, 0xf4, 0x34, 0x9a, 0xda, 0xe1, 0x56, 0xe3, 0xcc, 0x68, 0x4a, 0xd3, 0xa3, 0xc9, 0xa0, 0xeb, + 0x53, 0x6a, 0xc6, 0x14, 0x05, 0xd2, 0xdd, 0x0f, 0xf4, 0xb0, 0x73, 0xc0, 0xbd, 0xb5, 0x91, 0xdd, + 0x7d, 0x89, 0x20, 0x91, 0xee, 0x52, 0x6c, 0x62, 0x64, 0xd9, 0xc3, 0x7d, 0xde, 0x3e, 0x7f, 0x8e, + 0x76, 0x61, 0x14, 0x25, 0x7d, 0xbd, 0xaf, 0xb9, 0x7f, 0x7d, 0x4a, 0x4d, 0x19, 0xec, 0x27, 0x7a, + 0xce, 0x77, 0xc1, 0xb2, 0x83, 0x5e, 0x4f, 0x84, 0x96, 0xa5, 0x7d, 0xa6, 0x84, 0x2b, 0x86, 0xd6, + 0xa1, 0xd0, 0x36, 0x5d, 0x4f, 0x73, 0x2d, 0xbd, 0xeb, 0xee, 0xd9, 0x9e, 0x4b, 0xf3, 0x27, 0xd9, + 0x8b, 0x0f, 0x8f, 0xe2, 0xb0, 0x6a, 0xba, 0x5e, 0x43, 0x20, 0x5f, 0x9f, 0x52, 0xf3, 0xed, 0x30, + 0x80, 0xf0, 0xb3, 0x77, 0x76, 0xb0, 0xe3, 0x33, 0xa4, 0x79, 0x96, 0x43, 0xf8, 0x6d, 0x10, 0x6c, + 0x41, 0x4f, 0xf8, 0xd9, 0x61, 0x00, 0xfa, 0x06, 0x98, 0x6d, 0xdb, 0x7a, 0xcb, 0x67, 0xa7, 0x19, + 0x7b, 0x3d, 0xeb, 0x16, 0x4d, 0xca, 0x64, 0x2f, 0x3e, 0x3a, 0xb2, 0x93, 0xb6, 0xde, 0x12, 0x2c, + 0xaa, 0x84, 0xe0, 0xfa, 0x94, 0x3a, 0xd3, 0xee, 0x07, 0xa2, 0xf7, 0xc1, 0x9c, 0xde, 0xed, 0xb6, + 0x0f, 0xfa, 0xb9, 0x17, 0x29, 0xf7, 0xf3, 0xa3, 0xb8, 0x97, 0x09, 0x4d, 0x3f, 0x7b, 0xa4, 0x0f, + 0x40, 0x51, 0x13, 0xe4, 0xae, 0x83, 0xe9, 0xd7, 0x5c, 0x5d, 0xee, 0x65, 0xd0, 0xb7, 0xae, 0xb2, + 0x17, 0xcf, 0x8e, 0xe2, 0xbd, 0xc9, 0xf0, 0x85, 0x53, 0x72, 0x7d, 0x4a, 0x2d, 0x76, 0xa3, 0x20, + 0xc6, 0xd5, 0x36, 0x30, 0x7d, 0x8a, 0x8f, 0x73, 0x9d, 0x19, 0xc7, 0x95, 0xe2, 0x47, 0xb9, 0x46, + 0x40, 0xa8, 0x06, 0x59, 0x16, 0x8a, 0x6a, 0xc4, 0x18, 0xd2, 0x17, 0xb2, 0xb2, 0x17, 0x95, 0x91, + 0x2b, 0x94, 0xa2, 0xde, 0xb4, 0x3d, 0x7c, 0x7d, 0x4a, 0x05, 0xec, 0x97, 0x90, 0x0e, 0xc7, 0xe8, + 0x63, 0x61, 0x07, 0x5a, 0xd4, 0xf0, 0xce, 0xcf, 0x52, 0x86, 0x8f, 0x8d, 0x62, 0x78, 0x93, 0x12, + 0xdd, 0x0c, 0xdb, 0xe1, 0xeb, 0x53, 0xea, 0xec, 0xed, 0x41, 0x30, 0x51, 0xb1, 0x1d, 0xd3, 0xd2, + 0xdb, 0xe6, 0xeb, 0x98, 0x6d, 0xa1, 0xf4, 0x99, 0xcc, 0x43, 0x54, 0xec, 0x2a, 0xc7, 0xa6, 0x1b, + 0x2b, 0x51, 0xb1, 0x9d, 0x30, 0xa0, 0x92, 0xe2, 0xf7, 0x50, 0xfd, 0x67, 0xdf, 0x52, 0x72, 0x9a, + 0x3d, 0xf5, 0x76, 0x23, 0x91, 0x06, 0x39, 0xab, 0x9c, 0x85, 0x6c, 0xc8, 0x30, 0xa1, 0x79, 0x48, + 0xf1, 0x9b, 0x3a, 0xe2, 0x46, 0x2b, 0x2f, 0x2a, 0x05, 0xc8, 0x85, 0x8d, 0x91, 0xf2, 0x11, 0xc9, + 0xa7, 0xa4, 0xef, 0x5d, 0xcc, 0x47, 0x33, 0xd2, 0x99, 0xc0, 0x53, 0x79, 0x48, 0x6c, 0x6d, 0xa2, + 0x9e, 0x1d, 0xbf, 0xe6, 0x28, 0x90, 0xef, 0xac, 0x68, 0x01, 0xb2, 0xdd, 0x8b, 0x5d, 0x1f, 0x25, + 0x4e, 0x51, 0xa0, 0x7b, 0xb1, 0x2b, 0x10, 0xce, 0x40, 0x8e, 0x8c, 0x5b, 0x0b, 0xfb, 0x4b, 0x19, + 0x35, 0x4b, 0x60, 0x1c, 0x45, 0xf9, 0x57, 0x31, 0x90, 0xfb, 0x0d, 0x98, 0x9f, 0xaa, 0x96, 0x8e, + 0x9c, 0xaa, 0x3e, 0xd9, 0x9f, 0x24, 0x0f, 0xf2, 0xe2, 0xab, 0x20, 0x07, 0xe9, 0x5d, 0xb6, 0xd5, + 0x8c, 0xf6, 0xff, 0xfa, 0x1c, 0x55, 0xb5, 0x68, 0xf4, 0x79, 0xae, 0x57, 0x23, 0x87, 0x95, 0xe2, + 0xcf, 0x51, 0xf4, 0x4f, 0xb8, 0xef, 0xc4, 0x6c, 0x75, 0x5b, 0xba, 0x87, 0x45, 0x7e, 0x2c, 0x74, + 0x6e, 0xf9, 0x08, 0x14, 0xf5, 0x6e, 0x57, 0x73, 0x3d, 0xdd, 0xc3, 0xdc, 0xd7, 0x60, 0x99, 0x87, + 0xbc, 0xde, 0xed, 0x36, 0x08, 0x94, 0xf9, 0x1a, 0x0f, 0x43, 0x81, 0xd8, 0x74, 0x53, 0x6f, 0x0b, + 0x57, 0x21, 0xc9, 0x5c, 0x12, 0x0e, 0x65, 0xde, 0x81, 0xd2, 0xf2, 0x67, 0x9c, 0xda, 0x73, 0x3f, + 0xa6, 0x92, 0x42, 0x31, 0x15, 0xe2, 0xef, 0x90, 0x30, 0xf9, 0x88, 0xb7, 0x5b, 0x86, 0x1f, 0x1a, + 0xcc, 0xd1, 0xf8, 0xeb, 0x36, 0x4b, 0x96, 0xa4, 0x55, 0x56, 0x50, 0x54, 0x28, 0x44, 0x6d, 0x3f, + 0x2a, 0x40, 0xcc, 0xdb, 0xe7, 0xad, 0xc4, 0xbc, 0x7d, 0xe2, 0xe9, 0xfa, 0xaf, 0xf7, 0x16, 0x86, + 0xec, 0x76, 0x9c, 0x2e, 0xc8, 0x75, 0x28, 0x45, 0xc8, 0x47, 0xf6, 0x04, 0xe5, 0x38, 0xcc, 0x0d, + 0x33, 0xf1, 0xca, 0x9e, 0x0f, 0x8f, 0x98, 0x6a, 0x74, 0x09, 0xd2, 0xbe, 0x8d, 0x1f, 0x12, 0x1d, + 0xd3, 0x66, 0x05, 0xb2, 0xea, 0xa3, 0x46, 0xd2, 0xf9, 0xb1, 0x48, 0x3a, 0x5f, 0x79, 0x3f, 0xcc, + 0x8f, 0xb2, 0xdf, 0x7d, 0x49, 0xbe, 0x84, 0x2f, 0xb0, 0xe3, 0x90, 0xe4, 0xcf, 0x64, 0xc6, 0xe8, + 0x01, 0x16, 0x2f, 0x11, 0x41, 0x32, 0x5b, 0x1e, 0x67, 0xe7, 0x5a, 0xb4, 0xa0, 0x68, 0x70, 0x72, + 0xa4, 0x0d, 0x1f, 0x7d, 0x14, 0xc6, 0x18, 0xf1, 0xa3, 0x30, 0x43, 0x74, 0xc7, 0xa5, 0x63, 0x15, + 0x17, 0x59, 0x58, 0x49, 0xf9, 0x68, 0x1c, 0x8e, 0x0f, 0xb7, 0xe4, 0x68, 0x11, 0x72, 0xc4, 0x6f, + 0xf5, 0xa2, 0x2e, 0x2e, 0x74, 0xf4, 0xfd, 0x26, 0xf7, 0x6f, 0xf9, 0x51, 0x42, 0xcc, 0x3f, 0x4a, + 0x40, 0x5b, 0x30, 0xd3, 0xb6, 0x0d, 0xbd, 0xad, 0x85, 0x8e, 0x72, 0xf8, 0x22, 0x7a, 0x68, 0x40, + 0xd8, 0xd1, 0x94, 0x21, 0x31, 0x38, 0x5c, 0xff, 0x8b, 0x94, 0xc7, 0xaa, 0x7f, 0xea, 0x83, 0x56, + 0x20, 0xdb, 0x31, 0xdd, 0x6d, 0xbc, 0xa7, 0xdf, 0x36, 0x6d, 0x87, 0xaf, 0xa6, 0x41, 0xa5, 0x59, + 0x0b, 0x70, 0xc4, 0x09, 0x53, 0x88, 0x2c, 0x34, 0x25, 0xd3, 0x43, 0x0f, 0xbe, 0x92, 0x47, 0xb6, + 0x26, 0xa3, 0xce, 0x90, 0x52, 0x23, 0xcf, 0x90, 0x86, 0x1d, 0xd8, 0xa4, 0x87, 0x1f, 0xd8, 0x7c, + 0x38, 0x3c, 0x35, 0xd1, 0xbd, 0x6f, 0xe0, 0x0c, 0x07, 0x35, 0x60, 0x8e, 0xd3, 0xb7, 0x22, 0xb2, + 0x1f, 0x72, 0xd5, 0x81, 0xad, 0xaf, 0x7e, 0x99, 0x23, 0x41, 0x3e, 0x5a, 0xec, 0xf1, 0xfb, 0x13, + 0xbb, 0x38, 0x44, 0x4d, 0x84, 0x0e, 0x51, 0xff, 0x1f, 0x9b, 0x8a, 0x0f, 0xc5, 0x61, 0x66, 0xc0, + 0x91, 0x18, 0x7a, 0x3a, 0x3c, 0x2a, 0x23, 0x2b, 0x06, 0x16, 0x3f, 0xf2, 0xc0, 0xf8, 0x5c, 0x27, + 0xc6, 0xcf, 0xf5, 0xf4, 0x5b, 0x38, 0xd7, 0xc9, 0xfb, 0x9b, 0xeb, 0xb7, 0x75, 0x16, 0x3e, 0x2e, + 0x41, 0x69, 0xb4, 0xf7, 0x35, 0x74, 0x3a, 0x8e, 0x74, 0x80, 0x30, 0x6a, 0x8f, 0x7b, 0x18, 0x0a, + 0x7d, 0xbe, 0x21, 0x53, 0xe5, 0x7c, 0x24, 0x0a, 0x57, 0xbe, 0x39, 0xee, 0x6f, 0x3c, 0x11, 0x07, + 0x6e, 0xc8, 0x6a, 0x7d, 0x09, 0x66, 0x5b, 0xd8, 0x30, 0x5b, 0xf7, 0xbb, 0x58, 0x67, 0x38, 0xf5, + 0xff, 0x5f, 0xab, 0x83, 0x5a, 0xf2, 0xbd, 0x00, 0x69, 0x15, 0xbb, 0x5d, 0xe2, 0x8f, 0xa1, 0x0a, + 0x64, 0xf0, 0xbe, 0x81, 0xbb, 0x5e, 0x70, 0xa9, 0x62, 0x58, 0x88, 0xc0, 0xb0, 0x6b, 0x02, 0x93, + 0x04, 0xc8, 0x3e, 0x19, 0x7a, 0x9a, 0xe7, 0x00, 0x46, 0x87, 0xf3, 0x9c, 0x3c, 0x9c, 0x04, 0xb8, + 0x2c, 0x92, 0x00, 0xf1, 0x91, 0xf1, 0x2d, 0xa3, 0xea, 0xcb, 0x02, 0x3c, 0xcd, 0xb3, 0x00, 0x89, + 0x31, 0x8d, 0x45, 0xd2, 0x00, 0xd5, 0x48, 0x1a, 0x20, 0x39, 0x66, 0x98, 0x23, 0xf2, 0x00, 0x97, + 0x45, 0x1e, 0x20, 0x35, 0xa6, 0xc7, 0x7d, 0x89, 0x80, 0x77, 0x85, 0x12, 0x01, 0x99, 0xc1, 0x6c, + 0x6b, 0x84, 0x74, 0x48, 0x26, 0xe0, 0x79, 0x3f, 0x13, 0x90, 0x1b, 0x99, 0x45, 0xe0, 0xc4, 0xfd, + 0xa9, 0x80, 0x8d, 0x81, 0x54, 0x40, 0x9e, 0xff, 0xd1, 0xa5, 0x51, 0x2c, 0xc6, 0xe4, 0x02, 0x36, + 0x06, 0x72, 0x01, 0x85, 0x31, 0x0c, 0xc7, 0x24, 0x03, 0xbe, 0x71, 0x78, 0x32, 0x60, 0x74, 0xb8, + 0xce, 0xbb, 0x39, 0x59, 0x36, 0x40, 0x1b, 0x91, 0x0d, 0x90, 0x47, 0x46, 0xae, 0x8c, 0xfd, 0xc4, + 0xe9, 0x80, 0xad, 0x21, 0xe9, 0x00, 0x16, 0xb8, 0x9f, 0x1b, 0xc9, 0x7c, 0x82, 0x7c, 0xc0, 0xd6, + 0x90, 0x7c, 0x00, 0x1a, 0xcb, 0x76, 0x6c, 0x42, 0xe0, 0x6a, 0x34, 0x21, 0x30, 0x3b, 0xc2, 0xeb, + 0x0c, 0x56, 0xfb, 0x88, 0x8c, 0xc0, 0xf6, 0xa8, 0x8c, 0x00, 0x8b, 0xda, 0x1f, 0x1f, 0xc9, 0xf1, + 0x08, 0x29, 0x81, 0x8d, 0x81, 0x94, 0xc0, 0xb1, 0x31, 0x9a, 0x36, 0x79, 0x4e, 0x80, 0x3d, 0x02, + 0xcf, 0x9e, 0x7f, 0x07, 0x39, 0x7b, 0x23, 0x91, 0xce, 0xca, 0x39, 0xe5, 0x51, 0xe2, 0xc1, 0xf4, + 0xd9, 0x39, 0x12, 0x2b, 0x60, 0xc7, 0xb1, 0x1d, 0xf1, 0x8d, 0x05, 0x2d, 0x28, 0xe7, 0x48, 0x8c, + 0x18, 0xd8, 0xb4, 0x43, 0xf2, 0x07, 0x34, 0x26, 0x0b, 0xd9, 0x31, 0xe5, 0xe7, 0xa5, 0x80, 0x96, + 0x66, 0x10, 0xc2, 0xf1, 0x65, 0x86, 0xc7, 0x97, 0xa1, 0xac, 0x42, 0x2c, 0x9a, 0x55, 0x58, 0x80, + 0x2c, 0x89, 0xb5, 0xfa, 0x12, 0x06, 0x7a, 0xd7, 0x4f, 0x18, 0x88, 0x0b, 0x54, 0x2c, 0xf7, 0xc0, + 0xb7, 0x25, 0x76, 0x9a, 0x58, 0xf4, 0x2f, 0x93, 0xb1, 0x50, 0x17, 0x3d, 0x01, 0xb3, 0x21, 0x5c, + 0x3f, 0x86, 0x63, 0xd1, 0xb3, 0xec, 0x63, 0x97, 0x79, 0x30, 0xf7, 0xcf, 0xa4, 0x40, 0x42, 0x41, + 0xa6, 0x61, 0x58, 0x52, 0x40, 0x7a, 0x8b, 0x92, 0x02, 0xb1, 0xfb, 0x4e, 0x0a, 0x84, 0x63, 0xd2, + 0x78, 0x34, 0x26, 0xfd, 0x1f, 0x52, 0x30, 0x27, 0x7e, 0x88, 0x6f, 0xd8, 0x2d, 0xcc, 0xa3, 0x44, + 0xfa, 0x9b, 0xb8, 0x24, 0x6d, 0x7b, 0x97, 0xc7, 0x82, 0xe4, 0x27, 0xc1, 0xf2, 0x37, 0x9e, 0x0c, + 0xdf, 0x57, 0xfc, 0x00, 0x73, 0x3a, 0xfc, 0x1d, 0x07, 0xff, 0xb8, 0x21, 0x19, 0x7c, 0xdc, 0xe0, + 0x7f, 0x18, 0x9d, 0x0a, 0x7d, 0x18, 0x8d, 0x9e, 0x83, 0x0c, 0x4d, 0xf6, 0x6b, 0x76, 0x57, 0xfc, + 0xc5, 0xb2, 0x53, 0xa3, 0x3f, 0x6c, 0x70, 0xe9, 0x95, 0x6b, 0xf6, 0x31, 0x44, 0xe0, 0x71, 0x64, + 0x22, 0x1e, 0xc7, 0x03, 0x90, 0x21, 0xbd, 0x67, 0x7f, 0x79, 0x03, 0xf8, 0x57, 0xf5, 0x02, 0xa0, + 0xfc, 0x64, 0x0c, 0x8a, 0x7d, 0x1b, 0xcd, 0xd0, 0xb1, 0x0f, 0x3b, 0x46, 0x9e, 0x4c, 0x1e, 0xa7, + 0x01, 0x76, 0x75, 0x57, 0xbb, 0xa3, 0x5b, 0x1e, 0x6e, 0x71, 0xa1, 0x84, 0x20, 0xa8, 0x04, 0x69, + 0x52, 0xea, 0xb9, 0xb8, 0xc5, 0xb3, 0x2f, 0x7e, 0x19, 0x5d, 0x87, 0x24, 0xbe, 0x4d, 0x5f, 0x9e, + 0x65, 0xef, 0x37, 0x1f, 0x1f, 0x0c, 0x87, 0x49, 0x75, 0x65, 0x9e, 0x4c, 0xf6, 0x97, 0xde, 0x58, + 0x90, 0x19, 0xf6, 0xe3, 0xfe, 0xc7, 0x6c, 0x2a, 0xa7, 0x8f, 0x4a, 0x21, 0xdd, 0x27, 0x05, 0x9a, + 0x07, 0xcc, 0x89, 0xf0, 0x9e, 0xc8, 0x94, 0xdd, 0xf1, 0x56, 0xf3, 0x1d, 0xdc, 0xe9, 0xda, 0x76, + 0x5b, 0x63, 0x6b, 0xbc, 0x0c, 0x85, 0xe8, 0xbe, 0xca, 0xfe, 0x2a, 0x96, 0xa7, 0x9b, 0x96, 0x16, + 0x71, 0x82, 0x73, 0x0c, 0xc8, 0xd6, 0xd4, 0x8d, 0x44, 0x5a, 0x92, 0x63, 0x37, 0x12, 0xe9, 0x98, + 0x1c, 0x57, 0x36, 0xe1, 0xd8, 0xd0, 0x7d, 0x15, 0x3d, 0x0b, 0x99, 0x60, 0x4b, 0x66, 0xd7, 0xf4, + 0x0f, 0xc9, 0xb4, 0x04, 0xb8, 0xca, 0x2f, 0x49, 0x01, 0xcb, 0x68, 0xee, 0xa6, 0x06, 0x49, 0x76, + 0x67, 0x92, 0xdf, 0x8f, 0x79, 0x62, 0xb2, 0x1d, 0x79, 0x89, 0x5d, 0xa8, 0x54, 0x39, 0xb1, 0xf2, + 0x3e, 0x48, 0x32, 0x08, 0xca, 0x42, 0x2a, 0x78, 0xe3, 0x1a, 0x20, 0x59, 0xae, 0x56, 0x6b, 0x9b, + 0xe2, 0xc1, 0xda, 0xca, 0x86, 0xda, 0x94, 0x63, 0x04, 0xac, 0xd6, 0x6e, 0xd4, 0xaa, 0x4d, 0x39, + 0x8e, 0x66, 0x20, 0xcf, 0x7e, 0x6b, 0x57, 0x37, 0xd4, 0xb5, 0x72, 0x53, 0x4e, 0x84, 0x40, 0x8d, + 0xda, 0xfa, 0x4a, 0x4d, 0x95, 0xa7, 0x95, 0xa7, 0xe0, 0xe4, 0xc8, 0x3d, 0x3c, 0x48, 0xcc, 0x48, + 0xa1, 0xc4, 0x8c, 0xf2, 0xd1, 0x18, 0x09, 0x6a, 0x46, 0x6d, 0xcc, 0xe8, 0x46, 0xdf, 0xc0, 0x2f, + 0x1e, 0x61, 0x57, 0xef, 0x1b, 0x3d, 0x89, 0x63, 0x1c, 0xbc, 0x83, 0x3d, 0x63, 0x8f, 0x39, 0x0a, + 0xcc, 0x02, 0xe5, 0xd5, 0x3c, 0x87, 0x52, 0x22, 0x97, 0xa1, 0xbd, 0x86, 0x0d, 0x4f, 0x63, 0x4a, + 0xe4, 0xf2, 0x3f, 0xe2, 0x9b, 0x67, 0xd0, 0x06, 0x03, 0x2a, 0xef, 0x3f, 0x92, 0x2c, 0x33, 0x30, + 0xad, 0xd6, 0x9a, 0xea, 0x2b, 0x72, 0x1c, 0x21, 0x28, 0xd0, 0x9f, 0x5a, 0x63, 0xbd, 0xbc, 0xd9, + 0xb8, 0xbe, 0x41, 0x64, 0x39, 0x0b, 0x45, 0x21, 0x4b, 0x01, 0x9c, 0x56, 0x1e, 0x83, 0x13, 0x23, + 0xbc, 0x8a, 0x21, 0x97, 0x58, 0x3f, 0x25, 0x85, 0xb1, 0xa3, 0x9e, 0xc1, 0x06, 0x24, 0x5d, 0x4f, + 0xf7, 0x7a, 0x2e, 0x17, 0xe2, 0xb3, 0x93, 0xba, 0x19, 0x4b, 0xe2, 0x47, 0x83, 0x92, 0xab, 0x9c, + 0x8d, 0x72, 0x09, 0x0a, 0xd1, 0x9a, 0xd1, 0x32, 0x08, 0x94, 0x28, 0xa6, 0x5c, 0x01, 0x34, 0xe8, + 0x7d, 0x0c, 0x09, 0x2f, 0xa5, 0x61, 0xe1, 0xe5, 0x8f, 0x4a, 0x70, 0xea, 0x10, 0x4f, 0x03, 0xbd, + 0xd4, 0x37, 0xc8, 0xe7, 0x8f, 0xe2, 0xa7, 0x2c, 0x31, 0x58, 0xdf, 0x30, 0x9f, 0x86, 0x5c, 0x18, + 0x3e, 0xd9, 0x20, 0xbf, 0x14, 0x0b, 0x16, 0x71, 0x34, 0x0e, 0x0e, 0x4c, 0xa0, 0xf4, 0x35, 0x9a, + 0xc0, 0x77, 0x02, 0x78, 0xfb, 0xe2, 0x16, 0x35, 0xdf, 0x47, 0x1f, 0x1c, 0x92, 0x5f, 0xc4, 0x46, + 0x73, 0x9f, 0x2f, 0x82, 0x8c, 0xc7, 0x7f, 0xb9, 0xa8, 0x11, 0x4e, 0x0a, 0xf4, 0xe8, 0x1e, 0xeb, + 0xfa, 0x7f, 0xc2, 0x77, 0xb2, 0xcd, 0x38, 0x48, 0x1e, 0x30, 0xb0, 0x8b, 0x5e, 0x81, 0x13, 0x7d, + 0x8e, 0x82, 0xcf, 0x3a, 0x31, 0xa9, 0xbf, 0x70, 0x2c, 0xea, 0x2f, 0x08, 0xd6, 0xe1, 0xdd, 0x7e, + 0x3a, 0xba, 0xdb, 0xbf, 0x02, 0x10, 0x24, 0x07, 0x82, 0x6b, 0x7f, 0x52, 0xf8, 0xda, 0xdf, 0x25, + 0x98, 0x26, 0x9a, 0x24, 0xe4, 0x34, 0x68, 0x8a, 0x89, 0x26, 0x84, 0x92, 0x0b, 0x0c, 0x5b, 0x31, + 0x01, 0x0d, 0x26, 0x68, 0x47, 0x34, 0xf1, 0xae, 0x68, 0x13, 0x67, 0x46, 0xa6, 0x7a, 0x87, 0x37, + 0xf5, 0x3a, 0x4c, 0xd3, 0x99, 0x1f, 0xfa, 0x2d, 0xe5, 0x7b, 0x01, 0x74, 0xcf, 0x73, 0xcc, 0xed, + 0x5e, 0xd0, 0xc0, 0xc2, 0x70, 0xcd, 0x29, 0x0b, 0xbc, 0xca, 0x03, 0x5c, 0x85, 0xe6, 0x02, 0xd2, + 0x90, 0x1a, 0x85, 0x18, 0x2a, 0xeb, 0x50, 0x88, 0xd2, 0x0e, 0xff, 0x36, 0x34, 0x78, 0xf8, 0x25, + 0x23, 0xfc, 0x1b, 0xdf, 0x3b, 0xe2, 0x8f, 0x31, 0xd1, 0x82, 0xf2, 0xc1, 0x18, 0xe4, 0xc2, 0x8a, + 0xf7, 0x17, 0xcf, 0x05, 0x51, 0xbe, 0x45, 0x82, 0xb4, 0x3f, 0xfc, 0x43, 0x2e, 0x3b, 0x07, 0xdf, + 0x08, 0xfb, 0x87, 0x17, 0xec, 0x98, 0x28, 0xee, 0x1f, 0x13, 0x5d, 0xf1, 0xb7, 0xbf, 0x51, 0x09, + 0x91, 0xb0, 0xac, 0xc5, 0x85, 0x43, 0xbe, 0xdb, 0x5f, 0x99, 0xec, 0x53, 0xbc, 0x39, 0x98, 0x0e, + 0x7f, 0x46, 0xc7, 0x0a, 0x4a, 0x2b, 0x74, 0xc3, 0x88, 0x2d, 0xc4, 0xf0, 0x37, 0x7b, 0xd2, 0x91, + 0xbf, 0xd9, 0xf3, 0x5b, 0x89, 0x85, 0x5b, 0xf9, 0x1e, 0x09, 0xd2, 0x62, 0x4d, 0xa0, 0x77, 0x87, + 0x6f, 0x9e, 0x89, 0xa3, 0xcd, 0x91, 0xf6, 0x88, 0xf3, 0x0f, 0x5d, 0x3c, 0x1b, 0xb8, 0x70, 0x1d, + 0x3f, 0xea, 0x85, 0x6b, 0xee, 0xd9, 0xfd, 0xb1, 0x04, 0x72, 0xff, 0x8a, 0xfd, 0x9a, 0x7b, 0x37, + 0xb8, 0xcd, 0xc5, 0x87, 0x6c, 0x73, 0xa3, 0x6e, 0x51, 0x27, 0x46, 0xdd, 0xa2, 0x1e, 0x1c, 0xf5, + 0xf4, 0x7d, 0x8e, 0xfa, 0x43, 0x31, 0xc8, 0x86, 0xd2, 0xa3, 0xe8, 0x99, 0xc8, 0x8d, 0xec, 0xc5, + 0xc3, 0x52, 0xa9, 0xa1, 0x2b, 0xd9, 0x11, 0x31, 0xc5, 0x8e, 0x2e, 0xa6, 0xb7, 0xfe, 0xeb, 0xac, + 0xe1, 0x1f, 0xb0, 0x4e, 0x8f, 0xf8, 0x80, 0xf5, 0xaf, 0x4a, 0x90, 0xf6, 0xdd, 0xee, 0xa3, 0x1e, + 0x62, 0x1e, 0x87, 0x24, 0xf7, 0x2c, 0xd9, 0x29, 0x26, 0x2f, 0x0d, 0x4d, 0x2b, 0x97, 0x20, 0x2d, + 0xfe, 0x9e, 0x22, 0xdf, 0xd5, 0xfc, 0xf2, 0xf9, 0xe7, 0x21, 0x1b, 0x3a, 0x00, 0x26, 0xa6, 0x71, + 0xbd, 0xf6, 0x1e, 0x79, 0xaa, 0x94, 0xba, 0x7b, 0x6f, 0x31, 0xbe, 0x8e, 0xef, 0x90, 0xd5, 0xac, + 0xd6, 0xaa, 0xd7, 0x6b, 0xd5, 0x17, 0x65, 0xa9, 0x94, 0xbd, 0x7b, 0x6f, 0x31, 0xa5, 0x62, 0x9a, + 0x51, 0x3c, 0xff, 0x22, 0x14, 0xfb, 0x26, 0x26, 0xea, 0xb6, 0x20, 0x28, 0xac, 0x6c, 0x6d, 0xae, + 0xd6, 0xab, 0xe5, 0x66, 0x4d, 0x63, 0xf7, 0x76, 0xd1, 0x09, 0x98, 0x5d, 0xad, 0x5f, 0xbb, 0xde, + 0xd4, 0xaa, 0xab, 0xf5, 0xda, 0x7a, 0x53, 0x2b, 0x37, 0x9b, 0xe5, 0xea, 0x8b, 0x72, 0xec, 0xe2, + 0xbd, 0x2c, 0x24, 0xca, 0x95, 0x6a, 0x1d, 0x55, 0x21, 0x41, 0x53, 0x21, 0x87, 0xde, 0x00, 0x2b, + 0x1d, 0x9e, 0x1b, 0x46, 0x57, 0x61, 0x9a, 0x66, 0x49, 0xd0, 0xe1, 0x57, 0xc2, 0x4a, 0x63, 0x92, + 0xc5, 0xa4, 0x33, 0x74, 0x45, 0x1e, 0x7a, 0x47, 0xac, 0x74, 0x78, 0xee, 0x18, 0xad, 0x42, 0x4a, + 0x04, 0xc9, 0xe3, 0x2e, 0x6e, 0x95, 0xc6, 0x26, 0x74, 0xc9, 0xd0, 0x58, 0xb2, 0xe1, 0xf0, 0xeb, + 0x63, 0xa5, 0x31, 0x59, 0x65, 0x54, 0xf7, 0xbf, 0x67, 0x1a, 0x73, 0x23, 0xac, 0x34, 0x2e, 0x4f, + 0x8c, 0x54, 0xc8, 0x04, 0x69, 0x9c, 0xf1, 0x97, 0xe2, 0x4a, 0x13, 0x24, 0xcc, 0xd1, 0xfb, 0x20, + 0x1f, 0x0d, 0x75, 0x27, 0xbb, 0x75, 0x56, 0x9a, 0x30, 0x23, 0x4d, 0xf8, 0x47, 0xe3, 0xde, 0xc9, + 0x6e, 0xa1, 0x95, 0x26, 0x4c, 0x50, 0xa3, 0xd7, 0x60, 0x66, 0x30, 0x2e, 0x9d, 0xfc, 0x52, 0x5a, + 0xe9, 0x08, 0x29, 0x6b, 0xd4, 0x01, 0x34, 0x24, 0x9e, 0x3d, 0xc2, 0x1d, 0xb5, 0xd2, 0x51, 0x32, + 0xd8, 0xa8, 0x05, 0xc5, 0xfe, 0x20, 0x71, 0xd2, 0x3b, 0x6b, 0xa5, 0x89, 0xb3, 0xd9, 0xac, 0x95, + 0x68, 0x70, 0x39, 0xe9, 0x1d, 0xb6, 0xd2, 0xc4, 0xc9, 0x6d, 0xb4, 0x05, 0x10, 0x8a, 0x0f, 0x27, + 0xb8, 0xd3, 0x56, 0x9a, 0x24, 0xcd, 0x8d, 0xba, 0x30, 0x3b, 0x2c, 0x70, 0x3c, 0xca, 0x15, 0xb7, + 0xd2, 0x91, 0xb2, 0xdf, 0x44, 0x9f, 0xa3, 0x21, 0xe0, 0x64, 0x57, 0xde, 0x4a, 0x13, 0xa6, 0xc1, + 0x2b, 0xe5, 0x91, 0xf7, 0x9c, 0xcf, 0x1e, 0x7a, 0xcf, 0x39, 0xb8, 0xb9, 0xec, 0xdf, 0x6d, 0xfe, + 0xcc, 0x73, 0xf0, 0x0e, 0xfe, 0x82, 0x8e, 0xeb, 0xe9, 0xb7, 0x4c, 0x6b, 0xd7, 0x7f, 0x66, 0x89, + 0x97, 0xf9, 0x25, 0xe7, 0xe3, 0xfc, 0x95, 0x1e, 0x01, 0x1d, 0xf3, 0xd8, 0xd2, 0xc8, 0x17, 0x28, + 0xc7, 0x7d, 0x0f, 0x31, 0xfe, 0xfa, 0xf2, 0x21, 0x0f, 0x39, 0x8d, 0x79, 0x2e, 0x6a, 0xc8, 0x43, + 0x4f, 0xa5, 0x43, 0xdf, 0x18, 0x28, 0x1d, 0x76, 0xef, 0x9b, 0x78, 0xb1, 0x85, 0xeb, 0xa6, 0xeb, + 0xd9, 0x8e, 0x69, 0xe8, 0x6d, 0xba, 0xbd, 0x5c, 0x99, 0xf4, 0xab, 0xac, 0x4a, 0x86, 0xb8, 0x2b, + 0xfc, 0x2d, 0x28, 0xfe, 0xa5, 0xd0, 0x0a, 0x24, 0x6f, 0xeb, 0x6d, 0xf6, 0x4d, 0x54, 0xf8, 0x21, + 0xb8, 0x7e, 0x99, 0x87, 0xfc, 0xa8, 0x30, 0x17, 0x46, 0xab, 0x7c, 0x1f, 0xfd, 0x9e, 0xa4, 0xd3, + 0x31, 0x5d, 0xa2, 0x8b, 0x2a, 0x0d, 0xa5, 0x6f, 0x40, 0xc2, 0xd1, 0x3d, 0x1e, 0x60, 0x56, 0x2e, + 0x1f, 0xf9, 0x5d, 0x26, 0xd6, 0x02, 0xe5, 0x81, 0x5e, 0x82, 0x74, 0x47, 0xdf, 0xd7, 0x28, 0xbf, + 0xd8, 0xd7, 0xc4, 0x2f, 0xd5, 0xd1, 0xf7, 0x49, 0xff, 0xd0, 0xfb, 0xa0, 0x48, 0x58, 0x1a, 0x7b, + 0xba, 0xb5, 0x8b, 0x19, 0xe7, 0xf8, 0xd7, 0xc4, 0x39, 0xdf, 0xd1, 0xf7, 0xab, 0x94, 0x1b, 0xe1, + 0xcf, 0x9f, 0xbc, 0xfa, 0x15, 0x89, 0x67, 0x0d, 0xa8, 0x60, 0x90, 0x0e, 0xb2, 0xe1, 0x97, 0x68, + 0xa3, 0xe2, 0x88, 0xe3, 0xec, 0x28, 0xb9, 0xf7, 0x89, 0xb5, 0x92, 0x27, 0xdd, 0xfb, 0xdc, 0x1b, + 0x0b, 0x12, 0x6b, 0xb5, 0x68, 0x0c, 0x88, 0x3d, 0xcb, 0x92, 0x21, 0x1a, 0xf5, 0x61, 0x63, 0x63, + 0x7d, 0xd8, 0xbc, 0xf0, 0x61, 0x19, 0x43, 0x60, 0xd4, 0xa4, 0x9e, 0x8f, 0xe1, 0xd3, 0x12, 0x64, + 0x57, 0x42, 0xcf, 0x3a, 0xce, 0x43, 0xaa, 0x63, 0x5b, 0xe6, 0x2d, 0xec, 0xf8, 0x67, 0x54, 0xac, + 0x48, 0xfc, 0x4c, 0xf6, 0xd7, 0x01, 0xbd, 0x03, 0xf1, 0xba, 0x90, 0x28, 0x13, 0xaa, 0x3b, 0x78, + 0xdb, 0x35, 0x85, 0x9c, 0x55, 0x51, 0x44, 0x8f, 0x82, 0xec, 0x62, 0xa3, 0xe7, 0x98, 0xde, 0x81, + 0x66, 0xd8, 0x96, 0xa7, 0x1b, 0x1e, 0x8f, 0xc3, 0x8b, 0x02, 0x5e, 0x65, 0x60, 0xc2, 0xa4, 0x85, + 0x3d, 0xdd, 0x6c, 0xb3, 0x9b, 0x99, 0x19, 0x55, 0x14, 0x79, 0x57, 0xbf, 0x90, 0x0e, 0xc7, 0xa1, + 0x55, 0x90, 0xed, 0x2e, 0x76, 0x22, 0x17, 0x52, 0x98, 0x36, 0xce, 0xff, 0xc6, 0x67, 0x9f, 0x98, + 0xe3, 0x02, 0xe7, 0x97, 0x19, 0xd8, 0x5f, 0x31, 0x50, 0x8b, 0x82, 0x42, 0xdc, 0x54, 0x79, 0x25, + 0x72, 0x2a, 0xd5, 0xdb, 0x0e, 0x9e, 0x91, 0x99, 0x1b, 0x10, 0x6a, 0xd9, 0x3a, 0xa8, 0xcc, 0xff, + 0x7a, 0xc0, 0x3a, 0x88, 0x53, 0x5f, 0xc4, 0x07, 0xe1, 0x23, 0x2a, 0xca, 0x86, 0xb8, 0xf0, 0xaf, + 0xe9, 0x66, 0x5b, 0xfc, 0x21, 0x55, 0x95, 0x97, 0xd0, 0xb2, 0x9f, 0x5e, 0x4c, 0xd0, 0x78, 0x48, + 0x19, 0xa5, 0x1b, 0x15, 0xdb, 0x6a, 0x45, 0xf3, 0x88, 0xa8, 0x0a, 0x49, 0xcf, 0xbe, 0x85, 0x2d, + 0x2e, 0xa0, 0xa3, 0x3d, 0xad, 0xc6, 0x49, 0xd1, 0x37, 0x82, 0xdc, 0xc2, 0x6d, 0xbc, 0xcb, 0xbe, + 0x97, 0xdc, 0xd3, 0x1d, 0xcc, 0xbe, 0xd6, 0xbf, 0xaf, 0xe7, 0xd5, 0x8a, 0x3e, 0xab, 0x06, 0xe5, + 0x84, 0x36, 0xa3, 0x0f, 0x87, 0xa6, 0xf8, 0xe1, 0xf1, 0x88, 0x31, 0x86, 0x34, 0x2f, 0x6c, 0x79, + 0x22, 0x0f, 0x8d, 0x3e, 0x0a, 0x72, 0xcf, 0xda, 0xb6, 0x2d, 0xfa, 0xf7, 0x07, 0x79, 0x14, 0x95, + 0x66, 0x27, 0x95, 0x3e, 0x9c, 0x9f, 0x54, 0x6e, 0x42, 0x21, 0x40, 0xa5, 0x2b, 0x24, 0x73, 0xd4, + 0x15, 0x92, 0xf7, 0x19, 0x10, 0x14, 0xb4, 0x06, 0x10, 0xac, 0x41, 0x7a, 0x54, 0x96, 0x1d, 0x3d, + 0x63, 0xc1, 0x6a, 0x0e, 0x0f, 0x26, 0xc4, 0x00, 0xbd, 0x17, 0x66, 0x3b, 0xa6, 0xa5, 0xb9, 0xb8, + 0xbd, 0xa3, 0x71, 0xc9, 0x11, 0xbe, 0x59, 0x2a, 0xfe, 0x27, 0x8e, 0x30, 0x9b, 0xf3, 0x92, 0x3a, + 0xd3, 0x31, 0xad, 0x06, 0x6e, 0xef, 0xac, 0xf8, 0x7c, 0xd0, 0x3b, 0xe1, 0x54, 0x30, 0x7e, 0xdb, + 0xd2, 0xf6, 0xec, 0x76, 0x4b, 0x73, 0xf0, 0x8e, 0x66, 0xd0, 0x97, 0xfe, 0x72, 0x54, 0x6a, 0x27, + 0x7c, 0x94, 0x0d, 0xeb, 0xba, 0xdd, 0x6e, 0xa9, 0x78, 0xa7, 0x4a, 0xaa, 0xd1, 0x43, 0x10, 0x0c, + 0x5e, 0x33, 0x5b, 0xee, 0x7c, 0x7e, 0x31, 0x7e, 0x2e, 0xa1, 0xe6, 0x7c, 0x60, 0xbd, 0xe5, 0xa2, + 0x3b, 0x70, 0x2c, 0xc8, 0xf9, 0x12, 0xb8, 0x50, 0xa1, 0x02, 0x1d, 0x43, 0x75, 0x02, 0x15, 0xfa, + 0xa3, 0x37, 0x16, 0x1e, 0x38, 0xd0, 0x3b, 0xed, 0x65, 0x65, 0x28, 0x27, 0x45, 0x9d, 0xf5, 0xe1, + 0x74, 0x0d, 0x30, 0xc5, 0x7a, 0x3f, 0xe4, 0xdb, 0xe6, 0x07, 0x7a, 0xa6, 0xdf, 0x60, 0x91, 0x36, + 0x78, 0x65, 0xb2, 0x06, 0xe7, 0x58, 0x83, 0x11, 0x0e, 0x8a, 0x9a, 0x63, 0x65, 0xd6, 0xc2, 0x72, + 0xfa, 0xc3, 0x9f, 0x5c, 0x98, 0xfa, 0xe2, 0x27, 0x17, 0xa6, 0x94, 0xab, 0xf4, 0xc1, 0x2c, 0x6e, + 0x24, 0xb0, 0x8b, 0x2e, 0x43, 0x46, 0x17, 0x05, 0xf6, 0x39, 0xdc, 0x21, 0x46, 0x26, 0x40, 0x55, + 0x7e, 0x42, 0x82, 0xe4, 0xca, 0xcd, 0x4d, 0xdd, 0x74, 0x50, 0x0d, 0x66, 0x82, 0x55, 0x37, 0xa9, + 0xbd, 0x0a, 0x16, 0xaa, 0x30, 0x58, 0xeb, 0xa3, 0xee, 0xe1, 0x65, 0x2a, 0x67, 0x7e, 0xe3, 0xb3, + 0x4f, 0x3c, 0xc8, 0xd9, 0xdc, 0xec, 0xbb, 0x92, 0x27, 0xf8, 0xf5, 0x5f, 0xd5, 0x0b, 0x8d, 0xf9, + 0x06, 0xa4, 0x58, 0x57, 0x5d, 0xf4, 0x02, 0x4c, 0x77, 0xc9, 0x0f, 0x7e, 0xbc, 0x70, 0x7a, 0xe4, + 0xea, 0xa5, 0xf8, 0x61, 0x5d, 0x67, 0x74, 0xca, 0xb7, 0xc7, 0x00, 0x56, 0x6e, 0xde, 0x6c, 0x3a, + 0x66, 0xb7, 0x8d, 0xbd, 0xb7, 0x6a, 0xec, 0x5b, 0x61, 0xd5, 0x73, 0x1d, 0xe3, 0xe8, 0xe3, 0x0f, + 0x14, 0xab, 0xe1, 0x18, 0x43, 0xd9, 0xb6, 0x5c, 0xcf, 0x67, 0x1b, 0x3f, 0x3a, 0xdb, 0x15, 0xd7, + 0x1b, 0x94, 0xec, 0xcb, 0x90, 0x0d, 0x84, 0xe1, 0xa2, 0x3a, 0xa4, 0x3d, 0xfe, 0x9b, 0x0b, 0x58, + 0x19, 0x2d, 0x60, 0x41, 0x16, 0x16, 0xb2, 0x4f, 0xae, 0xfc, 0x10, 0x91, 0x73, 0xb0, 0xfc, 0xff, + 0x6c, 0xea, 0x18, 0xaa, 0x43, 0x92, 0x2f, 0xd9, 0xf8, 0x7d, 0x3f, 0x35, 0xca, 0x18, 0xd0, 0xdc, + 0x67, 0xc4, 0x66, 0xf0, 0xcf, 0x25, 0xf2, 0x11, 0x8b, 0x11, 0x92, 0xfd, 0x77, 0xc6, 0x60, 0x76, + 0x4b, 0xd8, 0xaf, 0x3f, 0xfb, 0xa2, 0xda, 0x82, 0x14, 0xb6, 0x3c, 0xc7, 0xf4, 0xcf, 0xd1, 0x9e, + 0x1c, 0xa5, 0x1a, 0x43, 0x06, 0x55, 0xb3, 0x3c, 0xe7, 0x20, 0xac, 0x28, 0x82, 0x57, 0x48, 0x1e, + 0x1f, 0x8b, 0xc3, 0xfc, 0x28, 0x52, 0x74, 0x16, 0x8a, 0x86, 0x83, 0x29, 0x20, 0xfa, 0x99, 0x6c, + 0x41, 0x80, 0xf9, 0x3e, 0xab, 0x02, 0xf1, 0x4c, 0x89, 0x0e, 0x12, 0xd4, 0xfb, 0x73, 0x45, 0x0b, + 0x01, 0x07, 0xba, 0xd3, 0x36, 0xa1, 0x28, 0xbe, 0xbb, 0xd9, 0xd6, 0xdb, 0xba, 0x65, 0x08, 0x97, + 0xfd, 0x48, 0x4e, 0x8e, 0xf8, 0x76, 0xa7, 0xc2, 0x58, 0xa0, 0x1a, 0xa4, 0x04, 0xb7, 0xc4, 0xd1, + 0xb9, 0x09, 0x5a, 0x74, 0x06, 0x72, 0xe1, 0xad, 0x91, 0xba, 0x5f, 0x09, 0x35, 0x1b, 0xda, 0x19, + 0xc7, 0xed, 0xbd, 0xc9, 0x43, 0xf7, 0x5e, 0xee, 0xe1, 0xfe, 0x10, 0xbd, 0x1e, 0xdf, 0xfa, 0xf3, + 0x3f, 0x2d, 0x9b, 0x00, 0x6c, 0x45, 0x13, 0x83, 0xcb, 0x67, 0xe6, 0x3e, 0xcc, 0x42, 0x86, 0x31, + 0x59, 0x71, 0xbd, 0xaf, 0xd7, 0x0c, 0xfd, 0x56, 0x0c, 0x72, 0xe1, 0x19, 0xfa, 0x0b, 0xb9, 0xb7, + 0xa1, 0xf5, 0xc0, 0x4c, 0xb1, 0x4f, 0x88, 0x1e, 0x1d, 0x65, 0xa6, 0x06, 0xb4, 0x79, 0x8c, 0x7d, + 0x7a, 0x33, 0x09, 0x49, 0x7e, 0xc7, 0x6f, 0x63, 0xc0, 0x99, 0x97, 0xc6, 0x3d, 0x82, 0x90, 0x17, + 0x8f, 0x20, 0x0c, 0xf5, 0xe5, 0x1f, 0x86, 0x42, 0x47, 0xdf, 0xd7, 0x22, 0x17, 0x07, 0xa5, 0x73, + 0x79, 0x1a, 0xdb, 0x07, 0xd7, 0xe4, 0xd1, 0x02, 0x64, 0x09, 0x5a, 0x60, 0x87, 0x09, 0x0e, 0x74, + 0xf4, 0xfd, 0x1a, 0x83, 0xa0, 0x27, 0x00, 0xed, 0xf9, 0x49, 0x1a, 0x2d, 0x10, 0x04, 0xc1, 0x9b, + 0x09, 0x6a, 0x04, 0xfa, 0x83, 0x00, 0xd4, 0xbb, 0x65, 0x8f, 0x70, 0xf3, 0x27, 0xce, 0x09, 0x64, + 0x85, 0x3e, 0xc4, 0xfd, 0xcd, 0x12, 0x8b, 0x09, 0xfa, 0x52, 0x07, 0x3c, 0x24, 0x6b, 0x4e, 0xe6, + 0xde, 0x96, 0x98, 0x7b, 0x3b, 0x84, 0x8f, 0x32, 0x2c, 0x9b, 0x41, 0x42, 0x87, 0x68, 0xea, 0x01, + 0xdd, 0x95, 0x06, 0x1c, 0xfb, 0x1d, 0xdd, 0xf0, 0x6c, 0x87, 0x86, 0x70, 0x99, 0xca, 0xcd, 0xaf, + 0xc5, 0xb1, 0x67, 0x9c, 0x86, 0x76, 0x25, 0xea, 0xeb, 0x5f, 0xa5, 0x88, 0xe8, 0x6f, 0x4a, 0x70, + 0x72, 0xb7, 0x6d, 0x6f, 0xeb, 0x6d, 0x4d, 0x78, 0xec, 0x4c, 0xaf, 0x34, 0x43, 0xef, 0xb2, 0x73, + 0xf2, 0xca, 0xab, 0x93, 0x75, 0x68, 0x91, 0x75, 0x68, 0x24, 0xb7, 0xa1, 0x9d, 0x3a, 0xce, 0xd0, + 0x57, 0x59, 0x74, 0xc0, 0x90, 0xab, 0x7a, 0x17, 0x7d, 0x42, 0x82, 0x07, 0x82, 0xa1, 0x0d, 0xe9, + 0x5a, 0x86, 0x76, 0xed, 0xbd, 0x93, 0x75, 0xed, 0xa1, 0x7e, 0x59, 0x4d, 0xd8, 0xbb, 0x93, 0x3e, + 0x45, 0x7f, 0x07, 0x97, 0xdf, 0x41, 0x8c, 0xd4, 0xdd, 0x2f, 0xfc, 0xd4, 0xf9, 0x53, 0xa1, 0xd7, + 0xcb, 0xf7, 0xfd, 0x44, 0x2c, 0x5b, 0x59, 0x24, 0x2c, 0x41, 0xc1, 0xde, 0xef, 0x7f, 0xe3, 0xb1, + 0x06, 0x10, 0x8a, 0x49, 0xa5, 0xc3, 0x63, 0xdd, 0x80, 0x3e, 0x12, 0xeb, 0x86, 0x2c, 0xe3, 0xbb, + 0x83, 0xad, 0x57, 0xbc, 0x5e, 0x32, 0xe4, 0x6d, 0xfd, 0xa5, 0xaa, 0x6d, 0x46, 0x58, 0x08, 0x22, + 0x6a, 0x70, 0xa7, 0x94, 0x7f, 0x2d, 0xc1, 0xc9, 0x01, 0x23, 0xe2, 0x77, 0xd9, 0x00, 0xe4, 0x84, + 0x2a, 0xe9, 0x62, 0x14, 0x97, 0x0a, 0xee, 0xcf, 0x26, 0xcd, 0x38, 0x03, 0xfb, 0xef, 0x5b, 0xe3, + 0x43, 0xf0, 0x0d, 0xe4, 0xd7, 0x24, 0x98, 0x0b, 0x77, 0xc0, 0x1f, 0x4a, 0x03, 0x72, 0xe1, 0xa6, + 0xf9, 0x20, 0xde, 0x31, 0xc9, 0x20, 0xc2, 0xfd, 0x8f, 0x30, 0x41, 0x37, 0x03, 0x43, 0xcd, 0x32, + 0xc0, 0x4f, 0x4d, 0x2c, 0x14, 0xd1, 0xb1, 0xa1, 0x06, 0x9b, 0xcd, 0xcd, 0xef, 0x49, 0x90, 0xd8, + 0xb4, 0xed, 0x36, 0xfa, 0x00, 0xcc, 0x58, 0xb6, 0x47, 0xd7, 0x3a, 0x6e, 0x69, 0x3c, 0x45, 0xc5, + 0x36, 0xc1, 0xda, 0xa1, 0xb2, 0xfa, 0xd2, 0x1b, 0x0b, 0x83, 0x94, 0xc3, 0xfe, 0xba, 0x41, 0xd1, + 0xb2, 0xbd, 0x0a, 0x45, 0x6a, 0xb2, 0x2c, 0xd6, 0x0e, 0xe4, 0xa3, 0xcd, 0xb1, 0x8d, 0xb2, 0x3c, + 0xae, 0xb9, 0xfc, 0xd8, 0xa6, 0x72, 0xdb, 0xa1, 0x76, 0xd8, 0x83, 0xe0, 0x7f, 0x40, 0x66, 0xee, + 0x15, 0x90, 0x6f, 0xf6, 0x5f, 0x56, 0xab, 0x41, 0x4a, 0x5c, 0x4e, 0x93, 0x26, 0xbc, 0xf7, 0x16, + 0x16, 0x27, 0xa7, 0x55, 0xbe, 0x55, 0x82, 0x59, 0xda, 0x9e, 0xf9, 0x3a, 0xa6, 0xc9, 0x08, 0x15, + 0x1b, 0xb6, 0xd3, 0x42, 0x05, 0x88, 0xf1, 0x17, 0xc8, 0x12, 0x6a, 0xcc, 0x6c, 0xa1, 0x39, 0x98, + 0xb6, 0xef, 0x58, 0xfc, 0xee, 0x4b, 0x46, 0x65, 0x05, 0xba, 0xaf, 0xd9, 0xad, 0x5e, 0x1b, 0x6b, + 0xba, 0xc1, 0x5c, 0x19, 0x96, 0x83, 0xcd, 0x33, 0x68, 0x99, 0x01, 0xd1, 0x03, 0xe1, 0x0b, 0x15, + 0x2c, 0x05, 0x1b, 0x00, 0xb8, 0x76, 0x56, 0x40, 0xd9, 0xc4, 0x6c, 0xc7, 0x0c, 0x77, 0xa7, 0xdc, + 0xf3, 0xf6, 0x6c, 0xc7, 0x7c, 0x9d, 0x6a, 0x07, 0xbd, 0xb5, 0xd4, 0x97, 0x0e, 0x09, 0x25, 0x3d, + 0xce, 0xff, 0xac, 0x04, 0x10, 0xe4, 0x2e, 0xd1, 0xe3, 0x70, 0xa2, 0xb2, 0xb1, 0xbe, 0xa2, 0x35, + 0x9a, 0xe5, 0xe6, 0x56, 0x23, 0xfa, 0x07, 0x7e, 0xc4, 0xb3, 0x60, 0x6e, 0x17, 0x1b, 0xe6, 0x8e, + 0x89, 0x5b, 0xe8, 0x11, 0x98, 0x8b, 0x62, 0x93, 0x52, 0x6d, 0x45, 0x96, 0x4a, 0xb9, 0xbb, 0xf7, + 0x16, 0xd3, 0x2c, 0x74, 0xc1, 0x2d, 0x74, 0x0e, 0x8e, 0x0d, 0xe2, 0xd5, 0xd7, 0xaf, 0xc9, 0xb1, + 0x52, 0xfe, 0xee, 0xbd, 0xc5, 0x8c, 0x1f, 0xe3, 0x20, 0x05, 0x50, 0x18, 0x93, 0xf3, 0x8b, 0x97, + 0xe0, 0xee, 0xbd, 0xc5, 0x24, 0x53, 0xa9, 0x52, 0xe2, 0xc3, 0x3f, 0x72, 0x7a, 0xea, 0xfc, 0x7b, + 0x01, 0xea, 0xd6, 0x8e, 0xa3, 0x1b, 0x74, 0xe9, 0x94, 0xe0, 0x78, 0x7d, 0xfd, 0xaa, 0x5a, 0xae, + 0x36, 0xeb, 0x1b, 0xeb, 0x7d, 0x7f, 0x97, 0x28, 0x5a, 0xb7, 0xb2, 0xb1, 0x55, 0x59, 0xad, 0x69, + 0x8d, 0xfa, 0xb5, 0x75, 0x76, 0x07, 0x22, 0x52, 0xf7, 0x9e, 0xf5, 0x66, 0x7d, 0xad, 0x26, 0xc7, + 0xce, 0xff, 0x9a, 0x04, 0x27, 0x22, 0x52, 0x5d, 0xb5, 0x8d, 0x5b, 0x5c, 0x48, 0xe7, 0xe1, 0x91, + 0xe6, 0xc6, 0x8b, 0xb5, 0xf5, 0xfa, 0xab, 0x35, 0xad, 0x71, 0xbd, 0xac, 0xd6, 0x34, 0xfa, 0x68, + 0xf6, 0x30, 0x99, 0xa1, 0x87, 0xe1, 0xcc, 0x21, 0xb8, 0xe4, 0x37, 0x91, 0x17, 0x3a, 0x0b, 0x0f, + 0x1d, 0xca, 0x92, 0x23, 0xc6, 0xd0, 0xe3, 0x70, 0x6e, 0x0c, 0x3f, 0xad, 0xf6, 0xf2, 0x66, 0x9d, + 0xfe, 0xe9, 0xa5, 0x38, 0x13, 0x55, 0xe5, 0xea, 0xc8, 0xf3, 0xc2, 0xc7, 0x0f, 0xfd, 0x43, 0x1a, + 0xc1, 0x56, 0x14, 0x39, 0x34, 0xfc, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xa7, 0xce, 0x40, 0xa3, + 0xb7, 0xa5, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) @@ -2328,6 +2540,15 @@ func (this *Params) Equal(that interface{}) bool { if !this.MinCommissionRate.Equal(that1.MinCommissionRate) { return false } + if !this.ValidatorBondFactor.Equal(that1.ValidatorBondFactor) { + return false + } + if !this.GlobalLiquidStakingCap.Equal(that1.GlobalLiquidStakingCap) { + return false + } + if !this.ValidatorLiquidStakingCap.Equal(that1.ValidatorLiquidStakingCap) { + return false + } return true } func (this *RedelegationEntryResponse) Equal(that interface{}) bool { @@ -2384,6 +2605,39 @@ func (this *Pool) Equal(that interface{}) bool { } return true } +func (this *TokenizeShareRecord) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*TokenizeShareRecord) + if !ok { + that2, ok := that.(TokenizeShareRecord) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.Id != that1.Id { + return false + } + if this.Owner != that1.Owner { + return false + } + if this.ModuleAccount != that1.ModuleAccount { + return false + } + if this.Validator != that1.Validator { + return false + } + return true +} func (m *HistoricalInfo) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -2603,6 +2857,26 @@ func (m *Validator) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + { + size := m.LiquidShares.Size() + i -= size + if _, err := m.LiquidShares.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintStaking(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x7a + { + size := m.ValidatorBondShares.Size() + i -= size + if _, err := m.ValidatorBondShares.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintStaking(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x72 if len(m.UnbondingIds) > 0 { dAtA5 := make([]byte, len(m.UnbondingIds)*10) var j4 int @@ -2933,6 +3207,16 @@ func (m *Delegation) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.ValidatorBond { + i-- + if m.ValidatorBond { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } { size := m.Shares.Size() i -= size @@ -3221,6 +3505,36 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + { + size := m.ValidatorLiquidStakingCap.Size() + i -= size + if _, err := m.ValidatorLiquidStakingCap.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintStaking(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + { + size := m.GlobalLiquidStakingCap.Size() + i -= size + if _, err := m.GlobalLiquidStakingCap.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintStaking(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + { + size := m.ValidatorBondFactor.Size() + i -= size + if _, err := m.ValidatorBondFactor.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintStaking(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a { size := m.MinCommissionRate.Size() i -= size @@ -3477,6 +3791,87 @@ func (m *ValidatorUpdates) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *TokenizeShareRecord) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *TokenizeShareRecord) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TokenizeShareRecord) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Validator) > 0 { + i -= len(m.Validator) + copy(dAtA[i:], m.Validator) + i = encodeVarintStaking(dAtA, i, uint64(len(m.Validator))) + i-- + dAtA[i] = 0x22 + } + if len(m.ModuleAccount) > 0 { + i -= len(m.ModuleAccount) + copy(dAtA[i:], m.ModuleAccount) + i = encodeVarintStaking(dAtA, i, uint64(len(m.ModuleAccount))) + i-- + dAtA[i] = 0x1a + } + if len(m.Owner) > 0 { + i -= len(m.Owner) + copy(dAtA[i:], m.Owner) + i = encodeVarintStaking(dAtA, i, uint64(len(m.Owner))) + i-- + dAtA[i] = 0x12 + } + if m.Id != 0 { + i = encodeVarintStaking(dAtA, i, uint64(m.Id)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *PendingTokenizeShareAuthorizations) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PendingTokenizeShareAuthorizations) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PendingTokenizeShareAuthorizations) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Addresses) > 0 { + for iNdEx := len(m.Addresses) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Addresses[iNdEx]) + copy(dAtA[i:], m.Addresses[iNdEx]) + i = encodeVarintStaking(dAtA, i, uint64(len(m.Addresses[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + func encodeVarintStaking(dAtA []byte, offset int, v uint64) int { offset -= sovStaking(v) base := offset @@ -3607,6 +4002,10 @@ func (m *Validator) Size() (n int) { } n += 1 + sovStaking(uint64(l)) + l } + l = m.ValidatorBondShares.Size() + n += 1 + l + sovStaking(uint64(l)) + l = m.LiquidShares.Size() + n += 1 + l + sovStaking(uint64(l)) return n } @@ -3709,6 +4108,9 @@ func (m *Delegation) Size() (n int) { } l = m.Shares.Size() n += 1 + l + sovStaking(uint64(l)) + if m.ValidatorBond { + n += 2 + } return n } @@ -3833,6 +4235,12 @@ func (m *Params) Size() (n int) { } l = m.MinCommissionRate.Size() n += 1 + l + sovStaking(uint64(l)) + l = m.ValidatorBondFactor.Size() + n += 1 + l + sovStaking(uint64(l)) + l = m.GlobalLiquidStakingCap.Size() + n += 1 + l + sovStaking(uint64(l)) + l = m.ValidatorLiquidStakingCap.Size() + n += 1 + l + sovStaking(uint64(l)) return n } @@ -3907,20 +4315,59 @@ func (m *ValidatorUpdates) Size() (n int) { return n } -func sovStaking(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozStaking(x uint64) (n int) { - return sovStaking(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +func (m *TokenizeShareRecord) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Id != 0 { + n += 1 + sovStaking(uint64(m.Id)) + } + l = len(m.Owner) + if l > 0 { + n += 1 + l + sovStaking(uint64(l)) + } + l = len(m.ModuleAccount) + if l > 0 { + n += 1 + l + sovStaking(uint64(l)) + } + l = len(m.Validator) + if l > 0 { + n += 1 + l + sovStaking(uint64(l)) + } + return n } -func (m *HistoricalInfo) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { + +func (m *PendingTokenizeShareAuthorizations) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Addresses) > 0 { + for _, s := range m.Addresses { + l = len(s) + n += 1 + l + sovStaking(uint64(l)) + } + } + return n +} + +func sovStaking(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozStaking(x uint64) (n int) { + return sovStaking(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *HistoricalInfo) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { return ErrIntOverflowStaking } if iNdEx >= l { @@ -4959,6 +5406,74 @@ func (m *Validator) Unmarshal(dAtA []byte) error { } else { return fmt.Errorf("proto: wrong wireType = %d for field UnbondingIds", wireType) } + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorBondShares", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaking + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthStaking + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ValidatorBondShares.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LiquidShares", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaking + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthStaking + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LiquidShares.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipStaking(dAtA[iNdEx:]) @@ -5617,6 +6132,26 @@ func (m *Delegation) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorBond", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaking + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.ValidatorBond = bool(v != 0) default: iNdEx = preIndex skippy, err := skipStaking(dAtA[iNdEx:]) @@ -6567,6 +7102,108 @@ func (m *Params) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorBondFactor", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaking + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthStaking + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ValidatorBondFactor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GlobalLiquidStakingCap", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaking + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthStaking + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.GlobalLiquidStakingCap.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorLiquidStakingCap", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaking + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthStaking + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ValidatorLiquidStakingCap.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipStaking(dAtA[iNdEx:]) @@ -7140,6 +7777,253 @@ func (m *ValidatorUpdates) Unmarshal(dAtA []byte) error { } return nil } +func (m *TokenizeShareRecord) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaking + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TokenizeShareRecord: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TokenizeShareRecord: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + m.Id = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaking + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Id |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Owner", 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.Owner = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ModuleAccount", 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.ModuleAccount = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Validator", 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.Validator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipStaking(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthStaking + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PendingTokenizeShareAuthorizations) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaking + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PendingTokenizeShareAuthorizations: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PendingTokenizeShareAuthorizations: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Addresses", 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.Addresses = append(m.Addresses, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipStaking(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthStaking + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipStaking(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/staking/types/tokenize_share_record.go b/x/staking/types/tokenize_share_record.go new file mode 100644 index 000000000000..01a64a1f69ac --- /dev/null +++ b/x/staking/types/tokenize_share_record.go @@ -0,0 +1,22 @@ +package types + +import ( + fmt "fmt" + "strconv" + "strings" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/address" +) + +func (r TokenizeShareRecord) GetModuleAddress() sdk.AccAddress { + // NOTE: The module name is intentionally hard coded so that, if this + // function were to move to a different module in future SDK version, + // it would not break all the address lookups + moduleName := "lsm" + return address.Module(moduleName, []byte(r.ModuleAccount)) +} + +func (r TokenizeShareRecord) GetShareTokenDenom() string { + return fmt.Sprintf("%s/%s", strings.ToLower(r.Validator), strconv.Itoa(int(r.Id))) +} diff --git a/x/staking/types/tx.pb.go b/x/staking/types/tx.pb.go index 8e02e3e5b0fe..e589429a7f3f 100644 --- a/x/staking/types/tx.pb.go +++ b/x/staking/types/tx.pb.go @@ -40,9 +40,10 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // MsgCreateValidator defines a SDK message for creating a new validator. type MsgCreateValidator struct { - Description Description `protobuf:"bytes,1,opt,name=description,proto3" json:"description"` - Commission CommissionRates `protobuf:"bytes,2,opt,name=commission,proto3" json:"commission"` - MinSelfDelegation cosmossdk_io_math.Int `protobuf:"bytes,3,opt,name=min_self_delegation,json=minSelfDelegation,proto3,customtype=cosmossdk.io/math.Int" json:"min_self_delegation"` + Description Description `protobuf:"bytes,1,opt,name=description,proto3" json:"description"` + Commission CommissionRates `protobuf:"bytes,2,opt,name=commission,proto3" json:"commission"` + // Deprecated: This field has been deprecated with LSM in favor of the validator bond + MinSelfDelegation cosmossdk_io_math.Int `protobuf:"bytes,3,opt,name=min_self_delegation,json=minSelfDelegation,proto3,customtype=cosmossdk.io/math.Int" json:"min_self_delegation"` // Deprecated: Do not use. // Deprecated: Use of Delegator Address in MsgCreateValidator is deprecated. // The validator address bytes and delegator address bytes refer to the same account while creating validator (defer // only in bech32 notation). @@ -130,8 +131,9 @@ type MsgEditValidator struct { // it's not mandatory to update. If not updated, the deserialized rate will be // zero with no way to distinguish if an update was intended. // REF: #2373 - CommissionRate *cosmossdk_io_math.LegacyDec `protobuf:"bytes,3,opt,name=commission_rate,json=commissionRate,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"commission_rate,omitempty"` - MinSelfDelegation *cosmossdk_io_math.Int `protobuf:"bytes,4,opt,name=min_self_delegation,json=minSelfDelegation,proto3,customtype=cosmossdk.io/math.Int" json:"min_self_delegation,omitempty"` + CommissionRate *cosmossdk_io_math.LegacyDec `protobuf:"bytes,3,opt,name=commission_rate,json=commissionRate,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"commission_rate,omitempty"` + // Deprecated: This field has been deprecated with LSM in favor of the validator bond + MinSelfDelegation cosmossdk_io_math.Int `protobuf:"bytes,4,opt,name=min_self_delegation,json=minSelfDelegation,proto3,customtype=cosmossdk.io/math.Int" json:"min_self_delegation"` // Deprecated: Do not use. } func (m *MsgEditValidator) Reset() { *m = MsgEditValidator{} } @@ -649,1244 +651,3940 @@ func (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo -func init() { - proto.RegisterType((*MsgCreateValidator)(nil), "cosmos.staking.v1beta1.MsgCreateValidator") - proto.RegisterType((*MsgCreateValidatorResponse)(nil), "cosmos.staking.v1beta1.MsgCreateValidatorResponse") - proto.RegisterType((*MsgEditValidator)(nil), "cosmos.staking.v1beta1.MsgEditValidator") - proto.RegisterType((*MsgEditValidatorResponse)(nil), "cosmos.staking.v1beta1.MsgEditValidatorResponse") - proto.RegisterType((*MsgDelegate)(nil), "cosmos.staking.v1beta1.MsgDelegate") - proto.RegisterType((*MsgDelegateResponse)(nil), "cosmos.staking.v1beta1.MsgDelegateResponse") - proto.RegisterType((*MsgBeginRedelegate)(nil), "cosmos.staking.v1beta1.MsgBeginRedelegate") - proto.RegisterType((*MsgBeginRedelegateResponse)(nil), "cosmos.staking.v1beta1.MsgBeginRedelegateResponse") - proto.RegisterType((*MsgUndelegate)(nil), "cosmos.staking.v1beta1.MsgUndelegate") - proto.RegisterType((*MsgUndelegateResponse)(nil), "cosmos.staking.v1beta1.MsgUndelegateResponse") - proto.RegisterType((*MsgCancelUnbondingDelegation)(nil), "cosmos.staking.v1beta1.MsgCancelUnbondingDelegation") - proto.RegisterType((*MsgCancelUnbondingDelegationResponse)(nil), "cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse") - proto.RegisterType((*MsgUpdateParams)(nil), "cosmos.staking.v1beta1.MsgUpdateParams") - proto.RegisterType((*MsgUpdateParamsResponse)(nil), "cosmos.staking.v1beta1.MsgUpdateParamsResponse") +// MsgUnbondValidator defines a method for performing the status transition for +// a validator from bonded to unbonded +// This allows a validator to stop their services and jail themselves without +// experiencing a slash +type MsgUnbondValidator struct { + ValidatorAddress string `protobuf:"bytes,1,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty" yaml:"address"` } -func init() { proto.RegisterFile("cosmos/staking/v1beta1/tx.proto", fileDescriptor_0926ef28816b35ab) } - -var fileDescriptor_0926ef28816b35ab = []byte{ - // 1142 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x57, 0x4f, 0x6f, 0xdc, 0x44, - 0x14, 0x5f, 0xef, 0x36, 0x0b, 0x99, 0x90, 0x7f, 0x4e, 0xd2, 0x6e, 0xdc, 0xb2, 0x5b, 0xdc, 0x40, - 0xa2, 0xc0, 0xda, 0x6d, 0x40, 0x20, 0x96, 0x0a, 0x35, 0xdb, 0xb4, 0x50, 0x60, 0x51, 0xe4, 0x90, - 0x22, 0x21, 0xa4, 0x65, 0xd6, 0x9e, 0x78, 0xad, 0x5d, 0x7b, 0x5c, 0xcf, 0x6c, 0xd4, 0xbd, 0x21, - 0x4e, 0xc0, 0x85, 0x7e, 0x81, 0x4a, 0xe5, 0x80, 0x04, 0xb7, 0x1c, 0xf2, 0x15, 0x90, 0x2a, 0x4e, - 0x55, 0x4e, 0xa8, 0x87, 0x80, 0x92, 0x43, 0xfa, 0x1d, 0xb8, 0x20, 0xdb, 0x63, 0xaf, 0xed, 0xfd, - 0x9b, 0x40, 0x2f, 0xbd, 0x24, 0xce, 0xcc, 0xef, 0xfd, 0xe6, 0xbd, 0xf7, 0x7b, 0x6f, 0xe6, 0x05, - 0x14, 0x54, 0x4c, 0x4c, 0x4c, 0x64, 0x42, 0x61, 0xc3, 0xb0, 0x74, 0x79, 0xf7, 0x5a, 0x0d, 0x51, - 0x78, 0x4d, 0xa6, 0xf7, 0x25, 0xdb, 0xc1, 0x14, 0xf3, 0xe7, 0x7d, 0x80, 0xc4, 0x00, 0x12, 0x03, - 0x08, 0x8b, 0x3a, 0xc6, 0x7a, 0x13, 0xc9, 0x1e, 0xaa, 0xd6, 0xda, 0x91, 0xa1, 0xd5, 0xf6, 0x4d, - 0x84, 0x42, 0x72, 0x8b, 0x1a, 0x26, 0x22, 0x14, 0x9a, 0x36, 0x03, 0xcc, 0xeb, 0x58, 0xc7, 0xde, - 0xa7, 0xec, 0x7e, 0xb1, 0xd5, 0x45, 0xff, 0xa4, 0xaa, 0xbf, 0xc1, 0x8e, 0xf5, 0xb7, 0xf2, 0xcc, - 0xcb, 0x1a, 0x24, 0x28, 0x74, 0x51, 0xc5, 0x86, 0xc5, 0xf6, 0x97, 0xfa, 0x44, 0x11, 0x38, 0xed, - 0xa3, 0x2e, 0x30, 0x94, 0x49, 0x5c, 0x84, 0xfb, 0x8b, 0x6d, 0xcc, 0x42, 0xd3, 0xb0, 0xb0, 0xec, - 0xfd, 0xf4, 0x97, 0xc4, 0x7f, 0xce, 0x01, 0xbe, 0x42, 0xf4, 0x9b, 0x0e, 0x82, 0x14, 0xdd, 0x85, - 0x4d, 0x43, 0x83, 0x14, 0x3b, 0xfc, 0x26, 0x98, 0xd0, 0x10, 0x51, 0x1d, 0xc3, 0xa6, 0x06, 0xb6, - 0x72, 0xdc, 0x65, 0x6e, 0x65, 0x62, 0xed, 0x8a, 0xd4, 0x3b, 0x47, 0xd2, 0x46, 0x07, 0x5a, 0x1e, - 0x7f, 0x7c, 0x58, 0x48, 0xfd, 0x7a, 0xb2, 0xb7, 0xca, 0x29, 0x51, 0x0a, 0x5e, 0x01, 0x40, 0xc5, - 0xa6, 0x69, 0x10, 0xe2, 0x12, 0xa6, 0x3d, 0xc2, 0xe5, 0x7e, 0x84, 0x37, 0x43, 0xa4, 0x02, 0x29, - 0x22, 0x51, 0xd2, 0x08, 0x0b, 0xff, 0x0d, 0x98, 0x33, 0x0d, 0xab, 0x4a, 0x50, 0x73, 0xa7, 0xaa, - 0xa1, 0x26, 0xd2, 0xa1, 0xe7, 0x6d, 0xe6, 0x32, 0xb7, 0x32, 0x5e, 0xbe, 0xea, 0xda, 0x3c, 0x3d, - 0x2c, 0x2c, 0xf8, 0x67, 0x10, 0xad, 0x21, 0x19, 0x58, 0x36, 0x21, 0xad, 0x4b, 0x77, 0x2c, 0x7a, - 0xb0, 0x5f, 0x04, 0xec, 0xf0, 0x3b, 0x16, 0xf5, 0xa9, 0x67, 0x4d, 0xc3, 0xda, 0x42, 0xcd, 0x9d, - 0x8d, 0x90, 0x8a, 0xff, 0x08, 0xcc, 0x32, 0x62, 0xec, 0x54, 0xa1, 0xa6, 0x39, 0x88, 0x90, 0xdc, - 0x39, 0x8f, 0x5f, 0x38, 0xd8, 0x2f, 0xce, 0x33, 0x8a, 0x75, 0x7f, 0x67, 0x8b, 0x3a, 0x86, 0xa5, - 0xe7, 0x38, 0x65, 0x26, 0x34, 0x62, 0x3b, 0xfc, 0xe7, 0x60, 0x76, 0x37, 0xc8, 0x6e, 0x48, 0x34, - 0xe6, 0x11, 0xbd, 0x76, 0xb0, 0x5f, 0x7c, 0x95, 0x11, 0x85, 0x0a, 0xc4, 0x18, 0x95, 0x99, 0xdd, - 0xc4, 0x3a, 0x7f, 0x1b, 0x64, 0xed, 0x56, 0xad, 0x81, 0xda, 0xb9, 0xac, 0x97, 0xca, 0x79, 0xc9, - 0x2f, 0x46, 0x29, 0x28, 0x46, 0x69, 0xdd, 0x6a, 0x97, 0x73, 0x7f, 0x74, 0x7c, 0x54, 0x9d, 0xb6, - 0x4d, 0xb1, 0xb4, 0xd9, 0xaa, 0x7d, 0x8a, 0xda, 0x0a, 0xb3, 0xe6, 0x4b, 0x60, 0x6c, 0x17, 0x36, - 0x5b, 0x28, 0xf7, 0x92, 0x47, 0xb3, 0x18, 0x28, 0xe2, 0x56, 0x60, 0x44, 0x0e, 0x23, 0x26, 0xac, - 0x6f, 0x52, 0xba, 0xf1, 0xfd, 0xa3, 0x42, 0xea, 0xd9, 0xa3, 0x42, 0xea, 0xbb, 0x93, 0xbd, 0xd5, - 0xee, 0xf0, 0x7e, 0x3c, 0xd9, 0x5b, 0x65, 0x71, 0x15, 0x89, 0xd6, 0x90, 0xbb, 0xcb, 0x4c, 0xbc, - 0x04, 0x84, 0xee, 0x55, 0x05, 0x11, 0x1b, 0x5b, 0x04, 0x89, 0xbf, 0x64, 0xc0, 0x4c, 0x85, 0xe8, - 0xb7, 0x34, 0x83, 0x3e, 0xcf, 0xca, 0xec, 0x29, 0x4d, 0xfa, 0xec, 0xd2, 0xdc, 0x05, 0xd3, 0x9d, - 0x1a, 0xad, 0x3a, 0x90, 0x22, 0x56, 0x91, 0xc5, 0xa7, 0x87, 0x85, 0x8b, 0xdd, 0xd5, 0xf8, 0x19, - 0xd2, 0xa1, 0xda, 0xde, 0x40, 0x6a, 0xa4, 0x26, 0x37, 0x90, 0xaa, 0x4c, 0xa9, 0xb1, 0x2e, 0xe0, - 0xbf, 0xec, 0x5d, 0xed, 0x7e, 0x35, 0x2e, 0x8f, 0x58, 0xe9, 0x3d, 0x8a, 0xbc, 0xf4, 0xe1, 0x70, - 0x1d, 0x2f, 0xc6, 0x75, 0x8c, 0x49, 0x22, 0x0a, 0x20, 0x97, 0x5c, 0x0b, 0x35, 0x7c, 0x98, 0x06, - 0x13, 0x15, 0xa2, 0xb3, 0xd3, 0x10, 0x7f, 0xab, 0x57, 0x43, 0x71, 0x5e, 0x08, 0xb9, 0x7e, 0x0d, - 0x35, 0x6a, 0x3b, 0xfd, 0x07, 0xcd, 0xae, 0x83, 0x2c, 0x34, 0x71, 0xcb, 0xa2, 0x9e, 0x54, 0xa3, - 0xf6, 0x01, 0xb3, 0x29, 0xbd, 0x1f, 0x4b, 0x60, 0x57, 0x7c, 0x6e, 0x02, 0xcf, 0xc7, 0x13, 0x18, - 0xe4, 0x43, 0x5c, 0x00, 0x73, 0x91, 0x3f, 0xc3, 0xb4, 0xfd, 0x90, 0xf1, 0xae, 0xe5, 0x32, 0xd2, - 0x0d, 0x4b, 0x41, 0xda, 0xff, 0x9c, 0xbd, 0x6d, 0xb0, 0xd0, 0xc9, 0x1e, 0x71, 0xd4, 0xd3, 0x67, - 0x70, 0x2e, 0xb4, 0xdf, 0x72, 0xd4, 0x9e, 0xb4, 0x1a, 0xa1, 0x21, 0x6d, 0xe6, 0xf4, 0xb4, 0x1b, - 0x84, 0x76, 0x6b, 0x73, 0xee, 0x0c, 0xda, 0xdc, 0x18, 0xae, 0x4d, 0xe2, 0x92, 0x4a, 0x24, 0x5d, - 0xb4, 0xbd, 0x4b, 0x2a, 0xb1, 0x1a, 0x28, 0xc5, 0x2b, 0x5e, 0xb7, 0xdb, 0x4d, 0xe4, 0xb6, 0x52, - 0xd5, 0x9d, 0x00, 0xd8, 0x9d, 0x24, 0x74, 0xdd, 0xc8, 0x5f, 0x04, 0xe3, 0x41, 0x79, 0xd2, 0xf5, - 0xf3, 0xc1, 0x5f, 0x05, 0xce, 0xf7, 0x75, 0xaa, 0xc3, 0xe0, 0x62, 0xc4, 0x9f, 0xd3, 0x60, 0xb2, - 0x42, 0xf4, 0x6d, 0x4b, 0x7b, 0xa1, 0xdb, 0xe6, 0x83, 0xe1, 0xd2, 0xe4, 0xe2, 0xd2, 0x74, 0x32, - 0x22, 0xfe, 0xc6, 0x81, 0x85, 0xd8, 0xca, 0xf3, 0x54, 0x24, 0x12, 0x68, 0xfa, 0xf4, 0x81, 0x8a, - 0xcf, 0xd2, 0xe0, 0x92, 0xfb, 0xce, 0x41, 0x4b, 0x45, 0xcd, 0x6d, 0xab, 0x86, 0x2d, 0xcd, 0xb0, - 0xf4, 0xc8, 0x98, 0xf1, 0x22, 0xca, 0xcb, 0x2f, 0x83, 0x69, 0xd5, 0x7d, 0xd9, 0x5d, 0x15, 0xea, - 0xc8, 0xd0, 0xeb, 0x7e, 0x03, 0x67, 0x94, 0xa9, 0x60, 0xf9, 0x63, 0x6f, 0xb5, 0xf4, 0xc9, 0xf0, - 0x3a, 0x58, 0x4e, 0xcc, 0x11, 0xfd, 0x32, 0x29, 0xbe, 0x01, 0x96, 0x06, 0xed, 0x87, 0x17, 0xec, - 0xef, 0x1c, 0x98, 0x76, 0xcb, 0xc7, 0xd6, 0x20, 0x45, 0x9b, 0xd0, 0x81, 0x26, 0xe1, 0xdf, 0x05, - 0xe3, 0xb0, 0x45, 0xeb, 0xd8, 0x31, 0x68, 0x7b, 0x68, 0xf6, 0x3b, 0x50, 0x7e, 0x1d, 0x64, 0x6d, - 0x8f, 0x81, 0x15, 0x47, 0xbe, 0xdf, 0x34, 0xe2, 0x9f, 0x13, 0xcb, 0x95, 0x6f, 0x58, 0x7a, 0xcf, - 0x0d, 0xbd, 0x43, 0xe9, 0x86, 0xbc, 0x14, 0x09, 0xf9, 0x7e, 0x38, 0xf1, 0x27, 0x7c, 0x16, 0x17, - 0xc1, 0x85, 0xc4, 0x52, 0x10, 0xe2, 0xda, 0xc3, 0x2c, 0xc8, 0x54, 0x88, 0xce, 0xdf, 0x03, 0xd3, - 0xc9, 0xf1, 0x7e, 0xb5, 0x9f, 0x87, 0xdd, 0xd3, 0x98, 0xb0, 0x36, 0x3a, 0x36, 0x6c, 0xc1, 0x06, - 0x98, 0x8c, 0x4f, 0x6d, 0x2b, 0x03, 0x48, 0x62, 0x48, 0xe1, 0xea, 0xa8, 0xc8, 0xf0, 0xb0, 0xaf, - 0xc1, 0xcb, 0xe1, 0x78, 0x71, 0x65, 0x80, 0x75, 0x00, 0x12, 0xde, 0x1c, 0x01, 0x14, 0xb2, 0xdf, - 0x03, 0xd3, 0xc9, 0x57, 0x78, 0x50, 0xf6, 0x12, 0xd8, 0x81, 0xd9, 0xeb, 0xf7, 0xa4, 0xd4, 0x00, - 0x88, 0x5c, 0xfd, 0xaf, 0x0f, 0x60, 0xe8, 0xc0, 0x84, 0xe2, 0x48, 0xb0, 0xf0, 0x8c, 0x9f, 0x38, - 0xb0, 0xd8, 0xff, 0x3e, 0x7a, 0x67, 0x90, 0xe6, 0xfd, 0xac, 0x84, 0xeb, 0x67, 0xb1, 0x0a, 0x3d, - 0xaa, 0x83, 0x57, 0x62, 0xdd, 0xb8, 0x3c, 0x28, 0xa0, 0x08, 0x50, 0x90, 0x47, 0x04, 0x06, 0x27, - 0x09, 0x63, 0xdf, 0xba, 0xbd, 0x57, 0xbe, 0xfd, 0xf8, 0x28, 0xcf, 0x3d, 0x39, 0xca, 0x73, 0x7f, - 0x1f, 0xe5, 0xb9, 0x07, 0xc7, 0xf9, 0xd4, 0x93, 0xe3, 0x7c, 0xea, 0xcf, 0xe3, 0x7c, 0xea, 0xab, - 0xb7, 0x74, 0x83, 0xd6, 0x5b, 0x35, 0x49, 0xc5, 0x26, 0xfb, 0xff, 0x5c, 0xee, 0xd9, 0x8c, 0xb4, - 0x6d, 0x23, 0x52, 0xcb, 0x7a, 0xcf, 0xc9, 0xdb, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0xd6, 0x91, - 0x57, 0x78, 0x63, 0x10, 0x00, 0x00, +func (m *MsgUnbondValidator) Reset() { *m = MsgUnbondValidator{} } +func (m *MsgUnbondValidator) String() string { return proto.CompactTextString(m) } +func (*MsgUnbondValidator) ProtoMessage() {} +func (*MsgUnbondValidator) Descriptor() ([]byte, []int) { + return fileDescriptor_0926ef28816b35ab, []int{14} +} +func (m *MsgUnbondValidator) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUnbondValidator) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUnbondValidator.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUnbondValidator) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUnbondValidator.Merge(m, src) +} +func (m *MsgUnbondValidator) XXX_Size() int { + return m.Size() +} +func (m *MsgUnbondValidator) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUnbondValidator.DiscardUnknown(m) } -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 +var xxx_messageInfo_MsgUnbondValidator proto.InternalMessageInfo -// MsgClient is the client API for Msg service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type MsgClient interface { - // CreateValidator defines a method for creating a new validator. - CreateValidator(ctx context.Context, in *MsgCreateValidator, opts ...grpc.CallOption) (*MsgCreateValidatorResponse, error) - // EditValidator defines a method for editing an existing validator. - EditValidator(ctx context.Context, in *MsgEditValidator, opts ...grpc.CallOption) (*MsgEditValidatorResponse, error) - // Delegate defines a method for performing a delegation of coins - // from a delegator to a validator. - Delegate(ctx context.Context, in *MsgDelegate, opts ...grpc.CallOption) (*MsgDelegateResponse, error) - // BeginRedelegate defines a method for performing a redelegation - // of coins from a delegator and source validator to a destination validator. - BeginRedelegate(ctx context.Context, in *MsgBeginRedelegate, opts ...grpc.CallOption) (*MsgBeginRedelegateResponse, error) - // Undelegate defines a method for performing an undelegation from a - // delegate and a validator. - Undelegate(ctx context.Context, in *MsgUndelegate, opts ...grpc.CallOption) (*MsgUndelegateResponse, error) - // CancelUnbondingDelegation defines a method for performing canceling the unbonding delegation - // and delegate back to previous validator. - // - // Since: cosmos-sdk 0.46 - CancelUnbondingDelegation(ctx context.Context, in *MsgCancelUnbondingDelegation, opts ...grpc.CallOption) (*MsgCancelUnbondingDelegationResponse, error) - // UpdateParams defines an operation for updating the x/staking module - // parameters. - // Since: cosmos-sdk 0.47 - UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) +func (m *MsgUnbondValidator) GetValidatorAddress() string { + if m != nil { + return m.ValidatorAddress + } + return "" } -type msgClient struct { - cc grpc1.ClientConn +// MsgUnbondValidatorResponse defines the Msg/UnbondValidator response type. +type MsgUnbondValidatorResponse struct { } -func NewMsgClient(cc grpc1.ClientConn) MsgClient { - return &msgClient{cc} +func (m *MsgUnbondValidatorResponse) Reset() { *m = MsgUnbondValidatorResponse{} } +func (m *MsgUnbondValidatorResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUnbondValidatorResponse) ProtoMessage() {} +func (*MsgUnbondValidatorResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_0926ef28816b35ab, []int{15} } - -func (c *msgClient) CreateValidator(ctx context.Context, in *MsgCreateValidator, opts ...grpc.CallOption) (*MsgCreateValidatorResponse, error) { - out := new(MsgCreateValidatorResponse) - err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Msg/CreateValidator", in, out, opts...) - if err != nil { - return nil, err +func (m *MsgUnbondValidatorResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUnbondValidatorResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUnbondValidatorResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return out, nil +} +func (m *MsgUnbondValidatorResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUnbondValidatorResponse.Merge(m, src) +} +func (m *MsgUnbondValidatorResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgUnbondValidatorResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUnbondValidatorResponse.DiscardUnknown(m) } -func (c *msgClient) EditValidator(ctx context.Context, in *MsgEditValidator, opts ...grpc.CallOption) (*MsgEditValidatorResponse, error) { - out := new(MsgEditValidatorResponse) - err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Msg/EditValidator", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +var xxx_messageInfo_MsgUnbondValidatorResponse proto.InternalMessageInfo + +// MsgTokenizeShares tokenizes a delegation +type MsgTokenizeShares struct { + DelegatorAddress string `protobuf:"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty" yaml:"delegator_address"` + ValidatorAddress string `protobuf:"bytes,2,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty" yaml:"validator_address"` + Amount types1.Coin `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount"` + TokenizedShareOwner string `protobuf:"bytes,4,opt,name=tokenized_share_owner,json=tokenizedShareOwner,proto3" json:"tokenized_share_owner,omitempty"` } -func (c *msgClient) Delegate(ctx context.Context, in *MsgDelegate, opts ...grpc.CallOption) (*MsgDelegateResponse, error) { - out := new(MsgDelegateResponse) - err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Msg/Delegate", in, out, opts...) - if err != nil { - return nil, err +func (m *MsgTokenizeShares) Reset() { *m = MsgTokenizeShares{} } +func (m *MsgTokenizeShares) String() string { return proto.CompactTextString(m) } +func (*MsgTokenizeShares) ProtoMessage() {} +func (*MsgTokenizeShares) Descriptor() ([]byte, []int) { + return fileDescriptor_0926ef28816b35ab, []int{16} +} +func (m *MsgTokenizeShares) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgTokenizeShares) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgTokenizeShares.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return out, nil +} +func (m *MsgTokenizeShares) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgTokenizeShares.Merge(m, src) +} +func (m *MsgTokenizeShares) XXX_Size() int { + return m.Size() +} +func (m *MsgTokenizeShares) XXX_DiscardUnknown() { + xxx_messageInfo_MsgTokenizeShares.DiscardUnknown(m) } -func (c *msgClient) BeginRedelegate(ctx context.Context, in *MsgBeginRedelegate, opts ...grpc.CallOption) (*MsgBeginRedelegateResponse, error) { - out := new(MsgBeginRedelegateResponse) - err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Msg/BeginRedelegate", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +var xxx_messageInfo_MsgTokenizeShares proto.InternalMessageInfo + +// MsgTokenizeSharesResponse defines the Msg/MsgTokenizeShares response type. +type MsgTokenizeSharesResponse struct { + Amount types1.Coin `protobuf:"bytes,1,opt,name=amount,proto3" json:"amount"` } -func (c *msgClient) Undelegate(ctx context.Context, in *MsgUndelegate, opts ...grpc.CallOption) (*MsgUndelegateResponse, error) { - out := new(MsgUndelegateResponse) - err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Msg/Undelegate", in, out, opts...) - if err != nil { - return nil, err +func (m *MsgTokenizeSharesResponse) Reset() { *m = MsgTokenizeSharesResponse{} } +func (m *MsgTokenizeSharesResponse) String() string { return proto.CompactTextString(m) } +func (*MsgTokenizeSharesResponse) ProtoMessage() {} +func (*MsgTokenizeSharesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_0926ef28816b35ab, []int{17} +} +func (m *MsgTokenizeSharesResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgTokenizeSharesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgTokenizeSharesResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return out, nil +} +func (m *MsgTokenizeSharesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgTokenizeSharesResponse.Merge(m, src) +} +func (m *MsgTokenizeSharesResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgTokenizeSharesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgTokenizeSharesResponse.DiscardUnknown(m) } -func (c *msgClient) CancelUnbondingDelegation(ctx context.Context, in *MsgCancelUnbondingDelegation, opts ...grpc.CallOption) (*MsgCancelUnbondingDelegationResponse, error) { - out := new(MsgCancelUnbondingDelegationResponse) - err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Msg/CancelUnbondingDelegation", in, out, opts...) - if err != nil { - return nil, err +var xxx_messageInfo_MsgTokenizeSharesResponse proto.InternalMessageInfo + +func (m *MsgTokenizeSharesResponse) GetAmount() types1.Coin { + if m != nil { + return m.Amount } - return out, nil + return types1.Coin{} } -func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { - out := new(MsgUpdateParamsResponse) - err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Msg/UpdateParams", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +// MsgRedeemTokensForShares redeems a tokenized share back into a native delegation +type MsgRedeemTokensForShares struct { + DelegatorAddress string `protobuf:"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty" yaml:"delegator_address"` + Amount types1.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount"` } -// MsgServer is the server API for Msg service. -type MsgServer interface { - // CreateValidator defines a method for creating a new validator. - CreateValidator(context.Context, *MsgCreateValidator) (*MsgCreateValidatorResponse, error) - // EditValidator defines a method for editing an existing validator. - EditValidator(context.Context, *MsgEditValidator) (*MsgEditValidatorResponse, error) - // Delegate defines a method for performing a delegation of coins - // from a delegator to a validator. - Delegate(context.Context, *MsgDelegate) (*MsgDelegateResponse, error) - // BeginRedelegate defines a method for performing a redelegation - // of coins from a delegator and source validator to a destination validator. - BeginRedelegate(context.Context, *MsgBeginRedelegate) (*MsgBeginRedelegateResponse, error) - // Undelegate defines a method for performing an undelegation from a - // delegate and a validator. - Undelegate(context.Context, *MsgUndelegate) (*MsgUndelegateResponse, error) - // CancelUnbondingDelegation defines a method for performing canceling the unbonding delegation - // and delegate back to previous validator. - // - // Since: cosmos-sdk 0.46 - CancelUnbondingDelegation(context.Context, *MsgCancelUnbondingDelegation) (*MsgCancelUnbondingDelegationResponse, error) - // UpdateParams defines an operation for updating the x/staking module - // parameters. - // Since: cosmos-sdk 0.47 - UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) +func (m *MsgRedeemTokensForShares) Reset() { *m = MsgRedeemTokensForShares{} } +func (m *MsgRedeemTokensForShares) String() string { return proto.CompactTextString(m) } +func (*MsgRedeemTokensForShares) ProtoMessage() {} +func (*MsgRedeemTokensForShares) Descriptor() ([]byte, []int) { + return fileDescriptor_0926ef28816b35ab, []int{18} +} +func (m *MsgRedeemTokensForShares) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgRedeemTokensForShares) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgRedeemTokensForShares.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgRedeemTokensForShares) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRedeemTokensForShares.Merge(m, src) +} +func (m *MsgRedeemTokensForShares) XXX_Size() int { + return m.Size() +} +func (m *MsgRedeemTokensForShares) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRedeemTokensForShares.DiscardUnknown(m) } -// UnimplementedMsgServer can be embedded to have forward compatible implementations. -type UnimplementedMsgServer struct { +var xxx_messageInfo_MsgRedeemTokensForShares proto.InternalMessageInfo + +// MsgRedeemTokensForSharesResponse defines the Msg/MsgRedeemTokensForShares response type. +type MsgRedeemTokensForSharesResponse struct { + Amount types1.Coin `protobuf:"bytes,1,opt,name=amount,proto3" json:"amount"` } -func (*UnimplementedMsgServer) CreateValidator(ctx context.Context, req *MsgCreateValidator) (*MsgCreateValidatorResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateValidator not implemented") +func (m *MsgRedeemTokensForSharesResponse) Reset() { *m = MsgRedeemTokensForSharesResponse{} } +func (m *MsgRedeemTokensForSharesResponse) String() string { return proto.CompactTextString(m) } +func (*MsgRedeemTokensForSharesResponse) ProtoMessage() {} +func (*MsgRedeemTokensForSharesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_0926ef28816b35ab, []int{19} } -func (*UnimplementedMsgServer) EditValidator(ctx context.Context, req *MsgEditValidator) (*MsgEditValidatorResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method EditValidator not implemented") +func (m *MsgRedeemTokensForSharesResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) } -func (*UnimplementedMsgServer) Delegate(ctx context.Context, req *MsgDelegate) (*MsgDelegateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delegate not implemented") +func (m *MsgRedeemTokensForSharesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgRedeemTokensForSharesResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } } -func (*UnimplementedMsgServer) BeginRedelegate(ctx context.Context, req *MsgBeginRedelegate) (*MsgBeginRedelegateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method BeginRedelegate not implemented") +func (m *MsgRedeemTokensForSharesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRedeemTokensForSharesResponse.Merge(m, src) } -func (*UnimplementedMsgServer) Undelegate(ctx context.Context, req *MsgUndelegate) (*MsgUndelegateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Undelegate not implemented") +func (m *MsgRedeemTokensForSharesResponse) XXX_Size() int { + return m.Size() } -func (*UnimplementedMsgServer) CancelUnbondingDelegation(ctx context.Context, req *MsgCancelUnbondingDelegation) (*MsgCancelUnbondingDelegationResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CancelUnbondingDelegation not implemented") +func (m *MsgRedeemTokensForSharesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRedeemTokensForSharesResponse.DiscardUnknown(m) } -func (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") + +var xxx_messageInfo_MsgRedeemTokensForSharesResponse proto.InternalMessageInfo + +func (m *MsgRedeemTokensForSharesResponse) GetAmount() types1.Coin { + if m != nil { + return m.Amount + } + return types1.Coin{} } -func RegisterMsgServer(s grpc1.Server, srv MsgServer) { - s.RegisterService(&_Msg_serviceDesc, srv) +// MsgTransferTokenizeShareRecord transfer a tokenize share record +type MsgTransferTokenizeShareRecord struct { + TokenizeShareRecordId uint64 `protobuf:"varint,1,opt,name=tokenize_share_record_id,json=tokenizeShareRecordId,proto3" json:"tokenize_share_record_id,omitempty"` + Sender string `protobuf:"bytes,2,opt,name=sender,proto3" json:"sender,omitempty"` + NewOwner string `protobuf:"bytes,3,opt,name=new_owner,json=newOwner,proto3" json:"new_owner,omitempty"` } -func _Msg_CreateValidator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgCreateValidator) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).CreateValidator(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.staking.v1beta1.Msg/CreateValidator", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).CreateValidator(ctx, req.(*MsgCreateValidator)) +func (m *MsgTransferTokenizeShareRecord) Reset() { *m = MsgTransferTokenizeShareRecord{} } +func (m *MsgTransferTokenizeShareRecord) String() string { return proto.CompactTextString(m) } +func (*MsgTransferTokenizeShareRecord) ProtoMessage() {} +func (*MsgTransferTokenizeShareRecord) Descriptor() ([]byte, []int) { + return fileDescriptor_0926ef28816b35ab, []int{20} +} +func (m *MsgTransferTokenizeShareRecord) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgTransferTokenizeShareRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgTransferTokenizeShareRecord.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return interceptor(ctx, in, info, handler) +} +func (m *MsgTransferTokenizeShareRecord) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgTransferTokenizeShareRecord.Merge(m, src) +} +func (m *MsgTransferTokenizeShareRecord) XXX_Size() int { + return m.Size() +} +func (m *MsgTransferTokenizeShareRecord) XXX_DiscardUnknown() { + xxx_messageInfo_MsgTransferTokenizeShareRecord.DiscardUnknown(m) } -func _Msg_EditValidator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgEditValidator) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).EditValidator(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.staking.v1beta1.Msg/EditValidator", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).EditValidator(ctx, req.(*MsgEditValidator)) - } - return interceptor(ctx, in, info, handler) +var xxx_messageInfo_MsgTransferTokenizeShareRecord proto.InternalMessageInfo + +// MsgTransferTokenizeShareRecordResponse defines the Msg/MsgTransferTokenizeShareRecord response type. +type MsgTransferTokenizeShareRecordResponse struct { } -func _Msg_Delegate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgDelegate) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).Delegate(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.staking.v1beta1.Msg/Delegate", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).Delegate(ctx, req.(*MsgDelegate)) +func (m *MsgTransferTokenizeShareRecordResponse) Reset() { + *m = MsgTransferTokenizeShareRecordResponse{} +} +func (m *MsgTransferTokenizeShareRecordResponse) String() string { return proto.CompactTextString(m) } +func (*MsgTransferTokenizeShareRecordResponse) ProtoMessage() {} +func (*MsgTransferTokenizeShareRecordResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_0926ef28816b35ab, []int{21} +} +func (m *MsgTransferTokenizeShareRecordResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgTransferTokenizeShareRecordResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgTransferTokenizeShareRecordResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return interceptor(ctx, in, info, handler) +} +func (m *MsgTransferTokenizeShareRecordResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgTransferTokenizeShareRecordResponse.Merge(m, src) +} +func (m *MsgTransferTokenizeShareRecordResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgTransferTokenizeShareRecordResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgTransferTokenizeShareRecordResponse.DiscardUnknown(m) } -func _Msg_BeginRedelegate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgBeginRedelegate) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).BeginRedelegate(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.staking.v1beta1.Msg/BeginRedelegate", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).BeginRedelegate(ctx, req.(*MsgBeginRedelegate)) - } - return interceptor(ctx, in, info, handler) +var xxx_messageInfo_MsgTransferTokenizeShareRecordResponse proto.InternalMessageInfo + +// MsgDisableTokenizeShares prevents the tokenization of shares for a given address +type MsgDisableTokenizeShares struct { + DelegatorAddress string `protobuf:"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty" yaml:"delegator_address"` } -func _Msg_Undelegate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgUndelegate) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).Undelegate(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.staking.v1beta1.Msg/Undelegate", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).Undelegate(ctx, req.(*MsgUndelegate)) +func (m *MsgDisableTokenizeShares) Reset() { *m = MsgDisableTokenizeShares{} } +func (m *MsgDisableTokenizeShares) String() string { return proto.CompactTextString(m) } +func (*MsgDisableTokenizeShares) ProtoMessage() {} +func (*MsgDisableTokenizeShares) Descriptor() ([]byte, []int) { + return fileDescriptor_0926ef28816b35ab, []int{22} +} +func (m *MsgDisableTokenizeShares) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgDisableTokenizeShares) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgDisableTokenizeShares.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return interceptor(ctx, in, info, handler) +} +func (m *MsgDisableTokenizeShares) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDisableTokenizeShares.Merge(m, src) +} +func (m *MsgDisableTokenizeShares) XXX_Size() int { + return m.Size() +} +func (m *MsgDisableTokenizeShares) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDisableTokenizeShares.DiscardUnknown(m) } -func _Msg_CancelUnbondingDelegation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgCancelUnbondingDelegation) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).CancelUnbondingDelegation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.staking.v1beta1.Msg/CancelUnbondingDelegation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).CancelUnbondingDelegation(ctx, req.(*MsgCancelUnbondingDelegation)) - } - return interceptor(ctx, in, info, handler) +var xxx_messageInfo_MsgDisableTokenizeShares proto.InternalMessageInfo + +// MsgDisableTokenizeSharesResponse defines the Msg/DisableTokenizeShares response type. +type MsgDisableTokenizeSharesResponse struct { } -func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgUpdateParams) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).UpdateParams(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.staking.v1beta1.Msg/UpdateParams", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) +func (m *MsgDisableTokenizeSharesResponse) Reset() { *m = MsgDisableTokenizeSharesResponse{} } +func (m *MsgDisableTokenizeSharesResponse) String() string { return proto.CompactTextString(m) } +func (*MsgDisableTokenizeSharesResponse) ProtoMessage() {} +func (*MsgDisableTokenizeSharesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_0926ef28816b35ab, []int{23} +} +func (m *MsgDisableTokenizeSharesResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgDisableTokenizeSharesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgDisableTokenizeSharesResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return interceptor(ctx, in, info, handler) +} +func (m *MsgDisableTokenizeSharesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDisableTokenizeSharesResponse.Merge(m, src) +} +func (m *MsgDisableTokenizeSharesResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgDisableTokenizeSharesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDisableTokenizeSharesResponse.DiscardUnknown(m) } -var _Msg_serviceDesc = grpc.ServiceDesc{ - ServiceName: "cosmos.staking.v1beta1.Msg", - HandlerType: (*MsgServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateValidator", - Handler: _Msg_CreateValidator_Handler, - }, - { - MethodName: "EditValidator", - Handler: _Msg_EditValidator_Handler, - }, - { - MethodName: "Delegate", - Handler: _Msg_Delegate_Handler, - }, - { - MethodName: "BeginRedelegate", - Handler: _Msg_BeginRedelegate_Handler, - }, - { - MethodName: "Undelegate", - Handler: _Msg_Undelegate_Handler, - }, - { - MethodName: "CancelUnbondingDelegation", - Handler: _Msg_CancelUnbondingDelegation_Handler, - }, - { - MethodName: "UpdateParams", - Handler: _Msg_UpdateParams_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "cosmos/staking/v1beta1/tx.proto", +var xxx_messageInfo_MsgDisableTokenizeSharesResponse proto.InternalMessageInfo + +// MsgEnableTokenizeShares re-enables tokenization of shares for a given address +type MsgEnableTokenizeShares struct { + DelegatorAddress string `protobuf:"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty" yaml:"delegator_address"` } -func (m *MsgCreateValidator) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +func (m *MsgEnableTokenizeShares) Reset() { *m = MsgEnableTokenizeShares{} } +func (m *MsgEnableTokenizeShares) String() string { return proto.CompactTextString(m) } +func (*MsgEnableTokenizeShares) ProtoMessage() {} +func (*MsgEnableTokenizeShares) Descriptor() ([]byte, []int) { + return fileDescriptor_0926ef28816b35ab, []int{24} +} +func (m *MsgEnableTokenizeShares) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgEnableTokenizeShares) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgEnableTokenizeShares.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return dAtA[:n], nil +} +func (m *MsgEnableTokenizeShares) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgEnableTokenizeShares.Merge(m, src) +} +func (m *MsgEnableTokenizeShares) XXX_Size() int { + return m.Size() +} +func (m *MsgEnableTokenizeShares) XXX_DiscardUnknown() { + xxx_messageInfo_MsgEnableTokenizeShares.DiscardUnknown(m) } -func (m *MsgCreateValidator) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +var xxx_messageInfo_MsgEnableTokenizeShares proto.InternalMessageInfo + +// MsgEnableTokenizeSharesResponse defines the Msg/EnableTokenizeShares response type. +type MsgEnableTokenizeSharesResponse struct { + CompletionTime time.Time `protobuf:"bytes,1,opt,name=completion_time,json=completionTime,proto3,stdtime" json:"completion_time"` } -func (m *MsgCreateValidator) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Value.MarshalToSizedBuffer(dAtA[:i]) +func (m *MsgEnableTokenizeSharesResponse) Reset() { *m = MsgEnableTokenizeSharesResponse{} } +func (m *MsgEnableTokenizeSharesResponse) String() string { return proto.CompactTextString(m) } +func (*MsgEnableTokenizeSharesResponse) ProtoMessage() {} +func (*MsgEnableTokenizeSharesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_0926ef28816b35ab, []int{25} +} +func (m *MsgEnableTokenizeSharesResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgEnableTokenizeSharesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgEnableTokenizeSharesResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) if err != nil { - return 0, err + return nil, err } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) + return b[:n], nil } - i-- - dAtA[i] = 0x3a - if m.Pubkey != nil { - { - size, err := m.Pubkey.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x32 - } - if len(m.ValidatorAddress) > 0 { - i -= len(m.ValidatorAddress) - copy(dAtA[i:], m.ValidatorAddress) - i = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorAddress))) - i-- - dAtA[i] = 0x2a - } - if len(m.DelegatorAddress) > 0 { - i -= len(m.DelegatorAddress) - copy(dAtA[i:], m.DelegatorAddress) - i = encodeVarintTx(dAtA, i, uint64(len(m.DelegatorAddress))) - i-- - dAtA[i] = 0x22 - } - { - size := m.MinSelfDelegation.Size() - i -= size - if _, err := m.MinSelfDelegation.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - i = encodeVarintTx(dAtA, i, uint64(size)) +} +func (m *MsgEnableTokenizeSharesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgEnableTokenizeSharesResponse.Merge(m, src) +} +func (m *MsgEnableTokenizeSharesResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgEnableTokenizeSharesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgEnableTokenizeSharesResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgEnableTokenizeSharesResponse proto.InternalMessageInfo + +func (m *MsgEnableTokenizeSharesResponse) GetCompletionTime() time.Time { + if m != nil { + return m.CompletionTime } - i-- - dAtA[i] = 0x1a - { - size, err := m.Commission.MarshalToSizedBuffer(dAtA[:i]) + return time.Time{} +} + +// MsgValidatorBond defines a SDK message for performing validator self-bond of delegated coins +// from a delegator to a validator. +type MsgValidatorBond struct { + DelegatorAddress string `protobuf:"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty" yaml:"delegator_address"` + ValidatorAddress string `protobuf:"bytes,2,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty" yaml:"validator_address"` +} + +func (m *MsgValidatorBond) Reset() { *m = MsgValidatorBond{} } +func (m *MsgValidatorBond) String() string { return proto.CompactTextString(m) } +func (*MsgValidatorBond) ProtoMessage() {} +func (*MsgValidatorBond) Descriptor() ([]byte, []int) { + return fileDescriptor_0926ef28816b35ab, []int{26} +} +func (m *MsgValidatorBond) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgValidatorBond) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgValidatorBond.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) if err != nil { - return 0, err + return nil, err } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) + return b[:n], nil } - i-- - dAtA[i] = 0x12 - { - size, err := m.Description.MarshalToSizedBuffer(dAtA[:i]) +} +func (m *MsgValidatorBond) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgValidatorBond.Merge(m, src) +} +func (m *MsgValidatorBond) XXX_Size() int { + return m.Size() +} +func (m *MsgValidatorBond) XXX_DiscardUnknown() { + xxx_messageInfo_MsgValidatorBond.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgValidatorBond proto.InternalMessageInfo + +// MsgValidatorBondResponse defines the Msg/ValidatorBond response type. +type MsgValidatorBondResponse struct { +} + +func (m *MsgValidatorBondResponse) Reset() { *m = MsgValidatorBondResponse{} } +func (m *MsgValidatorBondResponse) String() string { return proto.CompactTextString(m) } +func (*MsgValidatorBondResponse) ProtoMessage() {} +func (*MsgValidatorBondResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_0926ef28816b35ab, []int{27} +} +func (m *MsgValidatorBondResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgValidatorBondResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgValidatorBondResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) if err != nil { - return 0, err + return nil, err } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) + return b[:n], nil } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil } - -func (m *MsgCreateValidatorResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +func (m *MsgValidatorBondResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgValidatorBondResponse.Merge(m, src) +} +func (m *MsgValidatorBondResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgValidatorBondResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgValidatorBondResponse.DiscardUnknown(m) } -func (m *MsgCreateValidatorResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +var xxx_messageInfo_MsgValidatorBondResponse proto.InternalMessageInfo + +func init() { + proto.RegisterType((*MsgCreateValidator)(nil), "cosmos.staking.v1beta1.MsgCreateValidator") + proto.RegisterType((*MsgCreateValidatorResponse)(nil), "cosmos.staking.v1beta1.MsgCreateValidatorResponse") + proto.RegisterType((*MsgEditValidator)(nil), "cosmos.staking.v1beta1.MsgEditValidator") + proto.RegisterType((*MsgEditValidatorResponse)(nil), "cosmos.staking.v1beta1.MsgEditValidatorResponse") + proto.RegisterType((*MsgDelegate)(nil), "cosmos.staking.v1beta1.MsgDelegate") + proto.RegisterType((*MsgDelegateResponse)(nil), "cosmos.staking.v1beta1.MsgDelegateResponse") + proto.RegisterType((*MsgBeginRedelegate)(nil), "cosmos.staking.v1beta1.MsgBeginRedelegate") + proto.RegisterType((*MsgBeginRedelegateResponse)(nil), "cosmos.staking.v1beta1.MsgBeginRedelegateResponse") + proto.RegisterType((*MsgUndelegate)(nil), "cosmos.staking.v1beta1.MsgUndelegate") + proto.RegisterType((*MsgUndelegateResponse)(nil), "cosmos.staking.v1beta1.MsgUndelegateResponse") + proto.RegisterType((*MsgCancelUnbondingDelegation)(nil), "cosmos.staking.v1beta1.MsgCancelUnbondingDelegation") + proto.RegisterType((*MsgCancelUnbondingDelegationResponse)(nil), "cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse") + proto.RegisterType((*MsgUpdateParams)(nil), "cosmos.staking.v1beta1.MsgUpdateParams") + proto.RegisterType((*MsgUpdateParamsResponse)(nil), "cosmos.staking.v1beta1.MsgUpdateParamsResponse") + proto.RegisterType((*MsgUnbondValidator)(nil), "cosmos.staking.v1beta1.MsgUnbondValidator") + proto.RegisterType((*MsgUnbondValidatorResponse)(nil), "cosmos.staking.v1beta1.MsgUnbondValidatorResponse") + proto.RegisterType((*MsgTokenizeShares)(nil), "cosmos.staking.v1beta1.MsgTokenizeShares") + proto.RegisterType((*MsgTokenizeSharesResponse)(nil), "cosmos.staking.v1beta1.MsgTokenizeSharesResponse") + proto.RegisterType((*MsgRedeemTokensForShares)(nil), "cosmos.staking.v1beta1.MsgRedeemTokensForShares") + proto.RegisterType((*MsgRedeemTokensForSharesResponse)(nil), "cosmos.staking.v1beta1.MsgRedeemTokensForSharesResponse") + proto.RegisterType((*MsgTransferTokenizeShareRecord)(nil), "cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord") + proto.RegisterType((*MsgTransferTokenizeShareRecordResponse)(nil), "cosmos.staking.v1beta1.MsgTransferTokenizeShareRecordResponse") + proto.RegisterType((*MsgDisableTokenizeShares)(nil), "cosmos.staking.v1beta1.MsgDisableTokenizeShares") + proto.RegisterType((*MsgDisableTokenizeSharesResponse)(nil), "cosmos.staking.v1beta1.MsgDisableTokenizeSharesResponse") + proto.RegisterType((*MsgEnableTokenizeShares)(nil), "cosmos.staking.v1beta1.MsgEnableTokenizeShares") + proto.RegisterType((*MsgEnableTokenizeSharesResponse)(nil), "cosmos.staking.v1beta1.MsgEnableTokenizeSharesResponse") + proto.RegisterType((*MsgValidatorBond)(nil), "cosmos.staking.v1beta1.MsgValidatorBond") + proto.RegisterType((*MsgValidatorBondResponse)(nil), "cosmos.staking.v1beta1.MsgValidatorBondResponse") } -func (m *MsgCreateValidatorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil +func init() { proto.RegisterFile("cosmos/staking/v1beta1/tx.proto", fileDescriptor_0926ef28816b35ab) } + +var fileDescriptor_0926ef28816b35ab = []byte{ + // 1632 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x59, 0xcd, 0x6f, 0x13, 0x47, + 0x14, 0xcf, 0x3a, 0x21, 0x25, 0x43, 0x93, 0x90, 0x4d, 0x02, 0xce, 0x26, 0xb5, 0xe9, 0x42, 0x49, + 0x48, 0x6b, 0xbb, 0xa4, 0x15, 0xa1, 0x2e, 0x02, 0x62, 0x92, 0xb4, 0x69, 0xeb, 0x16, 0x6d, 0x80, + 0x43, 0x3f, 0x64, 0xad, 0x77, 0x27, 0xeb, 0x55, 0xbc, 0xb3, 0x66, 0x67, 0x1d, 0x70, 0x4f, 0xa8, + 0xbd, 0xb4, 0xbd, 0xc0, 0xa1, 0x3d, 0x56, 0xa2, 0xb7, 0x56, 0x55, 0x25, 0x0e, 0xfc, 0x0b, 0x95, + 0x50, 0x4f, 0x94, 0x4b, 0x2b, 0x0e, 0x69, 0x05, 0x52, 0xe1, 0xcc, 0xbd, 0x52, 0xb5, 0xb3, 0xe3, + 0xf1, 0xee, 0x7a, 0x77, 0x6d, 0x07, 0x22, 0x55, 0x5c, 0xc0, 0x9e, 0xf7, 0x31, 0xef, 0xfd, 0xde, + 0xef, 0xcd, 0xbc, 0x71, 0x40, 0x5a, 0x31, 0xb1, 0x61, 0xe2, 0x1c, 0xb6, 0xe5, 0x4d, 0x1d, 0x69, + 0xb9, 0xad, 0xe3, 0x65, 0x68, 0xcb, 0xc7, 0x73, 0xf6, 0xd5, 0x6c, 0xcd, 0x32, 0x6d, 0x93, 0x3f, + 0xe0, 0x2a, 0x64, 0xa9, 0x42, 0x96, 0x2a, 0x08, 0x53, 0x9a, 0x69, 0x6a, 0x55, 0x98, 0x23, 0x5a, + 0xe5, 0xfa, 0x46, 0x4e, 0x46, 0x0d, 0xd7, 0x44, 0x48, 0x07, 0x45, 0xb6, 0x6e, 0x40, 0x6c, 0xcb, + 0x46, 0x8d, 0x2a, 0x4c, 0x68, 0xa6, 0x66, 0x92, 0x8f, 0x39, 0xe7, 0x13, 0x5d, 0x9d, 0x72, 0x77, + 0x2a, 0xb9, 0x02, 0xba, 0xad, 0x2b, 0x4a, 0xd1, 0x28, 0xcb, 0x32, 0x86, 0x2c, 0x44, 0xc5, 0xd4, + 0x11, 0x95, 0x1f, 0x89, 0xc8, 0xa2, 0x19, 0xb4, 0xab, 0x75, 0x90, 0x6a, 0x19, 0xd8, 0xd1, 0x70, + 0xfe, 0xa3, 0x82, 0x31, 0xd9, 0xd0, 0x91, 0x99, 0x23, 0xff, 0xba, 0x4b, 0xe2, 0xbf, 0x03, 0x80, + 0x2f, 0x62, 0xed, 0x9c, 0x05, 0x65, 0x1b, 0x5e, 0x92, 0xab, 0xba, 0x2a, 0xdb, 0xa6, 0xc5, 0x9f, + 0x07, 0xfb, 0x54, 0x88, 0x15, 0x4b, 0xaf, 0xd9, 0xba, 0x89, 0x92, 0xdc, 0x21, 0x6e, 0x6e, 0xdf, + 0xc2, 0xe1, 0x6c, 0x38, 0x46, 0xd9, 0xe5, 0x96, 0x6a, 0x61, 0xe8, 0xce, 0x76, 0xba, 0xef, 0xc7, + 0x47, 0xb7, 0xe6, 0x39, 0xc9, 0xeb, 0x82, 0x97, 0x00, 0x50, 0x4c, 0xc3, 0xd0, 0x31, 0x76, 0x1c, + 0x26, 0x88, 0xc3, 0xd9, 0x28, 0x87, 0xe7, 0x98, 0xa6, 0x24, 0xdb, 0x10, 0x7b, 0x9d, 0x7a, 0xbc, + 0xf0, 0x65, 0x30, 0x6e, 0xe8, 0xa8, 0x84, 0x61, 0x75, 0xa3, 0xa4, 0xc2, 0x2a, 0xd4, 0x64, 0x12, + 0x6d, 0xff, 0x21, 0x6e, 0x6e, 0xa8, 0xb0, 0xe0, 0xd8, 0xdc, 0xdf, 0x4e, 0x4f, 0xba, 0x7b, 0x60, + 0x75, 0x33, 0xab, 0x9b, 0x39, 0x43, 0xb6, 0x2b, 0xd9, 0x35, 0x64, 0xdf, 0xbb, 0x9d, 0x01, 0x74, + 0xf3, 0x35, 0x64, 0x13, 0xd7, 0x49, 0x4e, 0x1a, 0x33, 0x74, 0xb4, 0x0e, 0xab, 0x1b, 0xcb, 0xcc, + 0x19, 0xff, 0x0e, 0x18, 0xa3, 0xae, 0x4d, 0xab, 0x24, 0xab, 0xaa, 0x05, 0x31, 0x4e, 0x0e, 0x90, + 0x1d, 0x84, 0x7b, 0xb7, 0x33, 0x13, 0xd4, 0xc9, 0x92, 0x2b, 0x59, 0xb7, 0x2d, 0x1d, 0x69, 0x49, + 0x4e, 0xda, 0xcf, 0x8c, 0xa8, 0x84, 0xff, 0x10, 0x8c, 0x6d, 0x35, 0xf1, 0x65, 0x8e, 0xf6, 0x10, + 0x47, 0x2f, 0xdf, 0xbb, 0x9d, 0x79, 0x89, 0x3a, 0x62, 0x35, 0xf0, 0x79, 0x94, 0xf6, 0x6f, 0x05, + 0xd6, 0xf9, 0x55, 0x30, 0x58, 0xab, 0x97, 0x37, 0x61, 0x23, 0x39, 0x48, 0xc0, 0x9c, 0xc8, 0xba, + 0x74, 0xcc, 0x36, 0xe9, 0x98, 0x5d, 0x42, 0x8d, 0x42, 0xf2, 0xb7, 0x56, 0x8c, 0x8a, 0xd5, 0xa8, + 0xd9, 0x66, 0xf6, 0x7c, 0xbd, 0xfc, 0x3e, 0x6c, 0x48, 0xd4, 0x9a, 0xcf, 0x83, 0x3d, 0x5b, 0x72, + 0xb5, 0x0e, 0x93, 0x2f, 0x10, 0x37, 0x53, 0xcd, 0x9a, 0x38, 0x1c, 0xf4, 0x14, 0x44, 0xf7, 0x95, + 0xd6, 0x35, 0xc9, 0x9f, 0xfd, 0xea, 0x66, 0xba, 0xef, 0xf1, 0xcd, 0x74, 0xdf, 0x17, 0x8f, 0x6e, + 0xcd, 0xb7, 0xa7, 0xf7, 0xcd, 0xa3, 0x5b, 0xf3, 0x34, 0xaf, 0x0c, 0x56, 0x37, 0x73, 0xed, 0x44, + 0x13, 0x67, 0x80, 0xd0, 0xbe, 0x2a, 0x41, 0x5c, 0x33, 0x11, 0x86, 0xe2, 0xcf, 0xfd, 0x60, 0x7f, + 0x11, 0x6b, 0x2b, 0xaa, 0x6e, 0xef, 0x26, 0x37, 0x43, 0x4b, 0x93, 0xd8, 0x79, 0x69, 0x2e, 0x81, + 0xd1, 0x16, 0x4b, 0x4b, 0x96, 0x6c, 0x43, 0xca, 0xc9, 0xcc, 0xfd, 0xed, 0xf4, 0x74, 0x3b, 0x1f, + 0x3f, 0x80, 0x9a, 0xac, 0x34, 0x96, 0xa1, 0xe2, 0x61, 0xe5, 0x32, 0x54, 0xa4, 0x11, 0xc5, 0xd7, + 0x07, 0xfc, 0x67, 0xe1, 0x7c, 0x77, 0xd9, 0x98, 0xe9, 0x81, 0xef, 0xa1, 0x54, 0xcf, 0x9f, 0xee, + 0x5c, 0xcd, 0x69, 0x7f, 0x35, 0x7d, 0x85, 0x11, 0x05, 0x90, 0x0c, 0xae, 0xb1, 0x4a, 0x7e, 0x9f, + 0x00, 0xfb, 0x8a, 0x58, 0xa3, 0xbb, 0x41, 0x7e, 0x25, 0xac, 0xad, 0x38, 0x92, 0x48, 0x32, 0xaa, + 0xad, 0xba, 0x6d, 0xaa, 0xa7, 0xa8, 0xdc, 0x29, 0x30, 0x28, 0x1b, 0x66, 0x1d, 0xd9, 0xa4, 0x60, + 0xdd, 0x76, 0x03, 0xb5, 0xc9, 0xbf, 0xe5, 0x03, 0xb0, 0x2d, 0x3f, 0x07, 0xc0, 0x03, 0x7e, 0x00, + 0x9b, 0x78, 0x88, 0x93, 0x60, 0xdc, 0xf3, 0x95, 0xc1, 0xf6, 0x75, 0x3f, 0x39, 0x9e, 0x0b, 0x50, + 0xd3, 0x91, 0x04, 0xd5, 0x67, 0x8c, 0xde, 0x45, 0x30, 0xd9, 0x42, 0x0f, 0x5b, 0x4a, 0xef, 0x08, + 0x8e, 0x33, 0xfb, 0x75, 0x4b, 0x09, 0x75, 0xab, 0x62, 0x9b, 0xb9, 0xed, 0xef, 0xdd, 0xed, 0x32, + 0xb6, 0xdb, 0x6b, 0x33, 0xb0, 0x83, 0xda, 0x9c, 0xed, 0x5c, 0x9b, 0xc0, 0x51, 0x15, 0x00, 0x5d, + 0xac, 0x91, 0xa3, 0x2a, 0xb0, 0xda, 0xac, 0x14, 0x2f, 0x91, 0x9e, 0xaf, 0x55, 0xa1, 0xd3, 0x4a, + 0x25, 0x67, 0x12, 0xa0, 0x27, 0x93, 0xd0, 0x76, 0x2e, 0x5f, 0x68, 0x8e, 0x09, 0x85, 0x61, 0x27, + 0xce, 0x1b, 0x7f, 0xa5, 0x39, 0x37, 0xd6, 0x91, 0x96, 0x07, 0x47, 0x47, 0xfc, 0x21, 0x01, 0x86, + 0x8b, 0x58, 0xbb, 0x88, 0xd4, 0xe7, 0xba, 0x6d, 0xde, 0xee, 0x5c, 0x9a, 0xa4, 0xbf, 0x34, 0x2d, + 0x44, 0xc4, 0x9f, 0x38, 0x30, 0xe9, 0x5b, 0xd9, 0xcd, 0x8a, 0x78, 0x12, 0x4d, 0xf4, 0x9e, 0xa8, + 0xf8, 0x38, 0x01, 0x66, 0x9c, 0xdb, 0x4e, 0x46, 0x0a, 0xac, 0x5e, 0x44, 0x65, 0x13, 0xa9, 0x3a, + 0xd2, 0x3c, 0xc3, 0xc6, 0xf3, 0x58, 0x5e, 0x7e, 0x16, 0x8c, 0x2a, 0xce, 0xfd, 0xee, 0x54, 0xa1, + 0x02, 0x75, 0xad, 0xe2, 0x36, 0x70, 0xbf, 0x34, 0xd2, 0x5c, 0x7e, 0x97, 0xac, 0xe6, 0xdf, 0xeb, + 0xcc, 0x83, 0xd9, 0xc0, 0x34, 0x11, 0x85, 0xa4, 0x78, 0x14, 0x1c, 0x89, 0x93, 0xb3, 0x03, 0xf6, + 0x57, 0x0e, 0x8c, 0x3a, 0xf4, 0xa9, 0xa9, 0xb2, 0x0d, 0xcf, 0xcb, 0x96, 0x6c, 0x60, 0xfe, 0x04, + 0x18, 0x92, 0xeb, 0x76, 0xc5, 0xb4, 0x74, 0xbb, 0xd1, 0x11, 0xfd, 0x96, 0x2a, 0xbf, 0x04, 0x06, + 0x6b, 0xc4, 0x03, 0x25, 0x47, 0x2a, 0x6a, 0x26, 0x71, 0xf7, 0xf1, 0x61, 0xe5, 0x1a, 0xe6, 0x17, + 0x9d, 0xd4, 0x5b, 0x2e, 0x9d, 0x94, 0x8f, 0x78, 0x52, 0xbe, 0xca, 0x26, 0xff, 0x40, 0xcc, 0xe2, + 0x14, 0x38, 0x18, 0x58, 0x62, 0x29, 0x5e, 0xe7, 0xc8, 0x1d, 0xe2, 0xa2, 0xd0, 0x1a, 0xa3, 0xce, + 0x84, 0x91, 0xc4, 0xcd, 0x96, 0x7f, 0xb2, 0x9d, 0x1e, 0x69, 0xc8, 0x46, 0x35, 0x2f, 0x52, 0x81, + 0xd8, 0xce, 0x8a, 0xfc, 0xc9, 0xae, 0x87, 0xbe, 0xc0, 0xd6, 0x74, 0xe8, 0x0b, 0xac, 0xb2, 0x78, + 0xff, 0x48, 0x80, 0xb1, 0x22, 0xd6, 0x2e, 0x98, 0x9b, 0x10, 0xe9, 0x9f, 0xc3, 0xf5, 0x8a, 0x6c, + 0x41, 0xcc, 0xaf, 0x45, 0xb7, 0xc6, 0xcc, 0x93, 0xed, 0x74, 0xd2, 0x0d, 0xb7, 0x4d, 0x45, 0x0c, + 0x69, 0x8f, 0xb5, 0xe8, 0xf6, 0xf0, 0xb8, 0x6a, 0x53, 0x09, 0xc1, 0x80, 0x5f, 0xec, 0xbe, 0x33, + 0x06, 0x9c, 0x6a, 0xb3, 0xa6, 0x58, 0x00, 0x93, 0x36, 0x4d, 0x50, 0x2d, 0x61, 0x27, 0xc5, 0x92, + 0x79, 0x05, 0x41, 0xcb, 0x1d, 0xe6, 0xa4, 0x71, 0x26, 0x24, 0xe9, 0x7f, 0xe4, 0x88, 0xf2, 0x67, + 0x3a, 0xf7, 0xc7, 0x8c, 0x1f, 0x78, 0x3f, 0x86, 0xe2, 0x05, 0x30, 0xd5, 0xb6, 0xc8, 0x8e, 0xcb, + 0x56, 0x2a, 0x5c, 0x4f, 0xa9, 0x88, 0xff, 0x70, 0x64, 0xee, 0x73, 0xee, 0x44, 0x68, 0x10, 0xe7, + 0x78, 0xd5, 0xb4, 0x9e, 0x7d, 0xd9, 0x16, 0xbb, 0x3f, 0x7b, 0x7d, 0x01, 0xe6, 0x57, 0x3b, 0xe3, + 0x76, 0xd8, 0x8f, 0x5b, 0x68, 0x2e, 0xe2, 0x27, 0xe0, 0x50, 0x94, 0xec, 0xe9, 0x51, 0xfc, 0x9d, + 0x03, 0x29, 0xa7, 0x38, 0x96, 0x8c, 0xf0, 0x06, 0xb4, 0x7c, 0x45, 0x92, 0xa0, 0x62, 0x5a, 0x2a, + 0xbf, 0x08, 0x92, 0x4d, 0x5a, 0x50, 0xca, 0x58, 0x44, 0x50, 0xd2, 0x55, 0xb2, 0xdb, 0x80, 0xc4, + 0x38, 0xe5, 0x31, 0x5b, 0x53, 0xf9, 0x03, 0x60, 0x10, 0x43, 0xa4, 0x42, 0xcb, 0x65, 0xb9, 0x44, + 0xbf, 0xf1, 0xd3, 0x60, 0x08, 0xc1, 0x2b, 0x94, 0x78, 0x64, 0x38, 0x93, 0xf6, 0x22, 0x78, 0xc5, + 0x65, 0xdb, 0x92, 0x17, 0x35, 0x6a, 0xe1, 0x40, 0x75, 0x2c, 0x40, 0xb1, 0xe8, 0x80, 0xc5, 0x39, + 0x70, 0x34, 0x5e, 0x83, 0xf5, 0xfc, 0x2f, 0x2e, 0x87, 0x96, 0x75, 0x2c, 0x97, 0xab, 0x70, 0xd7, + 0x5a, 0x7f, 0x07, 0x54, 0x08, 0x0d, 0x49, 0x14, 0x09, 0x15, 0x42, 0x65, 0xad, 0xc7, 0x2b, 0x47, + 0xce, 0xe4, 0x15, 0xb4, 0xbb, 0x29, 0xad, 0x74, 0x4e, 0x49, 0x0c, 0xbc, 0xda, 0x42, 0x22, 0x12, + 0x6b, 0x20, 0x1d, 0x21, 0x62, 0xdc, 0x2e, 0xee, 0x64, 0xa0, 0xda, 0xdb, 0x1c, 0xa8, 0xda, 0xa6, + 0xdb, 0xc7, 0x1c, 0x79, 0xdc, 0xb3, 0x0b, 0xa0, 0x60, 0x22, 0xf5, 0xff, 0x79, 0xcc, 0x07, 0x5e, + 0xc6, 0xa1, 0x18, 0x07, 0x5e, 0xc6, 0xbe, 0xac, 0xe8, 0xcb, 0xd8, 0xb7, 0xd6, 0x44, 0x75, 0xe1, + 0xdb, 0x61, 0xd0, 0x5f, 0xc4, 0x1a, 0x7f, 0x19, 0x8c, 0x06, 0x7f, 0x85, 0x9b, 0x8f, 0x1a, 0x20, + 0xda, 0x7f, 0x32, 0x11, 0x16, 0xba, 0xd7, 0x65, 0x05, 0xdd, 0x04, 0xc3, 0xfe, 0x9f, 0x56, 0xe6, + 0x62, 0x9c, 0xf8, 0x34, 0x85, 0xd7, 0xbb, 0xd5, 0x64, 0x9b, 0x7d, 0x0a, 0xf6, 0xb2, 0xd7, 0xff, + 0xe1, 0x18, 0xeb, 0xa6, 0x92, 0xf0, 0x6a, 0x17, 0x4a, 0xcc, 0xfb, 0x65, 0x30, 0x1a, 0x7c, 0x24, + 0xc7, 0xa1, 0x17, 0xd0, 0x8d, 0x45, 0x2f, 0xea, 0xc5, 0x57, 0x06, 0xc0, 0xf3, 0x32, 0x7b, 0x25, + 0xc6, 0x43, 0x4b, 0x4d, 0xc8, 0x74, 0xa5, 0xc6, 0xf6, 0xb8, 0xce, 0x81, 0xa9, 0xe8, 0xe7, 0xc2, + 0x9b, 0x71, 0x35, 0x8f, 0xb2, 0x12, 0x4e, 0xed, 0xc4, 0x8a, 0x45, 0x54, 0x01, 0x2f, 0xfa, 0x86, + 0xe5, 0xd9, 0xb8, 0x84, 0x3c, 0x8a, 0x42, 0xae, 0x4b, 0x45, 0x6f, 0x49, 0x83, 0x33, 0xeb, 0x7c, + 0x2c, 0x7a, 0x3e, 0xdd, 0xd8, 0x92, 0x46, 0x8c, 0x9e, 0x3c, 0x02, 0x23, 0x81, 0x83, 0xfa, 0x58, + 0x8c, 0x17, 0xbf, 0xaa, 0x70, 0xbc, 0x6b, 0x55, 0xb6, 0xdf, 0x97, 0x1c, 0x98, 0x0c, 0x9f, 0x9b, + 0xe2, 0xfa, 0x2b, 0xd4, 0x42, 0x38, 0xd9, 0xab, 0x05, 0x8b, 0xe2, 0x3b, 0x0e, 0x4c, 0xc7, 0xcd, + 0x1d, 0x27, 0xe2, 0x12, 0x8b, 0xb6, 0x13, 0x4e, 0xef, 0xcc, 0xce, 0x87, 0x4e, 0xf8, 0x44, 0x10, + 0x87, 0x4e, 0xa8, 0x45, 0x2c, 0x3a, 0xb1, 0xd7, 0x38, 0x7f, 0x8d, 0x03, 0x13, 0xa1, 0x77, 0x78, + 0x1c, 0xa1, 0xc3, 0x0c, 0x84, 0xc5, 0x1e, 0x0d, 0xbc, 0xe7, 0xb4, 0xff, 0x96, 0x8c, 0x3b, 0xa7, + 0x7d, 0x9a, 0xb1, 0xe7, 0x74, 0xe8, 0x7d, 0x24, 0xec, 0xb9, 0xe6, 0xbc, 0x48, 0x0b, 0xab, 0x77, + 0x1e, 0xa4, 0xb8, 0xbb, 0x0f, 0x52, 0xdc, 0xdf, 0x0f, 0x52, 0xdc, 0x8d, 0x87, 0xa9, 0xbe, 0xbb, + 0x0f, 0x53, 0x7d, 0x7f, 0x3e, 0x4c, 0xf5, 0x7d, 0xfc, 0x9a, 0xa6, 0xdb, 0x95, 0x7a, 0x39, 0xab, + 0x98, 0x06, 0xfd, 0xeb, 0x55, 0x2e, 0xf4, 0x89, 0x6a, 0x37, 0x6a, 0x10, 0x97, 0x07, 0xc9, 0x4c, + 0xf0, 0xc6, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xf2, 0x1f, 0xd5, 0xd0, 0x81, 0x1b, 0x00, 0x00, } -func (m *MsgEditValidator) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// MsgClient is the client API for Msg service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type MsgClient interface { + // CreateValidator defines a method for creating a new validator. + CreateValidator(ctx context.Context, in *MsgCreateValidator, opts ...grpc.CallOption) (*MsgCreateValidatorResponse, error) + // EditValidator defines a method for editing an existing validator. + EditValidator(ctx context.Context, in *MsgEditValidator, opts ...grpc.CallOption) (*MsgEditValidatorResponse, error) + // Delegate defines a method for performing a delegation of coins + // from a delegator to a validator. + Delegate(ctx context.Context, in *MsgDelegate, opts ...grpc.CallOption) (*MsgDelegateResponse, error) + // BeginRedelegate defines a method for performing a redelegation + // of coins from a delegator and source validator to a destination validator. + BeginRedelegate(ctx context.Context, in *MsgBeginRedelegate, opts ...grpc.CallOption) (*MsgBeginRedelegateResponse, error) + // Undelegate defines a method for performing an undelegation from a + // delegate and a validator. + Undelegate(ctx context.Context, in *MsgUndelegate, opts ...grpc.CallOption) (*MsgUndelegateResponse, error) + // CancelUnbondingDelegation defines a method for performing canceling the unbonding delegation + // and delegate back to previous validator. + // + // Since: cosmos-sdk 0.46 + CancelUnbondingDelegation(ctx context.Context, in *MsgCancelUnbondingDelegation, opts ...grpc.CallOption) (*MsgCancelUnbondingDelegationResponse, error) + // UpdateParams defines an operation for updating the x/staking module + // parameters. + // Since: cosmos-sdk 0.47 + UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) + // UnbondValidator defines a method for performing the status transition for a validator + // from bonded to unbonding + // This allows a validator to stop their services and jail themselves without + // experiencing a slash + UnbondValidator(ctx context.Context, in *MsgUnbondValidator, opts ...grpc.CallOption) (*MsgUnbondValidatorResponse, error) + // TokenizeShares defines a method for tokenizing shares from a validator. + TokenizeShares(ctx context.Context, in *MsgTokenizeShares, opts ...grpc.CallOption) (*MsgTokenizeSharesResponse, error) + // RedeemTokensForShares defines a method for redeeming tokens from a validator for + // shares. + RedeemTokensForShares(ctx context.Context, in *MsgRedeemTokensForShares, opts ...grpc.CallOption) (*MsgRedeemTokensForSharesResponse, error) + // TransferTokenizeShareRecord defines a method to transfer ownership of + // TokenizeShareRecord + TransferTokenizeShareRecord(ctx context.Context, in *MsgTransferTokenizeShareRecord, opts ...grpc.CallOption) (*MsgTransferTokenizeShareRecordResponse, error) + // DisableTokenizeShares defines a method to prevent the tokenization of an addresses stake + DisableTokenizeShares(ctx context.Context, in *MsgDisableTokenizeShares, opts ...grpc.CallOption) (*MsgDisableTokenizeSharesResponse, error) + // EnableTokenizeShares defines a method to re-enable the tokenization of an addresseses stake + // after it has been disabled + EnableTokenizeShares(ctx context.Context, in *MsgEnableTokenizeShares, opts ...grpc.CallOption) (*MsgEnableTokenizeSharesResponse, error) + // ValidatorBond defines a method for performing a validator self-bond + ValidatorBond(ctx context.Context, in *MsgValidatorBond, opts ...grpc.CallOption) (*MsgValidatorBondResponse, error) } -func (m *MsgEditValidator) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +type msgClient struct { + cc grpc1.ClientConn } -func (m *MsgEditValidator) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.MinSelfDelegation != nil { - { - size := m.MinSelfDelegation.Size() - i -= size - if _, err := m.MinSelfDelegation.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } - if m.CommissionRate != nil { - { - size := m.CommissionRate.Size() - i -= size - if _, err := m.CommissionRate.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - if len(m.ValidatorAddress) > 0 { - i -= len(m.ValidatorAddress) - copy(dAtA[i:], m.ValidatorAddress) - i = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorAddress))) - i-- - dAtA[i] = 0x12 - } - { - size, err := m.Description.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil +func NewMsgClient(cc grpc1.ClientConn) MsgClient { + return &msgClient{cc} } -func (m *MsgEditValidatorResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *msgClient) CreateValidator(ctx context.Context, in *MsgCreateValidator, opts ...grpc.CallOption) (*MsgCreateValidatorResponse, error) { + out := new(MsgCreateValidatorResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Msg/CreateValidator", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil + return out, nil } -func (m *MsgEditValidatorResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (c *msgClient) EditValidator(ctx context.Context, in *MsgEditValidator, opts ...grpc.CallOption) (*MsgEditValidatorResponse, error) { + out := new(MsgEditValidatorResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Msg/EditValidator", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil } -func (m *MsgEditValidatorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil +func (c *msgClient) Delegate(ctx context.Context, in *MsgDelegate, opts ...grpc.CallOption) (*MsgDelegateResponse, error) { + out := new(MsgDelegateResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Msg/Delegate", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil } -func (m *MsgDelegate) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *msgClient) BeginRedelegate(ctx context.Context, in *MsgBeginRedelegate, opts ...grpc.CallOption) (*MsgBeginRedelegateResponse, error) { + out := new(MsgBeginRedelegateResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Msg/BeginRedelegate", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil + return out, nil } -func (m *MsgDelegate) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgDelegate) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - if len(m.ValidatorAddress) > 0 { - i -= len(m.ValidatorAddress) - copy(dAtA[i:], m.ValidatorAddress) - i = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorAddress))) - i-- - dAtA[i] = 0x12 - } - if len(m.DelegatorAddress) > 0 { - i -= len(m.DelegatorAddress) - copy(dAtA[i:], m.DelegatorAddress) - i = encodeVarintTx(dAtA, i, uint64(len(m.DelegatorAddress))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgDelegateResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *msgClient) Undelegate(ctx context.Context, in *MsgUndelegate, opts ...grpc.CallOption) (*MsgUndelegateResponse, error) { + out := new(MsgUndelegateResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Msg/Undelegate", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil -} - -func (m *MsgDelegateResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgDelegateResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil + return out, nil } -func (m *MsgBeginRedelegate) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *msgClient) CancelUnbondingDelegation(ctx context.Context, in *MsgCancelUnbondingDelegation, opts ...grpc.CallOption) (*MsgCancelUnbondingDelegationResponse, error) { + out := new(MsgCancelUnbondingDelegationResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Msg/CancelUnbondingDelegation", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil -} - -func (m *MsgBeginRedelegate) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) + return out, nil } -func (m *MsgBeginRedelegate) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - if len(m.ValidatorDstAddress) > 0 { - i -= len(m.ValidatorDstAddress) - copy(dAtA[i:], m.ValidatorDstAddress) - i = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorDstAddress))) - i-- - dAtA[i] = 0x1a - } - if len(m.ValidatorSrcAddress) > 0 { - i -= len(m.ValidatorSrcAddress) - copy(dAtA[i:], m.ValidatorSrcAddress) - i = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorSrcAddress))) - i-- - dAtA[i] = 0x12 - } - if len(m.DelegatorAddress) > 0 { - i -= len(m.DelegatorAddress) - copy(dAtA[i:], m.DelegatorAddress) - i = encodeVarintTx(dAtA, i, uint64(len(m.DelegatorAddress))) - i-- - dAtA[i] = 0xa +func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { + out := new(MsgUpdateParamsResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Msg/UpdateParams", in, out, opts...) + if err != nil { + return nil, err } - return len(dAtA) - i, nil + return out, nil } -func (m *MsgBeginRedelegateResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *msgClient) UnbondValidator(ctx context.Context, in *MsgUnbondValidator, opts ...grpc.CallOption) (*MsgUnbondValidatorResponse, error) { + out := new(MsgUnbondValidatorResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Msg/UnbondValidator", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil -} - -func (m *MsgBeginRedelegateResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) + return out, nil } -func (m *MsgBeginRedelegateResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - n8, err8 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.CompletionTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CompletionTime):]) - if err8 != nil { - return 0, err8 +func (c *msgClient) TokenizeShares(ctx context.Context, in *MsgTokenizeShares, opts ...grpc.CallOption) (*MsgTokenizeSharesResponse, error) { + out := new(MsgTokenizeSharesResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Msg/TokenizeShares", in, out, opts...) + if err != nil { + return nil, err } - i -= n8 - i = encodeVarintTx(dAtA, i, uint64(n8)) - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil + return out, nil } -func (m *MsgUndelegate) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *msgClient) RedeemTokensForShares(ctx context.Context, in *MsgRedeemTokensForShares, opts ...grpc.CallOption) (*MsgRedeemTokensForSharesResponse, error) { + out := new(MsgRedeemTokensForSharesResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Msg/RedeemTokensForShares", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil -} - -func (m *MsgUndelegate) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) + return out, nil } -func (m *MsgUndelegate) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - if len(m.ValidatorAddress) > 0 { - i -= len(m.ValidatorAddress) - copy(dAtA[i:], m.ValidatorAddress) - i = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorAddress))) - i-- - dAtA[i] = 0x12 - } - if len(m.DelegatorAddress) > 0 { - i -= len(m.DelegatorAddress) - copy(dAtA[i:], m.DelegatorAddress) - i = encodeVarintTx(dAtA, i, uint64(len(m.DelegatorAddress))) - i-- - dAtA[i] = 0xa +func (c *msgClient) TransferTokenizeShareRecord(ctx context.Context, in *MsgTransferTokenizeShareRecord, opts ...grpc.CallOption) (*MsgTransferTokenizeShareRecordResponse, error) { + out := new(MsgTransferTokenizeShareRecordResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Msg/TransferTokenizeShareRecord", in, out, opts...) + if err != nil { + return nil, err } - return len(dAtA) - i, nil + return out, nil } -func (m *MsgUndelegateResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *msgClient) DisableTokenizeShares(ctx context.Context, in *MsgDisableTokenizeShares, opts ...grpc.CallOption) (*MsgDisableTokenizeSharesResponse, error) { + out := new(MsgDisableTokenizeSharesResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Msg/DisableTokenizeShares", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil -} - -func (m *MsgUndelegateResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) + return out, nil } -func (m *MsgUndelegateResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - n11, err11 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.CompletionTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CompletionTime):]) - if err11 != nil { - return 0, err11 +func (c *msgClient) EnableTokenizeShares(ctx context.Context, in *MsgEnableTokenizeShares, opts ...grpc.CallOption) (*MsgEnableTokenizeSharesResponse, error) { + out := new(MsgEnableTokenizeSharesResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Msg/EnableTokenizeShares", in, out, opts...) + if err != nil { + return nil, err } - i -= n11 - i = encodeVarintTx(dAtA, i, uint64(n11)) - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil + return out, nil } -func (m *MsgCancelUnbondingDelegation) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *msgClient) ValidatorBond(ctx context.Context, in *MsgValidatorBond, opts ...grpc.CallOption) (*MsgValidatorBondResponse, error) { + out := new(MsgValidatorBondResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Msg/ValidatorBond", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil + return out, nil } -func (m *MsgCancelUnbondingDelegation) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +// MsgServer is the server API for Msg service. +type MsgServer interface { + // CreateValidator defines a method for creating a new validator. + CreateValidator(context.Context, *MsgCreateValidator) (*MsgCreateValidatorResponse, error) + // EditValidator defines a method for editing an existing validator. + EditValidator(context.Context, *MsgEditValidator) (*MsgEditValidatorResponse, error) + // Delegate defines a method for performing a delegation of coins + // from a delegator to a validator. + Delegate(context.Context, *MsgDelegate) (*MsgDelegateResponse, error) + // BeginRedelegate defines a method for performing a redelegation + // of coins from a delegator and source validator to a destination validator. + BeginRedelegate(context.Context, *MsgBeginRedelegate) (*MsgBeginRedelegateResponse, error) + // Undelegate defines a method for performing an undelegation from a + // delegate and a validator. + Undelegate(context.Context, *MsgUndelegate) (*MsgUndelegateResponse, error) + // CancelUnbondingDelegation defines a method for performing canceling the unbonding delegation + // and delegate back to previous validator. + // + // Since: cosmos-sdk 0.46 + CancelUnbondingDelegation(context.Context, *MsgCancelUnbondingDelegation) (*MsgCancelUnbondingDelegationResponse, error) + // UpdateParams defines an operation for updating the x/staking module + // parameters. + // Since: cosmos-sdk 0.47 + UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) + // UnbondValidator defines a method for performing the status transition for a validator + // from bonded to unbonding + // This allows a validator to stop their services and jail themselves without + // experiencing a slash + UnbondValidator(context.Context, *MsgUnbondValidator) (*MsgUnbondValidatorResponse, error) + // TokenizeShares defines a method for tokenizing shares from a validator. + TokenizeShares(context.Context, *MsgTokenizeShares) (*MsgTokenizeSharesResponse, error) + // RedeemTokensForShares defines a method for redeeming tokens from a validator for + // shares. + RedeemTokensForShares(context.Context, *MsgRedeemTokensForShares) (*MsgRedeemTokensForSharesResponse, error) + // TransferTokenizeShareRecord defines a method to transfer ownership of + // TokenizeShareRecord + TransferTokenizeShareRecord(context.Context, *MsgTransferTokenizeShareRecord) (*MsgTransferTokenizeShareRecordResponse, error) + // DisableTokenizeShares defines a method to prevent the tokenization of an addresses stake + DisableTokenizeShares(context.Context, *MsgDisableTokenizeShares) (*MsgDisableTokenizeSharesResponse, error) + // EnableTokenizeShares defines a method to re-enable the tokenization of an addresseses stake + // after it has been disabled + EnableTokenizeShares(context.Context, *MsgEnableTokenizeShares) (*MsgEnableTokenizeSharesResponse, error) + // ValidatorBond defines a method for performing a validator self-bond + ValidatorBond(context.Context, *MsgValidatorBond) (*MsgValidatorBondResponse, error) } -func (m *MsgCancelUnbondingDelegation) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.CreationHeight != 0 { - i = encodeVarintTx(dAtA, i, uint64(m.CreationHeight)) - i-- - dAtA[i] = 0x20 - } - { - size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - if len(m.ValidatorAddress) > 0 { - i -= len(m.ValidatorAddress) - copy(dAtA[i:], m.ValidatorAddress) - i = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorAddress))) - i-- - dAtA[i] = 0x12 - } - if len(m.DelegatorAddress) > 0 { - i -= len(m.DelegatorAddress) - copy(dAtA[i:], m.DelegatorAddress) - i = encodeVarintTx(dAtA, i, uint64(len(m.DelegatorAddress))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil +// UnimplementedMsgServer can be embedded to have forward compatible implementations. +type UnimplementedMsgServer struct { } -func (m *MsgCancelUnbondingDelegationResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +func (*UnimplementedMsgServer) CreateValidator(ctx context.Context, req *MsgCreateValidator) (*MsgCreateValidatorResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateValidator not implemented") } - -func (m *MsgCancelUnbondingDelegationResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (*UnimplementedMsgServer) EditValidator(ctx context.Context, req *MsgEditValidator) (*MsgEditValidatorResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method EditValidator not implemented") } - -func (m *MsgCancelUnbondingDelegationResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil +func (*UnimplementedMsgServer) Delegate(ctx context.Context, req *MsgDelegate) (*MsgDelegateResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delegate not implemented") } - -func (m *MsgUpdateParams) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +func (*UnimplementedMsgServer) BeginRedelegate(ctx context.Context, req *MsgBeginRedelegate) (*MsgBeginRedelegateResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method BeginRedelegate not implemented") } - -func (m *MsgUpdateParams) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (*UnimplementedMsgServer) Undelegate(ctx context.Context, req *MsgUndelegate) (*MsgUndelegateResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Undelegate not implemented") } - -func (m *MsgUpdateParams) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - if len(m.Authority) > 0 { - i -= len(m.Authority) - copy(dAtA[i:], m.Authority) - i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil +func (*UnimplementedMsgServer) CancelUnbondingDelegation(ctx context.Context, req *MsgCancelUnbondingDelegation) (*MsgCancelUnbondingDelegationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CancelUnbondingDelegation not implemented") } - -func (m *MsgUpdateParamsResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +func (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") } - -func (m *MsgUpdateParamsResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (*UnimplementedMsgServer) UnbondValidator(ctx context.Context, req *MsgUnbondValidator) (*MsgUnbondValidatorResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UnbondValidator not implemented") } - -func (m *MsgUpdateParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil +func (*UnimplementedMsgServer) TokenizeShares(ctx context.Context, req *MsgTokenizeShares) (*MsgTokenizeSharesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TokenizeShares not implemented") +} +func (*UnimplementedMsgServer) RedeemTokensForShares(ctx context.Context, req *MsgRedeemTokensForShares) (*MsgRedeemTokensForSharesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RedeemTokensForShares not implemented") +} +func (*UnimplementedMsgServer) TransferTokenizeShareRecord(ctx context.Context, req *MsgTransferTokenizeShareRecord) (*MsgTransferTokenizeShareRecordResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TransferTokenizeShareRecord not implemented") +} +func (*UnimplementedMsgServer) DisableTokenizeShares(ctx context.Context, req *MsgDisableTokenizeShares) (*MsgDisableTokenizeSharesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DisableTokenizeShares not implemented") +} +func (*UnimplementedMsgServer) EnableTokenizeShares(ctx context.Context, req *MsgEnableTokenizeShares) (*MsgEnableTokenizeSharesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method EnableTokenizeShares not implemented") +} +func (*UnimplementedMsgServer) ValidatorBond(ctx context.Context, req *MsgValidatorBond) (*MsgValidatorBondResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ValidatorBond not implemented") } -func encodeVarintTx(dAtA []byte, offset int, v uint64) int { - offset -= sovTx(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base +func RegisterMsgServer(s grpc1.Server, srv MsgServer) { + s.RegisterService(&_Msg_serviceDesc, srv) } -func (m *MsgCreateValidator) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.Description.Size() - n += 1 + l + sovTx(uint64(l)) - l = m.Commission.Size() - n += 1 + l + sovTx(uint64(l)) - l = m.MinSelfDelegation.Size() - n += 1 + l + sovTx(uint64(l)) - l = len(m.DelegatorAddress) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + +func _Msg_CreateValidator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgCreateValidator) + if err := dec(in); err != nil { + return nil, err } - l = len(m.ValidatorAddress) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if interceptor == nil { + return srv.(MsgServer).CreateValidator(ctx, in) } - if m.Pubkey != nil { - l = m.Pubkey.Size() - n += 1 + l + sovTx(uint64(l)) + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Msg/CreateValidator", } - l = m.Value.Size() - n += 1 + l + sovTx(uint64(l)) - return n -} - -func (m *MsgCreateValidatorResponse) Size() (n int) { - if m == nil { - return 0 + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).CreateValidator(ctx, req.(*MsgCreateValidator)) } - var l int - _ = l - return n + return interceptor(ctx, in, info, handler) } -func (m *MsgEditValidator) Size() (n int) { - if m == nil { - return 0 +func _Msg_EditValidator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgEditValidator) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - l = m.Description.Size() - n += 1 + l + sovTx(uint64(l)) - l = len(m.ValidatorAddress) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if interceptor == nil { + return srv.(MsgServer).EditValidator(ctx, in) } - if m.CommissionRate != nil { - l = m.CommissionRate.Size() - n += 1 + l + sovTx(uint64(l)) + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Msg/EditValidator", } - if m.MinSelfDelegation != nil { - l = m.MinSelfDelegation.Size() - n += 1 + l + sovTx(uint64(l)) + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).EditValidator(ctx, req.(*MsgEditValidator)) } - return n + return interceptor(ctx, in, info, handler) } -func (m *MsgEditValidatorResponse) Size() (n int) { - if m == nil { - return 0 +func _Msg_Delegate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgDelegate) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - return n -} - -func (m *MsgDelegate) Size() (n int) { - if m == nil { - return 0 + if interceptor == nil { + return srv.(MsgServer).Delegate(ctx, in) } - var l int - _ = l - l = len(m.DelegatorAddress) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Msg/Delegate", } - l = len(m.ValidatorAddress) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).Delegate(ctx, req.(*MsgDelegate)) } - l = m.Amount.Size() - n += 1 + l + sovTx(uint64(l)) - return n + return interceptor(ctx, in, info, handler) } -func (m *MsgDelegateResponse) Size() (n int) { - if m == nil { - return 0 +func _Msg_BeginRedelegate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgBeginRedelegate) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - return n + if interceptor == nil { + return srv.(MsgServer).BeginRedelegate(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Msg/BeginRedelegate", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).BeginRedelegate(ctx, req.(*MsgBeginRedelegate)) + } + return interceptor(ctx, in, info, handler) } -func (m *MsgBeginRedelegate) Size() (n int) { - if m == nil { - return 0 +func _Msg_Undelegate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUndelegate) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - l = len(m.DelegatorAddress) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if interceptor == nil { + return srv.(MsgServer).Undelegate(ctx, in) } - l = len(m.ValidatorSrcAddress) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Msg/Undelegate", } - l = len(m.ValidatorDstAddress) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).Undelegate(ctx, req.(*MsgUndelegate)) } - l = m.Amount.Size() - n += 1 + l + sovTx(uint64(l)) - return n + return interceptor(ctx, in, info, handler) } -func (m *MsgBeginRedelegateResponse) Size() (n int) { - if m == nil { - return 0 +func _Msg_CancelUnbondingDelegation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgCancelUnbondingDelegation) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CompletionTime) - n += 1 + l + sovTx(uint64(l)) - return n + if interceptor == nil { + return srv.(MsgServer).CancelUnbondingDelegation(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Msg/CancelUnbondingDelegation", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).CancelUnbondingDelegation(ctx, req.(*MsgCancelUnbondingDelegation)) + } + return interceptor(ctx, in, info, handler) } -func (m *MsgUndelegate) Size() (n int) { - if m == nil { - return 0 +func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateParams) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - l = len(m.DelegatorAddress) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if interceptor == nil { + return srv.(MsgServer).UpdateParams(ctx, in) } - l = len(m.ValidatorAddress) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Msg/UpdateParams", } - l = m.Amount.Size() - n += 1 + l + sovTx(uint64(l)) - return n + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) + } + return interceptor(ctx, in, info, handler) } -func (m *MsgUndelegateResponse) Size() (n int) { - if m == nil { - return 0 +func _Msg_UnbondValidator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUnbondValidator) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CompletionTime) - n += 1 + l + sovTx(uint64(l)) - l = m.Amount.Size() - n += 1 + l + sovTx(uint64(l)) - return n + if interceptor == nil { + return srv.(MsgServer).UnbondValidator(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Msg/UnbondValidator", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UnbondValidator(ctx, req.(*MsgUnbondValidator)) + } + return interceptor(ctx, in, info, handler) } -func (m *MsgCancelUnbondingDelegation) Size() (n int) { - if m == nil { - return 0 +func _Msg_TokenizeShares_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgTokenizeShares) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - l = len(m.DelegatorAddress) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if interceptor == nil { + return srv.(MsgServer).TokenizeShares(ctx, in) } - l = len(m.ValidatorAddress) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Msg/TokenizeShares", } - l = m.Amount.Size() - n += 1 + l + sovTx(uint64(l)) - if m.CreationHeight != 0 { - n += 1 + sovTx(uint64(m.CreationHeight)) + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).TokenizeShares(ctx, req.(*MsgTokenizeShares)) } - return n + return interceptor(ctx, in, info, handler) } -func (m *MsgCancelUnbondingDelegationResponse) Size() (n int) { - if m == nil { - return 0 +func _Msg_RedeemTokensForShares_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgRedeemTokensForShares) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - return n + if interceptor == nil { + return srv.(MsgServer).RedeemTokensForShares(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Msg/RedeemTokensForShares", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).RedeemTokensForShares(ctx, req.(*MsgRedeemTokensForShares)) + } + return interceptor(ctx, in, info, handler) } -func (m *MsgUpdateParams) Size() (n int) { - if m == nil { - return 0 +func _Msg_TransferTokenizeShareRecord_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgTransferTokenizeShareRecord) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - l = len(m.Authority) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if interceptor == nil { + return srv.(MsgServer).TransferTokenizeShareRecord(ctx, in) } - l = m.Params.Size() - n += 1 + l + sovTx(uint64(l)) - return n + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Msg/TransferTokenizeShareRecord", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).TransferTokenizeShareRecord(ctx, req.(*MsgTransferTokenizeShareRecord)) + } + return interceptor(ctx, in, info, handler) } -func (m *MsgUpdateParamsResponse) Size() (n int) { - if m == nil { - return 0 +func _Msg_DisableTokenizeShares_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgDisableTokenizeShares) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).DisableTokenizeShares(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Msg/DisableTokenizeShares", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).DisableTokenizeShares(ctx, req.(*MsgDisableTokenizeShares)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_EnableTokenizeShares_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgEnableTokenizeShares) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).EnableTokenizeShares(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Msg/EnableTokenizeShares", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).EnableTokenizeShares(ctx, req.(*MsgEnableTokenizeShares)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_ValidatorBond_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgValidatorBond) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).ValidatorBond(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Msg/ValidatorBond", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).ValidatorBond(ctx, req.(*MsgValidatorBond)) + } + return interceptor(ctx, in, info, handler) +} + +var _Msg_serviceDesc = grpc.ServiceDesc{ + ServiceName: "cosmos.staking.v1beta1.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "CreateValidator", + Handler: _Msg_CreateValidator_Handler, + }, + { + MethodName: "EditValidator", + Handler: _Msg_EditValidator_Handler, + }, + { + MethodName: "Delegate", + Handler: _Msg_Delegate_Handler, + }, + { + MethodName: "BeginRedelegate", + Handler: _Msg_BeginRedelegate_Handler, + }, + { + MethodName: "Undelegate", + Handler: _Msg_Undelegate_Handler, + }, + { + MethodName: "CancelUnbondingDelegation", + Handler: _Msg_CancelUnbondingDelegation_Handler, + }, + { + MethodName: "UpdateParams", + Handler: _Msg_UpdateParams_Handler, + }, + { + MethodName: "UnbondValidator", + Handler: _Msg_UnbondValidator_Handler, + }, + { + MethodName: "TokenizeShares", + Handler: _Msg_TokenizeShares_Handler, + }, + { + MethodName: "RedeemTokensForShares", + Handler: _Msg_RedeemTokensForShares_Handler, + }, + { + MethodName: "TransferTokenizeShareRecord", + Handler: _Msg_TransferTokenizeShareRecord_Handler, + }, + { + MethodName: "DisableTokenizeShares", + Handler: _Msg_DisableTokenizeShares_Handler, + }, + { + MethodName: "EnableTokenizeShares", + Handler: _Msg_EnableTokenizeShares_Handler, + }, + { + MethodName: "ValidatorBond", + Handler: _Msg_ValidatorBond_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "cosmos/staking/v1beta1/tx.proto", +} + +func (m *MsgCreateValidator) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgCreateValidator) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCreateValidator) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Value.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + if m.Pubkey != nil { + { + size, err := m.Pubkey.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + if len(m.ValidatorAddress) > 0 { + i -= len(m.ValidatorAddress) + copy(dAtA[i:], m.ValidatorAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorAddress))) + i-- + dAtA[i] = 0x2a + } + if len(m.DelegatorAddress) > 0 { + i -= len(m.DelegatorAddress) + copy(dAtA[i:], m.DelegatorAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.DelegatorAddress))) + i-- + dAtA[i] = 0x22 + } + { + size := m.MinSelfDelegation.Size() + i -= size + if _, err := m.MinSelfDelegation.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + { + size, err := m.Commission.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + { + size, err := m.Description.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *MsgCreateValidatorResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgCreateValidatorResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCreateValidatorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgEditValidator) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgEditValidator) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgEditValidator) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.MinSelfDelegation.Size() + i -= size + if _, err := m.MinSelfDelegation.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + if m.CommissionRate != nil { + { + size := m.CommissionRate.Size() + i -= size + if _, err := m.CommissionRate.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if len(m.ValidatorAddress) > 0 { + i -= len(m.ValidatorAddress) + copy(dAtA[i:], m.ValidatorAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorAddress))) + i-- + dAtA[i] = 0x12 + } + { + size, err := m.Description.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *MsgEditValidatorResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgEditValidatorResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgEditValidatorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgDelegate) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgDelegate) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDelegate) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + if len(m.ValidatorAddress) > 0 { + i -= len(m.ValidatorAddress) + copy(dAtA[i:], m.ValidatorAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorAddress))) + i-- + dAtA[i] = 0x12 + } + if len(m.DelegatorAddress) > 0 { + i -= len(m.DelegatorAddress) + copy(dAtA[i:], m.DelegatorAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.DelegatorAddress))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgDelegateResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgDelegateResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDelegateResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgBeginRedelegate) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgBeginRedelegate) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgBeginRedelegate) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + if len(m.ValidatorDstAddress) > 0 { + i -= len(m.ValidatorDstAddress) + copy(dAtA[i:], m.ValidatorDstAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorDstAddress))) + i-- + dAtA[i] = 0x1a + } + if len(m.ValidatorSrcAddress) > 0 { + i -= len(m.ValidatorSrcAddress) + copy(dAtA[i:], m.ValidatorSrcAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorSrcAddress))) + i-- + dAtA[i] = 0x12 + } + if len(m.DelegatorAddress) > 0 { + i -= len(m.DelegatorAddress) + copy(dAtA[i:], m.DelegatorAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.DelegatorAddress))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgBeginRedelegateResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgBeginRedelegateResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgBeginRedelegateResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + n8, err8 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.CompletionTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CompletionTime):]) + if err8 != nil { + return 0, err8 + } + i -= n8 + i = encodeVarintTx(dAtA, i, uint64(n8)) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *MsgUndelegate) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUndelegate) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUndelegate) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + if len(m.ValidatorAddress) > 0 { + i -= len(m.ValidatorAddress) + copy(dAtA[i:], m.ValidatorAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorAddress))) + i-- + dAtA[i] = 0x12 + } + if len(m.DelegatorAddress) > 0 { + i -= len(m.DelegatorAddress) + copy(dAtA[i:], m.DelegatorAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.DelegatorAddress))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgUndelegateResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUndelegateResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUndelegateResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + n11, err11 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.CompletionTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CompletionTime):]) + if err11 != nil { + return 0, err11 + } + i -= n11 + i = encodeVarintTx(dAtA, i, uint64(n11)) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *MsgCancelUnbondingDelegation) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgCancelUnbondingDelegation) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCancelUnbondingDelegation) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.CreationHeight != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.CreationHeight)) + i-- + dAtA[i] = 0x20 + } + { + size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + if len(m.ValidatorAddress) > 0 { + i -= len(m.ValidatorAddress) + copy(dAtA[i:], m.ValidatorAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorAddress))) + i-- + dAtA[i] = 0x12 + } + if len(m.DelegatorAddress) > 0 { + i -= len(m.DelegatorAddress) + copy(dAtA[i:], m.DelegatorAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.DelegatorAddress))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgCancelUnbondingDelegationResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgCancelUnbondingDelegationResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCancelUnbondingDelegationResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgUpdateParams) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateParams) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateParams) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgUpdateParamsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateParamsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgUnbondValidator) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUnbondValidator) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUnbondValidator) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ValidatorAddress) > 0 { + i -= len(m.ValidatorAddress) + copy(dAtA[i:], m.ValidatorAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorAddress))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgUnbondValidatorResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUnbondValidatorResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUnbondValidatorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgTokenizeShares) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgTokenizeShares) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgTokenizeShares) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.TokenizedShareOwner) > 0 { + i -= len(m.TokenizedShareOwner) + copy(dAtA[i:], m.TokenizedShareOwner) + i = encodeVarintTx(dAtA, i, uint64(len(m.TokenizedShareOwner))) + i-- + dAtA[i] = 0x22 + } + { + size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + if len(m.ValidatorAddress) > 0 { + i -= len(m.ValidatorAddress) + copy(dAtA[i:], m.ValidatorAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorAddress))) + i-- + dAtA[i] = 0x12 + } + if len(m.DelegatorAddress) > 0 { + i -= len(m.DelegatorAddress) + copy(dAtA[i:], m.DelegatorAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.DelegatorAddress))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgTokenizeSharesResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgTokenizeSharesResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgTokenizeSharesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *MsgRedeemTokensForShares) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgRedeemTokensForShares) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgRedeemTokensForShares) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.DelegatorAddress) > 0 { + i -= len(m.DelegatorAddress) + copy(dAtA[i:], m.DelegatorAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.DelegatorAddress))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgRedeemTokensForSharesResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgRedeemTokensForSharesResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgRedeemTokensForSharesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *MsgTransferTokenizeShareRecord) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgTransferTokenizeShareRecord) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgTransferTokenizeShareRecord) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.NewOwner) > 0 { + i -= len(m.NewOwner) + copy(dAtA[i:], m.NewOwner) + i = encodeVarintTx(dAtA, i, uint64(len(m.NewOwner))) + i-- + dAtA[i] = 0x1a + } + if len(m.Sender) > 0 { + i -= len(m.Sender) + copy(dAtA[i:], m.Sender) + i = encodeVarintTx(dAtA, i, uint64(len(m.Sender))) + i-- + dAtA[i] = 0x12 + } + if m.TokenizeShareRecordId != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.TokenizeShareRecordId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *MsgTransferTokenizeShareRecordResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgTransferTokenizeShareRecordResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgTransferTokenizeShareRecordResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgDisableTokenizeShares) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgDisableTokenizeShares) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDisableTokenizeShares) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.DelegatorAddress) > 0 { + i -= len(m.DelegatorAddress) + copy(dAtA[i:], m.DelegatorAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.DelegatorAddress))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgDisableTokenizeSharesResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgDisableTokenizeSharesResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDisableTokenizeSharesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgEnableTokenizeShares) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgEnableTokenizeShares) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgEnableTokenizeShares) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.DelegatorAddress) > 0 { + i -= len(m.DelegatorAddress) + copy(dAtA[i:], m.DelegatorAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.DelegatorAddress))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgEnableTokenizeSharesResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgEnableTokenizeSharesResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgEnableTokenizeSharesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + n18, err18 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.CompletionTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CompletionTime):]) + if err18 != nil { + return 0, err18 + } + i -= n18 + i = encodeVarintTx(dAtA, i, uint64(n18)) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *MsgValidatorBond) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgValidatorBond) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgValidatorBond) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ValidatorAddress) > 0 { + i -= len(m.ValidatorAddress) + copy(dAtA[i:], m.ValidatorAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorAddress))) + i-- + dAtA[i] = 0x12 + } + if len(m.DelegatorAddress) > 0 { + i -= len(m.DelegatorAddress) + copy(dAtA[i:], m.DelegatorAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.DelegatorAddress))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgValidatorBondResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgValidatorBondResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgValidatorBondResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func encodeVarintTx(dAtA []byte, offset int, v uint64) int { + offset -= sovTx(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *MsgCreateValidator) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Description.Size() + n += 1 + l + sovTx(uint64(l)) + l = m.Commission.Size() + n += 1 + l + sovTx(uint64(l)) + l = m.MinSelfDelegation.Size() + n += 1 + l + sovTx(uint64(l)) + l = len(m.DelegatorAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.ValidatorAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.Pubkey != nil { + l = m.Pubkey.Size() + n += 1 + l + sovTx(uint64(l)) + } + l = m.Value.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgCreateValidatorResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgEditValidator) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Description.Size() + n += 1 + l + sovTx(uint64(l)) + l = len(m.ValidatorAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.CommissionRate != nil { + l = m.CommissionRate.Size() + n += 1 + l + sovTx(uint64(l)) + } + l = m.MinSelfDelegation.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgEditValidatorResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgDelegate) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.DelegatorAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.ValidatorAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.Amount.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgDelegateResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgBeginRedelegate) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.DelegatorAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.ValidatorSrcAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.ValidatorDstAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.Amount.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgBeginRedelegateResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CompletionTime) + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgUndelegate) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.DelegatorAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.ValidatorAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.Amount.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgUndelegateResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CompletionTime) + n += 1 + l + sovTx(uint64(l)) + l = m.Amount.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgCancelUnbondingDelegation) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.DelegatorAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.ValidatorAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.Amount.Size() + n += 1 + l + sovTx(uint64(l)) + if m.CreationHeight != 0 { + n += 1 + sovTx(uint64(m.CreationHeight)) + } + return n +} + +func (m *MsgCancelUnbondingDelegationResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgUpdateParams) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.Params.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgUpdateParamsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgUnbondValidator) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ValidatorAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgUnbondValidatorResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgTokenizeShares) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.DelegatorAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.ValidatorAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.Amount.Size() + n += 1 + l + sovTx(uint64(l)) + l = len(m.TokenizedShareOwner) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgTokenizeSharesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Amount.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgRedeemTokensForShares) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.DelegatorAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.Amount.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgRedeemTokensForSharesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Amount.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgTransferTokenizeShareRecord) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.TokenizeShareRecordId != 0 { + n += 1 + sovTx(uint64(m.TokenizeShareRecordId)) + } + l = len(m.Sender) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.NewOwner) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgTransferTokenizeShareRecordResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgDisableTokenizeShares) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.DelegatorAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgDisableTokenizeSharesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgEnableTokenizeShares) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.DelegatorAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgEnableTokenizeSharesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CompletionTime) + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgValidatorBond) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.DelegatorAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.ValidatorAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgValidatorBondResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func sovTx(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozTx(x uint64) (n int) { + return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *MsgCreateValidator) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgCreateValidator: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCreateValidator: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Description.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Commission", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Commission.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MinSelfDelegation", 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 + } + if err := m.MinSelfDelegation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DelegatorAddress", 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.DelegatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddress", 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.ValidatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pubkey", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pubkey == nil { + m.Pubkey = &types.Any{} + } + if err := m.Pubkey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Value.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgCreateValidatorResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgCreateValidatorResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCreateValidatorResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgEditValidator) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgEditValidator: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgEditValidator: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Description.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddress", 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.ValidatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CommissionRate", 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 + } + var v cosmossdk_io_math.LegacyDec + m.CommissionRate = &v + if err := m.CommissionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MinSelfDelegation", 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 + } + if err := m.MinSelfDelegation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgEditValidatorResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgEditValidatorResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgEditValidatorResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgDelegate) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgDelegate: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgDelegate: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DelegatorAddress", 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.DelegatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddress", 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.ValidatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgDelegateResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgDelegateResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgDelegateResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgBeginRedelegate) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgBeginRedelegate: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgBeginRedelegate: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DelegatorAddress", 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.DelegatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorSrcAddress", 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.ValidatorSrcAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorDstAddress", 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.ValidatorDstAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgBeginRedelegateResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgBeginRedelegateResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgBeginRedelegateResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CompletionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.CompletionTime, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUndelegate) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUndelegate: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUndelegate: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DelegatorAddress", 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.DelegatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddress", 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.ValidatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } } - var l int - _ = l - return n -} -func sovTx(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozTx(x uint64) (n int) { - return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil } -func (m *MsgCreateValidator) Unmarshal(dAtA []byte) error { +func (m *MsgUndelegateResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1909,15 +4607,15 @@ func (m *MsgCreateValidator) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgCreateValidator: wiretype end group for non-group") + return fmt.Errorf("proto: MsgUndelegateResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgCreateValidator: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgUndelegateResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CompletionTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -1944,13 +4642,13 @@ func (m *MsgCreateValidator) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Description.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.CompletionTime, dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Commission", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -1977,45 +4675,61 @@ func (m *MsgCreateValidator) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Commission.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MinSelfDelegation", 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 - } + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err } - intStringLen := int(stringLen) - if intStringLen < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF } - if postIndex > l { + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgCancelUnbondingDelegation) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { return io.ErrUnexpectedEOF } - if err := m.MinSelfDelegation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break } - iNdEx = postIndex - case 4: + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgCancelUnbondingDelegation: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCancelUnbondingDelegation: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field DelegatorAddress", wireType) } @@ -2047,7 +4761,7 @@ func (m *MsgCreateValidator) Unmarshal(dAtA []byte) error { } m.DelegatorAddress = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 5: + case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddress", wireType) } @@ -2079,9 +4793,9 @@ func (m *MsgCreateValidator) Unmarshal(dAtA []byte) error { } m.ValidatorAddress = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 6: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pubkey", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -2108,18 +4822,15 @@ func (m *MsgCreateValidator) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Pubkey == nil { - m.Pubkey = &types.Any{} - } - if err := m.Pubkey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 7: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CreationHeight", wireType) } - var msglen int + m.CreationHeight = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -2129,25 +4840,11 @@ func (m *MsgCreateValidator) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + m.CreationHeight |= int64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Value.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -2169,7 +4866,7 @@ func (m *MsgCreateValidator) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgCreateValidatorResponse) Unmarshal(dAtA []byte) error { +func (m *MsgCancelUnbondingDelegationResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2192,10 +4889,10 @@ func (m *MsgCreateValidatorResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgCreateValidatorResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgCancelUnbondingDelegationResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgCreateValidatorResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgCancelUnbondingDelegationResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -2219,7 +4916,7 @@ func (m *MsgCreateValidatorResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgEditValidator) Unmarshal(dAtA []byte) error { +func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2242,17 +4939,17 @@ func (m *MsgEditValidator) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgEditValidator: wiretype end group for non-group") + return fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgEditValidator: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -2262,30 +4959,29 @@ func (m *MsgEditValidator) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Description.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Authority = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddress", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -2295,63 +4991,128 @@ func (m *MsgEditValidator) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - m.ValidatorAddress = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CommissionRate", wireType) + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - 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 - } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err } - intStringLen := int(stringLen) - if intStringLen < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + intStringLen - if postIndex < 0 { + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthTx } - if postIndex > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - var v cosmossdk_io_math.LegacyDec - m.CommissionRate = &v - if err := m.CommissionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUnbondValidator) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx } - iNdEx = postIndex - case 4: + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUnbondValidator: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUnbondValidator: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MinSelfDelegation", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddress", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2379,11 +5140,7 @@ func (m *MsgEditValidator) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - var v cosmossdk_io_math.Int - m.MinSelfDelegation = &v - if err := m.MinSelfDelegation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.ValidatorAddress = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -2406,7 +5163,7 @@ func (m *MsgEditValidator) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgEditValidatorResponse) Unmarshal(dAtA []byte) error { +func (m *MsgUnbondValidatorResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2429,10 +5186,10 @@ func (m *MsgEditValidatorResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgEditValidatorResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgUnbondValidatorResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgEditValidatorResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgUnbondValidatorResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -2456,7 +5213,7 @@ func (m *MsgEditValidatorResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgDelegate) Unmarshal(dAtA []byte) error { +func (m *MsgTokenizeShares) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2479,10 +5236,10 @@ func (m *MsgDelegate) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgDelegate: wiretype end group for non-group") + return fmt.Errorf("proto: MsgTokenizeShares: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgDelegate: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgTokenizeShares: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -2582,6 +5339,38 @@ func (m *MsgDelegate) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenizedShareOwner", 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.TokenizedShareOwner = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -2603,7 +5392,7 @@ func (m *MsgDelegate) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgDelegateResponse) Unmarshal(dAtA []byte) error { +func (m *MsgTokenizeSharesResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2626,12 +5415,45 @@ func (m *MsgDelegateResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgDelegateResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgTokenizeSharesResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgDelegateResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgTokenizeSharesResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -2653,7 +5475,7 @@ func (m *MsgDelegateResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgBeginRedelegate) Unmarshal(dAtA []byte) error { +func (m *MsgRedeemTokensForShares) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2676,10 +5498,10 @@ func (m *MsgBeginRedelegate) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgBeginRedelegate: wiretype end group for non-group") + return fmt.Errorf("proto: MsgRedeemTokensForShares: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgBeginRedelegate: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgRedeemTokensForShares: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -2715,70 +5537,6 @@ func (m *MsgBeginRedelegate) Unmarshal(dAtA []byte) error { m.DelegatorAddress = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ValidatorSrcAddress", 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.ValidatorSrcAddress = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ValidatorDstAddress", 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.ValidatorDstAddress = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) } @@ -2832,7 +5590,7 @@ func (m *MsgBeginRedelegate) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgBeginRedelegateResponse) Unmarshal(dAtA []byte) error { +func (m *MsgRedeemTokensForSharesResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2855,15 +5613,15 @@ func (m *MsgBeginRedelegateResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgBeginRedelegateResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgRedeemTokensForSharesResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgBeginRedelegateResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgRedeemTokensForSharesResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CompletionTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -2890,7 +5648,7 @@ func (m *MsgBeginRedelegateResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.CompletionTime, dAtA[iNdEx:postIndex]); err != nil { + if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -2915,7 +5673,7 @@ func (m *MsgBeginRedelegateResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgUndelegate) Unmarshal(dAtA []byte) error { +func (m *MsgTransferTokenizeShareRecord) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2938,17 +5696,17 @@ func (m *MsgUndelegate) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgUndelegate: wiretype end group for non-group") + return fmt.Errorf("proto: MsgTransferTokenizeShareRecord: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUndelegate: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgTransferTokenizeShareRecord: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DelegatorAddress", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenizeShareRecordId", wireType) } - var stringLen uint64 + m.TokenizeShareRecordId = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -2958,27 +5716,14 @@ func (m *MsgUndelegate) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.TokenizeShareRecordId |= 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.DelegatorAddress = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddress", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3006,13 +5751,13 @@ func (m *MsgUndelegate) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ValidatorAddress = string(dAtA[iNdEx:postIndex]) + m.Sender = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field NewOwner", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -3022,25 +5767,74 @@ func (m *MsgUndelegate) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTx } - if postIndex > l { + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NewOwner = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgTransferTokenizeShareRecordResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { return io.ErrUnexpectedEOF } - if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break } - iNdEx = postIndex + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgTransferTokenizeShareRecordResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgTransferTokenizeShareRecordResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -3062,7 +5856,7 @@ func (m *MsgUndelegate) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgUndelegateResponse) Unmarshal(dAtA []byte) error { +func (m *MsgDisableTokenizeShares) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3085,17 +5879,17 @@ func (m *MsgUndelegateResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgUndelegateResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgDisableTokenizeShares: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUndelegateResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgDisableTokenizeShares: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CompletionTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DelegatorAddress", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -3105,58 +5899,74 @@ func (m *MsgUndelegateResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.CompletionTime, dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.DelegatorAddress = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err } - if msglen < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTx + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF } - if postIndex > l { + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgDisableTokenizeSharesResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { return io.ErrUnexpectedEOF } - if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break } - iNdEx = postIndex + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgDisableTokenizeSharesResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgDisableTokenizeSharesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -3178,7 +5988,7 @@ func (m *MsgUndelegateResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgCancelUnbondingDelegation) Unmarshal(dAtA []byte) error { +func (m *MsgEnableTokenizeShares) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3201,10 +6011,10 @@ func (m *MsgCancelUnbondingDelegation) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgCancelUnbondingDelegation: wiretype end group for non-group") + return fmt.Errorf("proto: MsgEnableTokenizeShares: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgCancelUnbondingDelegation: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgEnableTokenizeShares: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -3239,90 +6049,6 @@ func (m *MsgCancelUnbondingDelegation) Unmarshal(dAtA []byte) error { } m.DelegatorAddress = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddress", 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.ValidatorAddress = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field CreationHeight", wireType) - } - m.CreationHeight = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.CreationHeight |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -3344,7 +6070,7 @@ func (m *MsgCancelUnbondingDelegation) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgCancelUnbondingDelegationResponse) Unmarshal(dAtA []byte) error { +func (m *MsgEnableTokenizeSharesResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3367,12 +6093,45 @@ func (m *MsgCancelUnbondingDelegationResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgCancelUnbondingDelegationResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgEnableTokenizeSharesResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgCancelUnbondingDelegationResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgEnableTokenizeSharesResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CompletionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.CompletionTime, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -3394,7 +6153,7 @@ func (m *MsgCancelUnbondingDelegationResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error { +func (m *MsgValidatorBond) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3417,15 +6176,15 @@ func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group") + return fmt.Errorf("proto: MsgValidatorBond: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgValidatorBond: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DelegatorAddress", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3453,13 +6212,13 @@ func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Authority = string(dAtA[iNdEx:postIndex]) + m.DelegatorAddress = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddress", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -3469,24 +6228,23 @@ func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.ValidatorAddress = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -3509,7 +6267,7 @@ func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error { +func (m *MsgValidatorBondResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3532,10 +6290,10 @@ func (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgValidatorBondResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgValidatorBondResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: diff --git a/x/staking/types/validator.go b/x/staking/types/validator.go index c2db50f5cf82..69bfd17e0b09 100644 --- a/x/staking/types/validator.go +++ b/x/staking/types/validator.go @@ -58,8 +58,10 @@ func NewValidator(operator string, pubKey cryptotypes.PubKey, description Descri UnbondingHeight: int64(0), UnbondingTime: time.Unix(0, 0).UTC(), Commission: NewCommission(math.LegacyZeroDec(), math.LegacyZeroDec(), math.LegacyZeroDec()), - MinSelfDelegation: math.OneInt(), + MinSelfDelegation: math.ZeroInt(), UnbondingOnHoldRefCount: 0, + ValidatorBondShares: math.LegacyZeroDec(), + LiquidShares: math.LegacyZeroDec(), }, nil } @@ -445,7 +447,6 @@ func (v *Validator) MinEqual(other *Validator) bool { v.Description.Equal(other.Description) && v.Commission.Equal(other.Commission) && v.Jailed == other.Jailed && - v.MinSelfDelegation.Equal(other.MinSelfDelegation) && v.ConsensusPubkey.Equal(other.ConsensusPubkey) } @@ -509,8 +510,9 @@ func (v Validator) GetConsensusPower(r math.Int) int64 { return v.ConsensusPower(r) } func (v Validator) GetCommission() math.LegacyDec { return v.Commission.Rate } -func (v Validator) GetMinSelfDelegation() math.Int { return v.MinSelfDelegation } +func (v Validator) GetMinSelfDelegation() math.Int { return math.ZeroInt() } func (v Validator) GetDelegatorShares() math.LegacyDec { return v.DelegatorShares } +func (v Validator) GetLiquidShares() math.LegacyDec { return v.LiquidShares } // UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces func (v Validator) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error { diff --git a/x/tx/CHANGELOG.md b/x/tx/CHANGELOG.md index 742122009eb3..d26a47f4b6bd 100644 --- a/x/tx/CHANGELOG.md +++ b/x/tx/CHANGELOG.md @@ -56,18 +56,18 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Improvements * [#15871](https://github.com/cosmos/cosmos-sdk/pull/15871) - * `HandlerMap` now has a `DefaultMode()` getter method - * Textual types use `signing.ProtoFileResolver` instead of `protoregistry.Files` + * `HandlerMap` now has a `DefaultMode()` getter method + * Textual types use `signing.ProtoFileResolver` instead of `protoregistry.Files` ## v0.6.0 ### API Breaking * [#15709](https://github.com/cosmos/cosmos-sdk/pull/15709): - * `GetSignersContext` has been renamed to `signing.Context` - * `GetSigners` now returns `[][]byte` instead of `[]string` - * `GetSignersOptions` has been renamed to `signing.Options` and requires `address.Codec`s for account and validator addresses - * `GetSignersOptions.ProtoFiles` has been renamed to `signing.Options.FileResolver` + * `GetSignersContext` has been renamed to `signing.Context` + * `GetSigners` now returns `[][]byte` instead of `[]string` + * `GetSignersOptions` has been renamed to `signing.Options` and requires `address.Codec`s for account and validator addresses + * `GetSignersOptions.ProtoFiles` has been renamed to `signing.Options.FileResolver` ### Bug Fixes diff --git a/x/tx/go.mod b/x/tx/go.mod index c1a18e6376a8..689904b3d1fc 100644 --- a/x/tx/go.mod +++ b/x/tx/go.mod @@ -19,7 +19,7 @@ require ( ) require ( - github.com/cosmos/gogoproto v1.4.12 // indirect + github.com/cosmos/gogoproto v1.5.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect @@ -27,9 +27,9 @@ require ( golang.org/x/net v0.20.0 // indirect golang.org/x/sys v0.16.0 // indirect golang.org/x/text v0.14.0 // indirect - google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 // indirect - google.golang.org/grpc v1.61.1 // indirect + google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect + google.golang.org/grpc v1.62.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/x/tx/go.sum b/x/tx/go.sum index b7979210f5ac..d48364452731 100644 --- a/x/tx/go.sum +++ b/x/tx/go.sum @@ -8,8 +8,8 @@ cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= -github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= -github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= +github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= +github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -51,14 +51,14 @@ golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3 h1:1hfbdAfFbkmpg41000wDVqr7jUpK/Yo+LPnIxxGzmkg= -google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3/go.mod h1:5RBcpGRxr25RbDzY5w+dmaqpSEvl8Gwl1x2CICf60ic= -google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f h1:2yNACc1O40tTnrsbk9Cv6oxiW8pxI/pXj0wRtdlYmgY= -google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f/go.mod h1:Uy9bTZJqmfrw2rIBxgGLnamc78euZULUBrLZ9XTITKI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 h1:/jFB8jK5R3Sq3i/lmeZO0cATSzFfZaJq1J2Euan3XKU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0/go.mod h1:FUoWkonphQm3RhTS+kOEhF8h0iDpm4tdXolVCeZ9KKA= -google.golang.org/grpc v1.61.1 h1:kLAiWrZs7YeDM6MumDe7m3y4aM6wacLzM1Y/wiLP9XY= -google.golang.org/grpc v1.61.1/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= +google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ= +google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= +google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 h1:Lj5rbfG876hIAYFjqiJnPHfhXbv+nzTWfm04Fg/XSVU= +google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= +google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= +google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/x/upgrade/CHANGELOG.md b/x/upgrade/CHANGELOG.md index 21cb063d4578..debcf3528da5 100644 --- a/x/upgrade/CHANGELOG.md +++ b/x/upgrade/CHANGELOG.md @@ -25,6 +25,12 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## [Unreleased] +## [v0.1.4](https://github.com/cosmos/cosmos-sdk/releases/tag/x/upgrade/v0.1.4) - 2024-07-15 + +### Improvements + +* [#20771](https://github.com/cosmos/cosmos-sdk/pull/20771) Create upgrade directory only when necessary (upgrade flow and not init flow). + ## [v0.1.3](https://github.com/cosmos/cosmos-sdk/releases/tag/x/upgrade/v0.1.3) - 2024-06-04 * (deps) [#20530](https://github.com/cosmos/cosmos-sdk/pull/20530) Bump vulnerable `github.com/hashicorp/go-getter` to v1.7.4. diff --git a/x/upgrade/go.mod b/x/upgrade/go.mod index 24516efc5521..dd53151d006c 100644 --- a/x/upgrade/go.mod +++ b/x/upgrade/go.mod @@ -9,11 +9,11 @@ require ( cosmossdk.io/errors v1.0.1 cosmossdk.io/log v1.3.1 cosmossdk.io/store v1.1.0 - github.com/cometbft/cometbft v0.38.7 + github.com/cometbft/cometbft v0.38.9 github.com/cosmos/cosmos-db v1.0.2 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.50.6 - github.com/cosmos/gogoproto v1.4.12 + github.com/cosmos/gogoproto v1.5.0 github.com/golang/protobuf v1.5.4 github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/hashicorp/go-cleanhttp v0.5.2 @@ -22,18 +22,19 @@ require ( github.com/spf13/cast v1.6.0 github.com/spf13/cobra v1.8.0 github.com/spf13/pflag v1.0.5 + github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.9.0 - google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de + google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 google.golang.org/grpc v1.63.2 google.golang.org/protobuf v1.33.0 ) require ( - cloud.google.com/go v0.112.0 // indirect + cloud.google.com/go v0.112.1 // indirect cloud.google.com/go/compute v1.24.0 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect cloud.google.com/go/iam v1.1.6 // indirect - cloud.google.com/go/storage v1.36.0 // indirect + cloud.google.com/go/storage v1.38.0 // indirect cosmossdk.io/collections v0.4.0 // indirect cosmossdk.io/math v1.3.0 // indirect cosmossdk.io/x/tx v0.13.3 // indirect @@ -95,7 +96,7 @@ require ( github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.0 // indirect + github.com/googleapis/gax-go/v2 v2.12.3 // indirect github.com/gorilla/handlers v1.5.1 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect @@ -107,6 +108,7 @@ require ( github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.1.0 // indirect @@ -133,7 +135,7 @@ require ( github.com/mtibben/percent v0.2.1 // indirect github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect github.com/oklog/run v1.1.0 // indirect - github.com/pelletier/go-toml/v2 v2.1.0 // indirect + github.com/pelletier/go-toml/v2 v2.2.2 // indirect github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect @@ -150,7 +152,6 @@ require ( github.com/sasha-s/go-deadlock v0.3.1 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.11.0 // indirect - github.com/spf13/viper v1.18.2 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/tendermint/go-amino v0.16.0 // indirect @@ -160,11 +161,11 @@ require ( github.com/zondax/ledger-go v0.14.3 // indirect go.etcd.io/bbolt v1.3.8 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 // indirect - go.opentelemetry.io/otel v1.22.0 // indirect - go.opentelemetry.io/otel/metric v1.22.0 // indirect - go.opentelemetry.io/otel/trace v1.22.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect + go.opentelemetry.io/otel v1.24.0 // indirect + go.opentelemetry.io/otel/metric v1.24.0 // indirect + go.opentelemetry.io/otel/trace v1.24.0 // indirect go.uber.org/multierr v1.10.0 // indirect golang.org/x/crypto v0.22.0 // indirect golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 // indirect @@ -175,7 +176,7 @@ require ( golang.org/x/term v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.5.0 // indirect - google.golang.org/api v0.162.0 // indirect + google.golang.org/api v0.171.0 // indirect google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda // indirect diff --git a/x/upgrade/go.sum b/x/upgrade/go.sum index 914c4b95d627..6ef226690cc0 100644 --- a/x/upgrade/go.sum +++ b/x/upgrade/go.sum @@ -30,8 +30,8 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9 cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM= -cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= +cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= +cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= @@ -171,8 +171,8 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8= -cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= +cloud.google.com/go/storage v1.38.0 h1:Az68ZRGlnNTpIBbLjSMIV2BDcwwXYlRlQzis0llkpJg= +cloud.google.com/go/storage v1.38.0/go.mod h1:tlUADB0mAb9BgYls9lq+8MGkfzOXuLrnHXlpHmvFJoY= cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= @@ -311,8 +311,6 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa h1:jQCWAUqqlij9Pgj2i/PB79y4KOPYVyFYdROxgaCwdTQ= -github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM= github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= @@ -329,8 +327,8 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/cometbft/cometbft v0.38.7 h1:ULhIOJ9+LgSy6nLekhq9ae3juX3NnQUMMPyVdhZV6Hk= -github.com/cometbft/cometbft v0.38.7/go.mod h1:HIyf811dFMI73IE0F7RrnY/Fr+d1+HuJAgtkEpQjCMY= +github.com/cometbft/cometbft v0.38.9 h1:cJBJBG0mPKz+sqelCi/hlfZjadZQGdDNnu6YQ1ZsUHQ= +github.com/cometbft/cometbft v0.38.9/go.mod h1:xOoGZrtUT+A5izWfHSJgl0gYZUE7lu7Z2XIS1vWG/QQ= github.com/cometbft/cometbft-db v0.9.1 h1:MIhVX5ja5bXNHF8EYrThkG9F7r9kSfv8BX4LWaxWJ4M= github.com/cometbft/cometbft-db v0.9.1/go.mod h1:iliyWaoV0mRwBJoizElCwwRA9Tf7jZJOURcRZF9m60U= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= @@ -354,8 +352,8 @@ github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4x github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= -github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= -github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= +github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= +github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= github.com/cosmos/iavl v1.1.2 h1:zL9FK7C4L/P4IF1Dm5fIwz0WXCnn7Bp1M2FxH0ayM7Y= github.com/cosmos/iavl v1.1.2/go.mod h1:jLeUvm6bGT1YutCaL2fIar/8vGUE8cPZvh/gXEWDaDM= github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= @@ -415,8 +413,6 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= -github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= @@ -612,8 +608,8 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99 github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= -github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= +github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA= +github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= @@ -674,6 +670,8 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= @@ -863,8 +861,8 @@ github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144T github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= -github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= -github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= +github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= +github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 h1:jik8PHtAIsPlCRJjJzl4udgEf7hawInF9texMeO2jrU= @@ -974,8 +972,8 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= -github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= +github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= +github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= @@ -1047,18 +1045,18 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 h1:UNQQKPfTDe1J81ViolILjTKPr9WetKW6uei2hFgJmFs= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfal0MK0wBMCOGr+HeJm9v803BkJxGrk2au7j08= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= -go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y= -go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= -go.opentelemetry.io/otel/metric v1.22.0 h1:lypMQnGyJYeuYPhOM/bgjbFM6WE44W1/T45er4d8Hhg= -go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY= -go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= -go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= -go.opentelemetry.io/otel/trace v1.22.0 h1:Hg6pPujv0XG9QaVbGOBVHunyuLcCC3jN7WEhPx83XD0= -go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= +go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= +go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= +go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= +go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= +go.opentelemetry.io/otel/sdk v1.22.0 h1:6coWHw9xw7EfClIC/+O31R8IY3/+EiRFHevmHafB2Gw= +go.opentelemetry.io/otel/sdk v1.22.0/go.mod h1:iu7luyVGYovrRpe2fmj3CVKouQNdTOkxtLzPvPz1DOc= +go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= +go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -1446,8 +1444,9 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= @@ -1497,8 +1496,8 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.162.0 h1:Vhs54HkaEpkMBdgGdOT2P6F0csGG/vxDS0hWHJzmmps= -google.golang.org/api v0.162.0/go.mod h1:6SulDkfoBIg4NFmCuZ39XeeAgSHCPecfSUuDyYlAHs0= +google.golang.org/api v0.171.0 h1:w174hnBPqut76FzW5Qaupt7zY8Kql6fiVjgys4f58sU= +google.golang.org/api v0.171.0/go.mod h1:Hnq5AHm4OTMt2BUVjael2CWZFD6vksJdWCWiUAmjC9o= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1617,8 +1616,8 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de h1:jFNzHPIeuzhdRwVhbZdiym9q0ory/xY3sA+v2wPg8I0= -google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:5iCWqnniDlqZHrd3neWVTOwvh/v6s3232omMecelax8= +google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 h1:rIo7ocm2roD9DcFIX67Ym8icoGCKSARAiPljFhh5suQ= +google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda h1:LI5DOvAxUPMv/50agcLLoo+AdWc1irS9Rzz4vPuD1V4= google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= diff --git a/x/upgrade/keeper/keeper.go b/x/upgrade/keeper/keeper.go index c8db97c75b42..b06aba7dd11a 100644 --- a/x/upgrade/keeper/keeper.go +++ b/x/upgrade/keeper/keeper.go @@ -7,7 +7,6 @@ import ( "errors" "fmt" "os" - "path" "path/filepath" "sort" "strconv" @@ -64,10 +63,6 @@ func NewKeeper(skipUpgradeHeights map[int64]bool, storeService corestore.KVStore authority: authority, } - if upgradePlan, err := k.ReadUpgradeInfoFromDisk(); err == nil && upgradePlan.Height > 0 { - telemetry.SetGaugeWithLabels([]string{"server", "info"}, 1, []metrics.Label{telemetry.NewLabel("upgrade_height", strconv.FormatInt(upgradePlan.Height, 10))}) - } - return k } @@ -534,7 +529,7 @@ func (k Keeper) DumpUpgradeInfoToDisk(height int64, p types.Plan) error { // GetUpgradeInfoPath returns the upgrade info file path func (k Keeper) GetUpgradeInfoPath() (string, error) { - upgradeInfoFileDir := path.Join(k.getHomeDir(), "data") + upgradeInfoFileDir := filepath.Join(k.homePath, "data") if err := os.MkdirAll(upgradeInfoFileDir, os.ModePerm); err != nil { return "", fmt.Errorf("could not create directory %q: %w", upgradeInfoFileDir, err) } @@ -542,11 +537,6 @@ func (k Keeper) GetUpgradeInfoPath() (string, error) { return filepath.Join(upgradeInfoFileDir, types.UpgradeInfoFilename), nil } -// getHomeDir returns the height at which the given upgrade was executed -func (k Keeper) getHomeDir() string { - return k.homePath -} - // ReadUpgradeInfoFromDisk returns the name and height of the upgrade which is // written to disk by the old binary when panicking. An error is returned if // the upgrade path directory cannot be created or if the file exists and @@ -577,6 +567,10 @@ func (k Keeper) ReadUpgradeInfoFromDisk() (types.Plan, error) { return upgradeInfo, err } + if upgradeInfo.Height > 0 { + telemetry.SetGaugeWithLabels([]string{"server", "info"}, 1, []metrics.Label{telemetry.NewLabel("upgrade_height", strconv.FormatInt(upgradeInfo.Height, 10))}) + } + return upgradeInfo, nil } diff --git a/x/upgrade/module.go b/x/upgrade/module.go index 527bc65b49ed..13bffd193933 100644 --- a/x/upgrade/module.go +++ b/x/upgrade/module.go @@ -8,6 +8,7 @@ import ( gwruntime "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cast" "github.com/spf13/cobra" + "github.com/spf13/viper" modulev1 "cosmossdk.io/api/cosmos/upgrade/module/v1" "cosmossdk.io/core/address" @@ -181,6 +182,7 @@ type ModuleInputs struct { AddressCodec address.Codec AppOpts servertypes.AppOptions `optional:"true"` + Viper *viper.Viper `optional:"true"` } type ModuleOutputs struct { @@ -197,7 +199,13 @@ func ProvideModule(in ModuleInputs) ModuleOutputs { skipUpgradeHeights = make(map[int64]bool) ) - if in.AppOpts != nil { + if in.Viper != nil { // viper takes precedence over app options + for _, h := range in.Viper.GetIntSlice(server.FlagUnsafeSkipUpgrades) { + skipUpgradeHeights[int64(h)] = true + } + + homePath = in.Viper.GetString(flags.FlagHome) + } else if in.AppOpts != nil { for _, h := range cast.ToIntSlice(in.AppOpts.Get(server.FlagUnsafeSkipUpgrades)) { skipUpgradeHeights[int64(h)] = true }